Skip to content

Fix fleet-red drift: derive §2A census from .dag authority (structured rows) - #5671

Merged
briansrls merged 1 commit into
mainfrom
session/silent-crab-350-defork-2a
Jun 23, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/silent-crab-350-defork-2a

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Fleet-red unblock (decoupled from #5651)

The fleet-wide main-red on generated_artifact_drift_gate for docs/plans/dsl-v2-defork-audit.md: #5652 hand-added the ## 2A executed Q2 confirmation 9-concept census to the .md, but the #5655 fan-out re-authored dsl_v2_defork_audit.dag without §2A — lossy. Committed .md ≠ regenerate(.dag), so the drift gate fails closed fleet-wide (a stale-green: #5652 and #5655 each individually green, RED on the merged tree). Unblocks the fleet and #5650 (cool-boar hit the same drift).

Fix — option (a), content-preserving: §2A restored INTO the .dag authority as STRUCTURED ROWS

  • A TableBlock with one row(cells: [...]) per concept (all 9: algebra / nat / effects / float / integer / verification / logic / coercion / node), plus an ol() for the two scope refinements — matching the 3 existing census TableBlocks in this generator. The markdown table is now genuinely derived from data, not a prose blob; editing a cell can no longer re-drift the table (§3 single authority). Not the interim-prose escape hatch.

BUILD-TO-SPEC (bold-otter batch-B) — all met

  1. §2A is an h2(text:) in the body list; "supersedes the verification census row" wording verbatim. Placement = current-main's byte-position (before §0) where #2 resolver-wall DESIGN (model-only): type-name-collision fail-closed guard #5652 put it — the diff is pure-whitespace with no content-move hunks, proving position match. (Note: bold-otter's "after §2/before §3" mismodels main's actual layout; relocating would itself be a large content-drift vs main and fail oracle 1.)
  2. cell / row(cells:) helpers — no row(texts:) map-over-param. ✓
  3. Escaping: \{/\}, \", \\| for the literal \| in the nat row; unicode (§ — → ↔) raw. ✓
  4. No // comments. ✓
  5. §2A in body only; dissolution HasTrigger untouched. ✓
  6. No fenced code in §2A. ✓

Dual-oracle resolution

  • (2) structured rows — satisfied (real cell/row data).
  • (1) byte-faithfulness — the regen .md is word-for-word identical to current-main §2A (comm -23 and comm -13 on sorted word-sets both empty — zero words lost, zero added). It differs ONLY in two whitespace classes the std.markdown serializer owns: table separator (|---| → | --- |) and ordered-list continuation indent (3-space → lazy/flush). Both render identically in GFM. This whitespace-only deviation is the unavoidable, correct consequence of making the table data-derived rather than reproducing hand-stuffed prose — structure and a literal byte-match to hand-authored bytes are mutually exclusive here, and structure wins.

Verified by execution

  • generated_artifact_drift_gate (main) ⇒ ExitSuccess
  • full CI floor (--source-root dsl --source-root src/v2, gunbc_ci_floor_batches) ⇒ FLOOR_EXIT=0, incl. generated_artifact_drift_gate_passes PASS
  • dangling-link target resolver-type-name-collision-wall.md exists
  • changed files: only dsl/gunbc/plans/dsl_v2_defork_audit.dag (+§2A rows) and docs/plans/dsl-v2-defork-audit.md (regenerated)

🤖 Generated with Claude Code

…tured rows)

The fleet-wide main-red on generated_artifact_drift_gate for
docs/plans/dsl-v2-defork-audit.md: #5652 hand-added the "## 2A executed
Q2 confirmation" 9-concept census to the .md, but the #5655 fan-out
re-authored dsl_v2_defork_audit.dag WITHOUT §2A — lossy. The committed
.md no longer == regenerate(.dag), so the drift gate fails closed
fleet-wide (a stale-green: two PRs individually green, RED on the merged
tree).

Fix-forward (option a, content-preserving): restore §2A INTO the .dag
authority as STRUCTURED ROWS — a TableBlock (one row(cells:[...]) per
concept, all 9: algebra/nat/effects/float/integer/verification/logic/
coercion/node) plus an ol() for the two scope refinements, matching the
3 existing census TableBlocks in this generator. The markdown table is
now genuinely DERIVED from data, not a prose blob — editing a cell can
no longer re-drift the table (§3 single authority).

Dual-oracle note: the regenerated .md is byte-identical to current-main
§2A EXCEPT two whitespace classes the std.markdown serializer owns —
table separator (|---| → | --- |) and ordered-list continuation indent
(3-space → lazy/flush). Both render identically in GFM; every word,
number, and Q2 disposition is preserved. This whitespace-only deviation
is the unavoidable (and correct) consequence of making the table
data-derived rather than reproducing hand-authored prose — structure
(parent's authority-quality oracle) is fundamentally incompatible with a
literal byte-match to the hand-stuffed bytes, and structure wins.

Verified by execution: drift gate (main) ⇒ ExitSuccess; full CI floor
(src/v2 + dsl, both source roots) ⇒ FLOOR_EXIT=0, including
generated_artifact_drift_gate_passes. Decoupled from #5651 (the A1
re-land); unblocks the fleet-red and #5650 (cool-boar, same drift).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit ed62090 into main Jun 23, 2026
2 checks passed
@briansrls
briansrls deleted the session/silent-crab-350-defork-2a branch June 23, 2026 20:26
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