Skip to content

§3 de-fork: rename dsl std.verification record TestClaim -> AssertionClaim (dissolves A1 EqualsClaim closure-poison) - #5640

Merged
briansrls merged 1 commit into
mainfrom
session/jolly-ant-231
Jun 23, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/jolly-ant-231

Conversation

@briansrls

@briansrls briansrls commented Jun 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

§3 single-authority de-conflation: rename the record type TestClaim → AssertionClaim in dsl/std/verification.dag. Two genuinely-different concepts were wrongly sharing one unqualified name:

  • std.verification (dsl) type TestClaim { kind: AssertKind, label: String } — a test assertion model. → renamed AssertionClaim (the kind field is an AssertKind, so the new name is truthful).
  • v2.std.verification (src/v2) type TestClaim = … | EqualsClaim | … — the v2 claim coproduct. Stays canonical, untouched.

This is a rename only — not a unify, and it deliberately does not touch the module std.verification name-fork or any dsl↔v2 std de-fork (separate operator-strategic lane); it stays compatible with whatever that lane later decides.

Why

This was the root cause of the A1 (#5615) type 'EqualsClaim' not found in scope floor failure (reverted by #5627). The resolver's per-module scope (env.bindings) is keyed by unqualified type name. When a PR expands a test's transitive import-closure to include both verification modules, the TestClaim slot silently resolves to one binding — the dsl record won, and since variant-constructor registration only fires for coproducts (Disj), EqualsClaim/StructuralEqualsClaim were never registered → "not found in scope". A1 was an innocent trigger: it dragged std.verification(dsl) into the floor test's closure via gunbc.ci_failure_class → extdeps.cache.sccache → std.cache_interface → std.verification. The unqualified name-clash is the landmine; this rename removes it so the name denotes one concept tree-wide.

(The deeper §5 resolver fail-open — silently picking one binding instead of failing closed on a type-name collision — is operator-gated and out of scope here.)

The dsl record had zero external consumers of the TestClaim/TestCase names (the 5 import std.verification sites all import only the NanosecondDuration/nanosecond_duration* cost helpers), so the change is the 2 lines in dsl/std/verification.dag (the decl + the TestCase.claims field).

Test plan — proven by execution (instrumented oracle + both source-root orders)

On the merge-result tree = current-main + this PR + A1 (re-applied locally for the test only), via claim_batch resolving src/v2/workflow/affected_set_floor_runner_test.dag:

  • Oracle (DBG_VARIANT): TestClaim binding connective=Disj, children [CompilesClaim, DiagnosticClaim, EqualsClaim, StructuralEqualsClaim, RoundTripClaim], EqualsClaim_in_locals=true, collisions=0 → PASS (before this PR: Conj{kind,label} / EqualsClaim_in_locals=false → FAIL).
  • dsl-first (--source-root dsl --source-root src/v2): PASS (56 modules, 1601 resolved items).
  • v2-first (--source-root src/v2 --source-root dsl): PASS (56 modules, 1601 resolved items).

Collision dissolved in both orders; the closure still includes std.verification(dsl) but the renamed AssertionClaim no longer shadows the v2 coproduct.

Diagnosis context: dashboard node adhoc-f83d03b9-69b; parent-signed the std rename (read-only constraint lifted for this edit only; resolver remains off-limits).

@gunbai-bot gunbai-bot Bot changed the title DIAGNOSE (read-only, NO resolver edit) the A1-induced discovery-corpus closure-poison: src/v2/workflow/affected_set_floor_runner_test.dag:69/77/85 fails 'type EqualsClaim not found in scope' in the dsl-first batch-2 corpus, even though EqualsClaim is defined+exported at src/v2/std/verification.dag:1 §3 de-fork: rename dsl std.verification record TestClaim -> AssertionClaim (dissolves A1 EqualsClaim closure-poison) Jun 23, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 23, 2026 15:46
@briansrls
briansrls merged commit 654587a into main Jun 23, 2026
2 checks passed
@briansrls
briansrls deleted the session/jolly-ant-231 branch June 23, 2026 16:54
gunbai-bot Bot pushed a commit that referenced this pull request Jun 23, 2026
Refresh dsl-v2-defork-audit.md (sole owner) with the by-execution Q2
classification for the #2 resolver-wall ruling: structural_inequality run
across the 9 std basename pairs + floor-closure reachability BFS (351 entries).

Confirms parent's derived distribution: verification RESOLVED by #5640 (a
name-collision rename-apart, not a grounding-merge); cant-unify-yet ==
{node, coercion} exactly; no third stuck mirror => flag-ANY + {node,coercion}
HOLDS. Two scope refinements: the {node,coercion} exemption is vacuous for the
type-name guard (0 shared type names — Route-C basename surface), and the
guard's real lands-green gate is the grounding de-fork fronted by the LIVE pair
{algebra (75 floor entries), nat (4)}.

Read-only; no de-fork executed. No resolver edit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 23, 2026
… guard (#5652)

* WIP: DIAGNOSE (read-only, NO resolver edit) the A1-induced discovery-corpus c

* WIP: DIAGNOSE (read-only, NO resolver edit) the A1-induced discovery-corpus c

* de-fork audit: 2026-06-23 executed Q2 confirmation (post-#5640)

Refresh dsl-v2-defork-audit.md (sole owner) with the by-execution Q2
classification for the #2 resolver-wall ruling: structural_inequality run
across the 9 std basename pairs + floor-closure reachability BFS (351 entries).

Confirms parent's derived distribution: verification RESOLVED by #5640 (a
name-collision rename-apart, not a grounding-merge); cant-unify-yet ==
{node, coercion} exactly; no third stuck mirror => flag-ANY + {node,coercion}
HOLDS. Two scope refinements: the {node,coercion} exemption is vacuous for the
type-name guard (0 shared type names — Route-C basename surface), and the
guard's real lands-green gate is the grounding de-fork fronted by the LIVE pair
{algebra (75 floor entries), nat (4)}.

Read-only; no de-fork executed. No resolver edit.

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

* #5652: fold the SIGNED final Q2 ruling (parent bright-stag, 2026-06-23)

flag-ANY (require_structural_divergence=FALSE), signed against the executed
distribution (dsl-v2-defork-audit.md §2A). Records the three confirmed points:
 1. POLICY flag-ANY — fires on byte-identical mirror shared type-names too
    (intended: a mirror is two homes for one type = §3 violation; de-fork merges
    even mirrors; flag-DIVERGENT would tolerate them = §3 hole).
 2. ROSTER deliberately EMPTY — {node,coercion} dropped as vacuous (zero shared
    type-names; guard never fires; their basename de-fork is Route-C/v1-delete,
    a different surface, still tracked in the audit category-(c)).
 3. ACTIVATION — lands-already-green after the grounding de-fork of the
    shared-type-name set {algebra,nat,effects,float,integer}, fronted by LIVE
    {algebra=75 floor entries, nat=4}; self-certifying capstone.

Model signed; resolver guard remains a separate operator-gated future PR on the
de-forked tree. No resolver edit.

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

* WIP: DIAGNOSE (read-only, NO resolver edit) the A1-induced discovery-corpus c

* docs: link resolver-type-name-collision-wall.md from the de-fork audit (de-orphan)

The new wall design doc was an orphan (no inbound link) → the floor
doc_graph_has_no_orphan_docs gate would red it. Add the root-reachable edge
audit→wall (audit's Q2 distribution feeds the wall): ROADMAP.md →
v2-self-hosting.md → dsl-v2-defork-audit.md → resolver-type-name-collision-wall.md.
Link resolves (both docs in docs/plans/). Docs-only.

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

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 23, 2026
…ion drift)

The auto-merge of origin/main into this branch collided on
dsl_v2_defork_audit.dag: main added the '2A. 2026-06-23 executed Q2
confirmation' section (#5652/#5640) to both the model and the committed .md,
but the conflict resolution kept this branch's dedup'd model (pre-2A),
dropping 39 lines of model content while the .md kept them — so
generated_artifact_drift_gate went red (regen deleted 2A from the .md).

Fix: take main's self-consistent model+\.md for this doc and re-apply the
md_helpers dedup to it. Now the model reproduces the committed .md byte-exact
(2A intact). Verified: run_generated_artifact_drift_gate=ExitSuccess,
generated_artifact_drift_witnesses=true, §6 lenses=true.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 24, 2026
* Dedup plan-doc markdown helpers into gunbc.plans.md_helpers

The 29 plan modules each defined byte-identical copies of the markdown
construction helpers (h2/h3/p/li/li_blocks/ul/ol/cell/row/quote/tasks/todo/
task/hr) — a §2-horizontal redundancy flagged by the api-review on #5655.

Extract one authority `gunbc.plans.md_helpers` and repoint every module to
import the helpers it uses, removing the per-module duplicates. Also
consolidates the `quote`/`bq` nickname fork (§3) onto the single name `quote`.
Each module's `std.markdown` import is pruned to only the types its body
still references directly.

Pure refactor — zero output change. Verified by execution:
generated_artifact_drift_witnesses=true (all 29 docs byte-identical) and
both §6 lenses (every_registered_plan_has_dissolution_trigger /
_is_titled)=true. Net -316 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: get design docs into .dag

* Re-dedup dsl_v2_defork_audit onto main's 2A section (fix merge-collision drift)

The auto-merge of origin/main into this branch collided on
dsl_v2_defork_audit.dag: main added the '2A. 2026-06-23 executed Q2
confirmation' section (#5652/#5640) to both the model and the committed .md,
but the conflict resolution kept this branch's dedup'd model (pre-2A),
dropping 39 lines of model content while the .md kept them — so
generated_artifact_drift_gate went red (regen deleted 2A from the .md).

Fix: take main's self-consistent model+\.md for this doc and re-apply the
md_helpers dedup to it. Now the model reproduces the committed .md byte-exact
(2A intact). Verified: run_generated_artifact_drift_gate=ExitSuccess,
generated_artifact_drift_witnesses=true, §6 lenses=true.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 24, 2026
…measurement-loop, resolver-type-name-collision-wall) (#5727)

* Dedup plan-doc markdown helpers into gunbc.plans.md_helpers

The 29 plan modules each defined byte-identical copies of the markdown
construction helpers (h2/h3/p/li/li_blocks/ul/ol/cell/row/quote/tasks/todo/
task/hr) — a §2-horizontal redundancy flagged by the api-review on #5655.

Extract one authority `gunbc.plans.md_helpers` and repoint every module to
import the helpers it uses, removing the per-module duplicates. Also
consolidates the `quote`/`bq` nickname fork (§3) onto the single name `quote`.
Each module's `std.markdown` import is pruned to only the types its body
still references directly.

Pure refactor — zero output change. Verified by execution:
generated_artifact_drift_witnesses=true (all 29 docs byte-identical) and
both §6 lenses (every_registered_plan_has_dissolution_trigger /
_is_titled)=true. Net -316 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: get design docs into .dag

* Re-dedup dsl_v2_defork_audit onto main's 2A section (fix merge-collision drift)

The auto-merge of origin/main into this branch collided on
dsl_v2_defork_audit.dag: main added the '2A. 2026-06-23 executed Q2
confirmation' section (#5652/#5640) to both the model and the committed .md,
but the conflict resolution kept this branch's dedup'd model (pre-2A),
dropping 39 lines of model content while the .md kept them — so
generated_artifact_drift_gate went red (regen deleted 2A from the .md).

Fix: take main's self-consistent model+\.md for this doc and re-apply the
md_helpers dedup to it. Now the model reproduces the committed .md byte-exact
(2A intact). Verified: run_generated_artifact_drift_gate=ExitSuccess,
generated_artifact_drift_witnesses=true, §6 lenses=true.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: get design docs into .dag

* WIP: get design docs into .dag

* Model T6 (cpu.weight axis) into ci_humming plan after main merge

main #5688-era hand-added a T6 bullet to docs/plans/ci-humming.md while this
branch was modeling ci-humming as a .dag Plan; the merge combined both but left
the model without T6 (drift). Add the T6 li to ci_humming.dag so the regenerated
.md reproduces it byte-exact.

Verified: run_generated_artifact_drift_gate=ExitSuccess, all plan witnesses PASS.

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

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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