DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path phases/phase-57-marketing-engagement-creation/loomworks-phase-57-cr-amendment-3-scoping-note-v0_1.md

Loomworks Phase 57 CR amendment-cycle-3 scoping note

Version. 0.1 Date. 2026-05-12 Status. Active scoping for the Phase 57 CR third amendment cycle. Drafted by Claude.ai. Operator: Marvin Percival. Phase 57 build paused at Step 2b live usage per phase-57-halt-surface-2026-05-12-step-2b-live-v0_1.md (engine repo docs/phase-impl-notes/; commits 5534068 + 771aacd on branch phase-57-marketing-engagement-creation); amendment-scope absorbs the response-shape engagement gap at the layer downstream of classification on /operator/create-engagement. Third amendment cycle on Phase 57; cycles 1 (Sub-arc 4 OL signin alignment) and 2 (Sub-arc 5 route-to-substrate runtime binding) are correct and stay. This is the first three-amendment phase in Loomworks methodology history and the threshold case for the reserved-slot-as-halt-condition-pre-commitment design — the explicit Operator authorization gate per P57-B10 fired and is granted (P57-C10 below). Phase. 57 — Marketing Engagement Creation (amendment cycle 3). CR target. CR-2026-090 v0.4 (phase-57-cr-marketing-engagement-creation-v0_4.md), superseding v0.3. v0.1 + v0.2 + v0.3 all preserved alongside as superseded. Companion documents.


What this amendment settles, in one paragraph

Phase 57 Step 2b (live usage event) cannot succeed against the v0.3 CR despite (a) Sub-arc 5c/5e wire-binding being correct — cycle-3 OL vitest re-baselining at 151 confirms Sub-arc 5e's ChatView > on first creation-mode turn, POSTs /operator/converse with intent_hint='create_engagement_entry' still passes; cycle-3 engine re-baselining at 2,279 pass + 1 fail + 32 skip confirms no engine drift from cycle-2 close, finding 7.2 (test_api_assertion_retract) reproducing verbatim; (b) Sub-arc 5b diagnostic findings's CRV-B1 through CRV-B6 returning verdicts at execution time and Sub-arc 5c implementing the wire-binding fix; (c) Sub-arc 5f lightweight post-fix confirmation passing at wire-path scope (engine token counts in cycle-3 halt-surface §2.1 bullet 5 confirm engine receipt of real OL POST bodies); and (d) every cycle-2 acceptance gate clearing. Live usage on /operator/create-engagement reproduces the cycle-2 halt-surface §2.1 reading exactly — Companion opening turn is the general-purpose opener, not Field 1 of the marketing-creation prompt; diagnostic exchanges ("capital of NZ""Wellington"; "parked on Level 13""I'll remember that") return general_conversation or quick-capture-engagement shapes, not creation-flow scaffolding. The halt-surface §4 architectural reframing names substrate-engagement as a four-layer chain (present → classified → template-selected → response-shaped); cycle 2 audited layers 1–2; live failure surfaces at layer 3 or 4. The amendment adds one new Sub-arc (Sub-arc 6: response-shape engagement) and one new build step (Step 2d, inserted between cycle-2's Step 2c and the still-paused Step 2b) that runs CC's diagnostic phase first (CRV-C items derived from halt-surface §3 candidate space + §4 four-layer framing), files a diagnostic findings note at docs/phase-impl-notes/phase-57-step-2d-diagnostic-findings-v0_1.md identifying the root layer (Candidate A stale OL bundle / Candidate B engine intent_hint not honored at deeper layer / Candidate C template-selection downstream / additionally Candidate D response-shape rendering as a layer-4 possibility within the four-layer framing) and the specific change site, then executes the fix. The scoping note does NOT pre-decide the fix shape — Candidate F precedent (cycle-2 scoping's diagnosis-as-architecture-when-runtime-binding-fails) extends naturally: when substrate is correct and runtime engagement is correct at the wire-binding layer but response-shape engagement still fails, scoping authorizes the diagnostic envelope; the diagnostic produces the fix shape at CRV-C execution time. The cycle-3 lightweight post-fix confirmation (Sub-arc 6f) explicitly re-scopes per Candidate G — the confirmation must match Step 2b live-usage scope (full classify → template-select → render exercised), not wire-path scope alone; this is the explicit methodology test of Candidate G. Reserved-budget expansion is explicitly authorized per P57-C10 below as a calibration data point on the reserved-slot pre-commitment principle. Phase 57's product deliverable (marketing engagement live; first real-Operator transcript) and methodology deliverable (real-Operator-using-the-creation-flow calibration fixture) remain Phase 57's targets — preserved unchanged. Engine substrate Step 1 (Field 6 prompt), OL Sub-arc 4 (signin alignment), and OL+engine Sub-arc 5 (wire-binding fix) are correct and untouched. Methodology candidates D + E + F carry forward; Candidate C reaches four-instance-within-Phase-57 + five-instance-across-Loomworks evidence; Candidate G sharpens at cycle-3 scoping to two-confirmation-surface evidence (OL vitest mocked-engine PASS + lightweight engine-log confirmation PASS while live-usage FAIL); one new scoping-stage candidate (H: reserved-slot-pre-commitment-as-calibrable-not-fixed) is named here for the first time.


How we got here — trajectory worth preserving

This is the fourth build-mode firing of the substrate-friction-discipline-pattern (manifest v0.39 §2; v0.41 §1 reframed as structural rather than coincidental) and the third within a single phase. The instances now span: Phase 49 Step 4 → Phase 49 Step 4 amendment scoping → CR v0.3 → Step 4b (canonical cross-phase instance); Phase 57 amendment cycle 1 (Sub-arc 4 OL signin alignment); Phase 57 amendment cycle 2 (Sub-arc 5 route-to-substrate binding); Phase 57 amendment cycle 3 (this — Sub-arc 6 response-shape engagement). Five-instance evidence across two phases and a nine-phase window (Phases 49 / 50–56 unconsumed / 57 cycles 1/2/3). The three-within-one-phase profile is structurally novel — prior instances of the pattern fired once per phase. The reserved-slot pre-commitment design fires at and beyond its calibration threshold: both reserved slots consumed at cycles 1 and 2; cycle 3 expands reserved budget explicitly per P57-C10 with the gate honored, not circumvented.

The cycle-3 trajectory is worth preserving in full for v0.42 manifest absorption and for v0.21 methodology consolidation. Positions 1–7 are carried forward from the cycle-2 scoping note and extended.

Position 1 — Phase 57 scoping v0.1 → v0.2 → CR-2026-090 v0_1. Phase 57 anticipated zero OL substrate changes. The CR explicitly named this at §16 (OL vitest 149 unchanged) and §6 (What Phase 57 does NOT deliver). Step 0 V1–V8 verified engine-side substrate exhaustively.

Position 2 — Step 2 entry, pre-cycle-1-halt. Local stack readiness friction (CORS preflight 405) resolved.

Position 3 — Cycle-1 halt-surface. OL signin form's required-email gate contradicts standing DUNIN7 principle + engine identity contract. Three findings; one-line fix scope.

Position 4 — Cycle-1 scoping. Sub-arc 4 added; Step 2a inserted before paused Step 2 (renamed Step 2b). Candidates A + B + C named.

Position 5 — Cycle-1 amendment execution. CR v0.2; Sub-arc 4 components 4a/4b/4c/4d; OL e435b30; vitest 149 → 150. Signin clean.

Position 6 — Cycle-2 halt-surface. Live /operator/create-engagement post-Sub-arc-4-signin: surface loads correctly (banner Phase 56 plain-terms-discipline first positive live evidence — Candidate E); diagnostic exchange returns general_conversation shape; scrollback leakage flag (state from /chat); friction is upstream of Field 6 (the entire scaffolded conversation flow doesn't engage); break is at the runtime binding layer between OL surface's converse submission and the engine's classifier/dispatcher path; six CRV-Bs enumerated.

Position 7 — Cycle-2 scoping + execution. P57-B1–B10 settled investigation envelope + execution posture + acceptance criteria; Candidate F named (diagnosis-as-architecture-when-runtime-binding-fails); reserved budget exhausted at P57-B10 with explicit halt-condition pre-commitment for any third cycle. CR v0.3; Sub-arc 5 components 5a (CRV-B diagnostic phase) + 5b (findings document at phase-57-step-2c-diagnostic-findings-v0_1.md) + 5c (OL ChatView.tsx intent_hint POST body addition + history-fetch skip in creation mode) + 5e (OL vitest 150 → 151 pinning the POST body wire path). OL HEAD e56ede0; engine HEAD 38d0008 (engine source byte-identical to cycle-2 baseline — docs-only commits since cycle-2 close).

Position 8 — Cycle-3 halt-surface diagnostic (this halt). Step 2b live usage at /operator/create-engagement post-Sub-arc-5: surface loads cleanly (Sub-arc 5 fix landed — banner present, scrollback empty per Sub-arc 5c history-fetch skip working). Sub-arc 5f's lightweight post-fix confirmation PASSED at wire-path scope (engine token counts on Companion turns — [4,532 in · 80 out] and [4,542 in · 71 out] per halt-surface §2 — prove engine receipt). Live usage FAILED: the twelve-turn transcript in halt-surface §2 reproduces cycle-2 halt-surface §2.1 verbatim shape — Companion opening turn is general-purpose opener; "capital of NZ""Wellington" reproduced exactly; "parked on Level 13""I'll remember that" surfaced quick-capture-engagement behavior (positive evidence for Phase 58+ but wrong engagement class for Phase 57's target). Three candidate root layers enumerated at halt-surface §3 (A: stale OL bundle, weakened by §2.1 bullet 5 but not closed; B: engine intent_hint not honored at a subtler level than Sub-arc 5b verified; C: template-selection downstream of classification — a fourth root layer cycle-2's CRV-Bs structurally didn't enumerate, itself a halt-class trigger per CR v0.3 §11). Candidate G named at halt-surface §5 (post-fix-confirmation-can-pass-while-live-usage-fails-when-confirmation-scope-is-narrower-than-usage-surface); single-instance evidence at halt time.

Position 9 — Cycle-3 scoping (this). Sub-arc 6 added; Step 2d inserted between Step 2c (cycle-2, complete) and Step 2b (still paused). Investigation envelope absorbs the layer-3-or-4 question; diagnostic-first execution per Candidate F precedent extended; Sub-arc 6f post-fix confirmation re-scoped per Candidate G to live-usage scope. Reserved budget explicit-authorization gate fires and is granted per P57-C10. Candidate H named (reserved-slot-pre-commitment-as-calibrable-not-fixed) — the principle's "calibrated to worst-case observed" framing at v0.39 §2 needs calibration-window cardinality.

The nine positions are preserved. Position 1 (no OL changes anticipated) is not erased by Positions 7/9 (three OL changes required). Position 7 (Sub-arc 5 alone resolves runtime-binding) is not erased by Position 9 (response-shape engagement is a distinct downstream layer; Sub-arc 5 was scoped to fix wire-binding and could not have caught this). The progression Position 1 → 4 → 7 → 9 traces substrate-friction-discipline-pattern firing three times within a single phase, each time at a deeper layer of the substrate-engagement chain.

Discovery-record observation extending cycle-2's substrate-presence-is-not-substrate-engagement. Cycle-2 named substrate-presence (Step 0 aperture) as distinct from substrate-engagement (route-to-substrate runtime binding). Cycle-3 surfaces that substrate-engagement is itself decomposable: presence → classified → template-selected → response-shaped, per halt-surface §4. Cycle 2's framing (substrate-presence-vs-substrate-engagement) was correct about the existence of an engagement boundary but treated engagement as a single boundary; cycle 3 names it as a four-layer chain. Each layer is a verification surface; cycle 2's CRV-Bs probed layers 1–2; cycle-3's CRV-Cs probe layers 3–4. The four-layer framing carries to v0.21 as a sharpening of Candidate D (per-route-companion-routing-not-asserted-at-step-0) — Step 0's aperture extension question is now per-layer rather than per-route.


Scope confirmation — per cycle-3 halt-surface §5 settled list

The cycle-3 halt-surface §5 (per handoff §4 paraphrase, authoritative content in the engine-repo halt-surface note) names these as settled and stays-unchanged:

  1. Cycles 1 and 2 substrate. CR v0.1 archive, Step 1 substrate (engine a00f4a3), cycle-1 halt-surface, CR v0.2 archive, Sub-arc 4 OL substrate (OL e435b30), CR v0.3 archive, Sub-arc 5b diagnostic findings, Sub-arc 5c OL fix (OL 04de7f7), Sub-arc 5e OL vitest (OL e56ede0). All stay. Phase 57 Sub-arcs 1 + 4 + 5 substrate is correct as far as it goes. Cycle-3 work extends to a new layer; it does not undo prior cycles' work.
  2. No engine or OL substrate work in the halt-surface or scoping chats. Cycle-3 diagnosis runs in CC's build session at Sub-arc 6a after scoping closes.
  3. Local stack disposition. Engine API on :8000 (pid 90683 if still running); OL dev server on :3001 (pid 49049 if still running). Operator's election whether to leave running for cycle-3 CC handoff or restart.

The cycle-3 scoping note confirms all three. The amendment scope is strictly the response-shape engagement layer for /operator/create-engagement. Sibling OL routes, sibling response-shape paths (e.g., other mode= ChatView variants), and the broader question — are there other routes whose mode-driven submission engages classification but not template-selection-or-render? — explicitly out of cycle-3 scope. The broader audit queues as a Phase 58+ candidate consolidation alongside the cycle-1 OL surface-vs-contract audit and cycle-2 OL route-to-substrate runtime-binding audit candidates; v0.12 of loomworks-queued-directions-and-deferred-work absorbs the consolidated three-candidate audit shape post-cycle-3-close (not in this scoping note's scope to produce; see "What this scoping note does NOT do" below).


What's settled — ten P57-Cx items

All decisions closed at scoping. The CR drafter consumes them; does not relitigate. The architectural shape — like cycle 2's — is that the fix layer is not pre-decided in scoping; diagnostics produce it at CRV-C execution time. The architectural decisions settled here are the investigation envelope + execution posture + confirmation-scope discipline + acceptance criteria + reserved-budget authorization, not the implementation surface.

| Item | Setting | |------|---------| | P57-C1 | Sub-arc 6 framing — response-shape engagement for /operator/create-engagement. Scope absorbs whatever the cycle-3 halt-surface §3 candidates (A/B/C) plus §4 four-layer framing (layers 3 + 4: template-selected + response-shaped) surface as the root layer at CRV-C diagnostic time. Candidate A (stale OL bundle) is weakened by halt-surface §2.1 bullet 5 (engine receives real POST bodies) but not closed — an HMR-only-stale-bundle scenario where the engine receives requests but the OL client-side code path is stale at a different layer remains open. Candidate B (engine intent_hint not honored at a deeper layer than Sub-arc 5b's CRV-B2 verified) is structurally possible — Sub-arc 5b's CRV-B2 verified that intent_hint propagates into the classifier; it did not verify that the classifier's intent_hint-honoring path drives template-selection and response-shape rendering. Candidate C (template-selection downstream of classification) is named by halt-surface §3 as the "fourth root layer" cycle-2's CRV-Bs structurally did not enumerate. The four-layer framing's layer 4 (response-shape rendering) is an additional possibility (Candidate D-equivalent: classification correct, template-selection correct, but the final rendered response shape is general_conversation-formatted because of a downstream rendering-layer dispatch). Rejected alternative: pre-decide "Candidate C is the root layer" (halt-surface §3 weighs C as most-likely but does not settle; pre-deciding risks the wrong-layer fix, exactly the failure Sub-arcs 5f exposed at cycle 2). Rejected alternative: scope expansion to audit all OL→engine response-shape paths (broader than necessary; Phase 58+ consolidation candidate). | | P57-C2 | Diagnostic-first execution posture for Step 2d, per Candidate F precedent extended. CC runs CRV-C1 through CRV-C6 (or whatever the diagnostic envelope's natural cardinality proves to be — likely 5–7 items per the four-layer framing plus secondary checks) as Step 2d's first activity, before any production code change. The CRV-C findings produce a brief diagnostic-findings document committed to docs/phase-impl-notes/phase-57-step-2d-diagnostic-findings-v0_1.md on the engine repo's phase-57-marketing-engagement-creation branch. Content shape mirrors cycle-2's Sub-arc 5b findings: per-CRV verdict (HOLDS / CONTRADICTS / NEEDS-FOLLOW-UP); root-layer identification across the four-layer chain (layers 3 / 4 / both / a re-opened layer 2); specific file:line change sites; test surface specification; explicit cross-reference to Sub-arc 5b findings — were any of CRV-B1–B6's verdicts narrower-scoped than cycle-3 evidence now demands? The diagnostic envelope explicitly probes Candidates A / B / C (halt-surface §3) plus layer 4 (response-shape rendering). The cycle-2 cross-check is a CRV-C item because halt-surface §2.1 bullet 5 confirms engine receipt — meaning CRV-B2's intent_hint propagation verdict held at scope, but the deeper question (does intent_hint-honored classification drive the full template-select-and-render path?) was outside CRV-B2's aperture. This codifies the extended Candidate F: when each amendment cycle's diagnostic envelope reveals a layer the prior cycle's envelope structurally couldn't probe, the pattern is recursive — each cycle's diagnostic aperture is one layer wider than the prior, until the chain terminates. Cycle 3 is the third-aperture-widening. Rejected alternative: implement fix as guess at most-likely root cause (Candidate C per halt-surface §3) and hope CRV-C confirms (violates halt-and-surface-preferred-over-draft-and-hope discipline; exactly the path Sub-arc 5f's narrow confirmation exposed at cycle 2). | | P57-C3 | Sub-arc 6f live-usage-scoped post-fix confirmation, explicit per Candidate G. Cycle-2's Sub-arc 5f confirmation passed at wire-path scope; Sub-arc 5e OL vitest also passed at wire-path scope (mocked engine); live usage at Step 2b failed because both confirmation surfaces were narrower than the usage surface. Cycle-3 evidence sharpens Candidate G to two-confirmation-surface evidence (OL vitest mocked-engine PASS + lightweight engine-log confirmation PASS while live-usage FAIL). The cycle-3 Sub-arc 6f confirmation MUST exercise the full classify → template-select → render chain — i.e., its scope MUST match Step 2b live-usage scope. Implementation framework (settled here): Sub-arc 6f's acceptance requires either (a) an automated end-to-end test that asserts response shape (not just wire path) — i.e., asserts that a submitted creation-flow opener produces a response classified, template-selected, AND rendered through the creation-flow path, not the general_conversation path; or (b) a CC-driven live-usage probe that reads response shape from the running local stack; or (c) a combination of the two. Implementation specifics (not settled here, deferred to CRV-C6): which of (a)/(b)/(c) — or all three — is the canonical Sub-arc 6f surface, and what specific assertions pin the response-shape contract. Rejected alternative: maintain cycle-2's lightweight-confirmation pattern at wire-path scope (would violate Candidate G's prescription explicitly — the cycle-3 work's methodology purpose includes instantiating Candidate G against a sharper confirmation surface). Rejected alternative: defer Sub-arc 6f scope to CC at execution time without scoping settlement (would leave Candidate G as a description without an instance test; the cycle-3 scoping note is the surface where the prescription becomes a discipline). | | P57-C4 | Test surface floor: at least one new test pins the corrected response-shape engagement at layer-3-or-4 scope. Per P57-C3's framework requirement, the test must assert response shape (the shape of what the Companion returns — creation-flow scaffolding vs general_conversation), not just wire-path correctness. Floor: +1 net test. Ceiling: +2 if CRV-C6 surfaces shared-fix shape requiring both OL-side response-shape assertion AND engine-side template-dispatch assertion. Whether the test lives in OL vitest (with a less-mocked engine or a richer fixture), engine pytest (with response-shape assertion at the dispatcher exit), or a new e2e harness (running both stacks against each other) is determined at CRV-C6 time. Rejected alternative: zero new tests (regression-prone — the gap that allowed cycles 1/2/3 successively would re-allow the next). Rejected alternative: pre-commit to a specific harness (the four-layer framing is new enough that the right harness depends on which layer CRV-C identifies as root). | | P57-C5 | CR version phase-57-cr-marketing-engagement-creation-v0_4.md. v0.1 + v0.2 + v0.3 + v0.4 all preserved alongside; all four archived at engine repo docs/phase-crs/. v0.4 is active; v0.3 marked superseded; v0.1 + v0.2 already marked superseded. First four-version archival in Loomworks methodology history. Phase 49 carried three versions; Phase 57 cycle 3 sets the four-version precedent. | | P57-C6 | New Sub-arc 6: response-shape engagement for /operator/create-engagement. Separate sub-arc keeps the response-shape problem class visible alongside engine substrate (Sub-arc 1), the original engine + OL substrate Sub-arcs 2/3, OL signin alignment (Sub-arc 4), and route-to-substrate wire-binding (Sub-arc 5). Rejected alternative: extend Sub-arc 5 (Sub-arc 5 is wire-binding-specific at layer 2; the response-shape problem is at layer 3 or 4 — structurally distinct in the four-layer chain). Rejected alternative: pre-split Sub-arc 6 into Sub-arc 6-OL + Sub-arc 6-engine before CRV-C confirms layer (would pre-decide what CRV-C is meant to find). | | P57-C7 | Test count update — deferred to CRV-C findings, with documented floor and ceiling. Floor: +1 net test (per P57-C4 floor). Ceiling: +2 if shared-fix shape AND an e2e harness lands as a new file. Alembic 0064 unchanged across all candidate fix shapes (no migration consumed at layers 3/4). The CR §16 v0.4 test count table reads: OL vitest 151 → 152 (most likely if OL-side response-shape assertion); engine always-run 2,279 → 2,280 (if engine-side template-dispatch assertion); calibration-gated 32 unchanged across candidates; potential e2e harness count 0 → 1 if CRV-C6 surfaces e2e as the right surface. The acceptance gate accepts the +1 net floor and +2 ceiling; implementation notes record as-shipped at Phase 57 close. | | P57-C8 | Three CR §12 gate updates. Gate 5 amended further to include Sub-arc 6 readiness. New Gate 5d: response-shape engagement verified at live-usage scope per Candidate G — submitting a creation-flow opener from /operator/create-engagement produces a Companion response classified through create_engagement_entry (per CRV-C1) AND template-selected through the creation-flow template path (per CRV-C-layer-3) AND rendered as creation-flow scaffolding (per CRV-C-layer-4). Subsequent gates renumber with +1 offset. Total gates: 19 (post-cycle-2) → 20. | | P57-C9 | Methodology candidate carry-forward — fifteen total at cycle-3 scoping (up from fourteen at halt). Carried from handoff §7: fourteen candidates including Candidate G at single-instance halt-surface evidence. Cycle-3 scoping crystallizes (a) Candidate G's two-confirmation-surface sharpening — the OL vitest mocked-engine PASS + lightweight engine-log PASS while live-usage FAIL is structurally sharper than single-instance, suggesting v0.21 framing may want to distinguish confirmation-surface cardinality (how many narrower-than-usage surfaces a fix passes through before hitting usage) as the calibration knob, not just confirmation-vs-usage as a binary; and (b) Candidate Hreserved-slot-pre-commitment-as-calibrable-not-fixed, named here for the first time (see methodology section below). Candidate C reaches four-instance within Phase 57 (cycles 1/2/3) + five-instance across two phases (Phase 49 + Phase 57). Clears v0.21 promotion threshold with strong margin; the within-phase recurrence pattern is structurally novel and likely warrants its own framing at v0.21 distinguishing cross-phase pattern firing from within-phase pattern recurrence. | | P57-C10 | Explicit reserved-budget expansion authorization — Operator-elective per substrate-friction-discipline-pattern, named as calibration data point on the reserved-slot pre-commitment principle. Per P57-B10, any third amendment cycle requires explicit Operator authorization; that authorization gate fired at the cycle-3 halt and is granted by the existence of this scoping note (Marvin's "X" decision at scoping-chat open against the Option X / Y / Z space surfaced in the cycle-3 halt-surface §6). The authorization is not a circumvention of the reserved-slot principle — it is the principle working as designed. The v0.39 §2 promotion of reserved-slot-as-halt-condition-pre-commitment framed slot count as "calibrated to actual mid-build amendment frequency at the worst case observed"; the worst case observed at v0.39 promotion time was Phase 49's one-cycle amendment. Phase 57's three-cycle profile is calibration data: either (i) the calibration window was too short (one phase) and worst-case-actual is higher than worst-case-observed-in-priors, or (ii) Phase 57's substrate-engagement-layer-cardinality is structurally different from prior phases' single-class friction and the slot count should be per-substrate-class rather than per-phase. The cycle-3 scoping note names this as v0.21 framing input; the v0.42 manifest absorption records the calibration data point; the decision about whether two-slot pre-commitment generalizes or needs revision belongs to the v0.21 consolidation pass, not to Phase 57. Rejected alternative: treat the authorization gate as a hard cap (would substitute a literal-slot-count for what the principle actually says about calibration; would prematurely close Phase 57 with the deliverable un-shipped and the methodology test of Candidate G uninstantiated). |


Sub-arc 6 decomposition

The cycle-3 scoping note settles the investigation envelope; CRV-C findings settle the specific component decomposition at execution time. The provisional decomposition below mirrors cycle-2 Sub-arc 5's shape and is what CR v0.4 §10 Step 2d will elaborate; CRV-C-driven adjustments absorb at execution time per the CR's halt thresholds.

6a. Diagnostic phase (CRV-C1 through CRV-C5-or-6). CC adds temporary logging at the diagnostic surface points enumerated by halt-surface §3 + §4 — provisional set: (i) OL ChatView.tsx submission path entry, to verify the intent_hint field is present in the POST body on browser-observed live traffic (Candidate A probe at a deeper level than Sub-arc 5e); (ii) engine classify_intent exit, to verify the classifier returns create_engagement_entry or equivalent (Candidate B probe extending CRV-B2); (iii) engine template-selection layer (likely at _load_intent_instruction exit or at the dispatcher splice site prompt.py:817), to verify the creation-flow template path is selected (Candidate C — the layer cycle-2 didn't probe); (iv) engine response-shape rendering layer (likely at the assemble_prompt return or at the converse-handler response construction), to verify response shape matches the creation-flow template's output contract (the layer-4 probe within the four-layer framing); (v) cross-reference with Sub-arc 5b findings at the matching layers. Submits diagnostic messages from /operator/create-engagement. Captures findings. Removes temporary logging. No production code changes in this phase.

6b. Diagnostic findings document. CC files docs/phase-impl-notes/phase-57-step-2d-diagnostic-findings-v0_1.md on the engine repo's phase-57-marketing-engagement-creation branch. Single-file commit. Content: per-CRV verdict; root-layer identification (layer 3 / layer 4 / both / re-opened layer 2); specific file:line change sites; test surface specification; explicit cross-reference to Sub-arc 5b findings at matching layers. This is the architectural artifact for cycle 3 — the analog of cycle-2's Sub-arc 5b findings document, but at a deeper layer of the four-layer chain.

6c. Response-shape engagement fix. CC implements the production change(s) per the diagnostic findings document. Layer(s) and file(s) per the findings.

6d. Secondary fixes. Any layer-adjacent fixes the diagnostic surfaces (e.g., if CRV-C5 cross-reference re-opens a Sub-arc 5b finding's narrower scope, the re-opening is named here; if layer-3 fix has a layer-4 ripple, the ripple lands as 6d). May collapse into 6c if same-layer single-change; may stand separate if cross-layer.

6e. Test surface — response-shape pinning. Per P57-C4 floor — at least one test pins the corrected response shape (not just wire path) at the layer Candidate G's confirmation-scope discipline prescribes. Lives in OL vitest, engine pytest, or new e2e harness per CRV-C6.

6f. Local stack restart + live-usage-scoped post-fix confirmation, per Candidate G. CC restarts OL dev server (and engine if engine changes land); submits a creation-flow opener from /operator/create-engagement; confirms via live response shape (not via engine-log scope alone) that the route engages classify → template-select → render through the creation-flow path. This MUST match Step 2b live-usage scope per P57-C3. Implementation per CRV-C6 — automated e2e and/or CC-driven probe; the lightweight engine-log confirmation that satisfied cycle-2's Sub-arc 5f is explicitly insufficient for cycle-3's Sub-arc 6f acceptance.

Total Sub-arc 6 components: 6a–6f (six, mirroring Sub-arc 5). Decomposition provisional; CRV-C-driven adjustments at execution time.


Build steps integration

CR v0.3 §10 carries Steps 0/1 (pre-cycle-1-halt, done), Step 2a (cycle-1 Sub-arc 4 signin alignment, done), Step 2c (cycle-2 Sub-arc 5, done), Step 2b (live usage event, paused since cycle-3 halt), and Steps 3/4/5 unchanged. The cycle-3 amendment inserts:


Halt conditions for the amendment cycle

CR v0.4 §11 extends v0.3 §11. Cycle-3-specific halt thresholds at Step 2d:

Naming-only divergences absorb in-flight per friction-discipline. Architectural divergences halt and surface.


New methodology observations crystallizing at cycle-3 scoping

Beyond the fourteen candidates carried from cycle-3 halt-surface (handoff §7), cycle-3 scoping crystallizes:

Candidate G sharpening — confirmation-surface cardinality. Halt-surface §5 named Candidate G as post-fix-confirmation-can-pass-while-live-usage-fails-when-confirmation-scope-is-narrower-than-usage-surface at single-instance evidence. Cycle-3 scoping's re-baselining surfaces structural sharpening: two confirmation surfaces both passed at narrower-than-usage scope before live-usage failure. (i) Sub-arc 5e OL vitest ChatView > on first creation-mode turn, POSTs /operator/converse with intent_hint='create_engagement_entry' PASS at mocked-engine scope. (ii) Sub-arc 5f lightweight engine-log confirmation PASS at engine-receipt scope. (iii) Step 2b live usage FAIL at full classify → template-select → render scope. The cardinality matters: a fix that passes through multiple narrower-than-usage surfaces is more likely to be a false positive at usage than a fix that passes through one. v0.21 framing input: confirmation-surface cardinality should be tracked alongside confirmation-vs-usage as a calibration knob for post-fix discipline. Carries to v0.21 as a sharpening of Candidate G; the v0.42 manifest absorption records the cardinality evidence.

Candidate H — reserved-slot-pre-commitment-as-calibrable-not-fixed. Single-instance evidence at cycle-3 scoping. The v0.39 §2 promotion of reserved-slot-as-halt-condition-pre-commitment framed slot count as "calibrated to actual mid-build amendment frequency at the worst case observed." At v0.39 promotion time, worst-case-observed across the methodology's history was Phase 49's one-cycle amendment. Phase 57's three-cycle profile is calibration data on the principle itself: either (i) the calibration window was too short (one phase, Phase 49) and worst-case-actual is higher than worst-case-observed-in-priors at promotion time; or (ii) per-phase calibration is the wrong unit and the slot count should be per-substrate-engagement-class — phases with single-class friction calibrate to one slot; phases with multi-layer substrate-engagement chains calibrate to one slot per chain layer. The candidate names the principle as calibrable, not as fixed at two slots. v0.21 framing question: what's the calibration window, what's the calibration unit (per-phase or per-substrate-class or per-chain-layer-count), and does the worst-case-observed framing need to shift to expected-value-given-substrate-class? The decision is v0.21 work; cycle 3 records the calibration data point. Generalizes alongside Candidate C's within-phase-recurrence framing — the two together suggest the substrate-friction-discipline-pattern is a layered family with cardinality, not a single pattern with binary instances.

Candidate F extension — recursive-aperture-widening. The cycle-2-named Candidate F (diagnosis-as-architecture-when-runtime-binding-fails) crystallized that scoping cannot pre-specify the fix when substrate is correct and runtime engagement fails. Cycle 3 extends this: each amendment cycle's diagnostic envelope reveals a layer the prior cycle's envelope structurally couldn't probe. Cycle 1 probed layer 1 (surface); cycle 2 probed layer 2 (wire-binding); cycle 3 probes layers 3 + 4 (template-selection + response-shape). The pattern is recursive — diagnostic aperture widens one layer per amendment cycle until the chain terminates. v0.21 framing: Candidate F should perhaps be promoted at three-instance evidence (cycle-2 single-instance + cycle-3 sharpening counts as two instances of the pattern's predictive shape even though the triggering instance count is one) with the recursive-aperture-widening property named.

(Halt-surface candidates A/B/C/D/E/F/G plus carry-forwards plus H now total fifteen candidates; v0.42 manifest absorption will record both the count and the cardinality-class observation about within-phase recurrence.)


What this scoping note does NOT do


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks Phase 57 CR amendment-cycle-3 scoping note — v0.1 — 2026-05-12