Skip to content

File proxy_observation_mistaken_for_action_semantics, and give delete-first the destruction-witness precondition it was already assuming - #10115

Merged
gunbai-bot[bot] merged 1 commit into
mainfrom
session/warm-ferret-391
Sep 2, 2026
Merged

gunbai-bot[bot] merged 1 commit into
mainfrom
session/warm-ferret-391

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

What

Files one recurring failure class and the standing obligation it creates on this project's own census method.

proxy_observation_mistaken_for_action_semantics — a destructive action is judged by an observation that stands in a PROXY relation to what the destruction means. "Strip the imports and see whether the compile exits 0" is the canonical shape. The proxy is only ever as strong as the acceptance path that produces it, and it agrees with the semantics exactly where the checker is sound and diverges exactly where it fails open — so the green is densest on the population the destruction damages, and a count of green subjects reads as coverage while being a census of the absorbing arm.

The destruction-witness precondition — DESIGN §3 grounds delete-first on "the deletion is the census — every real dependent refuses loudly." That sentence is CONDITIONAL on the substrate being fail-closed on the axis destroyed. The precondition discharges the conditional: before a cut is sized on a green, destroy one edge that is genuinely required and exhibit a RED on the same acceptance path — same command, same mode, same arm reachability. Discharged per AXIS, not per cut. It lands in docs/plans/replacement-migration-doctrine.md beside the sibling already recorded there (the census is empty when the referent is named rather than imported): same conclusion, different mechanism — there nothing refuses because nothing was ever an edge; here the edge exists and the checker declines to judge it.

Specimen (already measured in-repo, which is why the class is filed rather than the instance re-investigated)

docs/plans/import-strip-witness-discovery-cascade-diagnosis.md §§14, 15.4 — 1,773 of 2,574 stripped files produced no diagnostic (69%), while §14 had already established by execution that a type present in the pool but not structurally bound is fabricated as an anonymous product rather than refused, and that the production type-reference discriminator is measurement-only (normal compile, resolve, run and emit stay on the legacy fail-open path unless measurement mode is armed). §15.4's own terminal test is carried into the row as the substitute.

Rung honesty

Rung found at 1 (mitigatable — a reader held the observation up against the checker, after a wave had been sized on the proxy). Ceiling 3, reachable rather than aspirational: whether an acceptance path has a reachable fabrication or fallback arm on the axis under test is decidable from that path's own graph. Next trigger, named as the capability: a destruction witness declares its axis and acceptance path, and the executor REFUSES the witness when that path carries a reachable fail-open arm on that axis. Until that exists, the row and the doctrine section are the mitigation and citing either as coverage is rung inflation — stated in both.

Receipts

  • Both projections re-derived with gunbc run --source-root dag --source-root src/v2 --entry dag/gunbc/instruments/generated_artifact_gate.dag --function main_wet, from a binary built on this head; a second run left the tree clean (fixed point).
  • Diff is 9 insertions across 4 files: the authority row + roster entry, the two generated projections, and the doctrine paragraph.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WBH7LPpHo52W9N6FLQya3n

…-first the destruction-witness precondition it was already assuming

The import strip's 69% clean rate (1,773 of 2,574 stripped files, no diagnostic)
was available to be read as "these files' references are independently
resolvable". It is not that. The same investigation had already established by
execution that a type present in the pool but not structurally bound is
FABRICATED as an anonymous product rather than refused, and that the
type-reference discriminator is measurement-only. So the green is densest exactly
on the population the cut damages.

Two edits, one class:

- `gunbc.recurring_failure_mode` gains
  `proxy_observation_mistaken_for_action_semantics`: a destructive action judged
  by an observation standing in a PROXY relation to what the destruction means,
  where the proxy is only as strong as the acceptance path producing it. The row
  carries the recognition rule (name the path, ask what it does when the property
  is ABSENT), the three near-neighbour distinctions, the measured specimen, §15.4's
  terminal test as the substitute, rung 1 / ceiling 3, and a next trigger named as
  a capability.

- `docs/plans/replacement-migration-doctrine.md` gains the destruction-witness
  precondition, beside the sibling already recorded there. DESIGN §3 grounds
  delete-first on "the deletion is the census -- every real dependent refuses
  loudly". That is CONDITIONAL on the substrate being fail-closed ON THE AXIS
  DESTROYED. The precondition discharges the conditional: exhibit a RED on the
  SAME acceptance path, per axis, before a cut is sized on the green.

Both projections re-derived (`main_wet`), fixed point confirmed by a second run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WBH7LPpHo52W9N6FLQya3n
@gunbai-bot
gunbai-bot Bot merged commit 5e9f65a into main Sep 2, 2026
6 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/warm-ferret-391 branch September 2, 2026 20:13
gunbai-bot Bot pushed a commit that referenced this pull request Sep 2, 2026
AUTHORITY ONLY. #10115 filed proxy_observation_mistaken_for_action_semantics and
#10102 re-derived both projections, so dag/gunbc/recurring_failure_mode.dag
conflicted again. Unioned, with the identity-aware dedupe from the previous
commit still applied: no duplicate names arose this time, and the resolver would
have refused rather than chosen had a name appeared on both sides with divergent
content.

Closure on THIS merged tree, both directions, not inherited from either side:
64 declarations, 64 roster entries, 64 unique each, empty symmetric difference.

Projections untouched: byte-identical to the main commit merged here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
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