its-magic 0.1.2-43 → 0.1.2-49

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 (27) hide show
  1. package/README.md +119 -0
  2. package/package.json +1 -1
  3. package/scripts/check_intake_template_parity.py +90 -2
  4. package/scripts/guard_installer_publish.py +19 -1
  5. package/template/.cursor/commands/architecture.md +16 -6
  6. package/template/.cursor/commands/auto.md +42 -0
  7. package/template/.cursor/commands/execute.md +49 -0
  8. package/template/.cursor/commands/qa.md +37 -0
  9. package/template/.cursor/commands/release.md +11 -0
  10. package/template/.cursor/commands/verify-work.md +43 -1
  11. package/template/.cursor/rules/caveman.mdc +43 -0
  12. package/template/.cursor/scratchpad.local.example.md +39 -4
  13. package/template/.cursor/scratchpad.md +34 -4
  14. package/template/.github/workflows/ci.yml +4 -114
  15. package/template/README.md +113 -0
  16. package/template/docs/engineering/auto-orchestration-reference.md +62 -1
  17. package/template/docs/engineering/context/installer-owned-paths.manifest +12 -0
  18. package/template/docs/engineering/context/readme-section-affinity.json +30 -0
  19. package/template/docs/engineering/runbook.md +151 -5
  20. package/template/scripts/auto_outer_driver.py +521 -0
  21. package/template/scripts/check_downstream_ci_guard.py +67 -0
  22. package/template/scripts/check_intake_template_parity.py +90 -2
  23. package/template/scripts/downstream_ci_guard_lib.py +222 -0
  24. package/template/scripts/enforce-triad-hot-surface.py +135 -8
  25. package/template/scripts/readme_feature_coverage_lib.py +608 -0
  26. package/template/scripts/uat_probe_lib.py +868 -0
  27. package/template/scripts/validate_readme_feature_coverage.py +140 -0
@@ -27,7 +27,15 @@ DONE=0
27
27
  MAGIC_BENCH_SESSION=
28
28
  #
29
29
  # Automation
30
- # - AUTO_FLOW_MODE: manual|auto_until_decision
30
+ # - AUTO_FLOW_MODE: manual|auto_until_decision|full_autonomy
31
+ # - manual: operator invokes phases explicitly (default when unset)
32
+ # - auto_until_decision: continuous until decision_gate
33
+ # - full_autonomy: outer-driver loop + relaxable transient stops + drain-without-pause (default-off; US-0092 / DEC-0078)
34
+ # - opt-in enablement: AUTO_FLOW_MODE=full_autonomy
35
+ # - AUTO_BLOCK_RETRY_MAX: integer >= 1 (default 3; per (story_id, stop_reason) recoverable retries before BLOCK_RETRY_CAP_EXHAUSTED)
36
+ # - AUTO_OUTER_DRIVER_TIMEOUT_SECONDS: optional integer; unset = no hook timeout (timeout -> exit 124)
37
+ # Interaction (full_autonomy): PHASE_MODE/PERMISSION_MODE orthogonal; AUTO_BACKLOG_DRAIN/AUTO_BUG_QUEUE per US-0044/US-0087;
38
+ # AUTO_LOOP_MAX_CYCLES/AUTO_BACKLOG_MAX_STORIES hard caps; TOKEN_PROFILE = context breadth / token cost only (DEC-0062 / US-0092).
31
39
  # - PHASE_MODE: interactive|auto
32
40
  # - PERMISSION_MODE: interactive|auto
33
41
  # - AUTO_INSTALL_DEPS: 0|1
@@ -70,6 +78,7 @@ AUTO_BUG_QUEUE=0
70
78
  AUTO_BUG_TARGET=
71
79
  AUTO_BUG_MAX_ITEMS=0
72
80
  AUTO_BUG_ON_BLOCK=stop
81
+ AUTO_BLOCK_RETRY_MAX=3
73
82
  #
74
83
  # `/auto` phase role policy (US-0069 / DEC-0051)
75
84
  # - AUTO_ROLE_RESEARCH: po|tech-lead (empty -> default tech-lead)
@@ -146,9 +155,10 @@ AUTO_PUSH_BRANCH_ALLOWLIST=
146
155
  # - INTAKE_WORK_ITEM_KIND: story|bug (default story; bug selects BUG-#### path per DEC-0061 / US-0079)
147
156
  # - ID_NAMESPACE_BOOTSTRAP: 0|1 (optional fresh-project ID bootstrap mode; when 1, allow first IDs to start at 0001 only if deterministic freshness checks pass)
148
157
  # - TOKEN_PROFILE: lean|balanced|full (tiered token-cost profile defaults)
149
- # - lean: lowest-token default profile; reduce non-critical automation/research intensity
150
- # - balanced: default profile; preserves current behavior with moderate overhead
151
- # - full: highest-context profile; maximize context breadth/autonomy
158
+ # TOKEN_PROFILE controls context breadth / token cost only (DEC-0062 / US-0092).
159
+ # - lean: lowest context breadth / token cost defaults
160
+ # - balanced: default profile; moderate context breadth
161
+ # - full: highest context breadth / token cost for complex work
152
162
  # - STATE_HOT_MAX_LINES: integer >= 200 (hot-surface soft cap trigger for
153
163
  # archival rollover checks)
154
164
  # - STATE_HOT_MAX_CHECKPOINTS: integer >= 10 (max recent checkpoints to retain
@@ -224,6 +234,31 @@ USER_GUIDE_MODE=0
224
234
  DOC_AUDIENCE_PROFILE=both
225
235
  DOC_DETAIL_LEVEL=balanced
226
236
 
237
+ # README feature coverage gate (US-0091 / DEC-0074)
238
+ # - README_FEATURE_COVERAGE_ENFORCE: 0|1 (default 0 until backfill + --report green)
239
+ README_FEATURE_COVERAGE_ENFORCE=1
240
+
241
+ #
242
+ # ## Browser UAT self-test (US-0093 / DEC-0079)
243
+ # Two-tier browser probe: stdlib lib classifies + agent owns Cursor browser MCP (BUG-0006).
244
+ # - UAT_BROWSER_PROBE_MODE: cursor|http_fallback|playwright_fallback (default cursor)
245
+ # - cursor: agent executes MCP sequence; lib emits plan + UAT_PROBE_UNRESOLVED until evidence
246
+ # - http_fallback: stdlib HTTP GET (CI recipe — set this in CI)
247
+ # - playwright_fallback: subprocess Playwright primary; HTTP fallback when missing
248
+ # - UAT_BROWSER_FALLBACK_CHAIN: 0|1 (default 1; enable HTTP → Playwright after MCP unavailable)
249
+ # - UAT_PROCESS_HEALTH_POLL_SECONDS: positive int (default 60; process_health readiness cap)
250
+ # - UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS: positive int (default 2; poll interval)
251
+ # - DEV_SERVER_PORT: int (optional; URL/port inference override)
252
+ # - DEV_SERVER_COMMAND: shell command (optional; process_health startup override)
253
+ # Interaction: orthogonal to PERMISSION_MODE and Cursor browser approval modes (manual / allow-list /
254
+ # auto-run per vendor docs). Health URLs from docs/engineering/runtime-connectivity.md first.
255
+ UAT_BROWSER_PROBE_MODE=cursor
256
+ UAT_BROWSER_FALLBACK_CHAIN=1
257
+ UAT_PROCESS_HEALTH_POLL_SECONDS=60
258
+ UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS=2
259
+ DEV_SERVER_PORT=
260
+ DEV_SERVER_COMMAND=
261
+
227
262
  #
228
263
  # ## Caveman mode (US-0089)
229
264
  # Response-side voice toggle. Default off. Composition is orthogonal to
@@ -27,7 +27,15 @@ DONE=0
27
27
  MAGIC_BENCH_SESSION=
28
28
  #
29
29
  # Automation
30
- # - AUTO_FLOW_MODE: manual|auto_until_decision
30
+ # - AUTO_FLOW_MODE: manual|auto_until_decision|full_autonomy
31
+ # - manual: operator invokes phases explicitly (default when unset)
32
+ # - auto_until_decision: continuous until decision_gate
33
+ # - full_autonomy: outer-driver loop + relaxable transient stops + drain-without-pause (default-off; US-0092 / DEC-0078)
34
+ # - opt-in enablement: AUTO_FLOW_MODE=full_autonomy
35
+ # - AUTO_BLOCK_RETRY_MAX: integer >= 1 (default 3; per (story_id, stop_reason) recoverable retries before BLOCK_RETRY_CAP_EXHAUSTED)
36
+ # - AUTO_OUTER_DRIVER_TIMEOUT_SECONDS: optional integer; unset = no hook timeout (timeout -> exit 124)
37
+ # Interaction (full_autonomy): PHASE_MODE/PERMISSION_MODE orthogonal; AUTO_BACKLOG_DRAIN/AUTO_BUG_QUEUE per US-0044/US-0087;
38
+ # AUTO_LOOP_MAX_CYCLES/AUTO_BACKLOG_MAX_STORIES hard caps; TOKEN_PROFILE = context breadth / token cost only (DEC-0062 / US-0092).
31
39
  # - PHASE_MODE: interactive|auto
32
40
  # - PERMISSION_MODE: interactive|auto
33
41
  # - AUTO_INSTALL_DEPS: 0|1
@@ -70,6 +78,7 @@ AUTO_BUG_QUEUE=0
70
78
  AUTO_BUG_TARGET=
71
79
  AUTO_BUG_MAX_ITEMS=0
72
80
  AUTO_BUG_ON_BLOCK=stop
81
+ AUTO_BLOCK_RETRY_MAX=3
73
82
  #
74
83
  # `/auto` phase role policy (US-0069 / DEC-0051)
75
84
  # - AUTO_ROLE_RESEARCH: po|tech-lead (empty -> default tech-lead)
@@ -152,9 +161,10 @@ AUTO_PUSH_BRANCH_ALLOWLIST=main
152
161
  # - INTAKE_WORK_ITEM_KIND: story|bug (default story; bug selects BUG-#### path per DEC-0061 / US-0079)
153
162
  # - ID_NAMESPACE_BOOTSTRAP: 0|1 (optional fresh-project ID bootstrap mode; when 1, allow first IDs to start at 0001 only if deterministic freshness checks pass)
154
163
  # - TOKEN_PROFILE: lean|balanced|full (tiered token-cost profile defaults)
155
- # - lean: lowest-token default profile; reduce non-critical automation/research intensity
156
- # - balanced: default profile; preserves current behavior with moderate overhead
157
- # - full: highest-context profile; maximize context breadth/autonomy
164
+ # TOKEN_PROFILE controls context breadth / token cost only (DEC-0062 / US-0092).
165
+ # - lean: lowest context breadth / token cost defaults
166
+ # - balanced: default profile; moderate context breadth
167
+ # - full: highest context breadth / token cost for complex work
158
168
  # - STATE_HOT_MAX_LINES: integer >= 200 (hot-surface soft cap trigger for
159
169
  # archival rollover checks)
160
170
  # - STATE_HOT_MAX_CHECKPOINTS: integer >= 10 (max recent checkpoints to retain
@@ -230,3 +240,23 @@ USER_GUIDE_MODE=0
230
240
  DOC_AUDIENCE_PROFILE=both
231
241
  DOC_DETAIL_LEVEL=balanced
232
242
 
243
+ #
244
+ # ## Browser UAT self-test (US-0093 / DEC-0079)
245
+ # Two-tier browser probe: stdlib lib classifies + agent owns Cursor browser MCP (BUG-0006).
246
+ # - UAT_BROWSER_PROBE_MODE: cursor|http_fallback|playwright_fallback (default cursor)
247
+ # - cursor: agent executes MCP sequence; lib emits plan + UAT_PROBE_UNRESOLVED until evidence
248
+ # - http_fallback: stdlib HTTP GET (CI recipe — set this in CI)
249
+ # - playwright_fallback: subprocess Playwright primary; HTTP fallback when missing
250
+ # - UAT_BROWSER_FALLBACK_CHAIN: 0|1 (default 1; enable HTTP → Playwright after MCP unavailable)
251
+ # - UAT_PROCESS_HEALTH_POLL_SECONDS: positive int (default 60; process_health readiness cap)
252
+ # - UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS: positive int (default 2; poll interval)
253
+ # - DEV_SERVER_PORT: int (optional; URL/port inference override)
254
+ # - DEV_SERVER_COMMAND: shell command (optional; process_health startup override)
255
+ # Interaction: orthogonal to PERMISSION_MODE and Cursor browser approval modes (manual / allow-list /
256
+ # auto-run per vendor docs). Health URLs from docs/engineering/runtime-connectivity.md first.
257
+ UAT_BROWSER_PROBE_MODE=cursor
258
+ UAT_BROWSER_FALLBACK_CHAIN=1
259
+ UAT_PROCESS_HEALTH_POLL_SECONDS=60
260
+ UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS=2
261
+ DEV_SERVER_PORT=
262
+ DEV_SERVER_COMMAND=
@@ -79,12 +79,15 @@ jobs:
79
79
 
80
80
  - name: No commands set
81
81
  if: ${{ steps.runbook.outputs.TEST_COMMAND == '' && steps.runbook.outputs.LINT_COMMAND == '' && steps.runbook.outputs.TYPECHECK_COMMAND == '' }}
82
- run: echo "No runbook commands set."
82
+ run: echo "no tests configured yet"
83
83
 
84
84
  - name: Summarise results
85
85
  if: always()
86
86
  run: |
87
87
  echo "### CI Results" >> "$GITHUB_STEP_SUMMARY"
88
+ if [ "${{ steps.runbook.outputs.TEST_COMMAND }}" = "" ] && [ "${{ steps.runbook.outputs.LINT_COMMAND }}" = "" ] && [ "${{ steps.runbook.outputs.TYPECHECK_COMMAND }}" = "" ]; then
89
+ echo "**no tests configured yet**" >> "$GITHUB_STEP_SUMMARY"
90
+ fi
88
91
  echo "| Step | Result |" >> "$GITHUB_STEP_SUMMARY"
89
92
  echo "|------|--------|" >> "$GITHUB_STEP_SUMMARY"
90
93
  echo "| Test | ${{ steps.test.outcome || 'skipped' }} |" >> "$GITHUB_STEP_SUMMARY"
@@ -189,116 +192,3 @@ jobs:
189
192
  echo " 2. Run: bash scripts/validate-and-push.sh"
190
193
  echo " (or: powershell scripts/validate-and-push.ps1)"
191
194
  echo " 3. Fix failures, the script loops until green, then pushes."
192
-
193
- # ── npm package test (Ubuntu) ──────────────────────────────────────
194
- npm-test:
195
- runs-on: ubuntu-latest
196
- steps:
197
- - uses: actions/checkout@v4
198
- - uses: actions/setup-node@v4
199
- with:
200
- node-version: "20"
201
- - name: npm pack
202
- run: |
203
- npm pack
204
- TGZ=$(ls -t its-magic-*.tgz 2>/dev/null | head -1)
205
- echo "TGZ=$TGZ" >> "$GITHUB_ENV"
206
- echo "Package created: $TGZ"
207
- - name: Install globally from tarball
208
- run: npm install -g "$TGZ"
209
- - name: Smoke test - help
210
- run: its-magic --help
211
- - name: Smoke test - install into temp dir
212
- run: |
213
- TEST_DIR=$(mktemp -d)
214
- its-magic --target "$TEST_DIR" --mode missing --create
215
- FAIL=0
216
- for f in \
217
- ".cursor/commands/intake.md" \
218
- ".cursor/rules/core.mdc" \
219
- ".cursor/hooks.json" \
220
- ".cursor/scratchpad.md" \
221
- "docs/engineering/runbook.md"; do
222
- if [ -f "$TEST_DIR/$f" ]; then
223
- echo "PASS: $f"
224
- else
225
- echo "FAIL: $f"
226
- FAIL=1
227
- fi
228
- done
229
- rm -rf "$TEST_DIR"
230
- exit $FAIL
231
- - name: Cleanup
232
- if: always()
233
- run: npm uninstall -g its-magic || true
234
-
235
- # ── Homebrew formula test (macOS) ──────────────────────────────────
236
- brew-test:
237
- runs-on: macos-latest
238
- steps:
239
- - uses: actions/checkout@v4
240
- - name: Validate formula syntax
241
- run: brew style packaging/homebrew/its-magic.rb || true
242
- - name: Test installer.sh
243
- run: |
244
- TEST_DIR=$(mktemp -d)
245
- sh installer.sh --target "$TEST_DIR" --mode missing --create
246
- FAIL=0
247
- for f in \
248
- ".cursor/commands/intake.md" \
249
- ".cursor/rules/core.mdc" \
250
- ".cursor/hooks.json" \
251
- ".cursor/scratchpad.md" \
252
- "docs/engineering/runbook.md"; do
253
- if [ -f "$TEST_DIR/$f" ]; then
254
- echo "PASS: $f"
255
- else
256
- echo "FAIL: $f"
257
- FAIL=1
258
- fi
259
- done
260
- rm -rf "$TEST_DIR"
261
- exit $FAIL
262
-
263
- # ── Chocolatey package test (Windows) ──────────────────────────────
264
- choco-test:
265
- runs-on: windows-latest
266
- steps:
267
- - uses: actions/checkout@v4
268
- - name: Validate choco pack
269
- shell: powershell
270
- run: |
271
- Push-Location packaging/chocolatey
272
- choco pack
273
- $nupkg = Get-ChildItem -Filter "*.nupkg" | Select-Object -First 1
274
- if ($nupkg) {
275
- Write-Host "PASS: Package created - $($nupkg.Name)"
276
- } else {
277
- Write-Host "FAIL: No .nupkg created"
278
- exit 1
279
- }
280
- Pop-Location
281
- - name: Test installer.ps1
282
- shell: powershell
283
- run: |
284
- $testDir = Join-Path $env:TEMP "its-magic-ci-test"
285
- & .\installer.ps1 -Target $testDir -Mode missing -Create
286
- $fail = 0
287
- $files = @(
288
- ".cursor\commands\intake.md",
289
- ".cursor\rules\core.mdc",
290
- ".cursor\hooks.json",
291
- ".cursor\scratchpad.md",
292
- "docs\engineering\runbook.md"
293
- )
294
- foreach ($f in $files) {
295
- $fp = Join-Path $testDir $f
296
- if (Test-Path $fp) {
297
- Write-Host "PASS: $f"
298
- } else {
299
- Write-Host "FAIL: $f"
300
- $fail = 1
301
- }
302
- }
303
- Remove-Item -Recurse -Force $testDir
304
- exit $fail
@@ -24,6 +24,28 @@ with pause/resume, decision gates, and persistent artifacts.
24
24
  - Built-in benchmarks (live, prompted, headless).
25
25
  - Multiplatform distribution (npm, Chocolatey, Homebrew).
26
26
 
27
+ <!-- readme-feature-coverage-catalog -->
28
+
29
+ ### Feature coverage catalog (US-0091)
30
+
31
+ - `/bin` — POSIX npm installer + Linux remote test targets (WSL / SSH / Docker) (`US-0084`).
32
+ - `/choco` — Configurable Multi-Target Release Publish with Confirmation Gate (`US-0054`).
33
+ - `/devops` — First-Class Bug Issue Workflow (Open/Closed) (`US-0079`).
34
+ - `/engineering` — Agent-Driven Codebase Map Bootstrap (`US-0082`).
35
+ - `/engineering` — Remote Runtime Connectivity Contract for QA/Release/Publish (`US-0064`).
36
+ - `/install` — Template/install payload omits intake gate scripts (`BUG-0001`).
37
+ - `/intake` — Optional Caveman-style input compression (safe file scope) (`US-0090`).
38
+ - `/lint` — CI/CD Workflows (`US-0007`).
39
+ - `/or` — Cursor Caveman mode (scratchpad-configurable terse responses) (`US-0089`).
40
+ - `/push` — Multiplatform Distribution (`US-0009`).
41
+ - `/run-tests` — Baseline Regression Cleanup for Installer and Version Sync Checks (`US-0074`).
42
+ - `/template` — End-to-End Lifecycle QA for `its-magic` Install/Upgrade/Clean (`US-0041`).
43
+ - `/upgrade` — Missing scripts still occur on install modes missing/upgrade (`BUG-0003`).
44
+ - `/usr` — Global Linux install fails: empty `install_include_paths` when manifest is CRLF (`BUG-0008`).
45
+ - `/workdir` — installer.sh fails in shell path with `set: Illegal option -` (`BUG-0004`).
46
+ - `MIGRATION` scratchpad flag — Smart Upgrade Mode (`US-0018`).
47
+ - `US-0016` scratchpad flag — Homebrew Version Sync (`US-0016`).
48
+
27
49
  ## Setup
28
50
 
29
51
  its-magic is an installer you run once per repo. It copies the AI dev team
@@ -1105,6 +1127,68 @@ push / PR ──> checks ──> PASS ──> done
1105
1127
  Auto-fix commits appear as `ci: auto-fix attempt N/3`. After 3 retries the
1106
1128
  workflow stops and points you to `scripts/validate-and-push` for local fixing.
1107
1129
 
1130
+ <!-- readme-feature-coverage-catalog -->
1131
+
1132
+ ### Feature coverage catalog (US-0091)
1133
+
1134
+ - `/acceptance` — Mandatory Intake Question Packs for First and Small Intakes (`US-0068`).
1135
+ - `/ask` — /ask Command: Context-Aware Questions Without Workflow (`US-0020`).
1136
+ - `/ask` — Context Compaction and Tiered Token-Cost Optimization Mode (`US-0053`).
1137
+ - `/auto` — Configurable Auto Phase Selection Policy (`US-0070`).
1138
+ - `/auto` — Continuous `/auto` Backlog-Drain Mode with Fine-Tune Switches (`US-0044`).
1139
+ - `/auto` — Fresh Subagent Context Per Phase and /auto Orchestration (`US-0023`).
1140
+ - `/auto` — Mid-Process `/auto` Continuation with Deterministic Resume Point (`US-0037`).
1141
+ - `/auto` — Strict Phase Role Enforcement in /auto Orchestration (`US-0069`).
1142
+ - `/auto` — Strict Runtime Proof for Per-Phase Subagent Isolation (`US-0056`).
1143
+ - `/auto` — Token-Cost Hardening for Orchestrated Runs (`US-0080`).
1144
+ - `/auto` — `/auto` continuous multi-phase loop + quiet drain (close one-phase-stop gap) (`US-0088`).
1145
+ - `/auto` — `/auto` executes phases without spawning required subagents (`BUG-0006`).
1146
+ - `/auto` — `/auto` explicit bug targeting (fix all OPEN bugs / fix `BUG-####`) (`US-0087`).
1147
+ - `/auto` — `/auto` fails with stale resume target after bug intake (`BUG-0005`).
1148
+ - `/check` — Optional Documentation Pack (Design Concept, CRS, Technical Spec) (`US-0031`).
1149
+ - `/confirmation` — Enforced Interactive Intake Question Evidence (`US-0078`).
1150
+ - `/connectivity` — Release Operator Run/Connect/Verify Hints Contract (`US-0067`).
1151
+ - `/decision` — Optional Fresh-Project ID Namespace Bootstrap (`US-0052`).
1152
+ - `/derived` — Deterministic Status Reconciliation Command (`US-0055`).
1153
+ - `/developer-dense` — Documentation Audience Profiles and Dual README Strategy (`US-0077`).
1154
+ - `/docs` — Installer-Owned `its_magic/` Folder for Framework Metadata (`US-0062`).
1155
+ - `/engineering` — Deterministic Context Slimming and Archive Enforcement Across Core Artifacts (`US-0072`).
1156
+ - `/engineering` — Deterministic State Hot-Surface Rollover and Archive Enforcement (`US-0060`).
1157
+ - `/engineering` — OS-Aware Runbook Command Auto-Bootstrap with Verified Quality Gates (`US-0063`).
1158
+ - `/flag` — Release Gate for Command/Flag Documentation Delta (`US-0030`).
1159
+ - `/intake` — Critical Evaluation in Intake and Architecture (`US-0021`).
1160
+ - `/intake` — Deterministic Intake Runtime Capability Guard and Single-Writer Drift Safety (`US-0059`).
1161
+ - `/intake` — Multi-Repo and Contract Compatibility Observability (`US-0034`).
1162
+ - `/intake` — intake evidence records asked questions that were never asked (`BUG-0007`).
1163
+ - `/integration` — Generated Test Scaffolding and Auto-Run Contract (`US-0066`).
1164
+ - `/managed` — Runtime QA Autopilot for Generated Projects (`US-0065`).
1165
+ - `/new` — First-Intake Full-Plan Coverage and Story-Map Gate (`US-0081`).
1166
+ - `/order` — Deterministic Artifact Ordering and Write Discipline (`US-0058`).
1167
+ - `/phases` — Cross-Phase Artifact Ownership Guard and Deterministic Archive Control (`US-0061`).
1168
+ - `/planning` — User-Visible Internal Metadata Sanitization Guard (`US-0071`).
1169
+ - `/product` — Backlog Reconciliation Gate for Released Sprints (`US-0043`).
1170
+ - `/push` — Phase-Triggered Sync Policy with Guarded Auto-Push (`US-0038`).
1171
+ - `/release` — Enforced Per-Phase Subagent Isolation with Audit Gate (`US-0048`).
1172
+ - `/release` — Legacy DONE-Story Acceptance/Traceability Backfill Guard (`US-0049`).
1173
+ - `/release` — Per-Sprint Release Notes and Release Queue Tracker (`US-0040`).
1174
+ - `/release` — Release Findings Artifact and Post-QA Issue Workflow (`US-0042`).
1175
+ - `/release` — Release Gate Tightening for Check-In Tests and QA/UAT Completion (`US-0039`).
1176
+ - `/remote` — Automation-driven remote execution selection (Docker / SSH / NL container intent) (`US-0086`).
1177
+ - `/remote` — Gitignored `.env` for remote and release connectivity (no AI read) (`US-0085`).
1178
+ - `/repetitive` — Delegable Intake Clarification Without Hard Blocks (`US-0083`).
1179
+ - `/research` — Knowledge Curation & Early Research (`US-0029`).
1180
+ - `/risk` — Intelligent Intake Decomposition and Risk-Aware PO Questioning (`US-0051`).
1181
+ - `/scratchpad` — Executable Scratchpad-Driven Sync and Auto-Push Wiring (`US-0076`).
1182
+ - `/scratchpad` — Scratchpad Delivery Simplification (Example-Only Install Policy) (`US-0073`).
1183
+ - `/scratchpad` — Upgrade Scratchpad Example–First Refresh (Fix Example Drift vs Materialized Baseline) (`US-0075`).
1184
+ - `/scratchpad` — Upgrade-Safe Scratchpad Example Refresh and Parity (`US-0057`).
1185
+ - `/sprint-plan` — Explicit `/sprint-plan --bulk` Mode (`US-0046`).
1186
+ - `/sprint-plan` — Sprint Sizing Rules and Configurable Sprint Planning (`US-0022`).
1187
+ - `/story` — Optional Feature User Guide Generation (`US-0032`).
1188
+ - `/uat` — UAT Artifact Lifecycle and Ownership (`US-0027`).
1189
+ - `SKILL` scratchpad flag — Skill and Templates (`US-0004`).
1190
+ - `US-0001` scratchpad flag — Core Workflow Commands (`US-0001`).
1191
+
1108
1192
  ## Walkthrough examples
1109
1193
 
1110
1194
  ### Example 1: New feature from idea
@@ -1240,6 +1324,35 @@ Reliable pattern:
1240
1324
  - `decisions/`: decision records.
1241
1325
  - `.github/workflows/`: CI/CD templates.
1242
1326
 
1327
+ <!-- readme-feature-coverage-catalog -->
1328
+
1329
+ ### Feature coverage catalog (US-0091)
1330
+
1331
+ - `/evidence` — Backlog-to-Sprint Traceability Contract (`US-0025`).
1332
+ - `/exit` — Milestone Lifecycle Definition and Exit Criteria (`US-0026`).
1333
+ - `/field` — Official Remote Config Template, Docs, and Fail-Fast Validation (`US-0036`).
1334
+ - `/installer` — Runbook Completion (`US-0015`).
1335
+ - `/intake` — Component-Scoped Execution Mode with Protection Guards (`US-0035`).
1336
+ - `/intake` — Configurable Guided Intake Behavior (`US-0033`).
1337
+ - `/map-codebase` — map-codebase does not write codebase-map in fresh repos (`BUG-0002`).
1338
+ - `/memory-audit` — Memory Drift Audit Command (`US-0024`).
1339
+ - `/product` — Canonical Story Status Source + Global Drift Guard (`US-0045`).
1340
+ - `/product` — Clean Install Hygiene and Complete Clean-Repo Coverage (`US-0050`).
1341
+ - `/security-review` — Security & Compliance Review Agent (`US-0028`).
1342
+ - `/skip` — Explicit Bulk Execute Orchestration Mode (`US-0047`).
1343
+ - `/strings` — Clean Placeholder Content from Templates and Active Files (`US-0019`).
1344
+ - `/write` — Artifact Templates and Starter Docs (`US-0006`).
1345
+ - `AUTO_FLOW_MODE` scratchpad flag — Automation Modes (`US-0011`).
1346
+ - `README` scratchpad flag — Voice Input Documentation (`US-0010`).
1347
+ - `TEAM_MODE` scratchpad flag — Team Mode (`US-0013`).
1348
+ - `US-0002` scratchpad flag — AI Behavior Rules (`US-0002`).
1349
+ - `US-0003` scratchpad flag — Subagent Definitions (`US-0003`).
1350
+ - `US-0005` scratchpad flag — Hook System (`US-0005`).
1351
+ - `US-0008` scratchpad flag — CLI Installer (`US-0008`).
1352
+ - `US-0012` scratchpad flag — Benchmark Suite (`US-0012`).
1353
+ - `US-0014` scratchpad flag — Quality Chain (3-Layer) (`US-0014`).
1354
+ - `US-0017` scratchpad flag — Template Drift Guard (`US-0017`).
1355
+
1243
1356
  ## Developer and release deep-dive
1244
1357
 
1245
1358
  ### CI/CD via runbook
@@ -772,12 +772,73 @@ script or manual re-invocation with `start-from` / refreshed `resume_brief`) is
772
772
  `stop_reason` vocabulary: `completed`, `decision_gate`, `missing_input`,
773
773
  `pause_request`, `loop_max`, `error`, `blocked`.
774
774
 
775
+ ### Full-autonomy stop matrix (US-0092)
776
+
777
+ **`AUTO_FLOW_MODE=full_autonomy`** enables **`scripts/auto_outer_driver.py`**
778
+ (spawn-only outer driver). **TOKEN_PROFILE controls context breadth / token cost only**
779
+ — never automation level, drain, or outer-driver invocation.
780
+
781
+ | Condition | US-0088 | `full_autonomy` delta | Operator notify |
782
+ |-----------|---------|------------------------|-----------------|
783
+ | Next phase, no hard stop | Continue inner `/auto` | Outer driver **re-invokes** when Cursor ends turn early | Quiet OK when `AUTO_QUIET=1` |
784
+ | `decision_gate` | Hard stop | **No change — hard** | Always |
785
+ | Unrecoverable `error` | Hard stop | **No change — hard** | Always |
786
+ | Critical `missing_input` | Hard stop | **No change — hard** | Always |
787
+ | Transient `missing_input` (recoverable) | Hard stop | **Relaxable** — bounded block-retry | Notify on cap |
788
+ | `pause_request` | Hard stop | **No change — hard** | Always |
789
+ | `loop_max` | Hard stop | **No change — hard** | Always |
790
+ | `blocked` — transient/sync | Hard stop | **Relaxable** when recoverable | Notify on cap |
791
+ | `blocked` — isolation/strict-proof/ownership | Hard stop | **No change — hard** | Always |
792
+ | UAT/QA fail | Hard stop (operator) | **Relaxable** when `AUTO_IMPLEMENTATION_LOOP=1` | Notify on cap |
793
+ | Segment complete + `AUTO_BACKLOG_DRAIN=1` | Advance (may need manual re-`/auto`) | **Drain-advance-without-pause** — immediate next item | Segment handoff notify |
794
+ | `BACKLOG_MAX_STORIES_REACHED` | Hard stop | **No change — hard** | Always |
795
+ | `AUTO_SCHEDULER_CONFLICT` | Hard stop | **No change — hard** | Always |
796
+ | `RELEASE_PUBLISH_MODE=auto` | Explicit opt-in | **No change — hard default-off** | Always on publish |
797
+ | Security deny (`.env`, intake mutation) | Hard deny | **No change — hard** | Always |
798
+
799
+ **Drain-advance-without-pause**: outer driver schedules next OPEN story/bug immediately;
800
+ paired **`resume_brief`** + **`state.md`** refresh per **DEC-0069** at every boundary.
801
+
802
+ ### Block-retry ledger + cap interaction (US-0092)
803
+
804
+ Append-only **`handoffs/auto_block_retry/<orchestrator_run_id>.jsonl`** — names-only;
805
+ no secrets. Cap interaction:
806
+
807
+ | Cap | Scope |
808
+ |-----|-------|
809
+ | `AUTO_LOOP_MAX_CYCLES` | Outer-driver `/auto` invocations (incl. drain advances) |
810
+ | `AUTO_IMPLEMENTATION_LOOP` | Inner `execute`↔`qa`↔`verify-work` when `1` |
811
+ | `AUTO_BLOCK_RETRY_MAX` | Per `(story_id, stop_reason)` recoverable retries |
812
+ | `AUTO_BACKLOG_MAX_STORIES` | Drain breadth — outer driver exit **4** |
813
+
814
+ Cap exhaustion → exit **6** `BLOCK_RETRY_CAP_EXHAUSTED`. Ordering: outer driver checks
815
+ `AUTO_LOOP_MAX_CYCLES` first; orchestrator checks `AUTO_IMPLEMENTATION_LOOP` +
816
+ `AUTO_BLOCK_RETRY_MAX` before scheduling remediation.
817
+
818
+ ### Browser UAT self-test (US-0093)
819
+
820
+ Two-tier browser UAT: **`scripts/uat_probe_lib.py`** classifies and completes subprocess probes;
821
+ phase subagents (**`/verify-work`**, **`/qa`**, **`/execute`**) own Cursor browser MCP when
822
+ **`UAT_BROWSER_PROBE_MODE=cursor`** (default). Lib **never** invokes browser MCP (**BUG-0006**).
823
+
824
+ | Key | Role |
825
+ |-----|------|
826
+ | `UAT_BROWSER_PROBE_MODE` | `cursor` \| `http_fallback` \| `playwright_fallback` |
827
+ | `UAT_BROWSER_FALLBACK_CHAIN` | HTTP → Playwright after **`UAT_BROWSER_UNAVAILABLE`** |
828
+ | `UAT_PROCESS_HEALTH_POLL_SECONDS` / `UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS` | `process_health` readiness |
829
+ | `DEV_SERVER_PORT` / `DEV_SERVER_COMMAND` | Dev-server inference overrides |
830
+
831
+ CI: set **`UAT_BROWSER_PROBE_MODE=http_fallback`**. Evidence:
832
+ **`sprints/Sxxxx/evidence/browser/`** + **`browser_evidence_refs`** in **`uat.json`**.
833
+ Validate: **`python scripts/uat_probe_lib.py --merge-result <fragment.json>`**.
834
+ Manual override: **`@browser`** in Agent panel. Orthogonal to **`PERMISSION_MODE`** and browser
835
+ approval modes.
775
836
  ### `AUTO_QUIET` vs `TOKEN_PROFILE` (US-0088 / AC-2)
776
837
 
777
838
  | Key | Values | Role |
778
839
  |-----|--------|------|
779
840
  | `AUTO_QUIET` | `0` \| `1` (default `0`) | `1` = suppress routine per-phase success chatter; must **not** suppress `decision_gate`, errors, pause, `loop_max`, `blocked`, or missing inputs. |
780
- | `TOKEN_PROFILE` | `lean` \| `balanced` \| `full` | Unchanged — **DEC-0035** / **US-0080**; **orthogonal** to `AUTO_QUIET`. |
841
+ | `TOKEN_PROFILE` | `lean` \| `balanced` \| `full` | **TOKEN_PROFILE controls context breadth / token cost only** — **DEC-0035** / **US-0080** / **US-0092**; **orthogonal** to `AUTO_QUIET`, drain, and outer-driver invocation. |
781
842
 
782
843
  ### `TOKEN_PROFILE` × `CAVEMAN_MODE` non-substitution (US-0089 / DEC-0072 §1)
783
844
 
@@ -32,6 +32,12 @@ scripts/remote_config_summary.py
32
32
  scripts/guard_installer_publish.py
33
33
  scripts/enforce-triad-hot-surface.py
34
34
  scripts/caveman_compress_input.py
35
+ scripts/readme_feature_coverage_lib.py
36
+ scripts/validate_readme_feature_coverage.py
37
+ scripts/check_downstream_ci_guard.py
38
+ scripts/downstream_ci_guard_lib.py
39
+ scripts/auto_outer_driver.py
40
+ scripts/uat_probe_lib.py
35
41
  .github/workflows
36
42
  README.md
37
43
  its_magic
@@ -59,6 +65,12 @@ scripts/remote_config_summary.py
59
65
  scripts/guard_installer_publish.py
60
66
  scripts/enforce-triad-hot-surface.py
61
67
  scripts/caveman_compress_input.py
68
+ scripts/readme_feature_coverage_lib.py
69
+ scripts/validate_readme_feature_coverage.py
70
+ scripts/check_downstream_ci_guard.py
71
+ scripts/downstream_ci_guard_lib.py
72
+ scripts/auto_outer_driver.py
73
+ scripts/uat_probe_lib.py
62
74
  .github/workflows/ci.yml
63
75
  .github/workflows/deploy.yml
64
76
  its_magic
@@ -0,0 +1,30 @@
1
+ {
2
+ "affinity_version": 1,
3
+ "rules": [
4
+ {
5
+ "dev_h2": "Workflow",
6
+ "root_h2": "Commands and workflow",
7
+ "tag": "slash_command"
8
+ },
9
+ {
10
+ "dev_h2": "Quality gates",
11
+ "root_h2": "Other useful capabilities",
12
+ "tag": "scratchpad_mode"
13
+ },
14
+ {
15
+ "dev_h2": "Architecture notes",
16
+ "root_h2": "Features",
17
+ "tag": "distribution"
18
+ },
19
+ {
20
+ "dev_h2": "Quality gates",
21
+ "root_h2": "Commands and workflow",
22
+ "tag": "release_gate"
23
+ },
24
+ {
25
+ "dev_h2": "Engineering decisions",
26
+ "root_h2": "Other useful capabilities",
27
+ "tag": "governance"
28
+ }
29
+ ]
30
+ }