Skip to content

T-29 — extdeps C++ ABI / target data-model (v4 TASKS.md T-29; SCHEDULED → dispatch now, operator-authorized 2026-05-18). A T-4 side-branch FEEDER — hard prerequisite of T-4's cpp slice; gates T-4→T-9; a watch item (low-dependency != low-priority — if it slips the side branch goes critical). GAP: cpp - #3267

Merged
briansrls merged 10 commits into
mainfrom
session/quick-bat-761
May 18, 2026

Conversation

@briansrls

@briansrls briansrls commented May 18, 2026 •

Copy link
Copy Markdown
Contributor

SG-0 hand-path delta: +1
SG-0 pairing: (c) dispatch #3267 — T-29 requires a temporary v3 compile_to_dag smoke for src/v4/extdeps/cpp_abi.dag until v4 extdeps are covered by .dag TestClaims / generated harnesses; matching receipt is in INVARIANTS.md §SG-0 hand-authored integration test receipts.

Summary

Adds the v4 C++ ABI / target data-model slice for T-29, giving cpp.dag a declared CppTargetProfile authority for implementation-defined fundamental widths instead of guessing LP64/ILP32 constants.

Also de-proses the new ABI file under the Lane-C comment discipline and records the coproduct ledger in DECISIONS.md.

Test plan

  • cargo fmt --all -- --check — passed
  • python3 scripts/strict_deprose_dag.py --check — passed
  • cargo test -p v3-compiler v4_extdeps_cpp_abi_dag_compiles — passed
  • cargo test -p v3-compiler sg0_v3_test_hand_authored_subratchet — passed
  • ctrl-build -- bash -lc 'cargo build -p v2-compiler --release && rm -rf /tmp/v4-stage1 && mkdir -p /tmp/v4-stage1 && target/release/v2-compiler compile --source-root src/v4 --output-dir /tmp/v4-stage1 --target dag' — passed

@briansrls
briansrls marked this pull request as ready for review May 18, 2026 04:01

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 8b29267e · Trigger: schedule
  • Thinking: 312s wall

BLOCKING (2)

Root Cause

  • src/v4/extdeps/cpp_abi.dag CppTargetProfile is modeled as a parameterized type-level fact, but the first consumer imports and stores only the unapplied carrier → make the context carry CppTargetProfile<abi_model, data_model> or otherwise expose the selected data_model structurally.
  • src/v4/extdeps/cpp_abi.dag Family convenience aliases conflate data-model width family with the separate plain-char-signedness axis → either name signed/unsigned profile rows explicitly or keep signedness unchosen until concrete target rows land.

ROADMAP — Verified

  • T-PB-B: The new Rust smoke harness has the matching SG-0 census literal and INVARIANTS.md P5 receipt in this diff.

⚠️ The ABI substrate is close, but the current shape drops target facts and bakes in an implementation-defined char-signedness default.

Comment thread src/v4/extdeps/languages/cpp.dag Outdated
// LANDABLE NOW — grounded against current origin/main carriers:

type CppPrimitiveResolutionContext {
target_profile: CppTargetProfile

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BLOCKING: CppPrimitiveResolutionContext stores bare CppTargetProfile, dropping the abi_model/data_model type arguments that carry the width facts this PR introduces, so facts do not flow forward to future primitive resolution consumers.

Comment thread src/v4/extdeps/cpp_abi.dag Outdated
type CppIntegerWidth64 = CppWidth64 { width: CppMachineWidth64 }

type CppILP32IntegerWidths = CppCoreIntegerWidthModel<CppIntegerWidth8, CppIntegerWidth16, CppIntegerWidth32, CppIntegerWidth32, CppIntegerWidth64, CppIntegerWidth32, CppIntegerWidth32>
type CppILP32DataModel = CppTargetDataModel<CppDataModelFamilyILP32, CppILP32IntegerWidths, CppPlainCharSigned>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BLOCKING: The common data-model aliases hard-code CppPlainCharSigned, but C++ plain char signedness is implementation-defined independently of ILP32/LP64/LLP64/ILP64, so this silently defaults an external fact instead of preserving target-profile fidelity.

@briansrls
briansrls merged commit 70063de into main May 18, 2026
5 of 6 checks passed
briansrls added a commit that referenced this pull request May 18, 2026
…ctice-9 (modeling-discipline.md); FOLLOW-UP fresh PR on main-state (#3267 merged un-de-prosed, in-PR fix impossible); COMMENT-ONLY, carrier model byte-identical (v2 compile 0 diagnostics unchanged); cpp_abi.dag already compliant — (#3278)

* WIP: v4 de-prose: src/v4/extdeps/languages/cpp.dag — 93.4%→<20% strict Practi

* WIP: v4 de-prose: src/v4/extdeps/languages/cpp.dag — 93.4%→<20% strict Practi
briansrls added a commit that referenced this pull request May 18, 2026
4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main:
T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 —
parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal
landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated
rework obligation (same class as T-4 ×5 / #3280) — widens the keystone
blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not
merged numeric #3226). T-29 residual #3277 attribution flagged open.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
§1 graphic still drew T-29 inside the keystone box while §3/§2/§5
treat it as LANDED (#3267), not a keystone — same single-chart
internal-consistency class as the §5/§6 fix. Diagram now: 3-item
cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
…x RC)

codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035
still declares T-29 a hard prerequisite of T-4's cpp slice
({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is
OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a
keystone / removed from critical branch" reclassification was a real
P2/Practice-9 documentation-authority violation (dispatch graph
disagreeing with the source of truth → could mis-sequence T-4). T-29
restored to the keystone cluster across §1 graph, §2 row, §3 table,
§4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when
#3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 18, 2026
…(discussion) (#3322)

* docs: R4 program dispatch plan — T-1..T-32 dependency chart + lane mapping

Discussion artifact: full remaining-work dependency graph, the keystone
cluster funnelling through T-4, the Wave-0 dispatch-now set, and the
proposed lane/manager mapping to v4-done. For operator + lane-manager
review ahead of program-wide fan-out.

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

* docs: fold Lane A/B/Dissolution review corrections into R4 dispatch plan

Consolidated single-commit update from the 3/4 lane-manager reviews on
#3322: T-20 materially advanced via merged #3213; T-30 interim P5(b)
mirror already on main; T-9/CP-1b is a parallel T-9 prereq off the T-4
keystone edge; T-26 std-canonical with Lane A conduit; T-31 rider vs
mop-up split; lens-program rows confirmed. T-4-mgr rows pending explicit
ack (consistent with standing #3280 hold).

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

* WIP: May 18

* docs: fold T-4-mgr review — staleness fixes + widened keystone scope

4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main:
T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 —
parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal
landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated
rework obligation (same class as T-4 ×5 / #3280) — widens the keystone
blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not
merged numeric #3226). T-29 residual #3277 attribution flagged open.

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

* docs: fix §5/§6 internal consistency vs folded corrections (Lane A finding)

Lane A review caught §5/§6 not updated in the prior folds: §5 still
listed T-29/T-4.10/T-4.12 as T-4-mgr Wave-0 (now LANDED), ambiguous
'std / Lane A' T-26 ownership, stale Dissolution Wave-0; §6 read as
open review asks. §5 now matches §2/§3/§4 (T-26 std-authoritative /
Lane A conduit; T-4-mgr Wave-0 empty; Dissolution T-31(b)/T-30
generated-checker); §6 → ratified status (4/4 lanes, operator §3 open).

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

* WIP: May 18

* docs: fresh-lane structure (§5) + operator decision sheet (§7)

§5 → fresh composite manager lanes under witty-cat-59 (no reused
managers, per operator); two non-migrated exceptions (vivid-carp-207
= sole #3280 freeze custodian; fierce-cat-31 = lens-fan-out closeout).
§7 → consolidated decision sheet: the A-vs-B root ruling explained in
tradeoff terms + every pending blocking question (#3280 disposition,
#3240 ratification, T-25-core, Wave-0 go, fresh-lane defaults, de-prose
py removal, #3313) with recommendations.

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

* docs: fix §1 ASCII keystone diagram vs §3 (cursor BLOCKING — T-29)

§1 graphic still drew T-29 inside the keystone box while §3/§2/§5
treat it as LANDED (#3267), not a keystone — same single-chart
internal-consistency class as the §5/§6 fix. Diagram now: 3-item
cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below.

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

* docs: fold #3313 lens-rework impact (Wave-2 taxonomy + batch-d hold)

#3313 is in active design rework (L1.6 retired→L1.10 family, A0/A1
umbrella, pre-Practice-10-ratification). §7 row 7 updated: it's no
longer flat L1.7–L1.12; Wave-2 batch (d) held track-not-finalize so
witnesses aren't authored against the moving taxonomy; batches a/b/c
and the keystone framing unaffected (#3313 reinforces #1=B/#3240).

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

* docs: record operator B2 ruling on #3321 driver shape (§7 row 8)

Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits
to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped
entirely, B1 also rejected — no interim out-of-substrate enforcement
shell (Python OR Rust), same thesis ruling as the de-prose-py kill.
Whole-corpus gate re-scoped to the v2 filesystem-walk substrate
primitive = the T-21/T-24 corpus-drive capability (PREFIX = first
consumer). Operator-accepted: CI lens gate lands when that lands.

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

* WIP: May 18

* docs: fold still-hawk-102 review — keystone spec sharpness + 2-owner fix

(1) #3240 is a CLOSED/SUPERSEDED tracker, NOT ratifiable — the keystone
artifact is a not-yet-drafted modeling-discipline.md fold PR that
still-hawk-102 owns drafting; §7 #3a → "authorize draft", §3 rewritten.
(2) "one decision" overstated → "2-3 distinct operator items"; A-vs-B=B
stated as IMPLIED by the keystone-fold, not equivalent. (3) §5 two-owner
lens seam fixed: Fresh Compiler-Pipeline lens scope GATED on
fierce-cat-31 fan-out closeout (one lens owner; no P2 parallel-authority
drift). (4) §7 #2 no-revert-of-862bbde6e clause added. Self-consistency
pass: fixed 2 stale "ratify #3240" stragglers (§3 blast-radius, §6 r5).

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

* docs: fold sunny-wolf-435 Wave-2 prereq + cross-lane edge (#3313 author)

#3313 author flagged two real Wave-2 sequencing gaps: (1) unenumerated
std/ prerequisite carriers the L1.x lenses read (canonical_observations,
CanonicalConcept, 3 Exemption registries) — T-25-core-class, no owning
T-# yet (P10-shape gap); (2) three derived lens-stages (match_arm_shape,
closed_vocab_scan, concept_home) = Compiler-Pipeline+Lens lane, NOT
Dissolution. Added §4 Wave-2-prereq block + cross-lane edge
(Compiler-Pipeline builds → Dissolution Wave-2 consumes); §5 Dissolution
row annotated. Reinforces batch-(d) hold.

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

* docs: re-tee keystone ask to verified-exact (still-hawk self-correction)

still-hawk-102 verify-don't-trust'd its own review #1: the keystone
FOLD is ALREADY on main (modeling-discipline.md §581-763). Both prior
framings ('ratify #3240' and 'authorize a drafting effort') were wrong.
Corrected verified-exact: operator ratifies the verbatim invariant
blockquote at modeling-discipline.md ~§594-600 (exists, flagged
proposed/#3240-A1); still-hawk then lands it into INVARIANTS.md+
MODELING.md + de-hedges 3 sites — SMALL (~30-60 ln, mechanical, low-risk),
ratify-exact-text-today not a drafting effort. Downstream effort = the
retroactive v4 audit sweep (#3240 C1). §3(a)/§7#3a/§6r5/trailer aligned.

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

* docs: fix last stale 'not-yet-drafted' straggler (§3 blast-radius)

* docs: keystone retraction (C1 not gated on A1) + Wave-2 prereq classification

(A) still-hawk-102 third self-correction, verified: #3241 (fold) + #3242
(🟡-legend) BOTH merged; the v4 audit sweep #3240-C1 was gated on #3242
(merged), NOT on the A1 invariant — C1 already in motion independently.
Retracted the 'authorizing A1 kicks off the v4 sweep' framing in
§3(a)/§7#3a: A1 ⇒ ONLY the small placement PR, maximally low-stakes.
(B) sunny-wolf-435 (#3313 author) classification, verified NONE fold
under T-25-core: (1a) canonical_observations/CanonicalConcept → NEW T-#
'lens-supporting concept registries'; (1b) 3 Exemption registries →
fold into each lens's own task, no T-#; (2) 3 derived lens-stages →
NEW shared T-# 'Wave-2-prereq lens-pipeline derivations'. Two new
owning-T#s to assign (P10-shape). §4 Wave-2-prereq block rewritten.

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

* docs: final keystone re-tee — C1 sweep #3243 DONE (verified), A1 = sole open

* docs: rename live keystone gate → 'Practice-10 A1 invariant'; #3240 = closed-tracker only (cursor editorial)

* WIP: May 18

* docs: fix T-18 forward-dep violation (BLOCKING) + wave-ordering convention

Valid BLOCKING: §2 + TASKS.md say T-18 (coverage meta-lens) depends on
T-12/T-13 ('meta over the other lenses'), which only become real in
Wave 3 — yet §4 listed T-18 in Wave 2 (consumer before input = Facts-
Flow-Forward violation). Moved T-18 Wave 2 → Wave 4 (after T-12/T-13
real). Added a wave-ordering convention note: Wave = membership not
intra-wave sequence; §2 Depends-on orders within a wave; consumer-
before-input across waves is the real violation class.

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

* docs: topological re-sort of wavefront (BLOCKING T-16 + pre-empt queued)

Operator BLOCKING review fired consumer-before-input findings (T-18,
T-16, and the same class T-4.8/T-17). Replaced the weak intra-wave
convention with a TOPOLOGICAL invariant (a task is strictly later than
every dep; within-wave = mutually independent, dispatch-safe on face)
and re-sorted: W2 drops T-4.8; W3 gains T-4.8; W4 gains T-17 (deps T-12
real W3) + T-18; W5 = T-16 (deps T-11 W4); W6 = T-15 terminal. Every
consumer now strictly after its fresh inputs.

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

* docs: mirror §4 topological re-sort into §5 (codex BLOCKING residual)

codex BLOCKING (vs ed8b3b9, pre-resort) demanded T-18-after-T12/13,
T-16-after-T-11, AND 'mirror that gating in §5'. §4 was already fixed
by 9cd9831; the residual was §5 not mirroring it — the Compiler-
Pipeline 'Gated' cell was a flat 'post-T-4' bag obscuring the wave
sequence. Now §5 Compiler-Pipeline + Test/Bootstrap-Infra gated columns
explicitly mirror §4 topology (W2 T-9 → … → W5 T-16 → W6 T-15).

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

* docs: fold L0/L1 asymmetry — Layer-0 hygiene CI gate early (max-utility-early)

sunny-wolf-435 (#3313 author), verified vs #3313 §4/§9/§10: Layer-0
(L0.1-L0.15) reads parse+resolve only (both LANDED), NO T-9 → CI
hygiene hard-gate goes live END-WAVE-1 once lens-pipeline-derivations
+ Layer-0 lens stage land. Layer-1 (L1.1-L1.12) needs post-T-9 +
concept registries → Wave-3. §4 W1 now carries the early Layer-0
gate; W3 the L1.x fan-out; batch-d hold unchanged for L1.x. Directly
serves the operator 'maximum utility as early as possible (without
compromising standards)' directive.

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

* docs: restore T-29 as TASKS.md-declared T-4-cpp keystone feeder (codex RC)

codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035
still declares T-29 a hard prerequisite of T-4's cpp slice
({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is
OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a
keystone / removed from critical branch" reclassification was a real
P2/Practice-9 documentation-authority violation (dispatch graph
disagreeing with the source of truth → could mis-sequence T-4). T-29
restored to the keystone cluster across §1 graph, §2 row, §3 table,
§4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when
#3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan).

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

* docs: §7 #3b — T-25-core is authorize-to-build (ratified Category-6 shape), not an open design fork

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls briansrls mentioned this pull request May 18, 2026
6 tasks
briansrls added a commit that referenced this pull request May 19, 2026
* docs: R4 program dispatch plan — T-1..T-32 dependency chart + lane mapping

Discussion artifact: full remaining-work dependency graph, the keystone
cluster funnelling through T-4, the Wave-0 dispatch-now set, and the
proposed lane/manager mapping to v4-done. For operator + lane-manager
review ahead of program-wide fan-out.

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

* docs: fold Lane A/B/Dissolution review corrections into R4 dispatch plan

Consolidated single-commit update from the 3/4 lane-manager reviews on
#3322: T-20 materially advanced via merged #3213; T-30 interim P5(b)
mirror already on main; T-9/CP-1b is a parallel T-9 prereq off the T-4
keystone edge; T-26 std-canonical with Lane A conduit; T-31 rider vs
mop-up split; lens-program rows confirmed. T-4-mgr rows pending explicit
ack (consistent with standing #3280 hold).

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

* WIP: May 18

* docs: fold T-4-mgr review — staleness fixes + widened keystone scope

4/4 lanes now ratified. T-4-mgr (vivid-carp-207) verified vs main:
T-29(#3267)/T-4.10(#3168)/T-4.12(#3171) already LANDED, not Wave-0 —
parallel count ≈14→≈11. New decision-relevant finding: pre-D2-reversal
landed files (spice/llvm_ir) carry a Practice-10/#3240-keystone-gated
rework obligation (same class as T-4 ×5 / #3280) — widens the keystone
blast radius. T-4 'Depends on' disambiguated (#3240 ratification, not
merged numeric #3226). T-29 residual #3277 attribution flagged open.

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

* docs: fix §5/§6 internal consistency vs folded corrections (Lane A finding)

Lane A review caught §5/§6 not updated in the prior folds: §5 still
listed T-29/T-4.10/T-4.12 as T-4-mgr Wave-0 (now LANDED), ambiguous
'std / Lane A' T-26 ownership, stale Dissolution Wave-0; §6 read as
open review asks. §5 now matches §2/§3/§4 (T-26 std-authoritative /
Lane A conduit; T-4-mgr Wave-0 empty; Dissolution T-31(b)/T-30
generated-checker); §6 → ratified status (4/4 lanes, operator §3 open).

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

* WIP: May 18

* docs: fresh-lane structure (§5) + operator decision sheet (§7)

§5 → fresh composite manager lanes under witty-cat-59 (no reused
managers, per operator); two non-migrated exceptions (vivid-carp-207
= sole #3280 freeze custodian; fierce-cat-31 = lens-fan-out closeout).
§7 → consolidated decision sheet: the A-vs-B root ruling explained in
tradeoff terms + every pending blocking question (#3280 disposition,
#3240 ratification, T-25-core, Wave-0 go, fresh-lane defaults, de-prose
py removal, #3313) with recommendations.

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

* docs: fix §1 ASCII keystone diagram vs §3 (cursor BLOCKING — T-29)

§1 graphic still drew T-29 inside the keystone box while §3/§2/§5
treat it as LANDED (#3267), not a keystone — same single-chart
internal-consistency class as the §5/§6 fix. Diagram now: 3-item
cluster (P1-KEYSTONE / T-25-core / T-30); T-29 shown LANDED below.

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

* docs: fold #3313 lens-rework impact (Wave-2 taxonomy + batch-d hold)

#3313 is in active design rework (L1.6 retired→L1.10 family, A0/A1
umbrella, pre-Practice-10-ratification). §7 row 7 updated: it's no
longer flat L1.7–L1.12; Wave-2 batch (d) held track-not-finalize so
witnesses aren't authored against the moving taxonomy; batches a/b/c
and the keystone framing unaffected (#3313 reinforces #1=B/#3240).

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

* docs: record operator B2 ruling on #3321 driver shape (§7 row 8)

Operator ruled 2026-05-18: substrate-native (B2). registry.dag splits
to its own .dag PR (lands now); the ~467-LOC tools/ Rust crate dropped
entirely, B1 also rejected — no interim out-of-substrate enforcement
shell (Python OR Rust), same thesis ruling as the de-prose-py kill.
Whole-corpus gate re-scoped to the v2 filesystem-walk substrate
primitive = the T-21/T-24 corpus-drive capability (PREFIX = first
consumer). Operator-accepted: CI lens gate lands when that lands.

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

* WIP: May 18

* docs: fold still-hawk-102 review — keystone spec sharpness + 2-owner fix

(1) #3240 is a CLOSED/SUPERSEDED tracker, NOT ratifiable — the keystone
artifact is a not-yet-drafted modeling-discipline.md fold PR that
still-hawk-102 owns drafting; §7 #3a → "authorize draft", §3 rewritten.
(2) "one decision" overstated → "2-3 distinct operator items"; A-vs-B=B
stated as IMPLIED by the keystone-fold, not equivalent. (3) §5 two-owner
lens seam fixed: Fresh Compiler-Pipeline lens scope GATED on
fierce-cat-31 fan-out closeout (one lens owner; no P2 parallel-authority
drift). (4) §7 #2 no-revert-of-862bbde6e clause added. Self-consistency
pass: fixed 2 stale "ratify #3240" stragglers (§3 blast-radius, §6 r5).

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

* docs: fold sunny-wolf-435 Wave-2 prereq + cross-lane edge (#3313 author)

#3313 author flagged two real Wave-2 sequencing gaps: (1) unenumerated
std/ prerequisite carriers the L1.x lenses read (canonical_observations,
CanonicalConcept, 3 Exemption registries) — T-25-core-class, no owning
T-# yet (P10-shape gap); (2) three derived lens-stages (match_arm_shape,
closed_vocab_scan, concept_home) = Compiler-Pipeline+Lens lane, NOT
Dissolution. Added §4 Wave-2-prereq block + cross-lane edge
(Compiler-Pipeline builds → Dissolution Wave-2 consumes); §5 Dissolution
row annotated. Reinforces batch-(d) hold.

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

* docs: re-tee keystone ask to verified-exact (still-hawk self-correction)

still-hawk-102 verify-don't-trust'd its own review #1: the keystone
FOLD is ALREADY on main (modeling-discipline.md §581-763). Both prior
framings ('ratify #3240' and 'authorize a drafting effort') were wrong.
Corrected verified-exact: operator ratifies the verbatim invariant
blockquote at modeling-discipline.md ~§594-600 (exists, flagged
proposed/#3240-A1); still-hawk then lands it into INVARIANTS.md+
MODELING.md + de-hedges 3 sites — SMALL (~30-60 ln, mechanical, low-risk),
ratify-exact-text-today not a drafting effort. Downstream effort = the
retroactive v4 audit sweep (#3240 C1). §3(a)/§7#3a/§6r5/trailer aligned.

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

* docs: fix last stale 'not-yet-drafted' straggler (§3 blast-radius)

* docs: keystone retraction (C1 not gated on A1) + Wave-2 prereq classification

(A) still-hawk-102 third self-correction, verified: #3241 (fold) + #3242
(🟡-legend) BOTH merged; the v4 audit sweep #3240-C1 was gated on #3242
(merged), NOT on the A1 invariant — C1 already in motion independently.
Retracted the 'authorizing A1 kicks off the v4 sweep' framing in
§3(a)/§7#3a: A1 ⇒ ONLY the small placement PR, maximally low-stakes.
(B) sunny-wolf-435 (#3313 author) classification, verified NONE fold
under T-25-core: (1a) canonical_observations/CanonicalConcept → NEW T-#
'lens-supporting concept registries'; (1b) 3 Exemption registries →
fold into each lens's own task, no T-#; (2) 3 derived lens-stages →
NEW shared T-# 'Wave-2-prereq lens-pipeline derivations'. Two new
owning-T#s to assign (P10-shape). §4 Wave-2-prereq block rewritten.

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

* docs: final keystone re-tee — C1 sweep #3243 DONE (verified), A1 = sole open

* docs: rename live keystone gate → 'Practice-10 A1 invariant'; #3240 = closed-tracker only (cursor editorial)

* WIP: May 18

* docs: fix T-18 forward-dep violation (BLOCKING) + wave-ordering convention

Valid BLOCKING: §2 + TASKS.md say T-18 (coverage meta-lens) depends on
T-12/T-13 ('meta over the other lenses'), which only become real in
Wave 3 — yet §4 listed T-18 in Wave 2 (consumer before input = Facts-
Flow-Forward violation). Moved T-18 Wave 2 → Wave 4 (after T-12/T-13
real). Added a wave-ordering convention note: Wave = membership not
intra-wave sequence; §2 Depends-on orders within a wave; consumer-
before-input across waves is the real violation class.

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

* docs: topological re-sort of wavefront (BLOCKING T-16 + pre-empt queued)

Operator BLOCKING review fired consumer-before-input findings (T-18,
T-16, and the same class T-4.8/T-17). Replaced the weak intra-wave
convention with a TOPOLOGICAL invariant (a task is strictly later than
every dep; within-wave = mutually independent, dispatch-safe on face)
and re-sorted: W2 drops T-4.8; W3 gains T-4.8; W4 gains T-17 (deps T-12
real W3) + T-18; W5 = T-16 (deps T-11 W4); W6 = T-15 terminal. Every
consumer now strictly after its fresh inputs.

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

* docs: mirror §4 topological re-sort into §5 (codex BLOCKING residual)

codex BLOCKING (vs ed8b3b9, pre-resort) demanded T-18-after-T12/13,
T-16-after-T-11, AND 'mirror that gating in §5'. §4 was already fixed
by 9cd9831; the residual was §5 not mirroring it — the Compiler-
Pipeline 'Gated' cell was a flat 'post-T-4' bag obscuring the wave
sequence. Now §5 Compiler-Pipeline + Test/Bootstrap-Infra gated columns
explicitly mirror §4 topology (W2 T-9 → … → W5 T-16 → W6 T-15).

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

* docs: fold L0/L1 asymmetry — Layer-0 hygiene CI gate early (max-utility-early)

sunny-wolf-435 (#3313 author), verified vs #3313 §4/§9/§10: Layer-0
(L0.1-L0.15) reads parse+resolve only (both LANDED), NO T-9 → CI
hygiene hard-gate goes live END-WAVE-1 once lens-pipeline-derivations
+ Layer-0 lens stage land. Layer-1 (L1.1-L1.12) needs post-T-9 +
concept registries → Wave-3. §4 W1 now carries the early Layer-0
gate; W3 the L1.x fan-out; batch-d hold unchanged for L1.x. Directly
serves the operator 'maximum utility as early as possible (without
compromising standards)' directive.

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

* docs: restore T-29 as TASKS.md-declared T-4-cpp keystone feeder (codex RC)

codex REQUEST_CHANGES, VERIFIED vs origin/main: TASKS.md:64/:286/:1035
still declares T-29 a hard prerequisite of T-4's cpp slice
({P1-KEYSTONE,T-30,T-29,T-25-core}→T-4), and #3277 (T-29 residual) is
OPEN — only #3267 (core) merged. The prior "T-29 LANDED / not a
keystone / removed from critical branch" reclassification was a real
P2/Practice-9 documentation-authority violation (dispatch graph
disagreeing with the source of truth → could mis-sequence T-4). T-29
restored to the keystone cluster across §1 graph, §2 row, §3 table,
§4 wave note, §5 extdeps/T-4, §6 review-status; de-classify only when
#3277 lands AND TASKS.md updates (authority = TASKS.md, not this plan).

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

* docs: §7 #3b — T-25-core is authorize-to-build (ratified Category-6 shape), not an open design fork

* docs: reconcile T-25-core framing class to §7 #3b ratified authorize-to-build shape

Blocking operator review on #3339 (r4-program-dispatch-plan.md): T-25-core
was still framed as an open design-direction / operator-review fork in §2,
§3, and the §6/§7 prose, contradicting §7 #3b (commit 363bb76) and the
canonical authority (TASKS.md:940-943 operator-ratified; :962-982 +
coercion-design.md Category 6 = shape already designed: base type +
fail-closed validation at a named constructor boundary). Fixed the whole
class (lines 108, 151, 201-202, 206, 345, 392-393, 396) to "authorize-to-
build stamp, shape ratified, NOT a design fork". Legit keystone-cluster
feeder references (TASKS.md:64 exact set) left intact — canonically correct.

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

* WIP: May 18

* docs: fix dual-authority — §5 lane active-status + §6 row carried "HELD on keystone" shorthand vs the full feeder set (openai-pro RC #3339)

openai-pro REQUEST_CHANGES (review 14421, head b2f0fa5): §5 Fresh
extdeps/T-4 lane active-status cell (:317) and §6 vivid-carp-207 row
(:341) still said "HELD on keystone", contradicting §2 :81 "all four
gate T-4" + the same row's gated cell. A worker scanning the lane table
could read keystone-closure as sufficient. Both now state the full
TASKS.md:286 feeder set {P1-KEYSTONE,T-30,T-29,T-25-core} — one gate
everywhere. Same class as the prior 3-site normalization; this closes
the active-status shorthand the earlier pass missed.

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

* docs: add TASKS.md anchor convention note (cursor #3339 exploratory obs — APPROVE)

cursor/composer-2 (review 14425) APPROVE, no findings; one actionable
exploratory observation: the brief cites `TASKS.md:NNN` without a path
and there is no root-level `TASKS.md` (only src/v4/TASKS.md), so a reader
could hunt for a missing file. Added one proportionate anchor-convention
note to the Purpose block (not churning every citation) stating all
`TASKS.md:NNN` anchors refer to src/v4/TASKS.md.

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

* docs: Wave 1 over-gated T-4.5/T-4.6 on the full ×4 — split unblock conditions (openai-pro RC #3339, review 14429)

Valid finding (a regression from the prior Wave 1 normalization): grouping
"T-4 ×5 languages, T-4.5, T-4.6 unblock" under "the keystone-cluster ×4
land" implied T-4.5/T-4.6 are gated on the full {P1-KEYSTONE,T-30,T-29,
T-25-core}. But §2 :85/:86 declare T-4.5 deps {T-3,T-25-core} and T-4.6
deps {T-25-core,T-26} — neither needs P1-KEYSTONE/T-30/T-29. Wave 1 text
now gates only T-4 ×5 on the full ×4; T-4.5/T-4.6 unblock on T-25-core
(their sole cluster feeder) + own §2 deps, potentially earlier. §2 table
reaffirmed as the dependency authority.

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

* docs: whole-doc §1/§4/§5-vs-§2 consistency sweep — harden §5 gated cell (T-4.5–4.8 not full-×4); pre-empt the recurring class

Following the openai-pro 14429 Wave-1 over-gating fix (f223fb7), did a
full consistency audit of every gate/unblock restatement vs the §2
dependency authority. §4 Waves 2-6, §1 ASCII, §6 verified consistent.
One latent ambiguity remained: §5 extdeps/T-4 gated cell listed
"T-4.5–4.8" right after "T-4 (post the full feeder set)", readable as
T-4.5–4.8 being full-×4-gated. Hardened it to state T-4.5–4.8 follow
their own §2 deps (not the full ×4) + §2 is the sole dependency
authority — closing the class that successive reviews kept finding one
instance of, rather than waiting for the next gap-by-gap flag.

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

* docs: drop brittle internal :NN self-anchors → name-only refs (openai-pro RC #3339, review 14436)

Valid finding: §5 lane row self-referenced "§2 T-4 row :81" but the doc
grew from prior edits so :81 is now T-6 (T-4 is :84). Root cause is
hardcoded internal line anchors that re-stale on every edit. Per
openai-pro's own "remove the numeric suffix" option, converted ALL
internal self-anchors to name-based refs: §5 ":81" dropped; Wave 1
"§2 :85/:86" → "per the §2 T-4.5/T-4.6 row". External src/v4/TASKS.md:NN
anchors untouched (different stable file). Permanently closes the
brittle-self-anchor sub-class rather than chasing the number each pass.

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 19, 2026
D5 reconcile receipt: operator A-vs-B ruling (2) plus operator-executed #3338 moved the C++ slice past the frozen #3277 scaffold, so this advances the #3277 branch to post-#3338 main and resolves cpp.dag forward to the ruled-B fact-bundle shape.

Resolution: preserve #3267 cpp_abi as the width authority and model CppScalar with integer surface spelling, CppTargetProfile, CppTargetDataModel, ABI-selected CppIntegerWidth, signed two's-complement representation, and overflow/range disposition. Do not restore the stale hollow CppBool=Bool reduction, do not add a local GroundingMap row, and do not revert merged main work.
briansrls added a commit that referenced this pull request May 19, 2026
…ctice-9 (modeling-discipline.md); FOLLOW-UP fresh PR on main-state (#3267 merged un-de-prosed, in-PR fix impossible); COMMENT-ONLY, carrier model byte-identical (v2 compile 0 diagnostics unchanged); cpp_abi.dag already compliant — (#3289)

* WIP: v4 de-prose: src/v4/extdeps/languages/cpp.dag — 93.4%→<20% strict Practi

* WIP: v4 de-prose: src/v4/extdeps/languages/cpp.dag — 93.4%→<20% strict Practi

* WIP: v4 de-prose: src/v4/extdeps/languages/cpp.dag — 93.4%→<20% strict Practi

* fix(v4): cpp.dag extdeps fidelity + DECISIONS Practice-4 ledger (#3289)

Pin ISO/IEC 14882:2020 (store link + working-draft navigation) per
dsl/extdeps/extdeps.md. Add substrate-table and per-carrier rows so the
live CP-3229-GREEN-TERMINAL tag has an explicit DECISIONS home for
CppIntegerOverflowDisposition.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(v4): remove non-Practice-9 `// Ledger:` line from cpp.dag

Practice 9 authorizes only path + four-line header + per-carrier Anchor +
classification tags; ledger inventory belongs in DECISIONS.md (already
present). The coproduct tag still cites Part 6 · CP-3229-GREEN-TERMINAL.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(v4): correct CppIntegerOverflowDisposition DECISIONS receipt vs ISO C++

The ledger must not collapse signed UB vs unsigned modulo 2^N into
“implementation-defined overflow”. Rewrite the Practice-4 row to the
defined/undefined distinction with draft clause cites (basic.types,
basic.fundamental, expr.pre). Carrier unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: [Mode-1 MAX-PAR] De-prose #3289 redo: refresh branch/PR against post-#33

* fix(v4): cpp.dag Practice-9 header + coproduct tag (Composer #3289)

Remove extra file-level Anchor line; fold ISO + draft navigation into
Scope; per-carrier Anchor above CppIntegerOverflowDisposition; replace
dead DECISIONS Part-6 slug with ISO disposition one-liner. DECISIONS.md
ledger not restored (operator NUKE-class / hub-coordinated delete).

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(v4): restore DECISIONS Part 6 coproduct tag on cpp overflow sum

Composer APPROVE_WITH_COMMENTS: align line 14 with repo-standard
DECISIONS.md Part 6 · CP-3229-CPP-INTEGER-OVERFLOW slug (ledger remains
single authority; no inline variant prose on the tag).

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(v4): cpp.dag — drop DECISIONS path from overflow coproduct tag

openai-pro REQUEST_CHANGES (Practice-9 / ledger-nuke posture): keep 🟢
classification without in-file DECISIONS.md prose authority; receipt
remains PR/commit history per hub directive class.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ci): stabilize v4 gate — PR-scoped concurrency + larger runner

v4 logs showed runner shutdown mid `v2-compiler compile`, not diagnostics.
Concurrency previously keyed each PR commit by `head.sha`, so burst merges
could stack multiple full pipelines; cancel-in-progress did not supersede.
Run the v4 job on `ubicloud-standard-8` (same class as v3) for shorter wall
clock. Regenerate `ci_github_actions_workflow.dag` from ci.yml.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: [Mode-1 MAX-PAR] De-prose #3289 redo: refresh branch/PR against post-#33

* chore(ci): retrigger Actions for folded v4 bootstrap gate

PR head 7406c75 landed the ci.yml fold but no workflow run was
associated with that SHA; empty bump to force synchronize + CI.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.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