Repository navigation
Follow the renamed witness in the cost-debt roster instead of deleting its row - #10769
Merged
Merged
Conversation
…g its row main is red repo-wide and every open PR inherits it. The floor refuses with identity=test.claim.live_deploy.emit.apply_script_and_tree_sync_unit_stay_within_ci_runner_grants is enrolled in v2.workflow.floor_cost_debt but the tree DECLARES NO SUCH IDENTITY, cause=stale_cost_debt, and instructs: "Delete the row." DELETING THE ROW WOULD HAVE BEEN WRONG, and the row itself says so. Its annotation carries "TRIGGER (CAPABILITY, NOT ROSTER ERASURE) ... merely deleting this identity, emptying the roster, or replacing production emission with a smaller fixture does not restore the coverage and does not satisfy the trigger." The diagnostic is right that the identity is absent and cannot see why. THE WITNESS WAS RENAMED, NOT DELETED. #10724 (74e7ab6) stopped the publication member writing two programs to one unit name, so the tree-sync half of the subject went away and the witness narrowed with it: apply_script_and_tree_sync_unit_stay_within_ci_runner_grants became apply_script_stays_within_ci_runner_grants, in the same module, and the debt row was not carried across. So the subject still exists and its debt is still owed; what broke is the reference. The roster now names the live identity. The historical measurement in the annotation deliberately KEEPS the old spelling -- 563ms was taken against the two-program subject, and rewriting it to the new name would attribute a figure to a subject that did not exist when it was measured -- with a note above it recording the rename so the old spelling is not read as live. Verified rather than assumed: the new identity exists at dag/test/claim/live_deploy/emit_test.dag in module test.claim.live_deploy.emit, the old spelling appears nowhere in the tree outside this file, and the new name was absent from the roster before this change. Compile: 26 blocking errors, none in this file -- the same count main carries. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01632CTZ8diiLNBQaXobNWKQ
This was referenced Sep 7, 2026
This was referenced Sep 7, 2026
briansrls
pushed a commit
that referenced
this pull request
Sep 11, 2026
…t 1: joint_claim_join, the instrument behind its figures (#11044) * Scope the jointly-incompatible-open-PR mitigation: a claim-channel x surface join over the declaration index, advisory-first Three 2026-09-10 reds on main were pairs of individually-green, textually disjoint PRs whose union does not compile. This records the scope of a mitigation and builds nothing, answering the four questions the brief asked before any shape: THE CUT. All three public instances are one finding kind, ImportMemberAbsent, and only one was a deletion: #10865 was a rename, and #10923 dropped a RE-EXPORT with no declaration deleted anywhere. The cut is therefore the surface predicate the declarations rider already applies, import_surface_has (declared | variants | reexported) as a base-minus-head DELTA, not the kind of edit. The general case is every claim channel the index carries -- imports, citations, rostered rows (#10769, #10718 are the same shape through the other two) -- and the residuals the index cannot see are named: field rename, arity/signature, and pure freshness (private #49 x #50). THE COST. namespace_wave_admission already reconstructs a base index beside the head index from only the diff-touched files, per run, in the witnesses lane; the join is A(I) & R(D) minus the claims D itself retires, a set intersection, not a pairwise compile. Measured retrospectively over 374 first-parent commits since 2026-08-28: the raw join is a 207-hit candidate list (the superset trap); with the one exclusion it is 5 hits, 4 of them the three brief instances, the fifth an ordering artefact an open-PR-set join excludes by construction. Recall 3/3 on the window's ImportMemberAbsent reds. THE PLACEMENT. No new job (roster closed): a rider on the parse phase, like rostered_row_join, advisory, reporting and annotating without pushing a phase failure; the one emitted-workflow change is a pull-requests: read permission row. The freshness caveat of a push-time verdict is stated as the reason this sits beneath the ceiling. THE REFUSAL. One finding per removed entry x claiming site: the (module, name) and which surface it left, the sibling PR and head, the claiming module, in_declaration and SourceLocation; NotEvaluated when the open-PR set is unobservable, never an empty hit set. gunbc-private: no parse phase, the overlay is outside DAG_PARSE_SWEEP_ROOTS, so the join is public-only today; 113/114 private modules import from public, a cross-repo exposure no public PR is ever compiled against, named and left to warm-badger-62's lane. Ceiling stays with gunbc.plans.ci_merge_freshness and the landed, deferred receipt_is_admissible; this record retires with it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzQcQRu3WKxJuWV2zaiHSW * chore: regenerate drifted generated artifacts (ci auto-heal) Ledger-Repair-Judged: docs/design-rung-drops.md * Checkpoint 1: joint_claim_join, the instrument behind the scope's figures; the private gap as a typed stall; the within-tree half re-homed Answers review 63772 / 63786 (a transcribed measurement with no producer) and the manager's 2026-09-11 rulings, by landing the producer rather than softening the claim. THE INSTRUMENT. v1_compiler.bin.joint_claim_join computes, per change, the export-surface entries removed (declared | variants | reexported, base minus head) and the import claims added and retired, from only the diff-touched files on both sides through namespace_wave_admission base_records and diff_sides, and joins every admitted pair. A claim is joined only while LIVE when the entry leaves: not retired by the removing change itself, and in retrospective mode not retired by any change that landed between the pair. raw_candidates is reported beside findings so the width the exclusion removes stays a number. Seven fixture-boundary controls, real parser, real join: one positive control per instance shape (variant deleted, name renamed, re-export dropped), one RED per exclusion, one for the pair predicate, one for a claim already at the base. WHAT IT ANSWERS, cited by invocation in the plan and not transcribed: `joint_claim_join 6a54695^..f078c59` (first-parent main since 2026-08-28, default 3-day window) reports subjects=373 raw_candidates=236 findings=4 -- exactly the three 2026-09-10 instances (instance 1 is two names). The two candidates the first-exclusion-only run reported as findings were both a third commit retiring the claim between the pair (#10617 for the harness one; the DensityMarketedMax one likewise); two artefacts with one cause was a defect in the retrospective's pair predicate, built in as the second exclusion with its own control rather than described. TWO CORRECTIONS THE INSTRUMENT MADE TO THE SCOPE. Instance 2 (#10923 x #10925) was a MOVE, not a dropped re-export: the base declared mutation_status_is_commit_ambiguous in secret_provision_actuator and #10923 re-homed it; the instrument reports `(declared)` and the plan's table now says so. The dropped re-export stays covered by the surface and keeps its control. THE RULINGS. Checkpoint 2 stops at the pull-requests:read permission row on a required job (the operator's trade); the dashboard reader is costed in section 4.1 and preferred on every axis but authority. The private gap is a typed GuaranteeStall row (joint_claim_join_private_corpus_unindexed_stall) with the overlay's extra-source-root trigger as its grounding, not prose. The within-tree field-set case is NOT a checkpoint here: its home is witness_that_fails_to_compile_is_absent_rather_than_red, and this change appends a receipt there widening the trigger from claim-root files to the ruled capability -- every construction site of a type whose field set changed, regardless of gate closure -- per section 4b(3), rather than minting a second authority. Hand Rust is enumerated in gunbc.joint_claim_join_seed_growth (33 items, no impl block, every one citable) and rostered in seed_growth_admission. Verified remotely: clippy -D warnings clean on the bin, 7/7 tests, the retrospective above, and v1_src_dag_parse over the corpus with every new .dag present: 5461 files parse-clean, no findings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzQcQRu3WKxJuWV2zaiHSW * State the population compile's boundary on the row: compilability of the claim-root population, not evaluation of it A file that compiles and whose test fns are declared but never reached from the entry passes that wall untouched (cool-badger-34's four fns, 2026-09-11). That hole is discriminating_arm_built_but_never_enrolled's, named as the neighbour so the word POPULATION is not later cited for a scope the trigger never claimed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzQcQRu3WKxJuWV2zaiHSW --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
mainis red repo-wide and every open PR inherits it. The floor refuses:Deleting the row would have been wrong, and the row itself says so
Its annotation carries:
The diagnostic is correct that the identity is absent. It cannot see why, and the remedy it suggests is the one the row explicitly forbids.
The witness was renamed, not deleted
#10724 (
74e7ab63bfb) stopped the publication member writing two programs to one unit name, so the tree-sync half of the subject went away and the witness narrowed with it:Same module,
test.claim.live_deploy.emit. The debt row was not carried across. So the subject still exists and its debt is still owed — what broke is the reference, and the fix is to follow it.The historical measurement keeps the old spelling, deliberately
The annotation's
563msfigure was taken against the two-program subject. Rewriting it to the new name would attribute a measurement to a subject that did not exist when it was taken. A note above it records the rename so the old spelling is not read as live.Verified rather than assumed
dag/test/claim/live_deploy/emit_test.dag, moduletest.claim.live_deploy.emitmaincarriesNot my lane; I hit it because it reds my own PRs, and the diagnosis was cheap once the deleting commit was read. Flagging for #10724's author in case the rename has other stranded references I did not look for.
🤖 Generated with Claude Code
https://claude.ai/code/session_01632CTZ8diiLNBQaXobNWKQ