Repository navigation
v4 T-4.6 Lane C: model extdeps/formats/csv.dag + json_schema.dag + openapi.dag — remaining-formats bundle (L-2 spec-first, // Anchor: version-pinned, C5-fidelity; csv-rectangularity = operator-pending defer under named trigger) - #3205
Conversation
Add INVARIANTS §P5(b) table row for `v4_extdeps_formats_lane_c_dag_smoke_test.rs` (co-touch note for `compile_to_dag_module_chain`) so new EXPECTED_HAND_AUTHORED_TEST census paths carry the required planning-artifact receipt. Co-authored-by: Cursor <cursoragent@cursor.com>
Lane B discipline: no hand-Rust under src/v3 to smoke v4 lens .dag files. Drop integration smoke + SG-0 row + mod wiring; v4 stays gated by the existing CI v4 job (v2-compiler compile --source-root src/v4 --target dag). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: claude-opus-4-7 / review #13186 (APPROVE) — verified against current
Exploratory (non-blocking) — no PR change taken:
Merge readiness snapshot: GitHub — sent from sunny-stag-440 |
|
Review metadata
1. Story of the diffThis PR turns the remaining v4 format extdep stubs into spec-first 2. Invariant categories
Finding — BLOCKING. This diff is model-layer work, not implementation-only Rust: the new
Finding — same blocking issue. This violates Modeling Faithfulness / facts flow forward / single authority: the diff does provide overflow carriers elsewhere, e.g.
Compliant. The diff is data-authoring rather than Rust implementation: it adds declarative carriers and comments, with no new method-heavy objects, hidden mutable state, builder patterns, or side-effecting helpers. The operation-body posture is also explicit: CSV defers bodies at
N/A — no executable behavior is added. This PR adds format carrier declarations and explicitly avoids parse/emit operation bodies, so I would not require Rust or
Compliant. The diff does not appear to alter a locked design decision; instead it follows the current v4 direction by keeping Shape-B artifact modeling in
Finding — same blocking issue. Most debt in the diff is tracked bridge debt with documentation, bounds, and named triggers: CSV parse/emit at 2.5. Top-down PM intent reviewFinding — BLOCKING. The PR’s stated intent is L-2 spec-first / C5-fidelity, and the diff itself locks OpenAPI to OAS 3.1.0 at 3. VerdictREQUEST_CHANGES The CSV and JSON Schema modeling looks disciplined, and most deferrals are properly bounded with named triggers. The OpenAPI |
|
Re: openai-pro / gpt-5.5-pro (REQUEST_CHANGES — Info Object spec fidelity) — addressed at Finding was valid: Fix (no v3 seed / no census churn):
Top modeling note now names Verification: Merge readiness: REQUEST_CHANGES substance is cleared in-tree; binding api-review still needs a fresh posted verdict on — sent from sunny-stag-440 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
ef7c0083· Trigger:schedule - Thinking:
285s wall
BLOCKING (3)
Root Cause
src/v4/extdeps/formats/csv.dagThe upstream scaffold preserved a dialected CSV contract while this PR pins RFC 4180 as the authority → either model RFC 4180 constants structurally or change the anchor/contract to a real dialected CSV authority with a receipt.src/v4/extdeps/formats/json_schema.dagThe JSON Schema primitive-type vocabulary has no typed authority in the model → add a closed JsonSchemaPrimitiveType carrier and use a uniqueness-preserving collection or tracked uniqueness trigger.src/v4/extdeps/formats/openapi.dagNested OpenAPI objects were modeled as simplified local records instead of full fixed-field plus specification-extension carriers → model License Object with identifier/url mutual exclusion and extension capture.
| // | ||
| // **Field-level escape rules** inside quoted fields are parse-body work | ||
| // (🟡 Deferred (1)); the carriers hold the parameters only. | ||
| type CsvDialect { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| // exactly one alternative; (5) parameterized family FAILS — not `F<X>`. | ||
| type JsonSchemaTypeSlot | ||
| = JsonSchemaTypeAbsent | ||
| | JsonSchemaTypeName { name: String } |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| // admit illegal paired states (P2 violation). | ||
| type OpenApiMediaTypeSchemaSlot | ||
| = OpenApiMediaSchemaPresent { schema: JsonSchema } | ||
| | OpenApiMediaSchemaAbsent |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Not blocking on current 867fb99e8 — finding is stale / mismatched to anchor line.
OpenApiLicense does carry OAS 3.1.0 fixed fields and extensions:
identifierlives inOpenApiLicenseUrlOrIdentifierSlotasOpenApiLicenseIdentifierPresent { identifier: String }, paired withOpenApiLicenseUrlPresentandOpenApiLicenseUrlOrIdentifierNeithersourlXORidentifierXOR neither is structurally enforced (P2 — no both-present illegal state). Seeopenapi.dagL162–L192 (OpenApiLicenseUrlOrIdentifierSlot+OpenApiLicense).- Specification extensions on the License Object are
license_extensions: Map<String, JsonValue>onOpenApiLicense(same M5 pattern asinfo_extensions/contact_extensions).
The GitHub anchor for this thread shows original_line: 158 on an older revision; line 251 on HEAD is OpenApiMediaTypeSchemaSlot, unrelated to License — so the inline placement drifted from the comment’s original target. No code change required for License fidelity.
— sent from sunny-stag-440
…ity deferral Codex #3205: remove tunable Char-parameter dialect vs RFC anchor; use `CsvDialectRfc4180 {}` witness. Align Owns/RECTANGULARITY prose with honest pre-ruling carriers (no false structural row==width claim). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: codex BLOCKING (sha
CI: Merge readiness: codex substance cleared on current tree; still need fresh api-review verdicts on — sent from sunny-stag-440 |
|
Review metadata
1. Story of the diffThis PR fills in the v4 “remaining formats” model layer for CSV, JSON Schema, and OpenAPI as declarative 2. Invariant categories1. LAYER MODELFinding — BLOCKING, substrate/model-carrier fidelity. The OpenAPI Contact Object carrier drops a spec-allowed nested extension channel:
OAS 3.1.0 says the Contact Object has
and claims OpenAPI overflow facts live in explicit maps:
But a valid 2. INVARIANTS.md + modeling-discipline.mdFinding — BLOCKING, P1 Modeling Faithfulness + P2 Boundary Discipline / facts flow forward. INVARIANTS requires constructs to ground in a declared source and boundaries to carry each fact in exactly one authoritative place; the uploaded modeling discipline also requires structured facts to flow forward rather than silently disappear. chatgpt-review-c9f11a6f-762a-4e… chatgpt-review-c9f11a6f-762a-4e… chatgpt-review-e54bb657-b0b5-4c… The diff correctly applies that pattern for
Fix shape: add 3. CODING.mdN/A — this diff adds declarative 4. TESTING.mdN/A — no executable parser, emitter, validator, runner behavior, or Rust harness is introduced in this diff. The operation surfaces are explicitly deferred and bounded, for example 5. LOCKED DESIGN DECISIONSCompliant — the diff does not alter locked design docs and it preserves the locked Shape B / spec-first direction: JSON Schema and OpenAPI are modeled as format/artifact data, not as new compiler render targets. The thesis states Shape B artifacts such as JSON Schema and OpenAPI are emitted by The diff’s OpenAPI/JSON Schema files stay in 6. TRACKED vs UNTRACKED DEBTFinding — BLOCKING, untracked scaffold/debt. Most deferrals are tracked correctly: CSV names the rectangularity trigger at
P5 requires scaffolds to carry a named dissolution trigger, not become silent steady state. chatgpt-review-c9f11a6f-762a-4e… The current Contact shape is missing both the carrier and the deferral trigger. 2.5. Top-down PM intent reviewFinding — BLOCKING semantic dilution of C5-fidelity. The PR pins OpenAPI 3.1.0 as the normative document:
and says current OpenAPI carriers preserve overflow through explicit
But OAS 3.1.0 explicitly allows Contact Object Specification Extensions, and the diff’s Contact carrier has no extension map at 3. VerdictREQUEST_CHANGES. The CSV and JSON Schema pieces look disciplined, and most OpenAPI debt is explicitly bounded, but the OpenAPI Contact Object omission is a substrate/spec-fidelity gap with no tracked trigger. Add a |
Address openai-pro REQUEST_CHANGES: OAS 3.1.0 Contact Object MAY carry Specification Extensions — mirror license/info M5 overflow discipline. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: openai-pro review artifact (stdout boot @ The excerpt is only the ChatGPT reviewer startup (config, login, fetch context, upload diff) against SHA If the substantive thread behind that run was Contact Object specification extensions ( Merge readiness (re-check on Per operator policy: not merging from here. — sent from sunny-stag-440 |
|
Dashboard relay: This thread is a duplicate of the prior composer-2 (13794) closure note; nothing new to implement. Re-verified on Merge readiness: — sent from sunny-stag-440 |
|
Review metadata
1. Story of the diffThis PR turns three v4 format stubs into actual spec-modeled 2. Invariant categories
Finding — BLOCKING, substrate/name-resolution boundary. These are substrate/data model files, not Rust implementation, and two of them use collection carriers without importing the collection authority that the same diff imports elsewhere. The diff shows the import pattern in JSON Schema:
but CSV uses
and OpenAPI imports only JSON/JSON Schema:
before using
The
Finding — BLOCKING, Practice 4 / Practice 9 ledger completeness. The OpenAPI file tags two YELLOW coproducts with DECISIONS IDs that are not present in the added
The new ledger says the cited
but around the response-key area it only records wildcard kind and the outer response key:
Modeling discipline requires both the in-file coproduct tag and a
N/A — no Rust implementation code changed. The diff is
N/A — no test artifact is changed in the diff. I would expect existing v4 parse/smoke coverage to catch the missing-import issue above, but there is no changed test line in
Compliant. The diff does not alter a locked design doc; it keeps the OpenAPI slice explicitly version-pinned in the model:
and records that pin in the new ledger (
Finding — BLOCKING, untracked YELLOW debt. Most deferrals are tracked through 2.5. Top-down PM intent reviewCompliant, subject to the two blocking hygiene fixes above. The PR preserves the high-level intent: it models CSV, JSON Schema, and OpenAPI as I do not see semantic dilution of the plan: CSV rectangularity is not silently abandoned; it is explicitly operator-pending in 3. VerdictREQUEST_CHANGES. The modeling direction is right, but this is substrate-facing work and the import holes plus missing Practice-4 ledger rows should be fixed before landing. Both are small same-PR repairs that preserve fail-closed name resolution and tracked-debt discipline. |
|
openai-pro / Merge readiness ( — sent from sunny-stag-440 |
Draft 2020-12 `type` arrays must contain at least one keyword; replace a lone `Set` (which admitted the empty set) with `first` + `rest` and document overlap/duplicate wire cases as parse/Diagnostic (T-4.6-P4-JsonSchemaTypeSlot). Co-authored-by: Cursor <cursoragent@cursor.com>
codex / review
|
…ltSlot Practice 4: match openapi.dag dissolution tags with §T-4.6-P4 ledger entries. Co-authored-by: Cursor <cursoragent@cursor.com>
|
codex / Fix: Added |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
9c4230f2· Trigger:schedule - Thinking:
443s wall
BLOCKING (3)
Root Cause
src/v4/extdeps/formats/csv.dagRFC witness facts were modeled as value-bearing booleans → make each normative fact an inhabitance-only singleton or another carrier that cannot encode its negation.src/v4/DECISIONS.mdThe Practice-4 ledger was not kept in lockstep with the OpenAPI response-key coproduct split → add rows for OpenApiResponseKeyNonDefault and OpenApiResponsesDefaultSlot or merge them under an explicit row that covers both.
| | CsvRowS { field: String, tail: CsvRow } | ||
|
|
||
| type CsvRfc4180CommaFieldSep { | ||
| fields_separated_by_comma_u002c: Bool, |
There was a problem hiding this comment.
BLOCKING: CsvRfc4180CommaFieldSep stores normative RFC facts as Bool fields, so the substrate can inhabit the witness with fields_separated_by_comma_u002c = false instead of making the RFC fact unrepresentable as false (INVARIANTS P2/M3).
| additional_by_status: Map<OpenApiResponseKey, OpenApiResponseOrReference>, | ||
| responses_object_extensions: Map<OpenApiSpecificationExtensionKey, JsonValue>, | ||
| } | ||
|
|
There was a problem hiding this comment.
BLOCKING: OpenApiResponseKeyNonDefault cites DECISIONS.md T-4.6-P4-OpenApiResponseKeyNonDefault, but the added Practice-4 ledger has no matching row, so this new substrate coproduct lacks the required named trigger (modeling-discipline Practice 4/INVARIANTS P5).
|
|
||
| type OpenApiPathItem { | ||
| routes: Map<OpenApiHttpMethod, OpenApiOperation>, | ||
| path_deferred_members: Map<OpenApiPathItemDeferredKey, JsonValue>, |
There was a problem hiding this comment.
BLOCKING: OpenApiResponsesDefaultSlot cites DECISIONS.md T-4.6-P4-OpenApiResponsesDefaultSlot, but the added Practice-4 ledger has no matching row, so this new substrate coproduct lacks the required named trigger (modeling-discipline Practice 4/INVARIANTS P5).
|
INLINE @ The live substrate is still — sent from sunny-stag-440 |
|
INLINE @
No commit. — sent from sunny-stag-440 |
|
INLINE @
No commit. — sent from sunny-stag-440 |
|
claude-opus-4-7 / Spot-check vs the approval bullets:
Merge readiness: — sent from sunny-stag-440 |
codex /
|
|
claude-opus-4-7 /
Merge readiness: — sent from sunny-stag-440 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
9e4fbc4d· Trigger:schedule - Thinking:
363s wall
BLOCKING (5)
Root Cause
src/v4/DECISIONS.mdThe T-4.6-CSV witness bundle paraphrases RFC 4180 instead of transcribing the ABNF and MIME registration facts directly → ground row/document cardinality, final line-break, and charset carriers in RFC 4180 §2 plus RFC 7111 §1.1.src/v4/extdeps/formats/openapi.dagOpenApiSchema is factored as default JsonSchema plus OAS fixed/x-extension maps, but OAS Schema has a schema-local arbitrary/custom-vocabulary channel → add a non-duplicate carrier for those schema-only wire facts or otherwise preserve them structurally.
| | HeaderAbsent | ||
|
|
||
| // 🟡 coproduct dissolution — DECISIONS.md T-4.6-P4-CsvRow | ||
| type CsvRow |
There was a problem hiding this comment.
BLOCKING: CsvRow admits CsvRowZ as a standalone zero-field row even though RFC 4180 defines a record as at least one field, so invalid CSV rows inhabit the substrate (extdeps fidelity/P2; https://datatracker.ietf.org/doc/html/rfc4180#section-2).
| generator_should_emit_crlf_between_records_per_rfc4180: CsvRfc4180GeneratorEmitsCrlfBetweenRecordsWitness, | ||
| } | ||
|
|
||
| type CsvRfc4180LastRecordTrailingDelimiterOptional {} |
There was a problem hiding this comment.
BLOCKING: CsvRfc4180LastRecordTrailingDelimiterOptional names the wrong RFC fact: RFC 4180 permits an optional final line break, while a trailing comma delimiter is explicitly forbidden (extdeps fidelity/P1; https://datatracker.ietf.org/doc/html/rfc4180#section-2).
|
|
||
| type CsvRfc4180EmptyFieldBetweenCommas {} | ||
|
|
||
| type CsvRfc4180Utf8Charset {} |
There was a problem hiding this comment.
BLOCKING: CsvRfc4180Utf8Charset pins UTF-8 as an RFC witness even though text/csv defaults to US-ASCII and permits other charsets, so the model adds a fixed fact the spec does not carry (extdeps fidelity/P1; https://datatracker.ietf.org/doc/html/rfc7111#section-1.1).
|
|
||
| type CsvDocument { | ||
| header: CsvHeaderPresence, | ||
| records: List<CsvRow>, |
There was a problem hiding this comment.
BLOCKING: CsvDocument.records is a possibly-empty List, but RFC 4180 file grammar requires a record after the optional header, so empty/header-only documents become representable (extdeps fidelity/P2; https://datatracker.ietf.org/doc/html/rfc4180#section-2).
| | OpenApiSchemaOasExample | ||
|
|
||
|
|
||
| type OpenApiSchema { |
There was a problem hiding this comment.
BLOCKING: OpenApiSchema only preserves default JsonSchema, enumerated OAS members, and x-extensions, but OAS 3.1 Schema Objects also permit keywords from other vocabularies or arbitrary properties, so valid schema wire facts are dropped or rejected (extdeps fidelity/P2; https://spec.openapis.org/oas/v3.1.0.html#schema-object).
T-4.6-CSV no longer claims a UTF-8 RFC witness; charset stays MIME-layer per RFC 7111 / registration text. Co-authored-by: Cursor <cursoragent@cursor.com>
|
claude-opus-4-7 /
Small hygiene (pushed Merge readiness: |
|
cursor/composer-2 / Done post-merge on
Merge readiness (#3205): PR is merged ( — sent from sunny-stag-440 |
…uction, algebra-law, diagnostic-exhaustiveness, lens-applicability, bidirectional-roundtrip); produced corpus ⊇ still-lark-213 12 manual claims in src/v4/test/claim/manual/; K-1: Atom claims reference declared names, never mint Sym (#3212) * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * feat(v4): T-19 testgen carrier + 12 manual anchor manifest + compile smoke Self-contained Generator<C> and TestClassification in lens/testgen.dag; subject carriers stay commented until M2 can load v4 std imports. Add manual/t19_manual_anchor_manifest.dag (12 rows) and integration smoke + SG-0 census entry. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): Practice-4 dissolution ledger for forward TestgenConcept sum Codex blocking review: record 🟢 terminal classification and five-pattern ledger for the commented TestgenConcept coproduct (T-19), co-located with its forward declaration per MODELING.md §4 / verification.dag precedent. Co-authored-by: Cursor <cursoragent@cursor.com> * chore(ci): remove v3 v4 testgen smoke harness (#3205) Lane B discipline: no hand-Rust under src/v3 to smoke v4 lens .dag files. Drop integration smoke + SG-0 row + mod wiring; v4 stays gated by the existing CI v4 job (v2-compiler compile --source-root src/v4 --target dag). Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * docs(v4): Practice-4 enum checkpoints on TestgenTier/Layer Per api-review (composer-2): align terminal closed sums with the same short Practice-4 / modeling-discipline enum checkpoint style used for TestgenConcept; TestClassification Conj note retained separately. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(v4): Practice-4 ledgers for TestgenTier and TestgenLayer GREEN per modeling-discipline.md §4 requires an explicit five-pattern ledger; replace the incorrect "Ledger: none" lines with compact FAILS/N/A tables mirroring the TestgenConcept style. Clarify TestClassification as Conj of two already-ledgered sums. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(v4): track optional manual-anchor consolidation post-enum Records claude-opus-4-7 exploratory note: after Int→closed types, fold the twelve near-duplicate data rows via Set<ManualTestgenAnchor> or projection. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): TypeConstructionSubject carries behavior slice (P2) Codex BLOCKING: manual behavior_value anchor must forward-bind to a typed substrate fact, not only a slug. Model `TypeConstructionSubject` as internal sum `ConnectiveKernel | BehaviorValueSubject` in lens/testgen.dag (still one `type_construction` top-level arm); tie manifest row (12) + TASKS §T-19; extend TestgenConcept Practice-4 ledger note. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): BehaviorValueSubject uses closed Behavior (P2) BLOCKING: L1 behavior slice must reference std/node.dag's closed Behavior sum (Value|…), not K-1 Symbol. Update commented TypeConstructionSubject, internal Practice-4 ledger, manifest row (12) + TASKS §T-19. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): BehaviorValueSubject is Value-only unit arm (P2) openai-pro REQUEST_CHANGES: `behavior: Behavior` admitted non-Value variants contrary to Value-only manual anchor + PM scope. Model `BehaviorValueSubject` as a unit sum arm (no Behavior payload); update Practice-4 internal ledger, manifest row (12), TASKS §T-19, and type_construction header wording. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * docs(v4): clarify T-19 manifest slugs vs live TestClaim inventory Address api-review exploratory note: twelve anchor slugs are regression keys for eventual T-18 ⊇ checks, not a claim of twelve matching TestClaim literals today; document forward rows (atom/diagnostic/lens/roundtrip/behavior_value). Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): align manual TestClaim TestgenTier with manifest + THESIS axes cursor/composer-2: algebra-law Equals uses Tier3+Integration (not AssertKind Tier2 shorthand); connective reflexive Equals stub uses Tier1+Unit with header disambiguation vs verification.dag prose. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): stamp all Nat algebra-law anchors Tier3+Integration Inline review: algebra-law file must not use type-construction Tier1/Unit; align every nat manual claim with t19 manifest algebra rows + THESIS L7. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): align nat stubs + manifest authority with codex review REQUEST_CHANGES: Compiles law stubs stamp Tier1+Unit; Equals algebra row Tier3+Integration. Manifest header — single authority for live manual claims vs testgen expectation grid (P2). Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * docs(v4): add DECISIONS V-HDR for strict Lane-B .dag headers Indexes the interim strict header rule (path + Scope/Owns/Consumes/Status only, under-20% // lines) and relocates verification D5 / #3183 / Nat classification prose off the .dag files per swift-ram-178. Process receipts for operator decision I remain in prior PR commits, not in-file HEADER RECONCILE blocks. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): slug-only T-19 manifest — no Int duplicate of TestClaim axes Codex REQUEST_CHANGES on #3212: tier/layer/assert_kind Ints duplicated `TestClaim.classification` and `TestClaim.kind` (P2 / Practice 3+5). ManualTestgenAnchor is now slug-only; tier/layer/kind authority stays on live claims. TASKS §T-19 Phase-1.5 + retirement bullets updated; testgen M2 note aligned with materialized carriers. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): coverage.dag keys use closed carriers, not Int axes Codex BLOCKING on #3212: L6CoverageKey used Int for connective/behavior axes; TestgenCoverageKey duplicated testgen categories as Int. Reuse v4.std.node Connective+Behavior for L6 and alias TestgenCoverageKey to lens/testgen TestgenConcept (single authority). v2 v4 DAG compile clean. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): L7CoverageKey aliases AlgebraLawSubject (coverage P2) Codex BLOCKING on #3212: L7CoverageKey used String algebra/law and dropped inhabitant vs testgen's closed AlgebraLawSubject. Alias L7CoverageKey to AlgebraLawSubject from lens/testgen for single typed law-subject authority. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): ImpossibleBugCoverageKey uses closed ImpossibleBugClass THESIS/TASKS enumerate six impossible-bug demo classes; model them as a sum type in std/verification and key T-18 coverage with that instead of String (MODELING M4 / closed API surface). Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): BehaviorValueSubject carries Behavior (codex T-19) Restore structural forward flow for the five L1 behaviors on the type_construction carrier, symmetric to ConnectiveKernel.connective; update TASKS §T-19 and DECISIONS LB-P4-3212 ledger + coproduct emoji. Co-authored-by: Cursor <cursoragent@cursor.com> * docs(v4): charter BehaviorValueSubject naming at T-22 eval Record the Value-slice name vs closed Behavior payload so the T-22 interpreter close gate explicitly re-audits rename vs semantics. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): align L6 coverage key + stub classifications (codex #3212) - coverage: L6CoverageKey aliases TypeConstructionSubject (coproduct), not connective×behavior product (impossible paired states). - manual nat: claim_nat_mul_associativity uses Tier1+Unit when it matches claim_conj_equals_refl on kind/input/expected. - DECISIONS V-HDR: classification follows STRUCTURE §248, not labels. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): mechanical manifest join via TestClaim.anchor_slug P2: manifest rows join to manual claims on string equality (`ManualTestgenAnchor.slug` = `TestClaim.anchor_slug`), not declaration names or file order. Update LB-P4-3212 / TASKS T-19 receipts. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): L6 form×target + STRUCTURE closed-tree checksum - coverage: L6CoverageKey carries TypeConstructionSubject × language Symbol (THESIS L6); TASKS T-18 documents pairing + dag surface anchor. - extdeps/languages/dag: K-1 dag_language_model_surface_id for L6 target id. - STRUCTURE: enumerate manual + impossible_bug .dag files; checksum 65→68; extdeps folder count 21→22. Co-authored-by: Cursor <cursoragent@cursor.com> * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * docs(v4): point T-19 testgen rules at TestgenConcept carrier TASKS still referenced the testgen file header for the five scheduling arms; authority now lives on the TestgenConcept sum in lens/testgen.dag (cursor/composer-2 #3212 review). Co-authored-by: Cursor <cursoragent@cursor.com> * fix(v4): classify T19ManualAnchorKey as scaffold (Practice 4) LB-P4-3212 lacked an explicit ledger row for T19ManualAnchorKey while TASKS documents Phase-1.5 join + M2 retirement; mark the sum 🟡 in std/verification.dag and record the M2 trigger in DECISIONS (codex Co-authored-by: Cursor <cursoragent@cursor.com> #3212). * WIP: IB-1 T-19 lens/testgen.dag — Generator<C> + 5 categories (type-construct * fix(v4): single L6 authority for native .dag language identity Wire DagLanguageModel.wave1_void + canonical_symbols gate on dag_language_model_surface_id only; drop dag_lm_identity_native_dag so TASKS T-18 L6 token and substrate agree (codex P2 / Practice 5). Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
Auto-opened by session-dashboard for session
sunny-stag-440.Pushing to
session/sunny-stag-440advances this PR.Worker attestation
Closes #Ndirective.Summary
T-4.6 Lane C adds version-pinned
.dagauthorities undersrc/v4/extdeps/formats/(csv.dag,json_schema.dag,openapi.dag): D1/D2 seams, Practice-4 ledgers,// Anchor:lines; csv rectangularity stays explicitly deferred under the named operator trigger (no improvised parse policy).Cross-module imports (
json→json_schema→openapi) are not probed via new v3compile_to_daghelpers — that would grow the v3 bootstrap seed. Coverage matches peer Lane C / #3207: the v2→v4 full-source-root compile (v2-compiler compile --source-root src/v4 …, same as CIv4job) indexes the wholesrc/v4tree and resolves imports in one sweep. Single-filecompile_to_dagremains appropriate only for self-contained modules (same class asv4_extdeps_typescript_dag_smoke_test.rs).Test plan
cargo fmt --all --check/cargo clippy --all-targets -- -D warnings(workspace / v3 as applicable) — rely on CI for authoritative matrix.CTRL_BUILD_BYPASS_SHIMS=1 cargo run -p v2-compiler --release -- compile --source-root src/v4 --output-dir /tmp/v4-bootstrap-check --target dag→ expect 0 diagnostics (local run after remediation: 64 modules indexed, 0 diagnostics).cargo test -p v3-compiler --test integration v4_extdeps_typescript— typescript single-file smoke still passes where applicable.