Skip to content

Engine Phase 1 Typestructure - #788

Merged
briansrls merged 1 commit into
mainfrom
session/crisp-badger-621
Apr 25, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/crisp-badger-621

Conversation

@briansrls

@briansrls briansrls commented Apr 25, 2026 •

Copy link
Copy Markdown
Contributor

Scope

T-Ground-Engine Phase 1, type-structure validation only. This adds src/v3/grounding_engine/ as a sibling crate and keeps SG-0 untouched by consuming the v3 compiler public loader accessor instead of adding compiler-pipeline code.

The engine walks Dag::rust_pilot_primitives() as List<RustPrimitive> and validates the loaded RustPrimitive declaration structure: the IntegerPrimitive | NonIntegerPrimitive partition, variant fields, IntegerAlgebra, NonIntegerAlgebra, TargetCarrier, and IntegerOverflow. Mismatches return StructureMismatch { location, expected, actual } instead of falling back silently.

Still Mirrored In Phase 1

The pilot-list data stays mirrored in v3-grounding-pilot::RUST_PILOT_PRIMITIVES. That is intentional Phase 1 scope: rust_pilot_primitives.value_body still lowers as ValueBody::Unparsed, so Phase 1 validates type structure alongside the existing pilot routing surface rather than enumerating the list from .dag.

Phase 2 Pointer

When R2 T-Substrate closes the top-level ValueBody::List / aggregate gap, Phase 2 can reuse this accessor and walker shape to enumerate rust_pilot_primitives directly and retire the pilot mirror plus the temporary pilot enum-name bridge helpers.

Verification

  • cargo fmt --all --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test --workspace --exclude v2-compiler-tests
  • cargo test -p v3-grounding-engine -- --nocapture reports engine tests finished in 0.01s, satisfying the sub-second test-runtime requirement.

@briansrls

Copy link
Copy Markdown
Contributor Author

R2 Grounding Manager review (PR #788, draft) — substantively meets Phase 1 brief. Three asks before ready-for-review.

Reviewing against docs/briefs/t-ground-engine-phase-1-typestructure.md.

Acceptance audit

Brief deliverable Status
Engine sibling crate at chosen location, workspace-member entry, deletable as a unit ✅ src/v3/grounding_engine/, parallel to src/v3/grounding_pilot/ per pilot precedent. SG-0 untouched.
Type-structure walker consuming Dag::rust_pilot_primitives() accessor ✅ validate_loaded_rust_primitive_type_structure() walks Instantiation → element decl → Disj → variant decls → Conj → fields exactly per #776's integration-test pattern
Variant-aware structural validation per Phase B enumeration ✅ All seven enumerations validated literally per .dag: RustPrimitive sum, IntegerPrimitive fields with overflow, NonIntegerPrimitive fields without overflow, IntegerAlgebra, NonIntegerAlgebra, TargetCarrier (six *Carrier variants), IntegerOverflow
Mirror-consistency assertion linking walker output to RUST_PILOT_PRIMITIVES ✅ validate_mirror_consistency() walks each pilot value, asserts its enum tags are known to the loaded shape's enum variants. Bidirectional discipline: type-shape parity (loaded → expected) + tag-coverage (mirror tags → loaded variants).
Type-structure-parity test ✅ type_structure_parity_matches_rust_primitive_authority
Mirror-consistency test ✅ mirror_consistency_links_loader_shape_to_pilot_constants
State-space-discipline test ✅ state_space_keeps_overflow_off_non_integer_variant exercises require_field_absent. (Bonus: state_space_reports_mismatch_when_overflow_is_required_on_non_integer_variant — see note 2 below; misnamed but additive.)
Diagnostic-quality test ✅ diagnostic_quality_names_location_expected_and_actual_shape exercises require_field_absent failure path; asserts location/expected/actual are well-formed.
Inherited contracts: no mirror of validated types, state-space discipline, fail-closed, SG-0 untouched, variant-aware dispatch ✅ All five preserved. RustPrimitive types/algebras walked from Declaration, not Rust-mirrored. RUST_PILOT_PRIMITIVES (the data) stays per Phase 1 scope. StructureMismatch returned on every divergence path; no silent fallbacks.
Locked decision: RustPrimitive partition not flattened ✅ Walker keeps `IntegerPrimitive

Three asks before flip-to-ready

  1. PR body — currently the auto-stub. Brief requires: scope (Phase 1 type-structure-only), what stays mirrored (pilot list), what gets validated (RustPrimitive type structure), Phase 2 forward-pointer. Lift these from the brief.
  2. cargo test --workspace --exclude v2-compiler-tests, cargo clippy --all-targets -- -D warnings, cargo fmt --all --check — state results in PR body. Should be clean.
  3. Tests sub-second — confirm runtime per feedback_test_timeout_2s.md. The walker creates a fresh Dag::new() per call; if four tests each pay the bootstrap cost they could approach the second mark. If you see >300ms per test, either share a Dag via OnceLock or split a single test that does the bootstrap once and reuses the shape.

Non-blocking observations

  1. pilot_carrier_name (and siblings) bridges Pilot Rust enum names to .dag names. The pilot uses PilotTargetCarrier::Bit, Byte, Word16, ... (Rust idiom strips the type-prefix); the loaded shape uses BitCarrier, ByteCarrier, .... The four bridge functions (pilot_carrier_name, pilot_integer_algebra_name, pilot_non_integer_algebra_name, pilot_overflow_name) handle the translation cleanly. Phase 2 walks the .dag enumeration directly and these bridges retire with the mirror — bounded debt as expected.
  2. state_space_reports_mismatch_when_overflow_is_required_on_non_integer_variant is misnamed: the test constructs a synthetic StructureMismatch and asserts its fields are well-formed; it doesn't exercise the validation path that produces the mismatch. Functionally it overlaps with the diagnostic-quality test. The actual state-space coverage comes from state_space_keeps_overflow_off_non_integer_variant. Worker discretion: rename to state_space_diagnostic_shape_for_mistakenly_required_overflow or similar, or keep as-is — either way, four required tests are covered.
  3. validate_pilot_values_with_shape function name is mildly confusing: it validates pilot enum tag names are known to the loaded shape, not pilot values. Internal helper, no API impact. Optional rename: assert_pilot_tag_names_known_to_loaded_shape.

Forward note for Phase 2

When R2 T-Substrate's 4th sub-lane closes the ValueBody::List extension, Phase 2 graduates to walking rust_pilot_primitives.value_body directly and the four pilot_*_name bridge functions retire alongside RUST_PILOT_PRIMITIVES. The current code is shaped to make that transition mechanical: the structural-validation surface stays; only the value-side mirror retires.

Disposition

Substantively ready. Once the three asks above are addressed (PR body lifted from brief; clean checks confirmed; sub-second test runtime confirmed or addressed), flip to ready and I'll re-LGTM for merge.

@briansrls
briansrls marked this pull request as ready for review April 25, 2026 04:58
@briansrls
briansrls merged commit 67421e6 into main Apr 25, 2026
7 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ef15da5255

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +179 to +180
TypeConnective::Instantiation { arguments, .. } if arguments.len() == 1 => {
Ok(arguments[0].value)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Verify rust_pilot_primitives uses List template

rust_primitive_element_id accepts any unary Instantiation and immediately returns the first argument as the element type. If rust_pilot_primitives were accidentally changed to another one-parameter template (for example Option<RustPrimitive>), the validator would still pass and incorrectly claim the declaration matches the expected List<RustPrimitive> contract. Please also validate the template identity (name or known declaration id) before accepting the shape.

Useful? React with 👍 / 👎.

briansrls added a commit that referenced this pull request Apr 26, 2026
…0d71

Finding (P2 single-authority): T-Ground-Rust had two contradictory states —
deliverables table at :23 said DISPATCHED, but Sub-briefs Pending list at
:62-63 listed "T-Ground-Rust full implementation" as pending pre-spawn work.
Same lane, two authoritative states.

Audit: T-Ground-Rust full lane (Rust target-spec primitive declarations
end-to-end) has not been authored. Pilot (PR #765) and Engine Phase 1
typestructure (PR #788) are separate dispatched lanes (their own rows in the
table); the "DISPATCHED (Engine implementation parked pending loader-close)"
parenthetical was a status leak from the Engine row's parking note.

Fix: row status now reads "NOT YET AUTHORED — listed under Sub-briefs
Pending below; gated on pre-spawn Director scope refinement per inbox #828.
(Pilot PR #765 + Engine Phase 1 typestructure PR #788 are separate dispatched
lanes — see those rows; the prior 'DISPATCHED' status here was a parenthetical
leak from the Engine row's loader-close parking note.)"

Now table status matches Sub-briefs Pending list. Single authority restored.

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

* docs(briefs): pre-stage 6 R2 manager briefs (PM portion of R2 spin-up readiness)

Per user direction: every lane/brief/design must be authored before
R2 managers spawn. PR #827 (merged) named the 6-manager structure;
Transition mechanics step 4 said "pre-stage skeletons during R1 final
week" — accelerated to "pre-stage now."

This PR lands all 6 R2 manager briefs as one bundle, structured
consistently:
- Status (PROPOSAL pre-spawn, spawns on R1 close)
- Orient before reading (R2 structure authority, scope source,
  cross-program coordination, demo coordination)
- Program scope (the lane/sub-program scope this manager owns)
- Owned deliverables (table of lanes/sub-lanes with status)
- Cross-program dependencies (produces/consumes signals)
- Autonomous dispatch authority (what manager does without Director)
- Reporting cadence (where signals flow)
- Sub-briefs (authored / pending)
- Working state (placeholder for fill on spawn)
- Cross-refs

Six briefs:

1. r2-grounding-manager.md — T-Ground sub-program (the one true R2
   critical path: Pilot → Rust → Engine → Tests → Dissolve, with
   Python/Go fill). Migrates from grounding-manager.md (which archives
   on R2 promotion). Names Engine sharpened-(b) consumer dependency
   on Substrate Manager's ValueBody-list/sum carrier.

2. r2-substrate-manager.md — T-Substrate (4 sub-lanes) + B4
   Identity-Carrier Substrate Pass program (12 sub-briefs). Largest
   single program in R2; produces 4 carriers consumed by Modeling
   (3 sub-lanes) + Grounding (Engine sharpened-(b)). Names watch
   condition for B4 split if Substrate becomes the new bottleneck.

3. r2-modeling-manager.md — T-Modeling (3 Goal 2 items + tokenizer
   charclass phase-2 added per shared T-Substrate dependency). All
   gated on Substrate Manager carrier readiness.

4. r2-impossible-bugs-manager.md — T-ImpossibleBugs (3 R2+ classes:
   nested-optional flatten, unhandled diagnostic paths, unenumerated
   effects). Design docs already authored (#798, #801, #808+#805
   prereq); needs Director conversion to worker briefs.

5. r2-pure-bootstrap-manager.md — POST-R1 only per gate-vs-program
   resolution in PR #827. Migrates from pure-bootstrap-zero-manager.md
   with scope narrowed (does NOT duplicate R1 T-PB-A/T-PB-B census-
   reduction work). Owns Tier 3 mirror dissolutions + Tier 2
   patch_lower_helpers retirement + post-R1 emergent dissolutions.

6. r2-release-manager.md — Goal 5 (§6a metadata-pick) + Goal 6 (R2
   demo coordination) + B-wave Tier 0/2 dispatch (#810) + discipline
   framework central reporting + thesis-claim coverage mapping
   (Open call 1) + R2 closure ledger + v2 retirement. Single authority
   for closure ledger and demo coordination.

Each brief explicitly defers to ROADMAP/THESIS/r2-structure.md for
upstream authority; does not duplicate gate semantics or scope
decisions. Cross-program coordination via R1 `Cross-manager
notifications queued` brief pattern.

Coordination split with Director on inbox #828: Director takes the
worker-level briefs (B4.2/B4.3/B4.4 + T-Substrate sub-lane scoping +
T-Modeling worker briefs + T-ImpossibleBugs design→worker conversion);
PM takes §6a + B5/B6/B7 + thesis-claim mapping in follow-up PRs.

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

* fix(briefs): r2-impossible-bugs-manager — canonical filenames + corrected scope (codex P2 on #835)

Codex P2 inline at r2-impossible-bugs-manager.md:63: design-brief
filenames were missing the canonical -design suffix; the actual
files are t-impossiblebugs-*-design.md.

Audit revealed a bigger correction needed than just filename suffix:

1. Worker briefs ALREADY EXIST for all three classes (I had said
   'needs Director conversion to worker briefs' — wrong). Correct
   state:
   - Nested-optional flatten: design + worker (DESIGN/SCOPING shape) authored
   - Unhandled diagnostic paths: design + worker (DESIGN/SCOPING shape) authored
   - Unenumerated effects: design authored, prior worker briefs SUPERSEDED 2026-04-25 by design doc

2. The two non-effects workers are DESIGN/SCOPING shape — they
   produce substrate proposals, not direct implementation. Manager
   role is dispatch + Substrate-Manager-handoff coordination, not
   convert-design-to-worker.

3. Effects has SUPERSEDED workers (closed-system framing dissolved
   the prior lens-vs-declaration framing). Manager owns design-doc
   routing + post-supersede implementation worker authoring against
   the canonical design.

4. Fn→Arrow refactor (PR #805) reframed as independent vestigial-
   syntax cleanup, not direct effects-framing prereq.

Three coordinated fixes in r2-impossible-bugs-manager.md:
- Program scope table: canonical filenames + per-class authored-status
  + SUPERSEDED notes
- Owned deliverables: 'Manager dispatches existing worker' (not
  'convert design to worker')
- Sub-briefs section: explicit Authored/SUPERSEDED/Pending tri-state
  with full canonical paths

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

* WIP: gunbc PM

* fix(briefs): add pre-spawn vs post-spawn authority subsection to all 6 R2 manager briefs (codex P2 on #835)

Codex flagged ownership ambiguity in r2-impossible-bugs-manager.md:
the brief said design/scoping docs would be 'converted to worker
briefs by Director' but elsewhere said the manager authors all worker
briefs autonomously. Without an explicit phase boundary (pre-spawn
vs post-spawn), ownership is ambiguous and dispatch can stall.

Resolution applied uniformly to all 6 briefs: new 'Pre-spawn vs
post-spawn authority' subsection inserted before 'Autonomous dispatch
authority':

- Pre-spawn (now, before R1 close): Director + PM coordinate on brief
  authoring per inbox #828 split. PM authors the manager skeleton;
  Director authors worker-level briefs not yet existing. Both stop
  authoring once R2 spawns.

- Post-spawn (R2 promotion onward): Manager owns all worker-brief
  authoring autonomously per Autonomous dispatch authority. Director
  narrows to cross-program conflict resolution + scope-change
  escalation.

Release Manager variant has the same boundary plus an explicit note
that PM also authors the §6a / B5 / B6 / B7 / thesis-claim-mapping
briefs as Release-Manager-portion PM deliverables (per inbox #828).

The phase boundary is now structurally explicit: no dispatch stall
from both Director and Manager assuming the other owns authoring.

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

* fix(briefs): tighten Pending-line authority qualifier (codex BLOCKING on #835 sha 3803266 :90)

Codex flagged the 'Pending — Director-authored per coordination on
inbox #828:' lines as creating dual authority — the line read in
isolation contradicted the 'Manager authors autonomously' framing
elsewhere. The d42f17e phase-boundary subsection resolved this
contextually, but a reader scanning just the Pending line could still
read it as a permanent assignment.

Surgical tightening: add explicit pre-spawn qualifier inline so the
Pending line is self-resolving without requiring the reader to
cross-reference the phase-boundary subsection.

Old: 'Pending — Director-authored per coordination on inbox #828:'
New: 'Pending — pre-spawn Director-authored per inbox #828
      coordination split; post-spawn manager-authored autonomously
      per "Pre-spawn vs post-spawn authority" subsection above:'

Applied to 4 briefs (Modeling, Substrate, Pure Bootstrap, Release).
Release variant uses 'PM-authored' instead of 'Director-authored'
since R2 Release Manager's pre-spawn portion is PM-owned per inbox
#828 split (the §6a / B5 / B6 / B7 / thesis-claim-mapping briefs).

The Pending line now reads cleanly in isolation: pre-spawn / post-
spawn boundary is explicit at the line itself, not deferred to a
cross-reference.

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

* fix(briefs): resolve openai-pro REQUEST_CHANGES on #835 sha bfaab66

Two surgical fixes for the two BLOCKING findings (P2 + P5):

1. r2-release-manager.md:67 — B7 dual-authority contradiction.
   Was: "Authors all T-Release worker briefs without Director (§6a pick, B5/B6/B7, ...)"
   But B7 is "Cross-manager signal, not a worker brief" per :33 + :86.
   Now: "Authors all T-Release owned deliverables ...: worker briefs
   (§6a pick, B5, B6, thesis-claim coverage mapping) and cross-manager
   signals (B7 priority-hint relay)." — distinguishes briefs from signals,
   no item carries two contracts.

2. r2-grounding-manager.md:62 — Pending line unbounded across pre/post
   spawn. The other 4 briefs got the "pre-spawn Director-authored;
   post-spawn manager-authored" temporal qualifier in bfaab66;
   Grounding was missed. Same pattern applied here.

Both fixes mechanical; no scope or authority change beyond removing
the ambiguity openai-pro flagged.

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

* fix(briefs): resolve codex BLOCKING on #835 sha bfaab66 — stale §6a + B4.1 status

Two codex BLOCKING findings, both about briefs copying status from earlier
state without verifying against live receipts:

1. r2-release-manager.md §6a — DECISION already locked.
   docs/design-substrate-carrier-port-program.md §6a:171 says
   "pick **Option 3, unified MethodContract carrier**." :173 names the
   live receipt (src/v3/std/algebra.dag declares MethodContract;
   src/v3/lenses/cost.dag imports it via method_contract_cost_shape).
   :175 names the dissolution trigger (size_effect / cost_shape /
   callback_element_position field-by-field retirement).

   Brief was framing this as "DECISION BRIEF NOT YET AUTHORED — write
   up the 4 options ... recommend one based on E-I evidence." Stale.

   Fix: rename "pick decision brief" → "follow-through brief"; status
   from "NOT YET AUTHORED" to "DECISION LOCKED — Option 3 ... live
   receipt landed"; describe remaining work as bulk migration +
   dissolution-trigger tracking. Updated the deliverable table row,
   the Core deliverables list, the Autonomous dispatch authority line,
   the Sub-briefs Pending list, and the Cross-refs §6a source.

2. r2-substrate-manager.md B4.1 — BLOCKING already resolved.
   PR #819 ("docs(briefs): add B4.1a DeclarationRef runner migration
   brief") merged 2026-04-26 01:13:32. The §0.2 scope gap was resolved
   in 6f564f5 BEFORE merge per Director receipt on inbox #828. B4.1a
   follow-on brief landed in the same PR. Real open residual is the
   first-consumer migration at PR #826 (regen drift on r1_gates.dag —
   worker CI-fix, not brief authoring).

   Brief was still saying "DRAFTED (with §0.2 BLOCKING outstanding —
   codex finding on PR #819)" and "with outstanding BLOCKING ...
   resolution pending." Stale on both the BLOCKING and the residual
   shape.

   Fix: status to "BRIEF LANDED (PR #819, merged 2026-04-26 — §0.2
   scope gap resolved in 6f564f5 before merge); B4.1a runner-migration
   follow-on brief landed same PR. Real residual: first-consumer
   migration #826 OPEN with regen drift (worker CI-fix)." Updated the
   deliverable table row, the Sub-briefs Authored list, and the
   Cross-refs adjacent line.

Both findings: feedback_verify_thesis_claims violation on the PM
authoring side. Two surgical text updates per finding; no scope or
authority change.

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

* fix(briefs): anchor §6a follow-through against existing pick worker brief

Codex inline BLOCKING on r2-release-manager.md:30 surfaced that
docs/briefs/t-permethodmetadata-pick-worker.md (landed PR #794) already
exists as the pick-worker brief. My prior fix (74b679b) reframed
"pick decision brief" → "follow-through brief" but didn't reference the
existing worker, leaving readers to wonder if the follow-through was
re-picking.

Two precision tightenings:

- "Pick is closed." Names the worker brief explicitly + cites its
  scope-closure clause ("Do not migrate all consumer lenses ... bulk
  migration is post-pick work").
- "No duplicate decision authority — pick is closed; follow-through is
  post-pick scope." Closes the P2 single-authority concern codex named.

Surface change only; no scope expansion. The follow-through scope
(bulk migration + dissolution-trigger tracking) is unchanged from the
74b679b state — what's added is the explicit worker-brief anchor.

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

* fix(briefs): resolve openai-pro APPROVE_WITH_COMMENTS on #835 sha 3260d71

Finding (P2 single-authority): T-Ground-Rust had two contradictory states —
deliverables table at :23 said DISPATCHED, but Sub-briefs Pending list at
:62-63 listed "T-Ground-Rust full implementation" as pending pre-spawn work.
Same lane, two authoritative states.

Audit: T-Ground-Rust full lane (Rust target-spec primitive declarations
end-to-end) has not been authored. Pilot (PR #765) and Engine Phase 1
typestructure (PR #788) are separate dispatched lanes (their own rows in the
table); the "DISPATCHED (Engine implementation parked pending loader-close)"
parenthetical was a status leak from the Engine row's parking note.

Fix: row status now reads "NOT YET AUTHORED — listed under Sub-briefs
Pending below; gated on pre-spawn Director scope refinement per inbox #828.
(Pilot PR #765 + Engine Phase 1 typestructure PR #788 are separate dispatched
lanes — see those rows; the prior 'DISPATCHED' status here was a parenthetical
leak from the Engine row's loader-close parking note.)"

Now table status matches Sub-briefs Pending list. Single authority restored.

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

* fix(briefs): refresh impossible-bugs manager against PR #836 merge

Codex BLOCKING on r2-impossible-bugs-manager.md:78 (sha bfaab66) was
correct in spirit and now newly actionable: the brief's Pending section
re-dispatched the older DESIGN/SCOPING workers
(t-impossiblebugs-nested-optional-flatten-worker.md +
t-impossiblebugs-unhandled-diagnostic-paths-worker.md) even though
their design docs (PR #798 + PR #801) had landed with next-step
recommendations + PR #836 just authored the IMPLEMENTATION workers
(r2-impossible-bugs-{nested-optional-flatten,unhandled-diagnostic-paths,
unenumerated-effects}-worker.md).

Re-dispatching DESIGN/SCOPING workers when implementation workers are
authored = duplicate decision authority under P2 + accumulating ad-hoc
state under P5. Codex was right.

Three sections updated to reflect PR #836-merged state:

## Program scope table (lines 17-19)

Reframed columns: "Design authority + implementation worker (post PR #836
merge)" / "Implementation status" / "Substrate gating". Each class row
now names:
- Design doc PR + closed-in-scope status
- Implementation worker filename (PR #836) + IMPLEMENTATION WORKER LANDED
- UNGATED status per design-doc audit (Director's reframes #1, #2 confirmed
  no substrate gates — substrate-constructor invariant for nested-optional;
  totality-by-omission for unhandled-diagnostic; closed-system for effects)

The OLD DESIGN/SCOPING workers are explicitly named SUPERSEDED for
unenumerated-effects already; nested-optional + unhandled-diagnostic
older workers are now also marked superseded by their PR #836
implementation counterparts.

## Owned deliverables (lines 25-31)

Reframed from "Worker brief is already authored ... DESIGN/SCOPING shape"
to "Implementation worker brief landed on main via PR #836 merge ... do
not re-dispatch the older workers." Substrate-gap escalation reframed as
the exception path (was the expected path under the older DESIGN/SCOPING
worker assumption); expected path is direct implementation per design-doc
Director-actionable recommendation.

## Sub-briefs Pending (lines 78-86)

Reframed from "Dispatch nested-optional-flatten worker (DESIGN/SCOPING
produces substrate proposal → escalate)" to "Dispatch nested-optional-flatten
implementation worker (ungated; dispatchable Day-1 post-spawn)" + same
pattern for the other two classes. PR #836's 3 implementation workers are
now the canonical dispatch targets.

Added explicit SUPERSEDED list for the older workers (4 entries: 2
DESIGN/SCOPING + 2 effects-worker variants) with their respective
implementation-worker successors named.

## Discipline note

This finding was real, not an echo. PR #836 merging changed the substrate
of facts the manager brief grounds against. Same class as the §6a stale
framing on Release Manager + the B4.1 stale BLOCKING on Substrate Manager:
brief authored against pre-merge state; merge surfaces the staleness.

The matrix's pre-author verification invariant catches state-drift at
authoring time; the matrix's status-consistency rule catches dual-state
within a single brief. This finding is a third class: cross-PR state drift
(brief A's Pending list cites brief B's content; brief B merges and
brief A's content goes stale). Worth noting as a refresh-discipline
trigger separately from authoring discipline.

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant