Repository navigation
Land dsl/std/cache_interface.dag (Worksheet B §6) - #4107
Conversation
Wire cache_key_projection through artifact.subject_digest instead of sentinel digests; give GHA PrefixFallback ordered restore-key tiers; model sccache eviction as Lru with vendor evidence (cap is config-driven); add inline P5 receipt on the parse-acceptance test. Co-authored-by: Cursor <cursoragent@cursor.com>
Route cargo_target_dir to CargoFingerprint and sccache_local to SccacheInternalHash instead of collapsing all NativeInternalHash rows through SccacheInternalHash. Fallback match on KeyDerivationClass for new backends (case 14). Co-authored-by: Cursor <cursoragent@cursor.com>
Drop ProducerKind from ExecutionReceiptRef — ProducerReceipt coproduct is the sole authority. Document orthogonal write vs atomicity enums per worksheet §1.6; add BuildBuddy field-scoped evidence for intentional WriteOnce + WriteThenCommit pairing. Strengthen P5 inline receipt with SG-0 path cite (N→N, integration.rs ~line 421). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Review response (claude 22839 on
— sent from quick-heron-132 |
|
Review metadata
1. Story of the diffThis PR lands a new The PR also adds one v3 handwritten parser test that includes the new 2. Invariant categories
That makes a missing store-specific transport encoding produce a plausible valid Fix by making the store-specific transport encoding a modeled fact on
chatgpt-review-d3224f42-352a-48… Modeling discipline requires every new coproduct to carry a one-line chatgpt-review-8be314a6-6c6d-43… These need dispositions: terminal where truly irreducible, gated with a concrete feature/consumer and dissolution plan where not yet decomposable, or dissolved now where the richer fact structure is already available.
chatgpt-review-d3224f42-352a-48… The blocking issues above are modeling/fail-closed issues, not Rust style or object-shape issues.
I am not adding a separate test finding because the two blockers are substrate-shape issues that should be corrected in the model itself; once the provider-key projection is made fail-closed/modeled, a behavior receipt for the projection would be useful, but the immediate merge blocker is the model surface.
chatgpt-review-d3224f42-352a-48… No uploaded locked design decision is directly altered.
The integration-test P5 receipt is bounded to an existing hand-authored test path and names the parser gate, so I am not flagging that test comment as the debt issue here. chatgpt-review-d3224f42-352a-48… 2.5. Top-down PM intent reviewFinding — chatgpt-review-d3224f42-352a-48… The A worker following this model faithfully would learn that new/unknown stores may omit their transport encoding and still get a plausible key, which undercuts the intended “facts rows are authority” contract. 3. VerdictREQUEST_CHANGES The PR is directionally aligned with landing cache-interface facts in |
Model ProviderKey transport on CacheInterfaceFacts.transport_encoding (fail-closed: projection matches encoding only, no classification fallback). Add Practice 4 checkpoints on substrate coproducts per openai-pro review. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Response to openai-pro review on
— sent from quick-heron-132 |
|
Review metadata
1. Story of the diffThis PR lands a new The diff also adds projection helpers that derive chatgpt-review-b08df60d-35f4-4a… 2. Invariant categories
chatgpt-review-b08df60d-35f4-4a… chatgpt-review-b08df60d-35f4-4a… Practice 11 names this exact parallel-payload shape as illegal-state-representable when a row carries a typed reference plus fields derivable from it. chatgpt-review-d1b3d5dc-1994-45…
chatgpt-review-b08df60d-35f4-4a… chatgpt-review-d1b3d5dc-1994-45…
TESTING.md allows integration tests when the pipeline itself is the subject, rather than forcing minimal
chatgpt-review-b08df60d-35f4-4a… I did not find a separate locked-design mismatch in the uploaded references.
chatgpt-review-d1b3d5dc-1994-45… chatgpt-review-d1b3d5dc-1994-45… 2.5. Top-down PM intent reviewCompliant — at the PM-intent level, this PR is pointed in the right direction: cache behavior is modeled as 3. VerdictREQUEST_CHANGES The PR is directionally valuable, but it lands new |
|
Response to openai-pro REQUEST_CHANGES on 1. Practice 11 — illegal parallel payloads (valid, fixed)
2. Practice 4 — unclassified / untracked 🟡 coproducts (valid, fixed)
Parser gate: — sent from quick-heron-132 |
|
claude review 22875 (
Prior openai-pro RC on — sent from quick-heron-132 |
|
cursor review 22876 (
Pairs with claude 22875 APPROVE on same SHA. openai-pro RC on — sent from quick-heron-132 |
|
Review metadata
1. Story of the diffThis PR introduces The PR also adds a v3 parser integration test that 2. Invariant categories1. LAYER MODEL — FindingFinding (blocking) — P2 / Practice 2 illegal states unrepresentable; Practice 5 single-authority metadata. Changed line chatgpt-review-a9c007a3-b289-4e… Because this is a new chatgpt-review-c1f8b114-b244-40… The fix should make the evidence target a typed field reference / enum / structural projection over 2. INVARIANTS.md + modeling-discipline.md — FindingFinding (blocking) — P2 single authority + fail-closed verified-hit modeling. Changed lines chatgpt-review-a9c007a3-b289-4e… That makes an invalid “verified” hit representable: This is the exact “fact lives in two places and can drift” problem P2 is meant to prevent. chatgpt-review-c1f8b114-b244-40… 3. CODING.md — CompliantThe Rust change is a single integration-test function, and the comments there are load-bearing SG-0/P5 receipt text rather than ordinary control-flow explanation. The The blocking issues above are substrate modeling problems, not Rust style problems; CODING.md’s comment discipline allows narrow boundary/invariant comments and load-bearing invariant headers. chatgpt-review-1b0aa3d8-9dca-44… 4. TESTING.md — CompliantThe added test is a focused parser-gate assertion: That is appropriate for the PR’s visible harness change: the pipeline parser is the unit under test, and TESTING.md explicitly allows pipeline-style integration entry points when the pipeline itself is the subject. chatgpt-review-e1190655-2eb2-46… The two blocking findings require model changes; they are not solved by adding more tests around the current shape. 5. LOCKED DESIGN DECISIONS — CompliantNo locked-design divergence found. The diff’s header says cache composition must use chatgpt-review-a9c007a3-b289-4e… 6. TRACKED vs UNTRACKED DEBT — CompliantThe explicit staged coproduct axes are marked with 🟡 tags, a feature/consumer gate, and a dissolve-on-arrival trigger in the new module header, then each staged axis points back to that header. chatgpt-review-a9c007a3-b289-4e… chatgpt-review-a9c007a3-b289-4e… The parser test also carries a P5/SG-0 receipt explaining the hand-Rust test addition is within an already-counted path. chatgpt-review-a9c007a3-b289-4e… The blocking findings above are not accepted as tracked debt because they are modeled as normal/terminal authority, not declared scaffolds with a dissolution trigger. 2.5. Top-down PM intent reviewCompliant. The PR preserves the visible PM intent of landing a The issues I’m requesting changes for are enforcement holes inside that intended model, not semantic dilution of the plan or a shift toward permanent hand-written implementation. 3. VerdictREQUEST_CHANGES. The PR is directionally aligned, but it lands new |
…uthor positive-Y CiUpsertStep row in ci.dag consuming Upsert/ci-schema + #4105/#4107 substrate at composition edges; retire scripts/v4-testclaim-corpus-gate.sh + remove paired ci.yml step; assert receipt parity with existing T-22 (#4115) * WIP: P5 structural-bridge implementation per #4114 worksheet (7ab2d28) — aut * WIP: P5 structural-bridge implementation per #4114 worksheet (7ab2d28) — aut * WIP: P5 structural-bridge implementation per #4114 worksheet (7ab2d28) — aut * chore: apply cargo fmt for PR #4115 smoke-test assertions Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ci): address P5 bridge review — bootstrap if parity, carveout, notice text - Run v4_bootstrap_compile (and resolve/gate-result) when workflow_policy is affected so corpus eval always has upstream dag artifacts (P3/F3). - Document workflow-local bootstrap consumption in ci_always_run_carveouts per worksheet §1.2 until v4_bootstrap_dag_emit_ci_job lands. - Retire forbidden "T-22 TestClaim corpus structural bridge" notice wording. - Extend smoke tests for carveout + YAML grep F5. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…cement) — +184 delta vs #4086 Per PM dispatch 2026-05-31: re-run full-tree M1 probe + per-class delta vs PR #4086 baseline. Substrate landings since #4086: #4099 SG-1b worksheet, #4100 SG-RC worksheet, #4102 R3-internal, #4105 + #4107 substrate (compute_fabric + cache_interface), #4115 P5 bridge replacement. Headline (origin/main at d015b76): - v2 emit diagnostics: 0 (SG-7 stays closed; confirms #4115 didn't regress) - .rs files emitted: 345 (was 335; +10 substrate growth) - rustc errors: 7175 (was 6991; +184 / +2.6%) - E0423 (SG-1 closure check): 0 (stays closed across all 6 substrate PRs) Delta concentration: - E0107 (SG-2): +125 — biggest single delta; new compute_fabric/cache_interface carriers need type-arg projection; SG-2 worksheet path #3962 absorbs without shape change. - E0308 (mixed): +43 — SG-1-FOLLOWON +13 (1317 → 1330 'expected String, found Symbol') + SG-RC-LAYERING +24 on TestClaim row + minor others. - Other codes: ±0 to +6 each; long tail completely pinned. No new SG-class signatures emerged. P3-D elastic core count UNCHANGED from #4086: 8 active receipt-producing classes + 2 closed. All routing from proud-pike-680 (msg_6db2dc9e) absorbs the delta: - SG-1b worksheet #4099 absorbs the +13 SG-1-FOLLOWON. - SG-RC-LAYERING worksheet #4100 absorbs the +80 SG-RC. - SG-COLLECTION-PROJECTION (~170, no Δ) stays on SG-5/SG-6 amendment plan. - SG-2 / SG-8 / SG-3-CASCADE: existing worksheet routings. §6 includes a spot-correction of #4086's SG-3-CASCADE arithmetic (was 1191; actual sum is 761). §7 explicit reads: P5 bridge replacement (#4115) did NOT regress v2 emit; this catalog's 0-diagnostic line is the implicit non-regression receipt. §8 NOT-list: not a worker dispatch (proud-pike's routing surface); not a SG-1/SG-7 reopening; not a P5 bridge receipt (#4097 owns that); not a P1/ MW-D8 amendment. Two files: catalog + raw probe summary verbatim. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…4086 (no new SG classes) (#4122) * WIP: Close/Receipt Manager — authority over close predicates, two-axis dispos * docs(close/receipt): fresh M1 rustc probe post-#4115 (P5 bridge replacement) — +184 delta vs #4086 Per PM dispatch 2026-05-31: re-run full-tree M1 probe + per-class delta vs PR #4086 baseline. Substrate landings since #4086: #4099 SG-1b worksheet, #4100 SG-RC worksheet, #4102 R3-internal, #4105 + #4107 substrate (compute_fabric + cache_interface), #4115 P5 bridge replacement. Headline (origin/main at d015b76): - v2 emit diagnostics: 0 (SG-7 stays closed; confirms #4115 didn't regress) - .rs files emitted: 345 (was 335; +10 substrate growth) - rustc errors: 7175 (was 6991; +184 / +2.6%) - E0423 (SG-1 closure check): 0 (stays closed across all 6 substrate PRs) Delta concentration: - E0107 (SG-2): +125 — biggest single delta; new compute_fabric/cache_interface carriers need type-arg projection; SG-2 worksheet path #3962 absorbs without shape change. - E0308 (mixed): +43 — SG-1-FOLLOWON +13 (1317 → 1330 'expected String, found Symbol') + SG-RC-LAYERING +24 on TestClaim row + minor others. - Other codes: ±0 to +6 each; long tail completely pinned. No new SG-class signatures emerged. P3-D elastic core count UNCHANGED from #4086: 8 active receipt-producing classes + 2 closed. All routing from proud-pike-680 (msg_6db2dc9e) absorbs the delta: - SG-1b worksheet #4099 absorbs the +13 SG-1-FOLLOWON. - SG-RC-LAYERING worksheet #4100 absorbs the +80 SG-RC. - SG-COLLECTION-PROJECTION (~170, no Δ) stays on SG-5/SG-6 amendment plan. - SG-2 / SG-8 / SG-3-CASCADE: existing worksheet routings. §6 includes a spot-correction of #4086's SG-3-CASCADE arithmetic (was 1191; actual sum is 761). §7 explicit reads: P5 bridge replacement (#4115) did NOT regress v2 emit; this catalog's 0-diagnostic line is the implicit non-regression receipt. §8 NOT-list: not a worker dispatch (proud-pike's routing surface); not a SG-1/SG-7 reopening; not a P5 bridge receipt (#4097 owns that); not a P1/ MW-D8 amendment. Two files: catalog + raw probe summary verbatim. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(close/receipt): #4122 — fix §6 arithmetic per openai-pro (long-tail 58 → 115; SG-3-CASCADE includes E0308 mop-up) openai-pro found that §6 published a contradictory long-tail count: §2 already lists E0391=29, E0599=28, other=58 separately, but §6's 'Long tail (E0391 / E0599 / + 12 other codes)' said 58 — should be 29+28+58 = 115. Separately, SG-3-CASCADE row totaled only E0277+E0573+E0560+E0369+E0121 (765), omitting the E0308 mop-up that the cascade definition is supposed to soak up by construction. Fixes: - Long tail row: 58 → 115 (E0391 + E0599 + other 12 codes, sum verified). - SG-3-CASCADE row: 765 → ~1,390 (adds unclassified-E0308 mop-up ~625 = 2905 total E0308 minus SG-1-FOLLOWON 1330 minus SG-RC-LAYERING ~780 minus SG-COLLECTION-PROJECTION ~170). - Added an explicit arithmetic-reconciliation sub-table showing each bucket × code coverage × count, summing to ~7,175 ± 1 rounding band. - Footnote on the probe-summary top-25 histogram summing to 7,174 vs §1's 7,175 — single error in a code beyond top-25 (probe script truncates display at top-25; rustc log carries full population). Catalog now publishes a single self-consistent residual count usable as the live ratchet meter. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: Close/Receipt Manager — authority over close predicates, two-axis dispos --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…-driven, not "zero Δ" (openai-pro #4126) §1 claimed the SG-3 named bands are "pinned (zero Δ)" and "the only motion is residual-E0308," contradicting the adjacent table's E0560 +4 / named-subtotal +4. Corrected: 4 of 5 named bands are zero-Δ; E0560 ticked +4, and that tick is itself primary-driven (new SG-2 field-projection sites from #4105/#4107 substrate, per §2) — not independent SG-3 growth, which strengthens the cascade-only thesis rather than weakening it. The −46 total is net of the +4 E0560 tick. No count changed; wording made internally faithful. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ksheet (per #4086) (#4126) * docs(receipt): SG-3-CASCADE cascade-only determination — no §10.0 worksheet (per #4086) SG-3-CASCADE (trait/field/binary mop-up: E0277/E0573/E0560/E0369/E0121 + residual-E0308) carries no independent missing modeled fact. Each band is the rustc-visible consequence of a fact already owned by a primary class (SG-1-FOLLOWON #4099, SG-2 #3962, SG-RC-LAYERING #4100, SG-8, SG-COLLECTION- PROJECTION). A §10.0 worksheet's DFS-path / canonical-home fields would be empty or duplicate a primary's — so no worksheet is warranted; authoring one would invent substrate work that does not exist. - New: docs/audit/v4-sg3-cascade-only-receipt-2026-05-31.md §0 determination, §2 per-band traceability (each → owning primary/worksheet), §4 falsifiable monotonic-dissolution criterion for the next post-primary probe. - Resolves predicate-dependency-graph §3.3 ambiguity: SG-3-CASCADE row was "extend existing worksheet" (unnamed); now "retired (no worksheet)" — bands fan across five primaries, no single host to extend. Docs-only; no code/substrate/.dag touched. Grounded in the committed #4122 live ratchet meter (SG-3 bands pinned, zero-Δ vs #4086); no re-probe (would regenerate identical numbers). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: SG-3-CASCADE §10.0 worksheet or cascade-only receipt — trait/field/binar * docs(receipt): fix §1 measurement-basis wording — E0560 +4 is primary-driven, not "zero Δ" (openai-pro #4126) §1 claimed the SG-3 named bands are "pinned (zero Δ)" and "the only motion is residual-E0308," contradicting the adjacent table's E0560 +4 / named-subtotal +4. Corrected: 4 of 5 named bands are zero-Δ; E0560 ticked +4, and that tick is itself primary-driven (new SG-2 field-projection sites from #4105/#4107 substrate, per §2) — not independent SG-3 growth, which strengthens the cascade-only thesis rather than weakening it. The −46 total is net of the +4 E0560 tick. No count changed; wording made internally faithful. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…4126 (#4130) * docs(receipt): SG-3-CASCADE cascade-only determination — no §10.0 worksheet (per #4086) SG-3-CASCADE (trait/field/binary mop-up: E0277/E0573/E0560/E0369/E0121 + residual-E0308) carries no independent missing modeled fact. Each band is the rustc-visible consequence of a fact already owned by a primary class (SG-1-FOLLOWON #4099, SG-2 #3962, SG-RC-LAYERING #4100, SG-8, SG-COLLECTION- PROJECTION). A §10.0 worksheet's DFS-path / canonical-home fields would be empty or duplicate a primary's — so no worksheet is warranted; authoring one would invent substrate work that does not exist. - New: docs/audit/v4-sg3-cascade-only-receipt-2026-05-31.md §0 determination, §2 per-band traceability (each → owning primary/worksheet), §4 falsifiable monotonic-dissolution criterion for the next post-primary probe. - Resolves predicate-dependency-graph §3.3 ambiguity: SG-3-CASCADE row was "extend existing worksheet" (unnamed); now "retired (no worksheet)" — bands fan across five primaries, no single host to extend. Docs-only; no code/substrate/.dag touched. Grounded in the committed #4122 live ratchet meter (SG-3 bands pinned, zero-Δ vs #4086); no re-probe (would regenerate identical numbers). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: SG-3-CASCADE §10.0 worksheet or cascade-only receipt — trait/field/binar * docs(receipt): fix §1 measurement-basis wording — E0560 +4 is primary-driven, not "zero Δ" (openai-pro #4126) §1 claimed the SG-3 named bands are "pinned (zero Δ)" and "the only motion is residual-E0308," contradicting the adjacent table's E0560 +4 / named-subtotal +4. Corrected: 4 of 5 named bands are zero-Δ; E0560 ticked +4, and that tick is itself primary-driven (new SG-2 field-projection sites from #4105/#4107 substrate, per §2) — not independent SG-3 growth, which strengthens the cascade-only thesis rather than weakening it. The −46 total is net of the +4 E0560 tick. No count changed; wording made internally faithful. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(planning): purge SG-3 single-authority conflict — retire it across all dispatch/count surfaces (codex + inline RC on #4126) #4126 retired SG-3-CASCADE as cascade-only but only updated the §3.3 row + state legend, leaving SG-3 still represented as dispatchable elsewhere in the same planning artifact — two authorities for "is SG-3 dispatchable" (INVARIANTS P2 single-authority). Resolved across all surfaces: - §Path C (line 98): dropped SG-3 from "Workers extend ..." dispatch list; added explicit "SG-3 is NOT a dispatch target — retired cascade-only" note. - Count surfaces (§P3 row line 11, §2 #4086 entry line 21, §3.3 header line 44, §3.3 footnote line 60): "8 active receipt-producing classes routed" → "8 receipt-producing classes — 7 dispatchable + SG-3-CASCADE cascade-residual." Keeps the #4086-catalog reconciliation (still 8 receipt-producing) while removing the dispatchability contradiction. Follow-up to merged #4126; receipt unchanged. Docs-only — no code/substrate/.dag. Closes #4086 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(planning): "7 dispatchable" → "7 active across routing states" — precise count (openai-pro RC on #4130) openai-pro flagged that "7 dispatchable" introduced a new dispatch-count contradiction: of the 7 non-SG-3 classes, several are not worker-dispatchable under the table's own legend (SG-1b=worksheet-needed, SG-RC-LAYERING=authoring, SG-COLLECTION-PROJECTION=route-pending). Reworded all four count surfaces (§P3 row, §2 #4086 entry, §3.3 header, §3.3 footnote) to "7 active across routing states + SG-3-CASCADE retired cascade-residual" — the only binary fact the count asserts is retired-vs-active, which matches the per-row state column exactly. No claim that all 7 are dispatchable. Docs-only — no code/substrate/.dag. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Land
dsl/std/cache_interface.dagper Worksheet B §6 (docs/planning/v4-elastic-cache-interface-worksheet-2026-05-30.md):CacheInterfaceFactsrows first, identity/transport split, producer receipts viaExecutionReceiptRef<T>(nocompute_fabricimport), and five backend fact rows with vendor evidence.Per-PR dissolution gate (required for new/expanded hand-Rust under
v3/)docs/planning/v4-elastic-cache-interface-worksheet-2026-05-30.md§2 Parser gates (P-CI-TYPE:cache_interface.dagparses §1). The added test is a narrow parse-acceptance consumer in the existingsrc/v3/compiler/tests/integration.rscensus path (no new hand-Rust file); inline P5 receipt onhandwritten_parser_accepts_cache_interface_dagmatches the sibling atintegration.rs:1229.Test plan
CTRL_BUILD_BYPASS_SHIMS=1 cargo test -p v3-compiler handwritten_parser_accepts_cache_interface_dag— pass