Repository navigation
Delete the 56 transition-admission rows orphaned by the removed namespace-wave wall - #12195
Conversation
…pace-wave wall gunbc#11774 (2026-09-20) deleted the namespace-wave-admission wall together with gunbc.namespace.transition_admission, the module every row under dag/gunbc/namespace/transition_admission/ imports. #11771 then deleted the 17 survivors it could see, but #11565, #11667, #11681, #11689 and #11625 were already in flight and landed 56 more rows afterwards. Each one was written to adjudicate a namespace-wave refusal that no longer exists. They landed green because before gunbc#11829 a refused floor did not fail the job: #11625's floor job 106202716752 printed every one of these errors and `floor refused`, and still concluded SUCCESS. These rows are 280 of the 500 blocking diagnostics in the whole-corpus `gunbc compile --target dag` sweep, 5 per file: the unresolved import plus TransitionAdmission / Binding / NotAuthored. Nothing consumes them. gunbc.rung_drop.namespace_wave_admission_wall_removed already records the directory as "deleted with the wall", so this delete carries out that record. No row carries a fact meant for a replacement authority: docs/plans/namespace-cut-replacement-plan.md names none of them. v2.compiler.reference_conservation_census reference_conservation_stratified_sample_paths named 6 of the deleted files. They are dropped from the sample: the list is a rule over existing .dag files, and leaving them in would print `unreadable` lines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tanding blocking roster A compiler change that adds or tightens a refusal can refuse code in admitted modules that no required lane compiles on that change. The touched-entry seed and gunbc#12130's interface-consumer planning cover a changed module and every module reading a changed declaration. A compiler change changes no declaration a module imports, so it seeds nothing, and its new refusals land on main while every lane is green. The 2026-09-23 whole-root sweep (session neat-ibex-861) found 500 blocking diagnostics. 280 came from the transition-admission rows gunbc#12195 deletes. Most of the rest are refusals from checks that landed after the files they refuse were last edited. - gunbc.rung_drop.compiler_change_refusals_land_outside_every_compiled_closure: previous rung 2, temporary rung 1, LostAsPassenger of the whole-corpus compile-clean pass. Its trigger is the capability: a whole-root blocking-diagnostic identity join runs on a schedule or gate against a committed roster. - gunbc.whole_root_blocking_diagnostic_roster: the standing population keyed by (module, verbatim message, occurrence), minus #12195's rows, typed TranscribedUncited (DESIGN section 4d) because it is a hand-split snapshot rather than a classifier's observation. The read obligation is to re-seed it from the first real run. Its consumer is the join, a declared frontier: it needs a runner, which waits on an operator ruling, and no trigger is wired here. No variant is keyed. The CLI prints none, and adding one would be refused v1 surface growth (gunbc.v1_maintenance_standing PublicSurfaceGrowth). The verbatim message names the offending symbol, which is finer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tanding blocking roster A compiler change that adds or tightens a refusal can refuse code in admitted modules that no required lane compiles on that change. The touched-entry seed and gunbc#12130's interface-consumer planning cover a changed module and every module reading a changed declaration. A compiler change changes no declaration a module imports, so it seeds nothing, and its new refusals land on main while every lane is green. The 2026-09-23 whole-root sweep (session neat-ibex-861) found 500 blocking diagnostics. 280 came from the transition-admission rows gunbc#12195 deletes. Most of the rest are refusals from checks that landed after the files they refuse were last edited. - gunbc.rung_drop.compiler_change_refusals_land_outside_every_compiled_closure: previous rung 2, temporary rung 1, LostAsPassenger of the whole-corpus compile-clean pass. Its trigger is the capability: a whole-root blocking-diagnostic identity join runs on a schedule or gate against a committed roster. - gunbc.whole_root_blocking_diagnostic_roster: the standing population keyed by (module, verbatim message, occurrence), minus #12195's rows, typed TranscribedUncited (DESIGN section 4d) because it is a hand-split snapshot rather than a classifier's observation. The read obligation is to re-seed it from the first real run. Its consumer is the join, a declared frontier: it needs a runner, which waits on an operator ruling, and no trigger is wired here. No variant is keyed. The CLI prints none, and adding one would be refused v1 surface growth (gunbc.v1_maintenance_standing PublicSurfaceGrowth). The verbatim message names the offending symbol, which is finer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
SOURCE HOLD at exact head b79067af1d60f82d1f962b09c9480b0590c54de1.
The 56 row deletions themselves are correct. #11774 removed the namespace-wave-admission phase and gunbc.namespace.transition_admission; the standing rung-drop explicitly says this roster directory is deleted with the wall; and I found no replacement-authority obligation for these temporary admission rows. All five required checks are green and GitHub reports CLEAN.
Two repairs remain.
1. Do not silently shrink the pinned reference-conservation sample
This head removes six dag/gunbc/namespace/transition_admission/... members from reference_conservation_stratified_sample_paths and adds no replacements. That is not consistent with the authority in the same module:
- it calls this the pinned 2026-09-23 sample over main
fec339d561; - it says each stratum takes
max(6, round(...))files; - it says the list is kept so the sample reruns byte-for-byte;
- and the census explicitly says an unreadable path is its own line, never an omission.
After this edit the original 315-path sample becomes 309 paths, and the dag/gunbc/namespace stratum has only namespace_structural_observation_bridge_seed_growth.dag left: seven sampled paths become one, below the stated minimum of six even though the live namespace stratum still has enough <=8 KB files. This rewrites and weakens the evidence denominator while leaving the declaration of that denominator unchanged.
Required disposition: either leave the six paths in the historical pinned sample, where deletion honestly yields six unreadable lines, or mint/recompute a new, separately identified sample from this exact corpus using the declared selection rule while preserving the old sample and its receipts. Do not hand-shrink the pinned sample and continue calling it byte-for-byte stratified evidence.
2. Correct the provenance account
The current body and source commit say #11565, #11667, #11681, #11689 and #11625 account for these 56 survivors, and that #11771 deleted 17 rows. The exact history does not support that:
- the 56 rows being deleted divide as 32 owned by #11625, 10 by #11565, 10 by #11667 and 4 by #11689;
- #11681 contributes none of these 56, because #11696 already deleted its 13 admission rows;
- the final #11771 diff deleted 23 transition-admission rows, not 17.
Please amend the commit/body provenance while changing the sample treatment. The core deletion should then be a straightforward re-review; I found no objection to removing all 56 orphan rows.
…rovenance The six transition_admission paths go back into v2.compiler.reference_conservation_census reference_conservation_stratified_sample_paths. The sample is pinned to fec339d and declared byte-for-byte rerunnable, with at least six paths per stratum. The census renders an unreadable path as its own `unreadable` line, never an omission, so a deleted path belongs in that rendering, not in a shrunken list. Recomputing the sample is not this change's work. CORRECTION to the first commit's message, which named the wrong landing PRs and a wrong count. The 56 surviving rows came from gunbc#11625 (32), #11565 (10), #11667 (10) and #11689 (4). #11681 contributed none: its 13 rows were already deleted by #11696. #11771 removed 23 rows, not 17. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
APPROVE-MERGE at exact head 5f7309e3480b86477c0f541f86cbf95f34e88ff7, superseding my REQUEST_CHANGES review at b79067af1d60f82d1f962b09c9480b0590c54de1.
Both held issues are discharged.
-
The historical sample is preserved. The only source delta from the held head restores the six
dag/gunbc/namespace/transition_admission/...members toreference_conservation_stratified_sample_paths. The sample therefore remains the pinned, byte-for-byte 315-path denominator overfec339d561; after the row deletion, those six members produce the census's explicitunreadable <path>result rather than silently disappearing. The PR diff against main is now exactly the 56 deleted roster files: 56 changed files, zero additions, 1,064 deletions. -
The provenance account is corrected. The second commit and PR body now state the actual surviving population: #11625 = 32, #11565 = 10, #11667 = 10, #11689 = 4; #11681 contributes zero because #11696 already deleted its 13 rows; and #11771 deleted 23 rows, not 17.
The underlying deletion remains the correct disposition: #11774 removed the namespace-wave-admission phase and its carrier, while the standing rung-drop says the transition-admission roster directory is deleted with the wall. I found no replacement-authority obligation in these temporary rows.
Compiler, clippy, emit-build, floor and the witnesses rollup all pass at this exact SHA, and GitHub reports the pull request mergeable. No further condition remains unless the head moves.
First burn-down from the out-of-closure blocking-error census (dashboard node adhoc-a2a92155-454).
What: delete every row under
dag/gunbc/namespace/transition_admission/(56 files). Each one importsgunbc.namespace.transition_admission, which gunbc#11774 deleted along with the namespace-wave-admission wall. The pinnedv2.compiler.reference_conservation_censusreference_conservation_stratified_sample_pathsis left unchanged. That sample is pinned to fec339d and declared byte-for-byte rerunnable, and the census renders a deleted path as an explicitunreadableline, so its six entries for this directory now render that way.Why the rows exist: #11625 (32 rows), #11565 (10), #11667 (10) and #11689 (4) authored them to adjudicate namespace-wave refusals. Those branches landed after #11774 had removed the wall. #11681's 13 rows are not among them, because #11696 already deleted them. #11771 had already deleted 23 survivors on the same reasoning.
gunbc.rung_drop.namespace_wave_admission_wall_removedrecords the directory as "deleted with the wall", and the namespace-cut plan names none of these rows, so this is §3c dangling, not a migration. (An earlier version of this body and the first commit message named the wrong PRs and said 17; the second commit states the correction.)Why they landed: before #11829, a refused floor did not fail the job. #11625's floor job
106202716752printed all of these errors andrequired-ci: floor refused, and the job still concluded SUCCESS.Receipt: neat-ibex-861's whole-root sweep of 2026-09-23 (
gunbc compile --source-root dag --source-root src/v2 --target dag --repository gunbc --measured-root-demands tools/whole_corpus_compile_measured_root_demands.json) reported 500 blocking errors. 280 of them are these 56 files × 5 (the unresolved import, plusTransitionAdmission,BindingandNotAuthored). After this PR, no.dagor.rsfile imports the module. The remaining 220 errors (39 designed-refusal probes, and 181 wall-class errors in 62 modules) are out of scope; the compiler-change vector behind them is declared in #12201.🤖 Generated with Claude Code