its-magic 0.1.2-55 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/package.json +1 -1
  2. package/scripts/check_intake_template_parity.py +96 -0
  3. package/template/.cursor/commands/architecture.md +4 -0
  4. package/template/.cursor/commands/auto.md +110 -15
  5. package/template/.cursor/commands/discovery.md +4 -0
  6. package/template/.cursor/commands/execute.md +343 -291
  7. package/template/.cursor/commands/intake.md +4 -0
  8. package/template/.cursor/commands/map-codebase.md +4 -0
  9. package/template/.cursor/commands/memory-audit.md +4 -0
  10. package/template/.cursor/commands/milestone-complete.md +4 -0
  11. package/template/.cursor/commands/milestone-start.md +4 -0
  12. package/template/.cursor/commands/pause.md +4 -0
  13. package/template/.cursor/commands/phase-context.md +4 -0
  14. package/template/.cursor/commands/plan-verify.md +4 -0
  15. package/template/.cursor/commands/qa.md +226 -222
  16. package/template/.cursor/commands/quick.md +13 -0
  17. package/template/.cursor/commands/refresh-context.md +4 -0
  18. package/template/.cursor/commands/release.md +505 -487
  19. package/template/.cursor/commands/research.md +4 -0
  20. package/template/.cursor/commands/resume.md +4 -0
  21. package/template/.cursor/commands/security-review.md +4 -0
  22. package/template/.cursor/commands/sprint-plan.md +4 -0
  23. package/template/.cursor/commands/status-reconcile.md +4 -0
  24. package/template/.cursor/commands/verify-work.md +4 -0
  25. package/template/.cursor/dev-environment.json.example +22 -0
  26. package/template/.cursor/scratchpad.local.example.md +40 -3
  27. package/template/.cursor/scratchpad.md +324 -262
  28. package/template/.cursorignore +1 -0
  29. package/template/docs/engineering/auto-orchestration-reference.md +121 -14
  30. package/template/docs/engineering/context/installer-owned-paths.manifest +4 -1
  31. package/template/docs/engineering/runbook.md +207 -4
  32. package/template/scripts/check_intake_template_parity.py +96 -0
  33. package/template/scripts/dev_environment_lib.py +463 -0
  34. package/template/scripts/pack_json_validate.py +130 -0
  35. package/template/scripts/project_readme_coverage_lib.py +417 -0
  36. package/template/scripts/readme_feature_coverage_lib.py +2 -2
  37. package/template/scripts/validate_project_readme_coverage.py +151 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "its-magic",
3
- "version": "0.1.2-55",
3
+ "version": "0.1.2",
4
4
  "description": "its-magic - AI dev team workflow for Cursor.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -9,6 +9,10 @@ Scoped modes (DEC-0073 §10 / US-0090):
9
9
  --scope=us-0092 DEC-0078 full-autonomy outer driver + probe surfaces.
10
10
  --scope=us-0093 DEC-0079 browser UAT probe surfaces.
11
11
  --scope=us-0095 DEC-0080 native in-chat auto-chain surfaces.
12
+ --scope=bug-0012 DEC-0081 native-chain compliance surfaces (BUG-0012).
13
+ --scope=us-0096 DEC-0082 delivery modes surfaces (US-0096).
14
+ --scope=project-readme DEC-0083 project README bootstrap surfaces (US-0097).
15
+ --scope=dev-environment DEC-0084 dev auto-launch profile surfaces (US-0098).
12
16
  --scope=all union of all tables.
13
17
  """
14
18
 
@@ -114,6 +118,90 @@ US0095_PAIRS: tuple[tuple[str, str], ...] = (
114
118
  ),
115
119
  )
116
120
 
121
+ BUG0012_PAIRS: tuple[tuple[str, str], ...] = (
122
+ (".cursor/commands/auto.md", "template/.cursor/commands/auto.md"),
123
+ (
124
+ "docs/engineering/auto-orchestration-reference.md",
125
+ "template/docs/engineering/auto-orchestration-reference.md",
126
+ ),
127
+ ("docs/engineering/runbook.md", "template/docs/engineering/runbook.md"),
128
+ (
129
+ "scripts/check_intake_template_parity.py",
130
+ "template/scripts/check_intake_template_parity.py",
131
+ ),
132
+ )
133
+
134
+ US0096_PAIRS: tuple[tuple[str, str], ...] = (
135
+ (
136
+ ".cursor/scratchpad.local.example.md",
137
+ "template/.cursor/scratchpad.local.example.md",
138
+ ),
139
+ (".cursor/commands/auto.md", "template/.cursor/commands/auto.md"),
140
+ (
141
+ "docs/engineering/auto-orchestration-reference.md",
142
+ "template/docs/engineering/auto-orchestration-reference.md",
143
+ ),
144
+ ("docs/engineering/runbook.md", "template/docs/engineering/runbook.md"),
145
+ (".cursor/commands/quick.md", "template/.cursor/commands/quick.md"),
146
+ (
147
+ "scripts/check_intake_template_parity.py",
148
+ "template/scripts/check_intake_template_parity.py",
149
+ ),
150
+ ("scripts/pack_json_validate.py", "template/scripts/pack_json_validate.py"),
151
+ )
152
+
153
+ PROJECT_README_PAIRS: tuple[tuple[str, str], ...] = (
154
+ (
155
+ "scripts/validate_project_readme_coverage.py",
156
+ "template/scripts/validate_project_readme_coverage.py",
157
+ ),
158
+ (
159
+ "scripts/project_readme_coverage_lib.py",
160
+ "template/scripts/project_readme_coverage_lib.py",
161
+ ),
162
+ (".cursor/commands/execute.md", "template/.cursor/commands/execute.md"),
163
+ (".cursor/commands/release.md", "template/.cursor/commands/release.md"),
164
+ ("docs/engineering/runbook.md", "template/docs/engineering/runbook.md"),
165
+ (
166
+ "docs/engineering/context/installer-owned-paths.manifest",
167
+ "template/docs/engineering/context/installer-owned-paths.manifest",
168
+ ),
169
+ (
170
+ ".cursor/scratchpad.local.example.md",
171
+ "template/.cursor/scratchpad.local.example.md",
172
+ ),
173
+ (
174
+ "scripts/check_intake_template_parity.py",
175
+ "template/scripts/check_intake_template_parity.py",
176
+ ),
177
+ )
178
+
179
+ DEV_ENVIRONMENT_PAIRS: tuple[tuple[str, str], ...] = (
180
+ (".cursor/commands/execute.md", "template/.cursor/commands/execute.md"),
181
+ (".cursor/scratchpad.md", "template/.cursor/scratchpad.md"),
182
+ (
183
+ ".cursor/scratchpad.local.example.md",
184
+ "template/.cursor/scratchpad.local.example.md",
185
+ ),
186
+ (
187
+ "template/.cursor/dev-environment.json.example",
188
+ "template/.cursor/dev-environment.json.example",
189
+ ),
190
+ (
191
+ "scripts/dev_environment_lib.py",
192
+ "template/scripts/dev_environment_lib.py",
193
+ ),
194
+ ("docs/engineering/runbook.md", "template/docs/engineering/runbook.md"),
195
+ (
196
+ "docs/engineering/auto-orchestration-reference.md",
197
+ "template/docs/engineering/auto-orchestration-reference.md",
198
+ ),
199
+ (
200
+ "scripts/check_intake_template_parity.py",
201
+ "template/scripts/check_intake_template_parity.py",
202
+ ),
203
+ )
204
+
117
205
  DOWNSTREAM_CI_GUARD_PAIRS: tuple[tuple[str, str], ...] = (
118
206
  (
119
207
  "scripts/check_downstream_ci_guard.py",
@@ -133,6 +221,10 @@ SCOPES: dict[str, tuple[tuple[str, str], ...]] = {
133
221
  "us-0092": US0092_PAIRS,
134
222
  "us-0093": US0093_PAIRS,
135
223
  "us-0095": US0095_PAIRS,
224
+ "bug-0012": BUG0012_PAIRS,
225
+ "us-0096": US0096_PAIRS,
226
+ "project-readme": PROJECT_README_PAIRS,
227
+ "dev-environment": DEV_ENVIRONMENT_PAIRS,
136
228
  "all": (
137
229
  INTAKE_TEMPLATE_PAIRS
138
230
  + CAVEMAN_COMPRESS_PAIRS
@@ -141,6 +233,10 @@ SCOPES: dict[str, tuple[tuple[str, str], ...]] = {
141
233
  + US0092_PAIRS
142
234
  + US0093_PAIRS
143
235
  + US0095_PAIRS
236
+ + BUG0012_PAIRS
237
+ + US0096_PAIRS
238
+ + PROJECT_README_PAIRS
239
+ + DEV_ENVIRONMENT_PAIRS
144
240
  ),
145
241
  }
146
242
 
@@ -13,6 +13,10 @@ description: "its-magic architecture: define approach, risks, and decisions."
13
13
  subagent/chat.
14
14
 
15
15
  ## Inputs
16
+
17
+ - **Narrow-read (US-0053 / US-0096 Tranche A)**: Start at docs/engineering/phase-context.md
18
+ and the story section anchor in vision/architecture/decisions when a heading exists; forbid
19
+ full-file reads when a section heading exists.
16
20
  - Product vision and acceptance
17
21
  - Constraints and risks
18
22
  - `docs/engineering/research.md`
@@ -38,6 +38,30 @@ description: "its-magic auto: deterministic continuation orchestrator."
38
38
  (wrong writer / isolation break) and **`RUNTIME_PROOF_*`** / **`PHASE_ROLE_*`**
39
39
  families—do not overload those codes for a missing-spawn violation.
40
40
 
41
+ ## Orchestrator post-subagent continuation mandate (BUG-0012 / DEC-0081)
42
+
43
+ **Orchestrator context only** — phase-role commands still **stop** and hand off via
44
+ artifacts (**BUG-0006**). When **`/auto`** runs as orchestrator, **post-subagent continuation**
45
+ is **not** optional when the next phase, drain-advance target, or relaxable retry within
46
+ budget is schedulable.
47
+
48
+ After any foreground phase-role subagent returns, orchestrator **MUST Task-spawn** the next
49
+ phase-role subagent per **US-0069** preflight. Orchestrator **must not** treat phase-role
50
+ handoff as run terminal; **phase-role stop is not run terminal** for the orchestrator when
51
+ continuation is schedulable.
52
+
53
+ | Actor | After phase completes |
54
+ |-------|----------------------|
55
+ | Phase-role subagent (`po`, `tech-lead`, `dev`, `qa`, …) | **Stop** — hand off via artifacts only (**BUG-0006**) |
56
+ | **`/auto` orchestrator** | **Continue** — orchestrator **MUST Task-spawn** when schedulable (**DEC-0080** / **BUG-0012**) |
57
+
58
+ Orchestrator **must not** emit mandatory re-**`/auto`**, mandatory **`auto_outer_driver.py`**, or
59
+ **`segment exhausted`** terminal prose when continuation is schedulable.
60
+
61
+ **Required contract literals** (regression anchors): **`orchestrator MUST Task-spawn`**,
62
+ **`post-subagent continuation`**, **`phase-role stop is not run terminal`**,
63
+ **`native chain supersedes Option B`**.
64
+
41
65
  ## Continuous multi-phase execution (US-0088)
42
66
 
43
67
  A single `/auto` orchestrated run advances through **all phases** in the
@@ -45,14 +69,15 @@ A single `/auto` orchestrated run advances through **all phases** in the
45
69
  **deterministic stop condition** fires. The orchestrator does **not** stop after
46
70
  spawning one phase unless the stop matrix requires it.
47
71
 
48
- **Outer-driver equivalence (AC-1, Option B)**: When a single Cursor `/auto`
49
- invocation cannot schedule multiple fresh subagent turns (product/runtime
50
- constraint), a **documented outer driver** (operator script or manual
51
- re-invocation with `start-from` / refreshed `resume_brief`) is
52
- **deterministically equivalent** provided: same intersected phase order, same
53
- isolation + strict-proof attestation per phase (**DEC-0038**), same stop
54
- reasons, and same `resume_brief` + `state.md` refresh at every boundary.
55
- Operators must follow the runbook recipe
72
+ **native chain supersedes Option B** under **`AUTO_FLOW_MODE=full_autonomy`** + IDE + Task
73
+ available native in-chat chain is **primary**; **Outer-driver equivalence (AC-1, Option B)**
74
+ applies **only** when **`NATIVE_CHAIN_UNAVAILABLE`** or headless/CI/`--invoke-cmd` context.
75
+ When a single Cursor `/auto` invocation cannot schedule multiple fresh subagent turns
76
+ (product/runtime constraint), a **documented outer driver** (operator script or manual
77
+ re-invocation with `start-from` / refreshed `resume_brief`) is **deterministically equivalent**
78
+ (**fallback only**) provided: same intersected phase order, same isolation + strict-proof
79
+ attestation per phase (**DEC-0038**), same stop reasons, and same `resume_brief` + `state.md`
80
+ refresh at every boundary. Operators must follow the runbook recipe
56
81
  (**`docs/engineering/runbook.md`** § Continuous `/auto` + backlog drain).
57
82
 
58
83
  **Deterministic stop matrix** (see also architecture `# US-0088`):
@@ -65,7 +90,7 @@ Operators must follow the runbook recipe
65
90
  | `AUTO_PAUSE_REQUEST` / `pause` | **Stop** at safe boundary (non-suppressible) |
66
91
  | `AUTO_LOOP_MAX_CYCLES` / `loop_max` | **Stop** (non-suppressible) |
67
92
  | `blocked` (sync/scope gate) | **Stop** (non-suppressible) |
68
- | US lifecycle DONE / sprint segment complete | **Stop** segment; `AUTO_BACKLOG_DRAIN=1` may advance to next OPEN story (recompute phase plan — **reference Step 5**) |
93
+ | US lifecycle DONE / sprint segment complete | **IDE `full_autonomy`**: orchestrator **must** drain-advance in-chat (no operator re-`/auto`). **Other modes / fallback**: stop segment; `AUTO_BACKLOG_DRAIN=1` may advance (recompute phase plan — **reference Step 5**) |
69
94
  | `BACKLOG_MAX_STORIES_REACHED` | **Stop** (non-suppressible) |
70
95
 
71
96
  `stop_reason` vocabulary: `completed`, `decision_gate`, `missing_input`,
@@ -88,6 +113,11 @@ re-invocation between segments.
88
113
  | 3 | Task tool available for foreground subagent spawn |
89
114
 
90
115
  Set **`native_chain_active=true`** in `state.md` phase boundary when all hold.
116
+ Set **`native_chain_continuing=true`** when orchestrator scheduled next spawn/advance **this**
117
+ boundary. Set **`drain_advance_action=spawned|skipped|not_applicable`** on drain-advance
118
+ boundaries (**`skipped`** when budget > 0 + OPEN item exists is **invalid**). When
119
+ **`native_chain_continuing=true`**, **`stop_reason`** must **not** be
120
+ **`completed (segment exhausted)`** and operator prose must **not** mandate re-**`/auto`**.
91
121
 
92
122
  ### Continuation loop (reference Step 5 — IDE primary)
93
123
 
@@ -126,7 +156,13 @@ Deterministic **7-step** algorithm when **`full_autonomy`** + drain policy activ
126
156
  | **6** | **APPEND** `state.md` materialization breadcrumb for new segment |
127
157
  | **7** | **IMMEDIATELY** spawn first phase subagent — **without operator re-`/auto`**, **no** mandatory outer-driver instruction |
128
158
 
129
- **DEC-0069 pairing mandate**: every phase boundary and drain advance **must** refresh **`resume_brief`** + **`state.md`** before scheduling in-chat continuation. Stale brief → **`RESUME_BRIEF_STALE`** fail-closed (no advance).
159
+ **Between steps 6 and 7** (no operator stop): orchestrator **must not** emit operator wait
160
+ instructions, set **`stop_reason=completed (segment exhausted)`** when drain budget > 0 and
161
+ eligible OPEN item exists, or skip Task-spawn for step **7**. Attest
162
+ **`drain_advance_action=spawned|skipped|not_applicable`** on `state.md` phase boundary;
163
+ **`skipped`** when budget > 0 + OPEN item exists is **invalid** (regression).
164
+
165
+ **DEC-0069 pairing mandate**: every phase boundary and drain advance **must** refresh **`resume_brief`** + **`state.md`** before scheduling in-chat continuation. Stale brief → **`RESUME_BRIEF_STALE`** fail-closed (no advance). Orchestrator **MUST Task-spawn** next phase — **`/auto`** is orchestrator context label, not operator re-invocation instruction.
130
166
 
131
167
  ### Native-chain stop matrix (US-0095)
132
168
 
@@ -154,7 +190,7 @@ native in-chat auto-chain above. **Optional fallback**: stdlib outer driver
154
190
 
155
191
  The driver **loops hook invocations** — spawn-only preserved (**BUG-0006**); it
156
192
  never performs phase-role work. Headless/CI recipe: set scratchpad keys → run
157
- `python scripts/auto_outer_driver.py --repo .` once → interpret exit table in
193
+ `python scripts/auto_outer_driver.py --repo .` once (**fallback** for headless/CI) → interpret exit table in
158
194
  **`docs/engineering/runbook.md`** § **Full-autonomy outer driver (US-0092)** (**fallback**).
159
195
 
160
196
  **Drain-advance-without-pause**: with **`full_autonomy`** + **`AUTO_BACKLOG_DRAIN=1`**
@@ -170,7 +206,7 @@ explicit opt-in for publish (unchanged default-off).
170
206
 
171
207
  | Condition | US-0088 (all modes) | `full_autonomy` delta |
172
208
  |-----------|---------------------|------------------------|
173
- | Next phase, no hard stop | Continue inner `/auto` | Outer driver **re-invokes** when Cursor ends turn early |
209
+ | Next phase, no hard stop | Continue inner `/auto` | Native chain continues in-chat; outer driver **re-invokes** only on **`NATIVE_CHAIN_UNAVAILABLE`** / headless **fallback** |
174
210
  | `decision_gate` | Hard stop | **No change — hard** |
175
211
  | Unrecoverable `error` | Hard stop | **No change — hard** |
176
212
  | Critical `missing_input` | Hard stop | **No change — hard** |
@@ -180,7 +216,7 @@ explicit opt-in for publish (unchanged default-off).
180
216
  | `blocked` — transient/sync | Hard stop | **Relaxable** when ledger classifies recoverable |
181
217
  | `blocked` — isolation / strict-proof / ownership | Hard stop | **No change — hard** |
182
218
  | UAT/QA fail | Hard stop (operator) | **Relaxable** when `AUTO_IMPLEMENTATION_LOOP=1` |
183
- | Segment complete + `AUTO_BACKLOG_DRAIN=1` | Advance (may need manual re-`/auto`) | **Drain-without-pause** — immediate next item |
219
+ | Segment complete + `AUTO_BACKLOG_DRAIN=1` | Advance (may need manual re-`/auto` in non-native modes) | **Drain-without-pause** — immediate in-chat continuation; **no** operator re-`/auto` |
184
220
  | `BACKLOG_MAX_STORIES_REACHED` | Hard stop | **No change — hard** |
185
221
  | `AUTO_SCHEDULER_CONFLICT` | Hard stop | **No change — hard** |
186
222
  | Security deny (`.env`, intake evidence mutation) | Hard deny | **No change — hard** |
@@ -245,6 +281,59 @@ parseable `EXECUTE_OVERRIDE_GOVERNANCE_REF`.
245
281
 
246
282
  Role reason codes: `PHASE_ROLE_CAPABILITY_MISSING`, `PHASE_ROLE_MISMATCH`.
247
283
 
284
+ ## Mode-scoped delivery resolver — step 0 (US-0096 / DEC-0082)
285
+
286
+ **Before** **Configurable phase selection policy (US-0070 / DEC-0052)**, **resolve_delivery_mode**
287
+ from precedence: argv `delivery-mode=` → backlog row `delivery_mode` (when
288
+ `AUTO_DELIVERY_ROUTING=backlog_then_scratchpad`) → scratchpad `DELIVERY_MODE` → **`standard`**.
289
+
290
+ | `delivery_mode` | `resolved_phase_plan` | `reinstatement_mode` | `memory_layer` |
291
+ |-----------------|----------------------|---------------------|----------------|
292
+ | `standard` | Full **DEC-0052** chain | `dec0052_default` | `standard` |
293
+ | `ultra_lean` | `[spec, plan, build+verify, ship]` | `none` | `pack` |
294
+ | `mega_quick` | `[quick]` when eligible (+1 on test failure) | `none` | `quick` |
295
+
296
+ **reinstatement applies only when delivery_mode=standard**. **`AUTO_PHASE_*`** applies **only**
297
+ when `delivery_mode=standard`; non-standard + non-default **`AUTO_PHASE_*`** →
298
+ **`PHASE_POLICY_CONFLICT`** (fail closed).
299
+
300
+ **`DELIVERY_MODE_SWITCH_MID_STORY`**: fail closed — complete segment in one mode.
301
+
302
+ Persist breadcrumbs at each phase boundary in `state.md` + top `resume_brief` pointer:
303
+ **`delivery_mode`**, **`resolved_phase_plan`**, **`reinstatement_mode`**, **`memory_layer`**.
304
+
305
+ ### `ultra_lean` macro-phases (US-0096 / DEC-0082)
306
+
307
+ Four macro-phases — **no** eleven-phase reinstatement when `delivery_mode=ultra_lean`:
308
+
309
+ | Macro | Merged canonical phases | Default role |
310
+ |-------|------------------------|--------------|
311
+ | **`spec`** | intake + discovery | **po** |
312
+ | **`plan`** | research + architecture + sprint-plan | **tech-lead** |
313
+ | **`build+verify`** | execute + qa + verify-work | **dev** / **qa** |
314
+ | **`ship`** | release + refresh-context | **release** / **curator** |
315
+
316
+ **`AUTO_IMPLEMENTATION_LOOP`** preserved inside **`build+verify`**. QA merges AC checklist + UAT
317
+ in one spawn.
318
+
319
+ ### `mega_quick` routing (US-0096 / DEC-0082)
320
+
321
+ When `DELIVERY_MODE=mega_quick` and eligible, materialize **`["quick"]`** only. Ineligible →
322
+ **`DELIVERY_MODE_INELIGIBLE`** + specific **`MEGA_QUICK_*`** code:
323
+
324
+ | Code | Rule |
325
+ |------|------|
326
+ | **`MEGA_QUICK_BUG_SEGMENT`** | Story-only (no bug segment) |
327
+ | **`MEGA_QUICK_AC_TOO_BROAD`** | AC ≤ 3 |
328
+ | **`MEGA_QUICK_ARCHITECTURE_REQUIRED`** | No companion DEC required |
329
+ | **`MEGA_QUICK_SPRINT_EXISTS`** | No active `sprints/Sxxxx/` for story |
330
+ | **`MEGA_QUICK_STORY_OVERRIDE`** | Row `delivery_mode` consistent when routing enabled |
331
+ | **`MEGA_QUICK_MULTI_COMPONENT`** | Single component or `COMPONENT_SCOPE_MODE=0` |
332
+ | **`MEGA_QUICK_GATE_ESCALATION`** | No elevated gates beyond default `/quick` |
333
+
334
+ Artifacts: **`sprints/quick/Qxxxx/task.json`** + **`summary.md`**. Second spawn on test
335
+ failure only. Closure requires **`acceptance_met: true`** + green tests.
336
+
248
337
  ## Configurable phase selection policy (US-0070 / DEC-0052)
249
338
 
250
339
  Treat **resolved phase plan** as fail-closed schedule from merged scratchpad **before**
@@ -265,6 +354,10 @@ and **`docs/engineering/auto-orchestration-reference.md`**.
265
354
 
266
355
  ## Inputs
267
356
 
357
+ - **Narrow-read (US-0053 / US-0096 Tranche A)**: Start at `docs/engineering/phase-context.md`
358
+ and the story section anchor in vision/architecture/decisions when a heading exists; forbid
359
+ full-file reads when a section heading exists.
360
+
268
361
  Merged scratchpad (**US-0073** / **DEC-0055**), automation flags (`AUTO_*`, `SECURITY_REVIEW`,
269
362
  `TEAM_*`), phase-plan keys `AUTO_PHASE_PLAN`, `AUTO_PHASE_EXCLUDE`, `AUTO_PHASE_INCLUDE`,
270
363
  `AUTO_PHASE_PROFILE`, `AUTO_PHASE_HIGH_RISK_ACK`, product/engineering docs,
@@ -416,8 +509,10 @@ used for resume/materialization failures):
416
509
  `## Continuous multi-phase execution (US-0088)` above). When
417
510
  `AUTO_BACKLOG_DRAIN=1`, repeat the story lifecycle for the next eligible OPEN
418
511
  story, **reloading** scratchpad and **recomputing** the materialized phase
419
- plan at each story boundary. Outer-driver equivalence applies when a single
420
- invocation cannot schedule multiple subagent turns (**AC-1 Option B**).
512
+ plan at each story boundary.
513
+ Outer-driver equivalence applies when **`NATIVE_CHAIN_UNAVAILABLE`**, headless/CI, or
514
+ `--invoke-cmd` prevents in-chat scheduling (**AC-1 Option B** — **fallback only**;
515
+ **native chain supersedes Option B** in IDE **`full_autonomy`**).
421
516
  `stop_reason`: `completed|decision_gate|missing_input|pause_request|loop_max|error|blocked`.
422
517
  6. Isolation evidence verification at each boundary (**reference** step 11a).
423
518
  7. At each phase boundary, verify strict runtime attestation tuple exists
@@ -13,6 +13,10 @@ description: "its-magic discovery: collect design/UX inspiration and scope updat
13
13
  subagent/chat.
14
14
 
15
15
  ## Inputs
16
+
17
+ - **Narrow-read (US-0053 / US-0096 Tranche A)**: Start at docs/engineering/phase-context.md
18
+ and the story section anchor in vision/architecture/decisions when a heading exists; forbid
19
+ full-file reads when a section heading exists.
16
20
  - Design/UX references
17
21
  - Competitive/market notes
18
22