Repository navigation
The field my own change made required left seven fixtures behind, and nothing measured it - #9646
Conversation
… nothing measured it gunbc#9542 added capacity_class to ExecutionRequirements as a required field. Seven training witness fixtures construct that literal and were not updated, so main has not compiled its witness corpus since 18:18Z on 2026-08-28. This adds the field and its import to all seven. WHY THE VALUE IS CustomerExecutableCapacity, decided on the model rather than on what compiles. work.dag defines control-plane capacity as the cells "running our own scheduler, reconciliation, admission and receipt work", and states directly: "WHAT THIS FIELD IS NOT: it is not the executor's class. It is what THIS WORK REQUIRES." A training run is not our scheduler, reconciliation, admission or receipt work -- it is the customer workload the fabric exists to execute. THE COUNTER-OBSERVATION, AND WHY IT DOES NOT APPLY. Every other constructor in the tree passes ControlPlaneCapacity, and a peer declined to fill these in on exactly that ground -- suggestive, not evidence. That caution was right. But those five are control-plane because their SUBJECTS are: fabric_selection, fabric_terminal_contract and fabric_witness_run all model our own machinery. The pattern is evidence for reading the field semantically, not for copying its value. Recorded because a later reader will find seven fixtures disagreeing with every other constructor, and without this it looks like a mistake. THE FIELD IS INERT HERE, measured per file rather than in aggregate: all seven reference capacity_class zero times. They assert readback, checkpoint, resolution and reconciliation, never admission. So this changes no assertion in any of them, which is what makes it mechanical. HOW IT REACHED MAIN, which is the mechanism rather than the incident: #9542 merged while main was broken by a duplicate-definition pair, so every run died at "Build the witness fold" before the floor executed. It was approved and landed WITHOUT EVER BEING MEASURED. Approvals never established that it worked; nothing did. The defect was found the first time a floor ran to completion on a repaired main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Measured on run The located set, before and after, at identity grain
Cleared — exactly the seven this PR touches, and nothing else: New errors introduced: none. The set difference in the other direction is empty, so this diff cleared seven files and added nothing. Correcting my own countThis PR body says "removes 7 of the 18 located failures." 18 was wrong. The true before-figure is 26 occurrences across 11 files — I had summed the families carelessly, counting each file once where the log reports every error twice (the floor compiles in two passes). The honest statement is:
The error understated the total and therefore understated this fix's share (7 of 11 files, not 7 of 18 anything). I am correcting it because a wrong denominator in a PR body is the kind of figure a later reader quotes. Why a red here is the evidence, not a consolationA green check is impossible on this branch while four families I do not own remain on main, so a green would establish nothing — it would falsify my model of the floor, which compiles the corpus rather than the diff. The discriminating outcome is precisely this: red, with the located set dropped to 12 and my seven identities absent from it. That names what cleared instead of asserting a boolean, which is strictly more informative than a passing gate would have been. What remains, and it is not mineThese need rulings from owners who are not available — a This PR is therefore merge-ready on evidence rather than on a check that cannot go green: discriminating RED is the pre-fix compile of the same entry, positive control is the post-fix compile at 0 blocking, and the corpus measurement above shows exactly the intended identities clearing with nothing introduced. — sent from silent-bear-842 |
|
Reconciling the counts, and widening my own remaining-work figure — my previous comment measured one phase and read as if it covered main's whole debt. Both figures were right about different sets
Neither is the other's denominator, which is why they never reconciled by inspection. 18 was not wrong — I retract that part of my correction. It was unique-failures-across-both-phases. The reconciled measurement, both phases
Verified in this PR's own log, which states it outright: Where my last comment narrowedI reported "12 occurrences across 4 files" remaining. That is strict-preparation only. It omits the declarations phase entirely, and those five failures are still on main, still blocking, and this PR does not touch them: They run in an earlier phase than strict-preparation, which is exactly why a strict-prep-shaped read misses them — the phase that fails first is not the phase people read. So the honest remaining statement is five families, not four: the four I named plus this citation family — 12 strict-prep occurrences plus 5 declarations findings. What is unchangedThis PR still clears exactly the seven files it touches, with an empty set difference in the other direction — nothing introduced. The reconciliation corrects what remains, which was never this fix's denominator. And the caveat stands verbatim, because it is the distinction most easily skipped: this establishes that the seven — sent from silent-bear-842 |
…ery PR's floor All landed on main inside the masked window (#9612's parse refusal kept the floor from typechecking anything); this branch is the first head to reach strict preparation, so they surface here. Seven are ported verbatim from #9646 (capacity_class on the training fixtures, value CustomerExecutableCapacity per that PR's model reading — it no-ops when that PR merges); four are fixed here: - source_integration_landing_spine: the Optional-receiver '|> map' at the additional-continuation arm becomes a match (the module's own idiom two arms up), and the module's unresolved-method frontier row in v1/04_infer.dag is deleted per the diagnostic's own prescription — the deficit fully dissolves, so the row must not keep its ground. - fabric_terminal_contract_witness_test: the positive-control receipt is bound as Receipt<NonEmptyStr> before the call, so the payload's P no longer infers String against the NonEmptyStr grant. - repository_convergence_placement: drop the primary_path argument; repository_converge_wet derives it internally and no longer declares the parameter. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh
* Close the guarantee_rung_drop parse refusal and the generated-artifact drift the masked window accumulated - guarantee_rung_drop.dag: restore the missing closing brace on the wall_deadline GuaranteeStall record (#9612); the unparseable module refused the whole module index, so both required lanes died before any drift adjudication could run. - gitignore authority/model/emit: delete the seven hardcoded .py allowlist variants whose subjects the measurement bankruptcy and the plan-markdown cut deleted; drop the gate test fn that pinned those literal rows (a tree-copied oracle). - generated_artifact.dag: repoint the two stage0 generated .dag ArtifactLocation rows to dag/gunbc/stage0/, where #9637 moved the files; the registry still named the old directory. - Regenerate .gitignore, .gitattributes, and .githooks via generated_artifact_gate main_wet: .gitattributes drops the 41 merge-driver rows for plan markdowns #9635 deleted (verified by executing expected_gitattributes()); .gitignore drops the dead allowlist rows and gains the derived ignore rows for authority-only plan markdowns; hook headers pick up the post-reorg githooks/ module paths. - Delete dag/config/codegen_paths.dag: an orphan module no closure reaches, describing a layout that no longer exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Remodel .gitignore: producer-declared workspace footprints with typed ignore reasons Replaces gunbc.gitignore_model + gunbc.gitignore_authority (one nullary variant per path, patterns restated in a central emit match — the shape that let seven dead allowlist rows emit unnoticed) with a producer-owned derivation: - std.workspace_artifact: the agnostic shape — WorkspaceArtifact {pattern, meaning, reason} with a closed IgnoreReason vocabulary, and WorkspaceFootprint with CitedUpstream/RepoTool provenance. - Each extdeps product declares its own footprint beside its citation (cargo, cargo-tarpaulin, CPython/PEP 3147, npm, tmux, macOS Finder, Windows Explorer, JetBrains, VS Code, Vim, Emacs, dotenv); repo-chosen locations are parameters, so policy stays a workflow fact. - gunbc.repo_workspace joins extdeps footprints with the repo's own tools' declarations (each naming its owner module) — onboarding a concept now naturally carries what files it introduces, what they mean, and why they are untracked. - gunbc.gitignore_emit becomes a pure renderer: it declares no pattern of its own; the emitted file carries each pattern's reason and meaning as comments. Generated-artifact rows remain a separate arm derived from gunbc.generated_artifact commit policy. - src/v1/runtime_rust.dag: align the emitted trace_mark doc comment with the #9635 hand-edit of the generated v1_rt.rs mirror, restoring regen first-generation equality (drift was masked on main by the guarantee_rung_drop parse refusal). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Install the stage0 mirror for std.workspace_artifact The new module entered the v1 seed closure, so --required-regen refused with 'emitted surface has no committed mirror'; this installs the candidate the regen run produced (std_workspace_artifact.rs plus its lib.rs module line), unmodified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Install the regen-produced stage0 mirrors the remodel drifted --required-regen names four drifted surfaces, each a direct consequence of this branch's edits: extdeps_cargo.rs (cargo.dag gained its workspace footprint), v1_compiler_runtime_rust.rs and v1_rt.rs (the trace_mark doc comment realignment), and emitted_population.rs (the population gained std_workspace_artifact). All four installed from the regen candidate tree unmodified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Use concat, not append, for the cargo footprint list join The emitted v1_rt::append takes (list, one item) while the interpreter's append(list, items:) concatenates lists — cargo.dag is the first mirrored seed module to hit that divergence, so its emitted mirror failed to compile (E0308 at extdeps_cargo.rs:277). concat has the same list-concatenation meaning in both realizations. The regenerated mirror follows in the next commit once the fixed-point verification completes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Install the second-generation mirrors: concat-form extdeps_cargo, corrected v1_rt extdeps_cargo.rs is the regenerated mirror of the concat fix (compiles clean; verified by cargo locally). v1_rt.rs corrects a first-generation install in the previous mirror commit: that candidate was emitted by the pre-fix binary, so it reverted the trace_mark doc comment while the generator mirror in the same commit moved forward; this is the second generation's output, matching what the current generator emits. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Port two masked-window main defects this branch unblocked CI into: frontier fixture exemptions, BMC demand-curve type error Both pre-date this branch and were invisible while #9612's parse refusal kept every required phase from running; this branch's head is the first to reach the declarations census and the floor's strict preparation, so they surfaced here. - declaration_index.rs FIXTURE_CARRIER_CITATION_EXEMPTIONS: #9607 re-pointed test.claim.annotation_carrier's planted rows at the deliberately-fictional test.fixture.frontier without updating the exemption roster. Add the four rows for the new deliberately-absent citations and delete the spent extdeps.network.mac row the census itself demands removed. - extdeps/bmc/pid_control_program.dag curve_points_agree: the output half compared a ZoneDemandValue where decimal_measures_agree declares a Measure; compare the ExactDecimal magnitudes directly (verified: the entry now compiles with 0 blocking diagnostics). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Close the remaining eleven strict-preparation diagnostics blocking every PR's floor All landed on main inside the masked window (#9612's parse refusal kept the floor from typechecking anything); this branch is the first head to reach strict preparation, so they surface here. Seven are ported verbatim from #9646 (capacity_class on the training fixtures, value CustomerExecutableCapacity per that PR's model reading — it no-ops when that PR merges); four are fixed here: - source_integration_landing_spine: the Optional-receiver '|> map' at the additional-continuation arm becomes a match (the module's own idiom two arms up), and the module's unresolved-method frontier row in v1/04_infer.dag is deleted per the diagnostic's own prescription — the deficit fully dissolves, so the row must not keep its ground. - fabric_terminal_contract_witness_test: the positive-control receipt is bound as Receipt<NonEmptyStr> before the call, so the payload's P no longer infers String against the NonEmptyStr grant. - repository_convergence_placement: drop the primary_path argument; repository_converge_wet derives it internally and no longer declares the parameter. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Resolve the three remaining audit leftovers: delete the import-strip dumps, register js_site's generated pages, keep the bound probe receipt - docs/plans/import-strip-measurement/ and import-strip-residual-ledger.tsv: deleted as unconsumed transcription per the measurement-bankruptcy principle (unconsumed transcription disappears; consumed evidence stays attached to its consumer). Neither is bound in gunbc.doc_graph_roots — the bound import-strip doc is a different, surviving plan markdown. The citing plan's prose now records the deletion. - dag/examples/js_site/generated/: the six committed generated files were produced by examples.js_site_emit and adjudicated by nothing. They are now JsSitePageArtifact rows in gunbc.generated_artifact (derived from the page roster, not hand-listed), located by js_site_emit's own path fns and generated through its pure per-page projections, so the generated-artifact drift phase adjudicates them like every other committed generated artifact. - docs/probes/leading_minus_continuation_silently_truncates_2026-08-23.md: no change, deliberately — gunbc.doc_graph_roots already binds it as consumed evidence under an operator ruling that reverted its deletion. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Install the infer mirror for the frontier-row deletion; adjudicate js_site under the drift gate - src/v1/stage0/src/v1_compiler_infer.rs: regenerated mirror of the 04_infer.dag frontier-row deletion; --required-regen reports first_generation_equal=true on this tree after one rebuild, and the landing_spine entry now compiles with 0 blocking diagnostics. - generated_artifact_emit: the extra-validation match gains its JsSitePageArtifact arm (main_wet's fail-closed non-exhaustive refusal caught the omission). - .gitattributes: regenerated; the six js_site pages join the derived merge-driver population. main_wet regenerates the pages byte-identical to what was committed, so registration changes no page content. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh * Converge v1_rt on the authority's citation text after the merge of main Main closed the v1_rt drift by restoring the mirror to the old docs/plans/ci-floor-fractal-gantt.md citation; this branch had moved the authority to 'ci-floor-fractal-gantt (plan doc deleted 2026-08-28)'. Both were internally consistent and disagreed. The deciding fact: the plan doc does not exist on the merged tree (#9635 deleted it; gunbc.plans.ci_floor_fractal_gantt is authority-only), so main's direction re-landed a citation to a nonexistent file — the §3 stale-citation class. The authority-side text survives the merge in runtime_rust.dag and its generator mirror; this installs the emitted v1_rt.rs so the pair agrees, verified by --required-regen on this tree. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQPnTvxdvVjBLzjL6bcWVh --------- Co-authored-by: Claude <noreply@anthropic.com>
gunbc#9542 added
capacity_classtoExecutionRequirementsas a required field. Seven training witness fixtures construct that literal and were not updated, so main has not compiled its witness corpus since 18:18Z. This adds the field and its import to all seven — two lines per file.How it reached main — the mechanism, not the incident
#9542 merged while main was broken by a duplicate-definition pair, so every run died at
Build the witness foldbefore the floor executed. It was approved and landed without ever being measured. Approvals never established that it worked; nothing did.The defect surfaced the first time a floor ran to completion on a repaired main (
33209193747), which is also the first run tonight whose red carried any information about a diff.Why the value is
CustomerExecutableCapacityDecided on the model, not on what compiles.
product/fabric/work.dagdefines control-plane capacity as the cells "running our own scheduler, reconciliation, admission and receipt work", and states directly:A training run is not our scheduler, reconciliation, admission or receipt work — it is the customer workload the fabric exists to execute.
The counter-observation, and why it does not apply
Every other constructor in the tree passes
ControlPlaneCapacity, and a peer declined to fill these in on exactly that ground — suggestive, not evidence. That caution was right. It loses because those five are control-plane because their subjects are:fabric_selection,fabric_terminal_contractandfabric_witness_runall model our own machinery. So the pattern is evidence for reading the field semantically, not for copying its value.Recorded because a later reader will find seven fixtures disagreeing with every other constructor in the tree, and without this it looks like a mistake.
The field is inert here
Measured per file rather than in aggregate: all seven reference
capacity_classzero times. They assert readback, checkpoint, resolution and reconciliation — never admission. So this changes no assertion in any of them, which is what makes it mechanical rather than a modeling decision with teeth.Evidence
What this does NOT do
It removes 7 of the 18 located failures in run
33209193747. The floor stays red on four families I do not own and have not touched:dag/extdeps/bmc/pid_control_program.dag(×4)Measure<…>vsProduct(ZoneDemandValue)dag/gunbc/source_integration_landing_spine.dagmapunresolved onOptional, plus its frontier row countdag/gunbc/live_deploy/repository_convergence_placement.dagprimary_pathdag/test/claim/fabric/fabric_terminal_contract_witness_test.dagExecutionGrant<String>declared vsExecutionGrant<NonEmptyStr>So #9598 still cannot go green, and neither can anything else. That last row is in the fabric tree and I checked it specifically: it is not in my diff, and I have not established whether #9542 caused it — so it needs whoever owns
ExecutionGrant's parameterisation rather than a guess from me.— sent from silent-bear-842