Skip to content

Three receipts for instrument_output_read_as_subject_content, and the order-statistics form of the class - #9939

Merged
briansrls merged 7 commits into
mainfrom
receipt/instrument-display-read-as-content
Sep 2, 2026
Merged

briansrls merged 7 commits into
mainfrom
receipt/instrument-display-read-as-content

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Appends three receipts to the standing instrument_output_read_as_subject_content row in gunbc.recurring_failure_mode, and extends its recognition rule from completeness to order. Ledger-only: the .dag authority and its regenerated projection, nothing else.

Why an append and not a fourth row

The class already says a report can be complete for the reporter's purpose and be read as complete for the consumer's. All three specimens are that shape, so a new row would fork one fact (§3).

Three from one session, each of which presented as a green or a zero rather than an error:

  1. ctrl-build --remote -- cargo check ... | tail -8 — the pipeline exits with tail's status, so it is zero whatever the compiler said, and the kept window is executor cleanup chatter containing no line capable of holding an error.
  2. A regeneration wrapped in /usr/bin/time -v, which does not exist in these containers. Bash died at the wrapper, exited 0, the program never ran, and the resulting empty git diff read as "no drift" — the answer that would have retracted a correct finding already registered as a prediction.
  3. The floor's [over-cost] listing, from which order statistics were computed and reported as a distribution. It prints the 25 most expensive of 285 and says so in its own last line.

What the third one adds, and why the standing guard could not catch it

The first two are filters the consumer wrote, and the existing guard — select on the result pattern, never on position — catches both. The third is truncation the producer performed for its own readability and declared in band. There is no consumer-authored head -N to notice, so diligence along the guard returns green.

Hence the general form now in the row: a ranked list is a VIEW, and a view's order statistics are not the population's. A median over a top-K has the same shape and units as the real thing and carries no trace of the truncation, which makes it more dangerous than a wrong count — a count at least invites "out of how many".

The harm is recorded because it was not to the author's own conclusions: the wrong distribution had already been relayed to a lane authoring a declared rung drop whose population is a function of headroom against observed inflation, and it would have moved that population in the direction that makes a class look larger — the direction nobody audits.

Test plan

No code paths touched, so there is nothing to execute beyond the projection's own oracle:

Notes

Title corrected — the auto-opener seeded it from the session title, which describes unrelated tokenize work. Flagged by review 58205; worth fixing because a squash merge would have carried the wrong subject into main's history permanently.

— sent from vivid-deer-102

gunbc-ci-auto-heal and others added 2 commits September 1, 2026 12:49
… order-statistics form

The class already says a report can be complete for the REPORTER's purpose and be read as
complete for the CONSUMER's. Three specimens from one session, all of which presented as a
green or a zero rather than as an error:

  1. `ctrl-build --remote -- cargo check ... | tail -8` -- the pipeline exits with TAIL's
     status, so it is zero whatever the compiler said, and the kept window is executor
     cleanup chatter with no line capable of holding an error.
  2. A regeneration wrapped in `/usr/bin/time -v` where that binary does not exist: bash
     died at the wrapper, exited ZERO, the program never ran, and the empty `git diff` read
     as "no drift" -- the answer that would have retracted a correct finding.
  3. The floor's `[over-cost]` listing, from which order statistics were computed and
     reported as a distribution. It prints the 25 most expensive of 285 and SAYS SO in its
     own last line.

The third is why this is an append to the standing row rather than a new one. The first two
are filters the CONSUMER wrote, and the existing guard -- select on the result pattern,
never on position -- catches both. The third is truncation the PRODUCER performed for its
own readability and DECLARED IN BAND, so there is no consumer-authored `head -N` to notice
and diligence along the guard returns green. Provenance intact, subject substituted: this
class exactly.

The general form extends the recognition rule from completeness to ORDER: a ranked list is
a VIEW, and a view's order statistics are not the population's. A median over a top-K has
the same shape and units as the real thing and carries no trace of the truncation, which
makes it more dangerous than a wrong count -- a count at least invites "out of how many".

The harm is recorded because it was not to the author's own conclusions: the wrong
distribution had already been relayed to a lane authoring a declared rung drop whose
population is a function of headroom against observed inflation, and it would have moved
that population in the direction that makes a class look larger -- the direction nobody
audits.

`evidence` stays `[]` per this file's header: nothing resolves it, the projection renders
`.authored` alone, and populating it is the §4b decoration case.

DESIGN.md regenerated and byte-identical -- the index carries identities, not prose, and
this adds no class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WJAqfo1UK4zkzcM7cQ8oj6
main landed #9935 and #9868 into docs/design-ledgers.md while this branch held a receipt
append to gunbc.recurring_failure_mode. The split-into-rows shape did its job exactly as
that file's header promises: `Auto-merging dag/gunbc/recurring_failure_mode.dag` with no
conflict, because two lanes touching two different rows is not disagreement about one fact.

Only the derived file conflicted, and the driver refused it rather than answering --
GeneratedArtifactConcurrentDivergence, no markers, path unmerged, ours side in the
worktree. Regenerated from the merged authority through `tools.generated_artifact_gate`
`main_wet_one`; against origin/main the result is one line in the authority and one line in
the projection, which is this row and nothing else.

The interpreter was rebuilt against the MERGED tree, with the prior binary deleted first.
A binary built before #9868/#9935 renders the pre-merge shape and would re-drift the file
it is converging while exiting zero -- the same trap this branch's own receipts are about.

DESIGN.md is not regenerated and does not need to be: it carries class identities, not
authored prose (verified by execution on this branch -- regenerating it after the receipt
append produced a byte-identical file), and this change adds no class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WJAqfo1UK4zkzcM7cQ8oj6
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review September 1, 2026 13:43
@gunbai-bot gunbai-bot Bot changed the title XL-0T: structural v2.std.text.String (FreeMonoid<Char>) -- literal-to-Unicode-scalar inhabitance carried into emission, text/list op realization by operand representation, no RustStdString row Three receipts for instrument_output_read_as_subject_content, and the order-statistics form of the class Sep 1, 2026
gunbc-ci-auto-heal and others added 2 commits September 1, 2026 14:25
…urvived at row grain

GitHub reported MERGEABLE/CLEAN on the previous head and that was the WRONG answer:
GitHub does not run this repository's merge driver, so it answers with its own text merge
and cannot see the class the driver exists to catch. `git merge-tree --write-tree` returns
rc=1 with GeneratedArtifactConcurrentDivergence on docs/design-ledgers.md. Both sides had
changed the projection since the merge base -- main through eleven merges today -- so
neither side's bytes are the projection of the merged authorities.

The authorities merged themselves again: recurring_failure_mode.dag and rung_drop.dag both
auto-merged with no conflict, because two lanes editing two different rows is not
disagreement about one fact. Only the derived file conflicted, and it was regenerated from
the merged authority rather than resolved by hand or by picking a side.

VERIFIED BY CONTENT AT ROW GRAIN, not by key set. Every `data <identity>` row in both
authorities, compared against origin/main on identity AND authored-cell length:

  recurring_failure_mode  33 rows both sides  LOST 0  SHRUNK 0  ADDED 0
                          GREW 1: instrument_output_read_as_subject_content 4168 -> 7634
  rung_drop               11 rows both sides  LOST 0  SHRUNK 0  ADDED 0  GREW 0

The +3466 on that one cell equals the projection's growth exactly, so the rendering carried
the append and nothing else. Key-set comparison would have missed within-row truncation --
every row still PRESENT, and presence is not content -- which is how a loss got through
elsewhere today.

Recording the weaker check too: a first pass split the projection on markdown headings and
reported PASS over 14 section-level keys. That verdict was true and at the wrong grain; the
33-row authority comparison above is the one that answers the question.

Regenerated with main_wet_one on the single conflicted path rather than main_wet. The
whole-roster fold rewrites all 35 artifacts whatever you came for and the gate's own note
records it resurrecting a deleted file and sweeping in unrelated drift; main's other
projections arrive correct through the merge. Same cost, smaller blast radius.

Interpreter rebuilt against the merged tree, prior binary deleted first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WJAqfo1UK4zkzcM7cQ8oj6
…ment that answers wrongly

TWO ROWS, NOT ONE, because they have different triggers and different owners and
bundling them would mean neither can retire independently.

(i) FOURTH RECEIPT on `instrument_output_read_as_subject_content`. The carrier-realization
census prints `subjects=1320` over 1320 files, and 1320 is the count of files INGESTED,
not modules CENSUSED: only 845 produce rows and 475 -- 36% -- are silently omitted.
`v2.compiler.parse` is absent; `v2.std.compilers.lexing` is absent while four of its
siblings are present, so it is neither a test filter nor obvious unreachability. The
selection rule is deliberately NOT stated in the row, because it was not determined and a
guessed mechanism in a ledger is worse than an incomplete one.

What it cost is recorded rather than imagined: a fixture authored to settle an unrelated
question landed in the omitted 475 and produced zero rows INCLUDING ITS OWN POSITIVE
CONTROL. Its emptiness was exactly what the hypothesis under test predicted, so without
the control it would have shipped as confirmation on evidence containing none.

(ii) NEW CLASS `alias_resolution_collides_with_kernel_spelling`, named for the mechanism
rather than the symptom: a reader resolves a qualified reference through a type alias,
lands on the alias declaration's own name, and that name COLLIDES with a kernel spelling
-- so the row is attributed to the kernel, naming the exact carrier the qualification was
written to move away from. It does not fail to answer; it answers confidently and wrongly,
which is the whole severity, because a missing answer is visible to its consumer and an
inverted one is not.

Specimen executed on covered ground: two functions appended to `v2.compiler.tokenize` on
adjacent lines, identical position kind, differing only in alias-versus-concrete. The
`std.determinism.Determinism` param keeps its dotted name; the `v2.std.text.String` param
returns as bare `String` attributed to `<kernel:String>`. Both produced rows (17661 ->
17663), which is what makes the negative half evidence rather than absence.

Bounded against its two nearest neighbours in the same file: against (i), where the report
is complete for the reporter and the defect is in the READING, while here the report is
wrong on a row it does examine and no careful reading recovers it; and against
`hollow_alias`, where a second name is minted for one concept, while here the alias is
legitimate modelling and what fails is a reader of it.

Rung stated honestly: mechanically preventable at best today and CURRENTLY UNENROLLED. The
next-rung trigger is that two-line probe enrolled as a discriminating RED in any covered
module, and the row says the trigger is cheap on purpose -- a class whose RED is two lines
and still does not execute has no excuse.

Both projections regenerated from the merged authority; DESIGN.md moves this time because
a new class adds an identity to its index. Verified at row grain against origin/main:
recurring_failure_mode 34 -> 35 rows, LOST 0, SHRUNK 0, ADDED the new class, GREW only
instrument_output_read_as_subject_content; rung_drop 11 rows unchanged.

Recorded because it is the reason this commit exists twice: the first insertion put the
new declaration INSIDE the roster list literal, since the last `data` line in the file is
the roster itself rather than the last class row. The compiler refused with a located
error and the generator wrote NOTHING -- while the row-grain verifier reported PASS, because
it reads declarations by regex and does not see nesting. A verifier is sound only for the
question it asks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WJAqfo1UK4zkzcM7cQ8oj6
…splay-read-as-content

# Conflicts:
#	DESIGN.md
#	dag/gunbc/recurring_failure_mode.dag
#	docs/design-ledgers.md
@gunbai-bot

gunbai-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

CI red at 0aad878 is inherited from main and cannot be fixed on this branch. Confirmed from this run's own log rather than from the chain trace, and it comes with a positive control.

The failure, verbatim from required-witnesses-build on this exact head (run 33586921920, job 100112898043):

required-ci: regen FAIL generated surface drift: gunbc_rust_source_type_bindings.rs

One file, and it is a stage0 mirror — not one of the two generated projections this PR touches. dag/gunbc/rust_source_type_bindings.dag was edited by #9949 without regenerating its src/v1/stage0/src mirror, and that authority is in the derivation roster, so the mirror was obligated. The drift predates this branch: 44b0ad2cbc green → d61f8c9bc4 (#9949) fail → 4e036364c8 fail, same single file, identical string. Every PR behind main inherits it.

The positive control, from the same run:

required-ci: generated-artifact rostered=35 adjudicated=35 matches=35 drifted=0 absent=0 unadjudicated=0

Every one of the 35 generated artifacts matches, including the two this PR regenerates. So the class of drift I am responsible for is measured at zero on this head, and the red is a different class in a different tree location. That distinction is what makes this an inherited red rather than a claim that my work is fine — a bare "not mine" with no nonzero beside it would be worth nothing.

Why I am not pushing a fix. Repairing it here would mean regenerating another session's stage0 mirror on my branch, which lands the same bytes from two directions and is how a second drift gets created. bright-ram-778 is repairing main directly and wise-carp-844 owns #9949; I have told the manager they may both be regenerating the same file so they do not collide. When main is green I will re-integrate and this red clears without a line of mine.

rust-unit-tests passed on this head. required-witnesses-floor and fabric-evidence are still running.

— sent from vivid-deer-102

briansrls pushed a commit that referenced this pull request Sep 2, 2026
…blishes the false-subject claim #9949 withdrew (#9998)

required-witnesses-build is red on main from a generated-surface drift in
gunbc_rust_source_type_bindings.rs. #9949 corrected the String row's proof to
retract a subject that was never run, but its stage0 mirror was not regenerated,
so the committed Rust still asserts the census ran 'over A FIXTURE MODULE
importing both v2.std.text String and v2.std.node Node'. There were no fixture
rows; the subjects were live corpus modules. The stale mirror is therefore still
publishing, as generated Rust, the exact citation defect that PR existed to
withdraw -- which is why this is a repair and not a formality.

Exactly one line changes (line 65, the proof: string). Installed from the
regen candidate, not hand-edited.

BOTH PASSES RUN, and the second is not ceremony here even though the change is
one line: the first pass runs a binary that predates the change it emits, so it
can self-verify at divergence 0 for the wrong reason. Pass 1 at d11d66b
reproduced the drift (first_generation_equal=false, planned=150 executed=150
adjudicated=150). After installing and rebuilding, pass 2 reports
first_generation_equal=true, 150/150/150. main.rs remains declared_divergent=1
and was deliberately NOT installed.

SCOPE, stated so it is deliberate rather than accidental: this is the FIRST of
#9949's two obligations. The second -- the alias_resolution_collides_with_kernel_spelling
citation that resolves nowhere on main -- belongs to #9939 and is untouched here.


Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
gunbc-ci-auto-heal added 2 commits September 2, 2026 04:47
…splay-read-as-content

# Conflicts:
#	DESIGN.md
#	dag/gunbc/recurring_failure_mode.dag
#	docs/design-ledgers.md
…splay-read-as-content

# Conflicts:
#	DESIGN.md
#	docs/design-ledgers.md
@briansrls
briansrls merged commit 0b7db0d into main Sep 2, 2026
5 checks passed
@briansrls
briansrls deleted the receipt/instrument-display-read-as-content branch September 2, 2026 05:26
@briansrls
briansrls restored the receipt/instrument-display-read-as-content branch September 2, 2026 05:36
@gunbai-bot
gunbai-bot Bot deleted the receipt/instrument-display-read-as-content branch September 2, 2026 06:23
@briansrls
briansrls restored the receipt/instrument-display-read-as-content branch September 2, 2026 07:03
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