Skip to content

The live extdeps scope cover was false over 59 files: enroll every one as a carrier that actually declares its scope - #9276

Merged
briansrls merged 5 commits into
mainfrom
session/quiet-fox-377
Aug 27, 2026
Merged

briansrls merged 5 commits into
mainfrom
session/quiet-fox-377

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

frontier_cover_of_live_extdeps_tree_holds executed to FALSE. Measured cause: 59
of the 636 .dag files under dag/extdeps were in none of the three rosters the
frontier admits — not carriers, not machinery, not manifest rows. The manifest is
frozen (legacy_manifest_freeze_sha), so none of them could join it; the only
landing state a new file has is scope carrier or genuine machinery, and
scope_machinery_exempt_paths is exactly the citation vocabulary plus the mock
corpora, which none of these are. So all 59 are carriers, and the repair is the
one the frontier's own law prescribes rather than a widened exemption.

27 of the 59 already declared extdeps_model_scope and were simply missing from
scope_carrier_paths — roster repair. The other 32 declared no scope at all, so
the roster row alone would have been path assertion of a fact the file does not
carry, which carrier_content_verification_note records as the defect closed by
codex review 46215. Each of those 32 now declares one ExternalModelScope whose
subject is a DeclarationRef to a real declaration in its own module, per the
extdeps.firmware.types / extdeps.land_pattern.types precedent. Three cite the
module's service declaration (posix.Signal, systemd.Journalctl,
rustc.Check), which is what those modules actually model.

extdeps.languages.rust.capabilities additionally carried NO
extdeps_external_authority_anchor at all, so it was outside the mandatory-tag
region-1 wall as well; it gets the anchor (the Rust derive-attribute reference)
and a second citation to the serde derive reference, since its own note already
records that Serialize/Deserialize are serde names — one alphabet attested by two
upstreams, not two subjects fused into one row.

EXECUTED EVIDENCE, both directions:

  • claim_batch --wet ... --functions frontier_cover_of_live_extdeps_tree_holds,red_cover_walker_refuses_missing_root
    → PASS on both. The subject witness was the failing one; its RED control still
    refuses a missing root.
  • v1_src_dag_parse (the --required-ci parse phase's own walk, one dispatch):
    4019 files parse-clean, citations 1441 → 1503, ZERO integrity findings — so
    every one of the new DeclarationRefs resolves under the cited-symbol wall.
  • DISCRIMINATING RED for that half: tar_program → tar_program_definitely_not_declared
    yields exit 1 and CITED-DECLARATION-ABSENT ... which that module does not declare,
    restored before commit.

NOT TOUCHED: the frozen manifest gains no row and loses none, so
manifest_rows_all_predate_freeze_sha and the remove-only line gate are
unaffected by construction. No exemption channel is widened and no roster row
names a file that is not on disk (all three rosters stay disjoint and fully
resolve, checked before and after).

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

🤖 Generated with Claude Code

Brian Searls and others added 2 commits August 26, 2026 03:06
…e as a carrier that actually declares its scope (#adhoc)

`frontier_cover_of_live_extdeps_tree_holds` executed to FALSE. Measured cause: 59
of the 636 `.dag` files under `dag/extdeps` were in none of the three rosters the
frontier admits — not carriers, not machinery, not manifest rows. The manifest is
frozen (`legacy_manifest_freeze_sha`), so none of them could join it; the only
landing state a new file has is scope carrier or genuine machinery, and
`scope_machinery_exempt_paths` is exactly the citation vocabulary plus the mock
corpora, which none of these are. So all 59 are carriers, and the repair is the
one the frontier's own law prescribes rather than a widened exemption.

27 of the 59 already declared `extdeps_model_scope` and were simply missing from
`scope_carrier_paths` — roster repair. The other 32 declared no scope at all, so
the roster row alone would have been path assertion of a fact the file does not
carry, which `carrier_content_verification_note` records as the defect closed by
codex review 46215. Each of those 32 now declares one `ExternalModelScope` whose
subject is a `DeclarationRef` to a real declaration in its own module, per the
`extdeps.firmware.types` / `extdeps.land_pattern.types` precedent. Three cite the
module's `service` declaration (`posix.Signal`, `systemd.Journalctl`,
`rustc.Check`), which is what those modules actually model.

`extdeps.languages.rust.capabilities` additionally carried NO
`extdeps_external_authority_anchor` at all, so it was outside the mandatory-tag
region-1 wall as well; it gets the anchor (the Rust derive-attribute reference)
and a second citation to the serde derive reference, since its own note already
records that Serialize/Deserialize are serde names — one alphabet attested by two
upstreams, not two subjects fused into one row.

EXECUTED EVIDENCE, both directions:
- `claim_batch --wet ... --functions frontier_cover_of_live_extdeps_tree_holds,red_cover_walker_refuses_missing_root`
  → PASS on both. The subject witness was the failing one; its RED control still
  refuses a missing root.
- `v1_src_dag_parse` (the `--required-ci` parse phase's own walk, one dispatch):
  4019 files parse-clean, citations 1441 → 1503, ZERO integrity findings — so
  every one of the new `DeclarationRef`s resolves under the cited-symbol wall.
- DISCRIMINATING RED for that half: `tar_program` → `tar_program_definitely_not_declared`
  yields exit 1 and `CITED-DECLARATION-ABSENT ... which that module does not declare`,
  restored before commit.

NOT TOUCHED: the frozen manifest gains no row and loses none, so
`manifest_rows_all_predate_freeze_sha` and the remove-only line gate are
unaffected by construction. No exemption channel is widened and no roster row
names a file that is not on disk (all three rosters stay disjoint and fully
resolve, checked before and after).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…anded inside the v1 seed closure

CI's build lane refused: `required-regen: FAIL generated surface drift:
extdeps_languages_rust_capabilities.rs`. One of the 32 modules that gained an
`extdeps_model_scope` declaration — `extdeps.languages.rust.capabilities`, which
also gained its missing `extdeps_external_authority_anchor` — is inside the v1
seed's regen closure, so its emitted mirror is a DERIVED artifact of the `.dag`
source and was stale the moment the source changed. The other 31 are outside the
closure and emit nothing, which is why exactly one file drifted.

The mirror is REGENERATED, not hand-edited: taken verbatim from
`target/stage0-regen-candidate` produced by `claim_executor --required-regen`.
The delta is exactly the three new declarations (`extdeps_external_authority_anchor`,
`rust_serde_derive_external_authority_anchor`, `extdeps_model_scope`) plus the
imports they pull in — nothing else moved.

EXECUTED EVIDENCE, one remote dispatch after installing it:
- `cargo fmt --all --check` → FMT_OK (the emitted artifact is already the
  formatter's fixed point, so the two consumers of it agree).
- `claim_executor --required-regen --source-root dag --source-root src/v2`
  → `first_generation_equal=true planned=136 executed=136`, exit 0. The same
  command was `first_generation_equal=false` with the FAIL line before the
  install, which is this fix's discriminating red.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Brian Searls and others added 2 commits August 26, 2026 18:40
…ite ONE upstream on the capabilities scope

Three things, all consequences of re-verifying against a main that moved.

1. MAIN MERGED (tip 0aa09c1, the post-#9343 tree). Clean, no conflicts. The
   prior green predated main breaking and being fixed, so it was unverified
   rather than passing.

2. TWO NEW EXTDEPS FILES ENROLLED. `dag/extdeps/linux/cgroup_v2.dag` and
   `cgroup_v2_memory.dag` landed on main after my last push and were in none of
   the three rosters, so the merge re-falsified the cover this PR exists to
   repair. Both now declare an `extdeps_model_scope` (subjects `linux.CgroupV2`
   and `CgroupMemoryInterfaceFile`) and join `scope_carrier_paths` — the same
   treatment as the other 59, no widened exemption.

3. THE CAPABILITIES SCOPE NOW CITES ONE UPSTREAM (review 56339). An earlier
   revision listed serde.rs beside the Rust derive reference in
   `further_citations`. That is wrong on DESIGN §3 and the reviewer is right:
   `further_citations` attests ONE subject, so listing an independently governed
   upstream there asserts serde governs the same subject rather than recording
   that the module mentions it. The citation and its now-unreferenced anchor row
   are deleted; the annotation records where the serde spellings ARE attested
   (`extdeps.languages.rust.derive_contracts` carries versioned serde trait
   authorities).

   NOT DONE, deliberately: the review's prescribed remedy was to split
   `RustCapability` into two module authorities. Declined, with reasons on the
   PR — it is a modeling change to a load-bearing seed-closure carrier consumed
   by `v1.compiler.trait_derive_emit`, resting on the recorded 2026-08-19
   operator ruling that re-homed the closed alphabet here, and the module's own
   note records that dissolving the coproduct trades an exhaustive match for a
   runtime refusal. DESIGN additionally names subject-content coherence as the
   UNENFORCED frontier `feature:extdeps-subject-content-derived`; what the scope
   frontier enforces is scope PRESENCE at storage grain.

EXECUTED EVIDENCE on the merged, corrected tree (cold remote builds, binary and
tree the same generation by construction — no stale-binary skew):
- `v1_src_dag_parse`: 4080 files parse-clean, ZERO integrity findings, exit 0.
- `claim_executor --required-regen`: the serde-anchor removal drifted the mirror
  (`FAIL generated surface drift: extdeps_languages_rust_capabilities.rs`); the
  mirror is REGENERATED from `target/stage0-regen-candidate`, delta exactly the
  deleted anchor fn and `further_citations` vec![serde] -> vec![]. After
  installing it: `cargo fmt --all --check` FMT_OK and
  `first_generation_equal=true planned=136 executed=136`, exit 0. The drift FAIL
  before the install is that fix's discriminating red.
- Cover re-checked over the merged tree by set comparison: 647 files on disk,
  three rosters disjoint, zero unrostered, zero rostered-not-on-disk, zero
  carriers lacking the declaration.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Re review 56339 — the §3 half is accepted and fixed in f95667b2eb; the prescribed remedy is declined, with reasons.

Fixed. further_citations: [rust_serde_derive_external_authority_anchor] is removed and the now-unreferenced serde anchor row deleted. The finding is right on the rule: further_citations attests ONE subject, so listing an independently governed upstream there asserts serde governs the same subject rather than recording that the module mentions it. The annotation now records where the serde spellings ARE attested — extdeps.languages.rust.derive_contracts carries versioned serde trait authorities (serde_1_0_228_hash_set_serialize_authority and its Deserialize peer). The emitted mirror was regenerated for the change and --required-regen is back to first_generation_equal=true.

Declined: splitting RustCapability into two module authorities. Three reasons.

  1. It is a modeling change to a load-bearing carrier in the v1 seed closure, consumed by v1.compiler.trait_derive_emit, and it rests on a recorded operator ruling (2026-08-19, option b) that deliberately re-homed the closed alphabet here. rust_capabilities_note in that module records the argument against dissolving the coproduct: an open TargetCapabilityKey brand cannot be matched exhaustively, and rust_trait_derive_spelling is total by exhaustive match — so the split trades a structural guarantee for a runtime refusal, which DESIGN §4b calls a rung drop dressed as a migration. That is not something to improvise under a cover-repair brief.

  2. DESIGN already names this exact question as the unenforced frontier. extdeps.external_authority external_model_scope_decision_kernel_note: subject-content coherence — that a module’s actual declarations attribute to exactly its declared subject — is feature:extdeps-subject-content-derived, and "what IS mechanically enforced today is scope PRESENCE at the storage grain (gunbc.extdeps_scope_frontier’s manifest + live cover witness)". A Rust-only scope is exactly what enrolment asks for; the alphabet’s serde members are that frontier’s declared future work, not this PR’s.

  3. The mechanical claim in the finding does not hold. scope_cover_holds is set equality over walked paths vs the roster union, and the carrier-content check is carrier_content_declares_scope, a text scan for data extdeps_model_scope:. Neither reads the subject or the citations, so subject content cannot make the cover false — measured: the witness frontier_cover_of_live_extdeps_tree_holds passed with the two-citation form and passes with the one-citation form.

If the split is wanted, it is a separate PR against that operator ruling with its own review surface, and I would want the ruling revisited rather than reversed by a review comment.

— sent from quiet-fox-377

@gunbai-bot

gunbai-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Re review 56347 — the finding is factually right, and read together with review 56339 it is stronger than either alone. I have declared it rather than papered over it, and escalated the remedy.

Both reviews are correct, and they are mutually exclusive. Review 56339 said two citations fuse two independently governed upstreams into one scope. Review 56347 says that after removing serde, a Rust-only scope over RustCapability WholeDeclaration does not truthfully cover RustSerialize / RustDeserialize at line 180. I agree with both. That pair is the finding: no ExternalModelScope over that declaration is a coherent single-subject attestation, because RustCapability is one closed alphabet mixing derive names the Rust reference governs with two that serde governs. Neither citation shape is the defect — the carrier is.

Why that is not a citation edit. The §3 remedy is separate module authorities, i.e. a remodel of a carrier consumed by v1.compiler.trait_derive_emit inside the v1 seed closure, resting on the operator ruling of 2026-08-19 (option b) recorded in rust_capabilities_note. That note also records why the coproduct was re-homed rather than dissolved: an open TargetCapabilityKey brand cannot be matched exhaustively while rust_trait_derive_spelling is total by exhaustive match, so the split trades a structural guarantee for a runtime refusal — a §4b rung drop. Reversing a recorded operator ruling on a seed-closure carrier is not something I will do inside a cover-repair PR on a review comment.

Why the module cannot simply be left out. It is one of the files that were in none of the three frontier rosters. The manifest is frozen (legacy_manifest_freeze_sha), so it cannot land there; it is not machinery. The only landing state is scope carrier — enrolment forces a scope onto a carrier that cannot host a truthful one.

What I did instead of choosing a shape and calling it coherent. f95667b2eb keeps the Rust-only citation; the follow-up commit declares the overclaim in an annotation on the declaration: the two mutually-exclusive reviews, that the remedy is separate authorities, the bounded population (one declaration, two variants), and the dissolution trigger — the split lands, or feature:extdeps-subject-content-derived derives DeclaredScopeFacts from the module tree and refuses this scope. DESIGN already draws this boundary: extdeps.external_authority external_model_scope_decision_kernel_note names subject-content coherence as that unenforced frontier and says what is mechanically enforced today is scope presence at the storage grain. So this is a declared gap inside a boundary DESIGN already names, not a new one — and the annotation is a declaration of the debt, not permission for it (§5).

Escalated. I have asked the operator, through my parent session, to rule between (a) landing this enrolment with the declared debt and opening the split as its own PR against the 2026-08-19 ruling, or (b) blocking this cover repair behind that split. I took (a) provisionally so the other 60 enrolments are not held hostage. If the ruling is (b) I will switch.

— sent from quiet-fox-377

…onesty statement rather than a debt admission

Reviews 56339 and 56347 on this PR rejected OPPOSITE citation shapes on one
declaration: two citations fuse two independently governed upstreams into one
scope; one citation leaves RustSerialize and RustDeserialize unattested by the
subject that claims them. Both findings are correct, and being mutually
exclusive is what they establish together — no citation shape over
`RustCapability` is a coherent single-subject attestation, because the alphabet
mixes derive names the Rust reference governs with two serde governs. The §3
defect is in the CARRIER, not in any scope edit.

WHAT LANDS: the scope keeps its single Rust citation, and the annotation above
it now says what the scope does not cover. It does not assert the scope is
truthful; it states that the citation names the Rust reference while the
declaration it covers carries two serde-governed members, and says to read it
that way. `rust_capabilities_note` and `rust_capability_alphabet_note` are cited
as the authority for WHY the mixture stands (the operator ruling of 2026-08-19,
option b, and its reason: an open TargetCapabilityKey brand cannot be matched
exhaustively, so rust_trait_derive_spelling stays TOTAL only while the alphabet
is closed). Both review ids are carried so the finding is reconstructible.

FRAMING CORRECTED, and it changes the words rather than the change. An earlier
revision wrote this as DECLARED DEBT with "not permission for it (§5)" beside
it, which imports the scaffold-admission doctrine into a place it does not
reach: that doctrine governs artifacts authored in order to be deleted, and
nothing here is created — the incoherence pre-dates this PR and rests on a
recorded operator ruling. This is a §4b(1) rung-honesty statement about a state
that already exists, which DESIGN requires; declining to write it would be the
inflation §4b names as worse than sitting low. So it describes the carrier and
promises nothing about it. Bounded population (one declaration, two of sixteen
variants) and both dissolution triggers are unchanged.

THE SPLIT IS NOT OPENED AS A PR, and that is now the stronger position rather
than a narrow-brief decline. The 2026-08-19 ruling is not an oversight: its
reason is a safety argument, and reversing it trades an exhaustive match for a
runtime refusal — a §4b rung drop, which requires a declared previous rung,
reason, bounded population and restoration trigger that no PR author can supply
against a ruling that went the other way. It is a question for the operator,
escalated as one with the mutually-exclusive review pair as its evidence.

EXECUTED EVIDENCE (cold remote build, merged tree):
- `v1_src_dag_parse`: 4080 files parse-clean, ZERO integrity findings, exit 0 —
  so the §4c annotation form is admitted (standalone leading `//` block attached
  to a module-scope declaration).
- `claim_executor --required-regen`: `first_generation_equal=true planned=136
  executed=136`, exit 0. An annotation-only change does NOT drift the emitted
  mirror, which is §4c's erasure property measured rather than assumed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up on reviews 56339 / 56347 — ruled, and one thing I said earlier is now wrong.

Ruling: land the enrolment with the incoherence stated, do not block on the split. Landed in 1a97c7ddd7.

Correcting my previous comment. I offered to open the split as its own PR. I am not going to, and that is the stronger position rather than a narrower one. The 2026-08-19 operator ruling recorded in rust_capabilities_note is not an oversight to correct by diff — its reason is a safety argument, stated in rust_capability_alphabet_note: an open TargetCapabilityKey brand cannot be matched exhaustively, so rust_trait_derive_spelling stays TOTAL only while the alphabet is closed. Splitting it trades an exhaustive match for a runtime refusal, which is a DESIGN §4b rung drop; a rung drop requires a declared previous rung, reason, bounded population and restoration trigger, none of which a PR author can supply against a ruling that went the other way. So the split is a question for the operator, escalated as one with this review pair as its evidence — not a diff.

One framing correction in the annotation itself, because it was wrong in a way worth naming. I first wrote it as declared debt with a §5 "not permission for it" caveat. That imports the scaffold-admission doctrine into a place it does not reach: that doctrine governs artifacts authored in order to be deleted, and nothing here is created — the incoherence pre-dates this PR and rests on the recorded ruling. It is a §4b(1) rung-honesty statement about a state that already exists, which DESIGN requires; declining to write it would have been the inflation §4b calls worse than sitting low. The annotation now describes the carrier and promises nothing about it: it says the citation names the Rust reference while the declaration it covers carries two serde-governed members, cites rust_capabilities_note for why the mixture stands, and carries both review ids. Bounded population (one declaration, two of sixteen variants) and both dissolution triggers are unchanged.

Measured, not assumed: v1_src_dag_parse over the merged tree is 4080 files parse-clean with zero integrity findings, and --required-regen is first_generation_equal=true — an annotation-only change does not drift the emitted mirror, which is §4c's erasure property confirmed by execution rather than by reading the spec.

— sent from quiet-fox-377

@briansrls
briansrls merged commit 7595aac into main Aug 27, 2026
3 checks passed
@briansrls
briansrls deleted the session/quiet-fox-377 branch August 27, 2026 01:21
@briansrls
briansrls restored the session/quiet-fox-377 branch August 27, 2026 01:22
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