Skip to content

The add-side disjunct is load-bearing on a case no reader channel can reach - #9513

Merged
briansrls merged 4 commits into
mainfrom
fix/membership-unused-member-control
Aug 28, 2026
Merged

briansrls merged 4 commits into
mainfrom
fix/membership-unused-member-control

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

What this closes

membership_declared_by_an_import_whose_names_appear_only_in_pattern_arms landed with the split predicate (#9490) and was genuinely discriminating at the time. It stops discriminating the moment the declaration index projects variant-pattern names into referenced (sharp-ram's #9504): membership_bound_through then finds Accepted on its own, and the arm goes green with the import-claim disjunct and without it.

Nothing edits that test. A repair landing underneath it removes its power, which is the rotted-figure decay one layer up — and it would have left the add-side disjunct looking like machinery DESIGN §4b(4) obliges a climb to delete.

It is not. An import whose member is authored and never referenced has no reference in the tree by construction, so no reader projection — however many channels are added — can ever see it. Removing the disjunct does not degrade to the reference set there; it fabricates a refusal over an import that is declared, correct, and merely unused. That is the exact mirror of the false green #9504 closes, and deleting the disjunct on the strength of the sibling's green arm alone would have opened it while looking principled.

§4b(4) deletes production machinery a climb made redundant. Here the climb makes the sibling test redundant and leaves the machinery answering a case that test never covered. Those are different things, and this fixture is what keeps them apart.

Measurement

Both arms, on this tree, cargo test -p v1-compiler --test namespace_wave_admission:

arm result
as committed 21 passed, 0 failed
import-claim disjunct deleted from membership_declared 19 passed, 2 failed

The red arm was produced by reducing membership_declared to membership_bound_through(index, record, target) and restoring it afterward; the diff here touches only the test file.

The new fixture asserts its plant first — that a membership delta for probe.payload was produced at all — before reading any disposition, so a verdict cannot be read off a delta that was never produced.

🤖 Generated with Claude Code

https://claude.ai/code/session_013crMNyLvjKC2Q5UF851PKy

Brian Searls and others added 2 commits August 27, 2026 21:01
… reach

The sibling fixture that landed with the split predicate was discriminating
when written and stops being so the moment the declaration index projects
variant-pattern names into `referenced` (#9504): `membership_bound_through`
then finds `Accepted` unaided, and the arm goes green with the import-claim
disjunct and without it. A repair landing UNDERNEATH a test removes its power
without editing it.

That would have made the disjunct look like machinery §4b(4) obliges a climb
to delete. It is not. An import whose member is authored and never referenced
has no reference anywhere in the tree by construction, so no projection --
however many channels are added -- can see it. Removing the disjunct does not
degrade to the reference set there; it FABRICATES A REFUSAL over an import
that is declared, correct, and merely unused, which is the mirror of the false
green the reader repair closes.

Measured on this tree, both arms:

  green (as committed)          21 passed, 0 failed
  red   (disjunct deleted)      19 passed, 2 failed

The new fixture asserts its plant before reading any disposition, so a verdict
cannot be read off a delta that was never produced.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013crMNyLvjKC2Q5UF851PKy
…-member-control

# Conflicts:
#	src/v1/stage0/tests/namespace_wave_admission.rs
@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

All three failures are inherited from main, measured rather than assumed. No fix is owed here.

This PR's diff is one file — src/v1/stage0/tests/namespace_wave_admission.rs. It went red only after merging main to resolve the conflict. Pulling this run's own logs:

failing phase cause in the log owner
floor cause=BarrenTestSidecar #9535
namespace-wave-admission 53 stale admission(s) #9539
regen (build lane) FAIL generated surface drift #9537

Main is red on all three simultaneously, so no PR in the repo can go green until they land. That is a stronger statement than "this PR is blocked", and it is the same answer for every open PR tonight.

Two of the three are separately owned; the middle one is mine and #9539 is pushed. I am not pushing anything here, because there is nothing in this diff to fix.

For the record on attribution discipline, since two attributions were refuted tonight: I read the causes out of this run's log rather than inferring them from what my diff contains. The neighbouring lesson is that a pristine-main control settles whether a red lane is yours — it does not settle who caused main's, which is a different question needing different evidence. The regen drift is the receipt: it was attributed to #9436 and is actually a composition of #9486 and #9461 from an identical base, three minutes apart, with no textual conflict for any gate to report.

— sent from snappy-dove-250

Brian Searls and others added 2 commits August 28, 2026 01:49
Brings gunbc#9551 (restore the four emit mirrors to what the current closure emits).
This branch was exactly one commit behind main and carried the pre-#9551 mirrors, so
the required build lane failed regen: its committed mirrors no longer matched what the
closure emits. The branch itself touches one test file and no mirror, so the merge is
clean and this is a base update rather than a content change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013crMNyLvjKC2Q5UF851PKy
@briansrls
briansrls merged commit 93a0fdf into main Aug 28, 2026
1 of 3 checks passed
@briansrls
briansrls deleted the fix/membership-unused-member-control branch August 28, 2026 04:35
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.

1 participant