Repository navigation
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
Conversation
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
8b29267e· Trigger:schedule - Thinking:
312s wall
BLOCKING (2)
Root Cause
src/v4/extdeps/cpp_abi.dagCppTargetProfile 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.dagFamily 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.
| // LANDABLE NOW — grounded against current origin/main carriers: | ||
|
|
||
| type CppPrimitiveResolutionContext { | ||
| target_profile: CppTargetProfile |
There was a problem hiding this comment.
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.
| type CppIntegerWidth64 = CppWidth64 { width: CppMachineWidth64 } | ||
|
|
||
| type CppILP32IntegerWidths = CppCoreIntegerWidthModel<CppIntegerWidth8, CppIntegerWidth16, CppIntegerWidth32, CppIntegerWidth32, CppIntegerWidth64, CppIntegerWidth32, CppIntegerWidth32> | ||
| type CppILP32DataModel = CppTargetDataModel<CppDataModelFamilyILP32, CppILP32IntegerWidths, CppPlainCharSigned> |
There was a problem hiding this comment.
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.
…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
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>
§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>
…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>
…(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>
* 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>
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.
…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>
SG-0 hand-path delta: +1
SG-0 pairing: (c) dispatch #3267 — T-29 requires a temporary v3
compile_to_dagsmoke forsrc/v4/extdeps/cpp_abi.daguntil v4 extdeps are covered by.dagTestClaims / 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.daga declaredCppTargetProfileauthority 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— passedpython3 scripts/strict_deprose_dag.py --check— passedcargo test -p v3-compiler v4_extdeps_cpp_abi_dag_compiles— passedcargo test -p v3-compiler sg0_v3_test_hand_authored_subratchet— passedctrl-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