Skip to content

Phase 1.5 substrate: CiUpsertStep<T> + UpsertInputRef types in src/v4/workflow/ci.dag per v4-ci-schema-worksheet-2026-05-30.md §6 (Upsert<T> on main #3981). MUST NOT: full step migration / active skip. Self-merge when dashboard criteria met. - #3989

Merged
briansrls merged 16 commits into
mainfrom
session/silent-koi-540
May 30, 2026

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session silent-koi-540.
Pushing to session/silent-koi-540 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

briansrls and others added 3 commits May 30, 2026 16:13
…bridge fn)

Parser rejects `type CiUpsertStep<T> = Upsert<T> { … }` extension syntax; land
equivalent fields plus `ci_upsert_step_upsert` projection to generic Upsert<T>.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls marked this pull request as ready for review May 30, 2026 16:40
@briansrls

Copy link
Copy Markdown
Contributor Author

Modeling DFS §8 approved — substrate summary for api-review:

  • CiUpsertStep<T> + UpsertInputRef coproduct per v4-ci-schema-worksheet-2026-05-30.md §1.2–1.3
  • RepoRoot + NodeQuery in v4.std.node
  • Cache via ci_upsert_step_projection_node / ci_upsert_step_cache_digest (no cache_key on step)
  • Shadow CiSelectionReceipt types + ci_selection_receipt_shadow data only — no active skip, no job/gate migration

Parser follow-on (P1.5-PARSER): surface does not accept type CiUpsertStep<T> = Upsert<T> { … } generic record extension yet. Landed equivalent record + ci_upsert_step_upsert bridge to dsl/std/patterns.dag Upsert<T> (#3981). Structural authority preserved via generic consumer; extension syntax is a parser/substrate follow-on, not a parallel CI Upsert type.

Requesting dashboard reviews on HEAD 5c63789b4.

— sent from silent-koi-540

briansrls and others added 2 commits May 30, 2026 16:45
…ct tags

Project NodeQuery connective structurally (cache probe 2), use dedicated
substrate/lens-port selector edges, and add P5 dissolution marks on Phase 1.5
coproducts per modeling-discipline Practice 4.

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

Copy link
Copy Markdown
Contributor Author

cursor/composer review (22081) — addressed in HEAD:

  1. ci_node_query_projection_node — ci_connective_projection_node now projects every Connective arm (including Atom identity on ci_projection_connective_atom_identity_edge); NodeQueryByConnective uses variant tag + connective + ci_projection_node_query_identity_edge (no reuse of CiStepId edges).

  2. SubstrateNodeSet — selector under ci_projection_upsert_input_substrate_selector_edge (not file_set_pattern).

  3. LensOutputRef — ports on new ci_projection_upsert_input_lens_ports_edge; upstream edge reserved for UpstreamUpsert.

  4. Coproduct tags — 🟡 dissolution marks on UpsertInputRef, CiStepId, DissolutionTarget, SelectionDecision with Phase 2 / carveout / active-skip bind targets.

Local: v4_workflow_ci_* smoke tests pass.

— sent from silent-koi-540

@briansrls

Copy link
Copy Markdown
Contributor Author

Addressing cursor REQUEST_CHANGES + structural review (HEAD):

  • Imports: v4.std.patterns / v4.std.types compile-root mirrors of dsl/std/* (feat(std): Phase 1.4 Upsert<T> substrate in patterns.dag #3981); documented in module headers (v4 gunbc compile excludes dsl/).
  • NodeQuery: NodeQueryByConnective { connective } only (no parallel identity); full connective projection.
  • CiStepId / UpsertInputRef projections: variant tags + dedicated payload edges (step vs gate, kind vs payload).
  • Cache: payload_brand on CiUpsertStep<T> projected in ci_upsert_step_cache_digest.
  • Shadow receipt: renamed heartbeat helpers; well-formed checks count + uniqueness + coverage; per-job step IDs marked shadow-only.
  • Compile: Lens-CI gunbc compile passes locally (named-arg pipe: fix for ci_selection_receipt_shadow_heartbeat).

Re-requesting dashboard reviews on new HEAD.

— sent from silent-koi-540

briansrls and others added 4 commits May 30, 2026 17:22
The shadow heartbeat fn declares pipe: CiPipeline; the Rejected arm
still passed pipeline:, which breaks compile / fail-closed binding.

Co-authored-by: Cursor <cursoragent@cursor.com>
Hand-rolled CiStepId coproduct equality is interim until W-T-10
compiler-provided closed-sum equality replaces call sites.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls merged commit c0c8dd2 into main May 30, 2026
23 of 28 checks passed
briansrls added a commit that referenced this pull request May 30, 2026
* docs(close/receipt): MW-D8 Wave 1 exit-condition running ledger

Per PR #3983 §7 MW-D8 — Close/Receipt-lane live tracker for the five
Wave-1-exit conditions. Single doc, no substrate or code.

Headline state at authoring time:
- C1 R1 leaf-model verdict: PROVEN (#3972 merged)
- C2 SG-7 ci.dag recursion dissolved: GAP / SCAFFOLD_PRESENT
  (#3977 worksheet only — adjudicated as worksheet ≠ dissolution
  per PR #3949 §2.1 closure invariant)
- C3 Upsert<T> landed: PROVEN (#3981 + #3989 merged)
- C4 ci_selection_receipt_shadow generatable: GAP / NO_ARTIFACT_FOUND
  (C2 prerequisite; 72h revisit window propagates from C2)
- C5 R2a/R2b/R3-ext/R3-int authoring ready-to-run: GAP / PARTIAL_GATE_PRESENT
  (#4000 open; four-element AND for PROVEN)

Includes per-condition adjudication notes, update protocol, anti-shelfware
revisit-by deadlines, and Wave 1 close ceremony shape. Closes when all five
flip to PROVEN, at which point this lane authors a separate
v4-wave1-close-receipt artifact.

NOT a dispatch instrument; NOT Wave 2 planning; does NOT amend TASKS.md.

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

* WIP: Close/Receipt Manager — authority over close predicates, two-axis dispos

* docs(close/receipt): address cursor — restate MW-D8 conditions verbatim, fix C3 OR-arm adjudication

Cursor finding (valid):
- C3 used a narrowed paraphrase ('landed') instead of MW-D8's actual disjunctive
  bar ('landed as usable substrate primitive OR explicitly blocked with a
  Modeling DFS worksheet naming the parser/substrate gap'). The §2.3 adjudication
  rewrote authority by treating activation debt as non-reopening, which dilutes
  operator intent.

Fixes:
- §1 conditions table now quotes MW-D8 verbatim for all five rows; each OR-arm
  spelled out explicitly so no paraphrase can narrow the bar.
- §2.3 C3: stays PROVEN but explicitly identifies the OR-arm satisfied
  (explicit-block-with-worksheet via docs/planning/v4-upsert-t-substrate-worksheet-2026-05-30.md
  naming SG-2b). Notes PR #3981's own 'not full usable substrate' self-assessment
  rules out the first arm. engineering_state downgraded from n/a to
  SUBSTRATE_PRESENT (parseable skeleton, not full usable).
- §2.1, §2.2, §2.4, §2.5 also restated with MW-D8 verbatim quotes + per-arm
  receipt criteria so adjudications cannot drift from the operator-ratified text.
- §2.3 watch conditions add: if SG-2b path abandoned, OR-arm receipt loses
  validity and row reopens — preserves anti-dilution.

Closure invariant (PR #3949 §1) preserved: the worksheet IS the closure receipt
for the OR-arm of an explicitly-disjunctive condition (not a substrate-only
landing being elevated past the closure invariant).

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 30, 2026
…4013)

Operator GREEN/YELLOW/RED/GRAY view; maps today's landings (#3972,
#3981, #3989, #3958, #3962) to P1-P6; anti-shelfware deadlines.
Cross-link from predicate tracker.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 30, 2026
…ker-dispatch (#4045)

* docs(planning): W2.3 CiUpsertStep migration worksheet — ready-for-worker-dispatch

§10.0-adapted migration worksheet for Phase 1.5: every ci_pipeline step as
CiUpsertStep<T>. Prerequisites on main (#3981, #3989, W1.5 receipt @ 9079368).
Staging: dual CiJob/CiGate until parity; Hash cache_digest per main.

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

* docs(w2.3): clarify worksheet status, universe, buckets, dissolution

Operator review: single status table (impl after #4014; W1.5 claims not
gate), ci_pipeline_step_ids_shadow bijection, dual-authority triggers,
migration buckets A–F, literal forbidden grep, W2.4 handoff.

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

* docs(w2.6b): close python LeafModelClaim worksheet as CLOSED-DEFERRED

Operator + keen-heron ratification: defer python Subject/Expectation
coproduct arms to Python R2/R3; Phase 1 uses LeafModelClaimId only.

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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls deleted the session/silent-koi-540 branch June 1, 2026 18:43
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