Skip to content

XL-1 - #9993

Closed
briansrls wants to merge 6 commits into
mainfrom
session/deep-badger-41-unlanded-citation
Closed

XL-1#9993
briansrls wants to merge 6 commits into
mainfrom
session/deep-badger-41-unlanded-citation

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session deep-badger-41.
Pushing to session/deep-badger-41-unlanded-citation advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

Brian Searls and others added 6 commits September 1, 2026 17:12
…, one hour, converged remedy

A canonical row cites an identity that exists only in an open PR, so on
main -- the tree the row lands in -- the citation resolves to nothing.

The mechanism is that THE TWO STATES ARE INDISTINGUISHABLE AT THE CITING
END: a name that resolves and a name that will resolve are the same text in
the same position, so reading more carefully does not find it. The check
that discriminates is a lookup against main; the check an author naturally
performs is a lookup against their own context, where the symbol is vividly
present because they or a peer just wrote it. Both receipts were caught by
CI and neither by review, which is what that asymmetry predicts.

A vocabulary defect carries it between lanes, and that half makes the class
preventable rather than merely detectable: "filed" is true the moment a row
is authored in a branch and is heard as "the tree carries it". Never say
filed without saying filed WHERE.

Two independent receipts an hour apart, different lanes, different carriers,
each caught by codex, each repaired the same way without knowledge of the
other. Three admissible citation forms are ranked by DECAY rather than
correctness: name the PR and its openness (stays true after the sibling
lands and tightens to the bare identity), boundary by description (correct
but must be rewritten), never a bare unresolving identity.

The rule forbids stacking the citing PR behind the cited one: that
satisfies "resolves eventually" and fails "resolves at landing".

Credit: the mechanism sentence, the transport half and the PR-plus-openness
form are wise-carp-844's, supplied for this row.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpYuLQ4AwfSJmcFk26aPap
…hdrew (review 58266)

Two changes, one from review and one from the peer who supplied half the
row.

REVIEW 58266: the row carried mechanism, receipts and remedy but no rung,
ceiling or trigger, and its receipts were not identified at checkable grain.
Now stated:

- RUNG MITIGATABLE. The required cited-symbol resolution check is LIVE --
  its rung drop cited_symbol_census is Retired -- and did not fire, because
  both citations were prose inside an authored: String rather than typed
  references. A prose name is not reachable from the namespace tree the
  check walks, so the check was not weak, it was not applicable. A review
  bot caught both, which is containment, not prevention.
- CEILING is NOT structural while the citation stays prose: deciding
  whether an identity-shaped token in a paragraph is a citation or a
  mention is not decidable, so a prose scanner would be a heuristic dressed
  as a wall. The class sits in the outside-the-modeled-guarantee column,
  the same standing unbacked_execution_claim records for the same reason.
- TRIGGER is a typed row-to-row citation carrier. The moment such a
  citation is typed, the EXISTING required check covers it and the class
  climbs in one step with no new gate. The evidence: List<DeclarationRef>
  field is named as the nearest carrier and explicitly NOT that capability.
- evidence stays empty and the row says why: both receipts are PRs and
  review artifacts, not declarations, so padding the field would fake a
  DeclarationRef that does not exist. Receipts are gunbc#9946 review 58237
  and gunbc#9949 review 58260.

RANKING HEDGE, from wise-carp-844 correcting their own contribution: name-
the-PR-and-its-openness ranks first only while the cited identity is
STABLE. If the cited PR renames its row before landing -- under review
pressure, or when two lanes converge and merge their classes -- that form
points at a real PR carrying a row that no longer has the name, and it
fails WHILE STILL LOOKING RESOLVABLE, because the PR number resolves and
the identity does not. Description survives a rename; it does not name the
thing that changed. An identity in an open PR under active review is
precisely the unstable case.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpYuLQ4AwfSJmcFk26aPap
…1-unlanded-citation

# Conflicts:
#	DESIGN.md
#	dag/gunbc/recurring_failure_mode.dag
#	docs/design-ledgers.md
Roster union against my own two landed rows: main carries
censored_estimator_drops_its_own_tail and selection_view_read_as_population;
this branch appends unlanded_citation_indistinguishable_at_the_citing_end beside
them. All three data declarations and all three roster entries kept. Projections
reset to main's side and regenerated narrowly per path; the diff against main is
two insertions and zero deletions.

Receipt (i) tightened to identities, because the merge is what makes them
resolve: it named a recurring-failure-mode row and its sibling by description
while both lived in open PRs, and now names selection_view_read_as_population
and censored_estimator_drops_its_own_tail directly, while stating that the
receipt is precisely that they did NOT resolve when the citation was written.

Receipt (ii) is deliberately UNCHANGED. It cites a class in gunbc#9939, which is
still open, so the PR-plus-openness form this row ranks first is still the
correct one there.
Two additions to unlanded_citation_indistinguishable_at_the_citing_end, both
about the receipts paragraph rather than the rule statement.

The paragraph now says why its two receipts use two different admissible forms:
the first names identities because its subjects have landed, the second names a
PR and its openness because gunbc#9939 has not. A stated ranking teaches the
conclusion; a paragraph using both forms because its cited PRs are in different
states teaches the discriminator.

And the corollary that made the previous commit's edit necessary: when a
citation tightens from description to identity, the receipt usually lives in the
state that just ended, so tightening silently destroys it. This row's first
receipt IS the historical non-resolution of those two names; tightened to bare
identities it would evidence a row about unresolvable citations with resolvable
ones. A tightening must carry the ended state as a stated fact beside the new
name.
…ed-citation

Only the two generated projections diverged; the recurring_failure_mode roster
merged cleanly this time, because #9976's authority edit lands in the DESIGN
document's own prose rather than on the roster this branch appends to.

Neither projection was hand-resolved. Both were reset to main's side and
regenerated from the MERGED authorities, so the bytes are the projection of both
lanes' facts rather than either side's file. Result against main: one insertion
in each, zero deletions -- this branch's index bullet and ledger row, with
#9976's identity-join content intact in both files.
@gunbai-bot

gunbai-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Closing as a duplicate: this draft was auto-attached to session/deep-badger-41-unlanded-citation, the branch of #9956, which merged as 9bd0a76. Its diff from the merge base is the five lines #9956 already landed, so there is no unlanded work here; against current main it now refuses under the generated-artifact merge driver, because both sides have moved both projections since that base. Nothing to merge and nothing to rescue.

@gunbai-bot gunbai-bot Bot closed this Sep 2, 2026
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