Skip to content

Retire the gunbc#11193 anchor admission row, consumed by its own landing - #11356

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
admission/retire-11193-anchor-row
Sep 14, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
admission/retire-11193-anchor-row

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Deletes one row and the doc paragraphs that described it. Nothing else.

Why now

#11347 landed the three bare-name import fixes at a745dac28d5. The admission row it carried admitted a namespace delta between base and head — and with the transition now present at the base, there is no delta left for it to admit. A consumed row refuses roster edits and landing (base equals head), so main's own push fails namespace-wave-admission until this lands.

This is the repayment half of the debt #11347's body declared, and it was always mine. It is paid adjacent to the borrowing rather than deferred, which is the entire reason the fix was extracted from #11193 in the first place: coupled to a blocked PR, the row would have sat in the roster across an indefinite wait and then blocked every lane's landing at an unscheduled moment.

The roster's resting state is empty. It is not a place rows live; it is a place rows pass through.

What else changed, and why it is not scope creep

The doc block above the array described the row in detail — "ONE ROW, gunbc#11193: …". Deleting the row and leaving that prose would leave a doc block asserting a row that no longer exists, which is worse than either state alone. Those paragraphs go with it.

Untouched: the general commentary on consumed rows, and the #11182 relocation distinction (a consumed row goes because its transition is present at the base, not because the array was being emptied).

Verification

  • cargo check -p v1-compiler --lib — clean
  • cargo fmt --all --check — clean (pre-commit hook)
  • The array returns to &[], its documented resting state

🤖 Generated with Claude Code

https://claude.ai/code/session_01D2AF1pri3WJkug5AtCYLGF

Brian Searls and others added 2 commits September 14, 2026 07:53
#11347 landed the three bare-name import fixes, so the transition this row
admitted is now PRESENT AT THE BASE and there is no delta left for it to
admit. A consumed row refuses roster edits and landing (base equals head),
so main's push fails namespace-wave-admission until it goes.

This is the repayment half of the debt #11347's body declared, paid
adjacent to the borrowing rather than deferred: the roster's resting state
is empty, and it is a place rows pass through rather than live.

Deletes the row and the doc paragraphs that described it -- a surviving doc
block above an emptied array would assert a row that no longer exists.
The general commentary on consumed rows and the #11182 relocation
distinction is untouched.

cargo check -p v1-compiler --lib: clean. cargo fmt --all --check: clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D2AF1pri3WJkug5AtCYLGF
…ation set alone"

Review 66052, correct and against me. I deleted the doc paragraphs describing
my own row and left the neighbouring ones asserting a population the
declaration no longer carries:

  ":1774"      "What remains below is the #11182 relocation set alone"
  ":1803-1809" "these seven still admit a real delta and deleting them would
               refuse a live transition"

Both are false against `&[]`. This is the exact shape the same block condemns
two lines up -- "prose naming ROW ONE and ROW TWO when neither row exists is
worse than no prose, because it reads as coverage" -- and the stale-citation
defect of DESIGN section 3.

The seven-row claim was ALREADY stale on main, where the array held one row.
It is repaired here rather than left because this file's own doctrine says a
consumed row's deletion comes due on the roster's OWN next touch, and this is
that touch.

KEPT: the #11156 narrative and the base-presence distinction it draws, which
is why a consumed row goes. That reasoning is still true and still the point.

cargo check -p v1-compiler --lib: clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D2AF1pri3WJkug5AtCYLGF
@gunbai-bot

gunbai-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

Fixed in 329b2f2a. Review 66052 is correct and the finding is against me in the sharpest possible way: I deleted the doc paragraphs describing my own row and left the neighbouring ones asserting a population the declaration no longer carries.

Both claims are false against &[]:

And the review's sharpest point is that this is the shape the same block condemns two lines up: "prose naming ROW ONE and ROW TWO when neither row exists is worse than no prose, because it reads as coverage." I quoted that doctrine in my own commit message while violating it one paragraph below.

On the "already stale on main" point — agreed, and it does not excuse leaving it. The seven-row claim was stale before this PR, since main's array held one row. But this file's own doctrine is that a consumed row's deletion comes due on the roster's own next touch, and this is that touch. Inheriting the stale prose to the next lane is exactly what the #11156 paragraph says not to do.

Kept deliberately: the #11156 narrative and the base-presence distinction it draws — a consumed row goes because its transition is present at the base, not because the array was being emptied. That reasoning is still true and is the reason the block exists. What replaced the stale paragraph states the roster is empty, notes the #11182 claim was already stale on main, and says why it is repaired here.

Also confirming the two checks the review made that I had not: run_wave_admission_between already carries an is_empty() → NoSubject arm, so an empty roster is a modeled state rather than an untested one; and git grep 11193 shows no mirror row left dangling in dag/gunbc/namespace/namespace_wave_admission.dag.

cargo check -p v1-compiler --lib clean; cargo fmt --all --check clean via the pre-commit and pre-push hooks.

— sent from sunny-carp-329

gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
…as its owner

The floor red on 67a369e was a single blocker: '1 consumed admission due for
correction or deletion'. main's #11193 row arrived here with #11347 and was consumed
the moment #11347 landed, and the roster charges a consumed row's deletion to its next
toucher -- this branch's fifteen rows are that touch.

gunbc#11356 is the CANONICAL owner of this deletion and says so; this is the same
deletion, taken here because the wall charges it to whoever touches the roster next and
#11356 is not queued. Identical deletions merge cleanly when #11356 lands. Its
describing paragraph goes with the row rather than being left naming an absent subject,
which is the stale-citation shape DESIGN §3 forbids -- prose describing rows that do not
exist reads as coverage.

This is the THIRD time an inherited row has been consumed under this branch
(#11156 -> #11240, #11182 -> #11274, #11193 -> #11356): a re-integrate that clears a
DIRTY head inherits main's admission rows, and their trigger landing reds this head.
gunbc#11345 cuts the const roster to directory rows and ends the class.

cargo check exit 0; 16 entries = 1 struct + this branch's 15.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015R9M9cY4iaqsqeaSDpT7g1
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>

#11356 owns that deletion (also carried on #11214). Copying it onto the new carrier would duplicate their receipt and keep a consumed row on a roster touch.
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
…h by the wall

#11347 landed, so the artifact_store_fs anchor relocation is at base and its one
admission row reports CONSUMED — 0 unadjudicated, 0 stale, 1 consumed due for
deletion. The wall charges a consumed row's deletion to the roster's NEXT TOUCH,
and this branch is that touch again by virtue of carrying its own six rows.

APPLIED UNDER THE STANDING RULING RATHER THAN RE-ASKED. The identical question
was decided today for the seven #11182 rows: the wall is designed to charge the
next touch, identical deletions on both sides merge cleanly in git, and waiting
costs hours of serialized CI and review on another lane's PR plus a re-run here,
against one push. #11356 owns the same retirement and is not emptied by this — it
keeps whatever else it carries, exactly as #11274 kept its failure-mode row.

Deleting it removes nothing that could still fire: with the transition present at
the base there is no delta left for it to admit. Its doc paragraph goes with it
rather than being left describing a row that no longer exists.

Verified by identity: the extdeps_external_authority_anchor spelling is gone and
no #11193 reference survives anywhere in the file; this branch's six stand
unchanged at RepositoryVisibility 1, PublicRepository 2, PrivateRepository 3.

The standing sentence above the array is corrected for the THIRD time in one day,
and now says so. This one retired a row this branch never authored, which is the
sharpest form of the argument for the directory-is-membership cut in #11345: a
census kept beside an array that every lane appends to rots continuously.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSpQ3EJ1Nn8V16yEDqbG4F
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 14, 2026
Merged via the queue into main with commit ba6530c Sep 14, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the admission/retire-11193-anchor-row branch September 14, 2026 10:07
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
#11356 landed and retired the gunbc#11193 anchor admission row — the row this
branch had already retired when the wall charged it to this touch. The identical
deletions reconcile exactly as the standing ruling predicts: the row is gone from
both sides and this branch's own six remain.

Both sides also independently removed the stale #11182 prose, which is the fourth
time that paragraph has been repaired today by two different lanes reaching the
same conclusion from the same rule.

One sentence of main's is kept rather than dropped with its body: main's revision
says empty is the roster's resting state, which is true in general and false in
the instant after this merge, since six rows are present. It is folded in as a
sentence that stays true either way — the six are consumed by their own merge and
#11316 is already authored to delete them, so a populated roster is a transition
and never a steady state.

Verified by identity: six rows, RepositoryVisibility 1, PublicRepository 2,
PrivateRepository 3; no #11193 row and no #11182 prose survives.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSpQ3EJ1Nn8V16yEDqbG4F
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
Both sides deleted the consumed #11193 row -- this branch took it on my parent's ruling
because the roster charges a consumed row to its next toucher and #11356 was not queued,
and #11356 has now landed as the canonical owner. Git reports that as a conflict rather
than a clean convergence because this branch also carries fifteen rows in the same
region, so the resolution takes main's post-deletion file and splices those back in.

16 entries = 1 struct + this branch's 15. #11193 is gone from both sides and is not
resurrected -- asserted in the splice.

cargo check exit 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015R9M9cY4iaqsqeaSDpT7g1
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
…rows

Conflict was the whole NAMESPACE_TRANSITION_ADMISSIONS block. Main
emptied the roster in #11356; this branch fills it with the 37 string_eq
rows. Neither side could be taken whole, so both were audited.

TAKEN FROM MAIN: the file entire, including its #11356 prose and its
correction that the #11182 relocation rows are gone and the claim they
survived was already stale. This branch's older paragraph asserting
those seven "still admit a real delta" is dropped -- main's identity
check answers the other way and gunbc#11274 retired them.

NOT TAKEN FROM MAIN: the closing sentence "THE ROSTER IS EMPTY AGAIN,
which is its resting state". True on main, FALSE here, because this
branch refills the array. Rewritten to keep main's correction while
saying plainly that what follows is a different population with its
reason stated at its own site.

RESTORED FROM THIS BRANCH after the audit found it dropped: the
THIRTY-NINTH DISSOLUTION entry naming the gunbc#11193 anchor row and the
identity check that admitted its deletion. Main retired the same row in
#11356 but its prose says only that two rows went, not which. The entry
is the only place in the file that names it, so it is kept with a note
that main landed the same retirement -- one retirement, recorded once,
by the side that wrote down what it was.

RE-AUDITED BY IDENTITY against the new base: none of the nine v2.lens
modules carries the transition yet, so all 37 rows still admit a real
delta and none is consumed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NtQbXXBvrT2onJjxKswVYf
@briansrls
briansrls restored the admission/retire-11193-anchor-row branch September 14, 2026 10:14
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
…ep this branch's forty SCM rows on main's roster

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01534A1UAkjSmypHMjNWw11e
@gunbai-bot gunbai-bot Bot mentioned this pull request Sep 14, 2026
6 tasks
@gunbai-bot
gunbai-bot Bot deleted the admission/retire-11193-anchor-row branch September 14, 2026 15:48
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
Sixth re-integration, fifth append-vs-append on this one const. Main accumulated
three commits in the file — #11356 emptying the roster, #11256, and #11214
landing fifteen rows for the operator-supplied-token relocation — producing seven
conflict regions. Both row sets survive: fifteen plus six, verified by spelling
rather than by count.

Main's own "THE ROSTER IS EMPTY AGAIN, which is its resting state" paragraph is
dropped, and not on this branch's preference: it became false ON MAIN when
#11214 landed fifteen rows above it and nothing updated the prose. Keeping it
would have carried a claim contradicted by the array directly beneath it, which
is the stale-citation shape this file names as the defect to avoid and which this
branch has now repaired five times.

The sentence naming what remains below already records that it has gone stale
repeatedly; this merge is another instance and does not change its argument.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSpQ3EJ1Nn8V16yEDqbG4F
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
… wall

#11214 landed, so the operator-supplied-token relocation is at base and its
fifteen admission rows report CONSUMED — 0 unadjudicated, 0 stale, 15 consumed
due for deletion, with this branch's own six adjudicating cleanly. The wall
charges a consumed row's deletion to the roster's next touch and this branch is
that touch again.

Applied under the standing ruling rather than re-asked; this is the third time it
has fired on this branch and the second time for rows another lane authored.
#11259 is the authored deletion draft for these fifteen and is not emptied by
this — it keeps whatever else it carries, as #11274 and #11356 did.

Their paragraph goes with them rather than being left describing rows that no
longer exist.

Verified by identity: no #11214 reference survives anywhere in the file; this
branch's six stand unchanged at RepositoryVisibility 1, PublicRepository 2,
PrivateRepository 3.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSpQ3EJ1Nn8V16yEDqbG4F
briansrls pushed a commit that referenced this pull request Sep 14, 2026
…11345)

* Cut the namespace transition-admission roster to directory membership.

Delete the hand-Rust const so permission is one .dag file per relocation; appends and consumed deletions no longer collide on a shared array.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Type expected_candidates as DeclarationRef, not a string list.

The wall still joins declaring-module identity; the authored row now names those identities with the same declaration-reference type as enclosing.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Supersede the const-ness-as-safety claim in the roster carrier.

Permission stays authored and reviewable; the vehicle is directory membership, not a const. Missing directory is the empty roster and admits fewer rows, never more.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Home the empty-roster standing record on the membership module.

The const's prose about what remains used to rot beside the array. Empty-is-not-permissive and the #11306/#11316 inheritance live on gunbc.namespace.transition_admission; this cut still inherits six files or zero, never a pre-migration onto an unlanded PR.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Drop the leftover const census and refuse a phantom candidate leaf.

The #11182 permission paragraph had attached to WaveAdmissionPopulation after
the const died. Candidate DeclarationRef.decl_name must equal Binding.spelling.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Enumerate the directory-row parse helpers on the seed census.

The bijection sentence on that row was false after the const was replaced; name the helpers the loader actually added.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Do not re-home the consumed gunbc#11193 admission as a directory row.

Co-authored-by: Cursor <cursoragent@cursor.com>

#11356 owns that deletion (also carried on #11214). Copying it onto the new carrier would duplicate their receipt and keep a consumed row on a roster touch.

* Own the used_row fixture strings; Binding is no longer &'static.

Co-authored-by: Cursor <cursoragent@cursor.com>

#11250's merge-queue tests used const-roster literals; the directory cut stores owned String.

* Stop claiming the admission roster is a .rs file.

Row files are .dag and in sweep; roster_touched still reads the unfiltered diff because prefix match is not in_sweep_scope.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants