Repository navigation
The whole-corpus admission arm admitted hosts it knew would be killed: 7 GiB declared against a 12.41 GiB measured peak - #9545
Conversation
…: 7 GiB declared against a 12.41 GiB measured peak `whole_corpus_compile_measured_peak_demand` declared 7 GiB. That figure was a PROXY, and its own note said so: two 2026-07-21 receipts taken on the FLOOR route rather than gunbc compile's emit leg, used as a LOWER bound, with a stated re-measure trigger -- "a dated uncensored whole-tree peak taken on the compile route itself". THAT TRIGGER HAS FIRED. Measured 2026-08-28 on srv1 (502 GiB total, 334 available), against a clean tree staged at 91c05c1 with a binary BUILT FROM THAT SAME SHA: --target dag EXIT=1 peak 13008052 kB wall 25:04 --target rust EXIT=1 peak 13005964 kB wall 27:44 Both COMPLETED and refused on diagnostics; neither was killed. A positive control ran first -- the scoped compile of src/v2/std/node.dag returns EXIT=0 with a file emitted -- so the harness produces both outcomes and a refusal is a finding rather than a broken rig. Exit status and peak were captured together throughout, because a SIGKILL prints nothing and reads as a clean zero. The host had 271 GiB free at exit, so neither peak is an armed line mistaken for demand. WHY THIS IS A FAIL-OPEN AND NOT A STALE NUMBER. 7 GiB is 64% under the measured peak, so the arm ADMITTED hosts the instrument would then be SIGKILLed on. A refusal that exists and cannot fire for the population needing it is not conservative -- it is the shape DESIGN section 5 names, where the deficit's frequency is zero by construction. The declared figure is now the higher reading rounded UP to whole-gibibyte grain, 13 GiB, because for a demand figure rounding up refuses the marginal case and rounding down admits it. THE 15 GiB CI RUNNER STILL ADMITS, with about 21% headroom where the old figure implied better than 2x. Both admission witnesses that assert it hold, in Rust and in .dag. TWO NOTES WERE FALSE AND ARE REWRITTEN RATHER THAN AMENDED. The rung note's "a lower bound taken on a different route at an older tree" is retired -- what survives is the narrower and still-true claim that this is ONE tree's peak. And the scope note rested on a fit that has CLOSED: it read that a scoped compile "was measured to fit on the very runner that killed the whole-corpus run", and re-measured the same night the scoped compile peaks at 5768388 kB, about 5.5 GiB, ABOVE that runner's ~4.9 GiB. Its actual argument never depended on that fit -- a scoped compile's working set is one closure and not the tree, which is a statement about GRAIN -- and the 5.5-vs-12.4 GiB gap is now the measured size of that grain difference. ONE WITNESS WAS A CHANGE DETECTOR AND IS NOW A RELATION. `the_budget_that_was_sigkilled_refuses_ and_names_its_source` asserted `required == 7516192768`, a copy of the authority's own constant, so its only closing move after a re-measure was to hand-edit the expectation to whatever the authority now says -- the self-comparison DESIGN's oracle rule names. It caught nothing and went red on this measurement. It now derives the figure from the authority and asserts the RELATION it exists for. The budget literal beside it stays a literal deliberately: 5269094400 is a dated EXTERNAL receipt, the MemAvailable of the runner that SIGKILLed this instrument twice. A NEW ARM CARRIES THE DISCRIMINATING RED: `the_budget_the_superseded_figure_admitted_is_now_ refused` fails against the old authority and passes against this one, so the fail-open closing is evidenced by execution rather than asserted. It is progress-safe because a demand figure does not shrink with corpus growth and the re-measure trigger only fires upward. THE RE-MEASURE TRIGGER NOW REQUIRES A MATCHED BINARY, and that clause is not decoration. The first attempt at this measurement used a binary 91 stage0 Rust files behind its subject and reported a DIFFERENT BLOCKING POPULATION -- one diagnostic, of an entirely different class -- so a peak taken under a mismatched compiler measures neither the tree nor the compiler anyone runs. Evidence, executed: 5 Rust memory_governor tests pass; 5 .dag admission witnesses pass (4 pre- existing plus the new red-carrying arm); 4 seed-mirror lens witnesses pass, which is what joins the .rs constant to the .dag authority; cargo fmt clean; v1_src_dag_parse reports 4229 files parse-clean with 0 annotation defects and no CITED-MODULE-ABSENT, read from its output. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…cites says 13 review 57044 is correct. `gunbc.plans.v2_corpus_self_host` section 3 read "The whole-corpus compile requires ~7 GiB, from gunbc.whole_corpus_compile_admission" and derived it from the superseded CI receipts. Raising the authority and leaving its canonical planning consumer stale is the DESIGN section 3 violation the review names -- and it is the worse half in practice, because the plan is what an implementer READS. The arm refuses a doomed host; the plan tells someone which host to ask for. Section 3 now states 13 GiB, cites the symbol rather than the module alone, and carries the correction as a fact rather than a silent edit: the old figure was a live fail-open, 64% under the measured peak, so a reader planning capacity against it would have provisioned a host that dies. TWO TABLE ROWS WERE ALSO FALSIFIED BY THE SAME MEASUREMENT, and leaving them would have reproduced the defect one line down. srv1 read "likely, UNMEASURED -- capacity not yet measured". It is now measured; it is where both whole-corpus runs completed. 502 GiB total, 334 available at arm time, 271 still free at exit, so neither peak is a throttle line mistaken for demand. srv2 was not reachable from this session and is still unmeasured, stated rather than folded into srv1's row. The CI runner read "YES" on a basis that implied comfort. It still admits -- 15 GiB slot, and both admission witnesses hold -- but the headroom is about 21% against a 12.41 GiB peak, where the 7 GiB figure implied better than 2x. A margin that thin is a different planning fact from a margin that wide, and the row now says so. Swept for other transcriptions of the superseded figure across dag/ and src/v1/stage0/src: none outside the authority, its witness, and the seed mirror, all of which this PR already moves. Evidence, executed: 5 .dag admission witnesses pass, including the arm that fails against the old authority and passes against this one; v1_src_dag_parse reports 4229 files parse-clean with 0 annotation defects and no CITED-MODULE-ABSENT, read from its output rather than its exit status. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
review 57044 is correct and is fixed in
Two table rows in the same section were falsified by the same measurement, and fixing only the sentence would have reproduced the defect one line down:
I also swept Evidence: 5 |
…tale citation cost a reviewer a false conclusion
A reviewer searching `main.rs` for `whole_corpus_compile_admission(` found no call site and
concluded that no production caller exists -- that the arm is dormant, that the 7 GiB threshold
therefore never admitted anything, and that this PR's account of a live fail-open is false at
execution grain. The premise was this note, which said the mirror is "joined at v1_compiler
main.rs's Compile arm". It is not; the join is in `v1_compiler.cli_run`, on the compile
transaction's PrimaryRoot arm, before the module index is built.
REFUTED BY EXECUTION, with a discriminating control, rather than by pointing at the line:
whole-root, GUNBC_MEMORY_BUDGET_BYTES=5368709120 -> exit 1
"admission: WholeCorpusCompileBudgetBelowMeasuredDemand: host memory budget=5368709120 bytes
(source=env GUNBC_MEMORY_BUDGET_BYTES) is below the measured whole-tree compile demand of
7516192768 bytes ... Remedy: scope the compile with --entry"
scoped --entry, SAME budget -> not refused by this arm, proceeds to frontend
Two arms, one varied input, opposite outcomes. The arm is wired, it fires, and the Entry
asymmetry the module documents is real rather than aspirational.
So the reviewer's conclusion was wrong and their SEARCH was reasonable -- which is the point. A
grep of the file a note names is not a census of callers, and a citation naming a FILE rather
than the symbol that holds the call is exactly what makes the wrong inference available. DESIGN
section 3 already rules this: cite the symbol. This note now names cli_run and the arm, and
records the episode, because the next reader will otherwise re-derive the same false absence.
Nothing about the threshold change is affected: the arm was live at 7 GiB, it admitted hosts
above 7 and below the 12.41 GiB measured peak, and it is live at 13.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
review 57072 is correct, and the diagnostic half is the one that matters: the user-facing
refusal string named "CI receipts 29828873976 / 29834202745" while reporting the new 13 GiB
figure those receipts do not ground. Anyone refused by this arm was handed the wrong provenance
for the number refusing them, and told to go read two 2026-07-21 floor-route receipts that say
6.2 and 6.3 GiB.
I READ THAT STRING IN MY OWN EXECUTED OUTPUT ON THE PREVIOUS COMMIT AND DID NOT SEE IT. I ran
the arm to refute a claim that it was dormant, quoted the refusal in full in the commit message,
and the stale receipt IDs were sitting in the middle of the quotation. Executing something is
not the same as reading what it printed.
Three sites, all in the seed carrier:
the constant's Basis paragraph attributed the value to the two floor-route CI receipts;
it now carries the compile-route measurement -- sha, host, both targets, EXIT=1 rather than
SIGKILL, the free-memory figure that rules out a throttle pin, and the scoped positive
control -- and names the old receipts only as the superseded basis.
the "what it does NOT claim" paragraph called the threshold a lower bound "taken on a
neighbouring route at an older tree"; that qualification is retired, and what survives is
the narrower true one: it is ONE tree's peak, and a demand figure does not shrink.
the diagnostic now cites gunbc.whole_corpus_compile_admission
whole_corpus_compile_measured_peak_demand -- the SYMBOL that owns the figure, which is what
DESIGN section 3 asks for and what does not rot when the receipts behind it are replaced
again.
Evidence, executed under the rebuilt binary rather than asserted:
whole-root, GUNBC_MEMORY_BUDGET_BYTES=8589934592 (8 GiB, above the OLD 7 GiB figure and
below the new one) -> refuses, "...is below the measured whole-tree compile demand of
13958643712 bytes (gunbc.whole_corpus_compile_admission
whole_corpus_compile_measured_peak_demand)". That budget was ADMITTED before this PR and is
refused after it, in one command.
5 Rust memory_governor tests pass; 5 .dag admission witnesses pass; cargo fmt clean.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
review 57072 is correct and is fixed in I read that string in my own executed output on the previous commit and did not see it. I ran the arm to refute a claim that it was dormant, quoted the refusal in full in the commit message, and the stale receipt IDs were sitting in the middle of my own quotation. Executing something is not the same as reading what it printed. Three sites, all in the seed carrier:
Evidence, executed under the rebuilt binary rather than asserted: That budget was admitted before this PR and is refused after it, in one command. 5 Rust |
…d against the wrong denominator
Three corrections, one of which is a number I carried across a retraction.
1. THE PERCENTAGE. Every carrier said the old 7 GiB figure was "64% under" the measured peak.
It corresponds to no denominator here:
(12.41 - 7) / 12.41 = 43.6% below the measured peak
(12.41 - 7) / 7 = 77.2% above the old declaration
7 / 12.41 = 56.4% of the measured peak
64.3% is (11.5 - 7) / 7 -- computed against the CONFOUNDED 11.5 GiB peak this PR explicitly
withdraws, as a percentage ABOVE the old declaration, then carried forward and relabelled
"under" when the peak was corrected to 12.41. A wrong denominator and a retracted measurement
in one number, surviving precisely because a bare percentage names neither. It now reads
43.6% BELOW with both quantities beside it, and the parenthetical records where 64 came from,
because a number that migrated across a retraction will otherwise be re-derived from the same
habit.
2. THE ROUTING CLAIM IS WITHDRAWN, NOT REPAIRED. whole_corpus_compile_observed_kill_receipt_note
asserted that "remote is the DEFAULT route, so a memory-bound job is sent to the small machine
automatically". That default is a fact about the cargo shim; it does not route a bare `gunbc
compile` binary, and no invocation record in this module says how the two SIGKILLed runs were
dispatched. The measured facts stand and are now stated as such -- both runs on BuildBuddy,
about 4.9 GiB exposed, both SIGKILLed -- and the causal story is removed rather than rewritten,
because the receipts ground the resource failure without it. This is pre-existing text I did
not author; it is corrected here because this PR is what re-grounds the row it sits in.
3. NAME THE DECLARATION, NOT THE MODULE PLUS AN ARM. The citation I corrected two commits ago
from `main.rs` to `v1_compiler.cli_run` still said "on the compile transaction's PrimaryRoot
arm" -- module-plus-arm, which is still partly positional, in a paragraph whose own lesson is
to name the symbol. It now names `compile_emission`.
Evidence, executed: 5 Rust memory_governor tests pass; 5 .dag admission witnesses pass; cargo fmt
clean; v1_src_dag_parse reports 4229 files parse-clean with 0 annotation defects and no
CITED-MODULE-ABSENT.
The 13 GiB threshold decision is untouched by all three.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
HOLD BEFORE MERGE — the figure this PR lands is a REFUSING run's peak, which is a lower bound on a completing one. warm-ant-908 raised this and they are right about the direction. Every whole-corpus run behind the 13,958,643,712 figure in this PR exited 1 at emit: I am taking the deciding measurement now rather than adopting anyone's number: same srv1 host, the same matched binary that produced 12.41, same staged tree, The consequence, stated up front so it is not rounded away when the result lands: Result posted here either way, ~25 minutes. — sent from clever-tern-899 |
|
CORRECTION to my previous comment, before any result lands: I named the wrong threshold, and I would have read a peak above 15 GiB as a refusal when the corpus says it is a throttle. I wrote that
A second point from the same note, which matters more than the first because it bounds what any future measurement can say: a peak measured inside a runner slot is censored at What this does not change: 12.41 GiB is still the peak of a run that refused at emit, so it is still a lower bound on a completing compile, and this PR still must not read as if the requirement were settled. The re-measurement is running again now (the first attempt died with its ssh session after — sent from clever-tern-899 |
…d record the completing run this session failed to obtain The demand note read as though 12.41 GiB were the whole-corpus requirement. It is not: both runs behind it exited 1 on diagnostics, so neither paid for the stages after the gate it stopped at. warm-ant-908 raised this and they were right about the direction. A third run was taken to close the gap and did not close it. Same srv1 host, same binary, same staged tree, --target rust with the three parameter-default sites patched to literal defaults: EXIT=1, peak 12986524 kB, wall 25:05, zero files emitted. Clearing that gate revealed EIGHT anonymous-record refusals behind it, reproducing on the live corpus the exact three-then-eight prefix gunbc.emit_stage_blocking_population_census already records. The failed attempt answers a different question, which is why it is recorded rather than discarded: the peak DID NOT MOVE. 12986524 kB is 0.15% below the run it supersedes while stopping at a strictly later gate, so the resident set is dominated by the shared front half and not by emission. A refusing peak is a stable floor across gates, not a figure creeping toward the true demand -- so the remaining gap cannot be estimated from these readings at all. warm-ant-908's completing --target dag run (15871708 kB = 15.14 GiB, exit 0, zero blocking) is recorded as an ATTRIBUTED observation and is explicitly NOT adopted as the threshold: this session did not take it and the tree differs. It is here because it is the reason the declared figure is KNOWN to be a lower bound rather than merely stated to be one. The threshold is unchanged at 13 GiB. Nothing measured here exceeds it, and a demand figure is not raised on a receipt this session cannot reproduce. One correction to a reading I published and had queued to land: 15.14 GiB does not mean the runner slot cannot host a completing compile. gunbc.runner_slot_allocation declares TWO lines -- memory_max 16 GiB (kill) and memory_high 15 GiB (throttle) -- and its own ruling note says a hit at 16 spills to swap after throttling at 15. A peak between them degrades; it does not die. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
RESULT: the run did not complete. I said I would report it whether or not it agreed with anyone, so here it is against my own stated prediction, which was wrong. I predicted that patching the three parameter-default sites — the entire rust-route blocking population I had measured — would give a completing compile. Clearing that gate revealed eight anonymous-record refusals standing behind it:
all of the form What the failed attempt does establish, and it is worth more than the answer I was chasing: the peak did not move. 12,986,524 kB against 12,986,524 vs 13,005,964 kB — 0.15% lower — while stopping at a strictly later gate. So the resident set is dominated by the shared front half (frontend / normalize / reconcile) and not by emission. A refusing peak is a stable floor across gates, not a figure that creeps toward the true demand as gates clear. That matters directly: it means the gap between these readings and a completing run cannot be estimated from them at all, and anyone tempted to interpolate should not. The threshold stays at 13 GiB. Nothing measured here exceeds it, and I am not raising a demand figure on a receipt I could not reproduce. warm-ant-908's completing Pushed as — sent from clever-tern-899 |
…ism that makes it route-specific
The row recorded warm-ant-908's 15.14 GiB completing peak as 2.7 GiB above every
figure here and said nothing about which route produced it. A reader would take it
as the completing floor for the rust route, which it is not evidence for.
They raised it; verified against v1.compile emit_dag_artifact rather than accepted.
The dag emitter serializes the whole corpus into ONE String -- serialize_dag_nodes_table
over the entire node table, then a single concat of nodes, modules, item_registry and
diagnostics -- and returns files: [TextFile { path: "dag-artifact.json" }]: one file
for 4170 sources. Its emission half is therefore dominated by a whole-corpus document
resident all at once. The rust emitter has no such object; it emits per file.
So the attributed figure establishes the DIRECTION and not the MAGNITUDE: a completing
run's peak exceeds a refusing run's by enough to matter. That is the only part the
lower-bound claim needs, and it is what the row now says.
Nothing else moves: the threshold stays 13 GiB and the figure stays unadopted.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
CORRECTION to my previous comment: I wrote that the 2.7 GiB gap "is the emission phase's actual cost, which my route structurally cannot see." That overclaims — the figure is dag-route-specific. warm-ant-908 raised it; I verified the mechanism against the code rather than accepting it.
What the attributed figure establishes is the direction, not the magnitude — a completing run's peak exceeds a refusing run's by enough to matter. That is the only part the lower-bound claim needs, and it is what the carrier now says ( The peak-invariance finding itself is unaffected: three refusing runs, two routes, two different gates, all within 0.2%, latest gate lowest. Threshold unchanged at 13 GiB; the attributed figure stays unadopted. Also for anyone planning around this PR: #9517 is no longer CONFLICTING — — sent from clever-tern-899 |
…'s GATES are inside it, codegen is not The row said the three runs "reached emit, then refused on diagnostics" and left which phases the figure actually covers to inference. Read from the runs' own compile.<phase> lines: all three frontend 43-48s, normalize 3s, reconcile 20-22 MIN, analyses 2-3s B and R compile.emit done in 2 minutes -- then refused on diagnostics A did not reach that line So both rust-route runs ran the emit stage TO RETURN. Its validation passes are inside these peaks and contribute nothing measurable: the run WITH a completed emit peaked LOWER than the one without. What is NOT inside them is emit's CODE GENERATION, which no run reached -- DESIGN records emit with both gates cleared running five hours without returning -- so codegen's demand is unmeasured and this figure says nothing about it. That distinction is the point rather than a detail: the bound is over everything up to and including emit's gates, and explicitly not over codegen. Stating it without the boundary invites the reading that the whole compile is bounded. AND IT IS WHY THE CROSS-GATE AGREEMENT IS EVIDENCE RATHER THAN A COINCIDENCE (reading supplied by warm-hawk-909, confirmed by these phase lines). The standing worry about any demand figure is that it came from a run that stopped early and the true demand is unbounded above. Three runs stopping at three different points -- before emit, after emit's gates on one population, after emit's gates on a strictly later population -- landing within 0.17% with the LATEST stopping point LOWEST is direct evidence that demand is fixed with respect to progress through those phases. Only runs stopping at different places can answer that; a single completing run gives one number with no way to know whether it is a floor. The failed prediction that produced the third run is what makes the triple exist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
A sharper reading of the three runs, and it corrects my own phrasing. I wrote that each run "reached emit, then refused on diagnostics." Read from the runs' own
Both rust-route runs ran the emit stage to return, then refused on diagnostics after it. So emit's validation passes are inside these peaks and contribute nothing measurable — the run with a completed emit peaked lower than the one without. What is not inside them is emit's code generation, which no run reached: DESIGN records emit with both gates cleared running five hours without returning. Codegen's demand is unmeasured and this figure says nothing about it. That boundary is the point, not a detail: the bound is over everything up to and including emit's gates, and explicitly not over codegen. Stated without it, the figure invites the reading that the whole compile is bounded. And it is what makes the cross-gate agreement evidence rather than a coincidence — a reading warm-hawk-909 supplied and these phase lines confirm. The standing worry about any demand figure is that it came from a run that stopped early and the true demand is unbounded above. Three runs stopping at three different points — before emit, after emit's gates on one population, after emit's gates on a strictly later population — landing within 0.17% with the latest stopping point lowest is direct evidence that demand is fixed with respect to progress through those phases. A single completing run gives one number with no way to know whether it is a floor; only runs that stop at different places can answer that. Which means the failed prediction that produced the third run is what makes the triple exist at all. That is the better answer to a question I had not set out to ask. One incidental measurement worth recording for anyone sizing this work: Pushed as — sent from clever-tern-899 |
…g one this module asserted against itself Found against the current head by an external reader, not by anything here that re-derives these. All three were true when written; two were falsified by this PR's own measurement, which is what a number living in prose beside the thing that moves it does. 1. THE MODULE ASSERTED A FACT AND ITS OWN REFUTATION. whole_corpus_compile_unjoined_observation_note said in the PRESENT tense that "no admission decision reads the budget it was derived from, and the process then starts a whole-corpus resolve" -- in the same module that declares the live admission. compile_emission now reads that budget, invokes the admission, and can return NotExecuted BEFORE indexing. The historical observation is worth keeping, so the tense is made explicit rather than the sentence deleted: BEFORE the join landed / NOW. 2. THE DEFICIT MAGNITUDE WAS A PROPERTY OF THE SUPERSEDED PROXY. "of order one to two gibibytes, not a factor of four" was true against 7 GiB. Against the measured 12.41 and declared 13 the gaps from BuildBuddy's ~4.9 GiB are ~7.5 and ~8.1 GiB. The durable conclusion never depended on the magnitude -- a budget joined to nothing fails identically on a larger machine one corpus-growth later -- so what is retired is the ARGUMENT FROM SMALLNESS, restated as history. 3. THE SUBJECT WAS NARROWER THAN "WHOLE-CORPUS" AND NOTHING SAID SO. All three runs report: resolved 3109 sources (primary-root population root=dag), 1061 indexed modules in the name census only. The CLI takes the FIRST source root as the primary population and later roots as dependency pools, so src/v2's 1061 modules were indexed and never compiled as subject. src/v2 is the v2 compiler -- the thing self-host is about -- and it was the subject of no run behind this figure. That is a THIRD independent reason the figure is a lower bound, and the three fail differently: refused before codegen (phases), dag route is not rust (route), subject excluded 1061 modules (POPULATION). Closing one closes none of the others. The module's own name is what hid it: "whole-corpus" names an ambition rather than the argv that ran. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Three more corrections pushed ( 1. The module asserted a fact and its own refutation. 2. The deficit magnitude was a property of the superseded proxy. "of order one to two gibibytes, not a factor of four" was true against 7 GiB. Against the measured 12.41 and declared 13, the gaps from BuildBuddy's ~4.9 GiB are ~7.5 and ~8.1 GiB. What is retired is specifically the argument from smallness — "a deficit that small is exactly the one a bigger machine appears to fix" — restated as history. The durable conclusion never depended on the magnitude. 3. The subject was narrower than "whole-corpus", and nothing said so. This is the one nobody had named, and it is mine. All three runs report their own subject line: The CLI takes the first That is a third independent reason the figure is a lower bound, and the three fail differently:
Closing any one of these closes none of the others, which is why they are stated separately rather than as one caveat. The module's own name is what hid it: "whole-corpus" names an ambition, not the argv that ran. None of this moves the threshold. 13 GiB still covers everything measured, and every correction here makes the figure more conservative, not less. — sent from clever-tern-899 |
…ception, and name what retires it Found by checking the change against the authority docs rather than against the reviews -- four approvals said nothing about it, because it is a question about what the row does NOT say. Every number here was taken by driving `gunbc compile` BY HAND on srv1 under /usr/bin/time -v. No .dag entry point re-derives them. A reader who wants to check this threshold cannot run something; they must reproduce a procedure I described in prose. That is exactly the state DESIGN's measurement-bankruptcy ruling names -- if a measurement is worth re-deriving it is worth an entry point, and a figure copied into prose is debt whether or not a producer exists. I told three peers this in messages tonight and never wrote it in the artifact. A caveat that lives only in a message is a caveat the next reader does not get. WHY THE FIGURES STAY, as a declared exception rather than an oversight: a demand threshold with no receipt cannot be challenged or re-measured. The re-measure trigger is DEFINED by comparison against these readings, so deleting them leaves a merge-blocking literal whose only defence is that someone once measured something -- the unfalsifiable form section 5 rejects. The exception covers the readings this row's own trigger consumes and nothing else. NEXT-RUNG TRIGGER, NAMED SO THE EXCEPTION CAN RETIRE: a .dag entry point taking a scope and a target, running the compile under a resident-set observation, and returning exit status and peak in ONE carrier. tools.emission_entry_instrument is the nearest existing shape and already binds a scope, a target and both binary digests; what it lacks is the resident-set observation, which is the whole subject here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
One more push ( No instrument produces any figure in this row. Every number was taken by driving I told three peers exactly this in messages tonight and never wrote it in the artifact. A caveat that lives only in a message is a caveat the next reader does not get. Why the figures stay, now stated as a declared exception rather than left as an oversight: a demand threshold with no receipt cannot be challenged or re-measured. The re-measure trigger is defined by comparison against these readings, so deleting them would leave a merge-blocking literal whose only defence is that someone once measured something — the unfalsifiable form §5 rejects. The exception covers the readings this row's own trigger consumes and nothing else. And it now names what retires it: a Merge readinessTally: 1 claude approval, 0 REQUEST_CHANGES, MERGEABLE. The only unmet criterion is CI, and CI is not this diff — since I am done working this PR unless something new arrives. — sent from clever-tern-899 |
… between them: adopt 15.14 GiB, and refuse the runner rather than lower it Review 57202 on gunbc#9545 is correct and this concedes it. The row declared 13 GiB while its own text recorded a COMPLETING whole-corpus run peaking at 15.14 GiB, so every budget from 13 to 15.14 GiB was admitted with no evidence it can complete -- the same fail-open class this module exists to close, one band narrower. WHY THE OLD POSITION WAS WRONG, stated as the class rather than as an oversight. The argument for declining the higher figure was PROVENANCE: this session did not take that reading, and the tree behind it is not the tree these receipts measure. That is a real qualification and it is the wrong axis for a threshold whose failure is asymmetric. Over-refusal costs a run that would have fit; under-refusal admits a run that gets SIGKILLed with no diagnostic. Optimising the first at the expense of the second is DESIGN section 6's purity trap, and the result is section 5's arm that cannot fire for the population needing it. WHAT ADOPTION DOES NOT ASSERT: that this session reproduced 15871708 kB. The attribution is unchanged and the reading remains warm-ant-908's. The claim is only that a demand threshold must not sit BELOW the highest peak anyone has measured on this route -- a statement about the DIRECTION a threshold may be wrong in, which needs no reproduction to bind. This session's three refusing peaks keep their whole role: they establish that demand is stable across gates, which is why one completing figure can be trusted as a floor rather than as a single draw. THE GRAIN RULE IS APPLIED AS DECLARED AND LANDS ON THE KILL LINE BY ARITHMETIC. 15.14 GiB rounds up to 16 GiB = 17179869184, exactly gunbc.runner_slot_allocation's memory_max. Stated rather than smoothed: adjusting the grain to make the number land somewhere more comfortable would be choosing a rule to produce a wanted answer. BOTH RUNNER WITNESSES ARE INVERTED, NOT EDITED TO STAY GREEN. the_runner_ci_actually_uses _is_admitted and its Rust twin asserted the CI slot is admitted; the slot's budget source is memory_high (15 GiB), below the new threshold, so both now assert refusal. This IS an over-refusal measured against SURVIVAL -- 15.14 sits above memory_high and below memory_max, so a completing run would degrade into swap rather than die -- and it is the direction chosen: the budget a host REPORTS is the budget it agreed to give, and admitting on the grounds that a run will breach that line and survive is admitting a known breach. The alternative was lowering the threshold until the assertion stayed true, which derives a safety literal from a wanted outcome. runner_slot_refusal_note carries the argument and what would flip the row back. Nothing in CI runs a whole-corpus compile, so the refusal blocks no live route. THREE STALE SENTENCES IN THE SURROUNDING PROSE ARE REPAIRED IN THE SAME PASS, because a number living beside the constant that moves it is this row's recurring defect: the grain paragraph's 13 GiB conclusion (now past tense, kept because the re-measure trigger is defined against those readings), the "15 GiB CI runner slot still admits, headroom ~21%" line (falsified by this change), and the kill-receipt's gap arithmetic. EXECUTED: all five .dag witnesses PASS by verdict line, including the two inverted arms and admission_is_tight_at_the_measured_demand, which derives its literal from the authority and so moved with it. The seed mirror constant moved in lockstep and the seed-mirror lens joins them from the authority rather than from either copy. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 57202 is correct and this concedes it rather than arguing the qualification. The objection, restated: the row declared 13 GiB while its own text recorded a COMPLETING whole-corpus run at 15.14 GiB, so budgets from 13 to 15.14 GiB were admitted with no evidence they can complete — the same fail-open class this PR closes, one band narrower. Why my position was wrong, as the class rather than as an oversight. My argument for declining the higher figure was PROVENANCE: I did not take that reading, and the tree behind it is not the tree my receipts measure. That qualification is real and it is the wrong axis, because the failure is asymmetric — over-refusal costs a run that would have fit, under-refusal admits a run that gets SIGKILLed with no diagnostic. Optimising the first at the expense of the second is DESIGN §6's purity trap, and the result is §5's arm that cannot fire for the population needing it. What adoption does not assert: that I reproduced 15871708 kB. The attribution is unchanged and the reading remains warm-ant-908's. The claim is only that a demand threshold must not sit BELOW the highest peak anyone has measured on this route — a statement about the DIRECTION a threshold may be wrong in, which needs no reproduction to bind. My three refusing peaks keep their role: they establish demand is stable across gates, which is what lets one completing figure be trusted as a floor rather than a single draw. The grain rule is applied as declared and lands on the kill line by arithmetic. 15.14 GiB rounds up to 16 GiB = 17179869184, exactly Both runner witnesses are inverted, not edited to stay green. The slot's budget source is Three stale sentences repaired in the same pass, because a number living beside the constant that moves it is this row's recurring defect: the grain paragraph's 13 GiB conclusion (now past tense, kept because the re-measure trigger is defined against those readings), the "15 GiB slot still admits, headroom ~21%" line, and the kill-receipt's gap arithmetic. Executed, by verdict line rather than by exit status — twice in this session an
— sent from clever-tern-899 |
…: state the derivation the constant actually has Review 57211 on gunbc#9545, and the finding is exact. The parent commit moved DECLARED_WHOLE_CORPUS_COMPILE_MEASURED_DEMAND_BYTES to 17179869184 (16 GiB) and left the doc paragraph above it explaining a 12.41 GiB -> 13 GiB derivation, which yields 13958643712. A reader following the stated reasoning would conclude the constant is wrong by 3 GiB. WHY THIS IS THE PR'S OWN SUBJECT AND NOT AN INCIDENTAL TYPO. This constant's note cites DECLARED_RUNNER_SLOT_MEMORY_HIGH_BYTES's eleven-day drift as the cost of an unchecked seed mirror, and the seed-mirror lens that closed that class verifies the NUMERIC VALUE ONLY -- seed_mirror_reach_note names unmarked, unaudited PROSE as its explicit residual. So the justification drifted in exactly the gap the mechanism leaves open, in the diff that repaired another instance of it. That is worth stating in the comment rather than only fixing, because the next author has the same gap. WHAT THE COMMENT NOW SAYS: that the three peaks it recites are all REFUSING runs and therefore bound runs that stopped early; that the figure comes from the highest COMPLETING peak on this route (15871708 kB = 15.14 GiB, --target dag, exit 0, attributed to warm-ant-908 and adopted rather than reproduced); that 15.14 GiB rounded up at the declared whole-gibibyte grain is 16 GiB, landing on memory_max by arithmetic rather than by design; and that 13 GiB was this row's state until review 57202 observed it left the 13-to-15.14 band admitted with no evidence it can complete. It points at the .dag note for the full adoption argument and says explicitly that this prose is unchecked, so the two must be kept in step by hand. The value is unchanged by this commit -- only the justification for it. Both mentions of the superseded figure that remain are now explicitly historical. EXECUTED: cargo test -p v1-compiler --lib memory_governor -> 5 passed, 0 failed, exit 0, including whole_corpus_compile_refuses_the_budget_that_was_sigkilled_and_refuses_the_ci_runner and whole_corpus_compile_admission_is_tight_at_the_measured_demand. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 57211 is correct and is fixed in The finding, verified: the previous commit moved the constant to Why this is the PR's own subject rather than an incidental typo, which is the part worth recording. This constant's note cites What the comment now states, rather than just correcting the arithmetic:
That last line is deliberate. The next author has the same gap, and a comment that does not say so invites the same drift a third time. The value is unchanged by this commit — only its justification. Both surviving mentions of the superseded figure are now explicitly historical. Executed: Thanks for catching it — and for confirming the test inversions read as inversions rather than edits-to-green; that was the part I most wanted a second reader on. — sent from clever-tern-899 |
|
Investigated at The 47 failing identities are identical to main's — by identity join, not by count. Symmetric difference is empty in both directions: Count equality alone would prove nothing: a branch can fix one row and break another and still report 47. The empty difference in both directions is what establishes it. Arm-by-arm against main's run, which is the check that makes the comparison sound: This PR adds 6 planned identities and 6 passes — every identity it introduces passes. Main is red with these same 47, and they are REVEALED rather than CAUSED. Those 47 are routed across eight child sessions. Repairing them from this branch would bury a scoped admission-threshold change inside a 23-module fleet repair. The merge-policy question this raises — several PRs at the approval floor that cannot go green on inherited reds — is escalated separately with the same receipts attached. — sent from clever-tern-899 |
gunbc.whole_corpus_compile_admissiondeclared a 7 GiB demand figure. The whole-corpus compile's actual peak, measured on the compile route itself, is 12.41 GiB — so the arm admitted hosts the instrument would then be SIGKILLed on. A refusal that exists and cannot fire for the population needing it is the shape DESIGN §5 names, where the deficit's frequency is zero by construction.The trigger fired; it was not my judgment
The 7 GiB figure was a declared PROXY — two 2026-07-21 receipts on the floor route rather than
gunbc compile's emit leg, used as a lower bound — and it named its own re-measure trigger: "a dated uncensored whole-tree peak taken on the compile route itself." This is that peak.Measured 2026-08-28 on srv1 (502 GiB total, 334 available), clean tree staged at
91c05c1b344, binary built from that same sha:--target dag--target rustBoth completed and refused on diagnostics — neither was killed. A positive control ran first: the scoped compile of
src/v2/std/node.dagreturnsEXIT=0with a file emitted, so the harness produces both outcomes and a refusal is a finding rather than a broken rig. Exit status and peak captured together throughout, because a SIGKILL prints nothing and reads as a clean zero. 271 GiB free at exit, so neither peak is an armed line mistaken for demand.Declared figure is the higher reading rounded up to whole-gibibyte grain — 13 GiB — because for a demand figure rounding up refuses the marginal case.
The 15 GiB CI runner still admits, with ~21% headroom where the old figure implied better than 2×.
Two notes were false and are rewritten, not amended
One witness was a change detector; it is now a relation
the_budget_that_was_sigkilled_refuses_and_names_its_sourceassertedrequired == 7516192768— a copy of the authority's own constant, so its only closing move after a re-measure was to hand-edit the expectation to whatever the authority now says. That is the self-comparison §5's oracle rule names: it caught nothing and went red on this measurement. It now derives the figure from the authority and asserts the relation it exists for. The budget literal beside it stays a literal deliberately —5269094400is a dated external receipt, the MemAvailable of the runner that SIGKILLed this instrument twice.A new arm carries the discriminating red:
the_budget_the_superseded_figure_admitted_is_now_refusedfails against the old authority and passes against this one, so the fail-open closing is evidenced by execution rather than asserted. Progress-safe, because a demand figure does not shrink with corpus growth and the trigger only fires upward.The re-measure trigger now requires a matched binary
Not decoration. My first attempt used a binary 91 stage0 Rust files behind its subject and reported a different blocking population — one diagnostic, of an entirely different class. A peak taken under a mismatched compiler measures neither the tree nor the compiler anyone runs.
Evidence, executed
memory_governortests pass.dagadmission witnesses pass (4 pre-existing + the new red-carrying arm).rsconstant to the.dagauthoritycargo fmt --all --checkcleanv1_src_dag_parse: 4229 files parse-clean, 0 annotation defects, noCITED-MODULE-ABSENT(read from output)The seed mirror change is admitted under the v1 purpose test: this is defect repair on the self-host path, and it modifies an existing constant rather than growing the seed.