its-magic 0.1.3-2 → 0.1.3-4

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.
@@ -1,378 +1,637 @@
1
- # its-magic scratchpad (framework default catalog Model B / DEC-0055)
2
- #
3
- # Copy this file to `.cursor/scratchpad.local.md` for personal overrides (gitignored).
4
- # Merge precedence: local > materialized `.cursor/scratchpad.md` > this example
5
- # (installers materialize the baseline from template when missing).
6
- #
7
- # Core behavior
8
- # - MAGIC_CONTEXT_STRICT: 0|1 (require context refresh after code changes)
9
- # - LOOP_UNTIL_GREEN: 0|1 (optional test loop)
10
- # - RUN_TESTS_ON_EDIT: 0|1 (run tests after edits)
11
- # - AUTO_IMPLEMENTATION_LOOP: 0|1 (auto cycle execute->qa->execute)
12
- # - AUTO_LOOP_MAX_CYCLES: integer >= 1 (safety guard)
13
- # - AUTO_PAUSE_REQUEST: 0|1 (request graceful stop at next safe boundary)
14
- # - AUTO_PAUSE_POLICY: after_task|after_phase (safe stop boundary)
15
- # - DONE: 0|1 (stop hook loops)
16
- MAGIC_CONTEXT_STRICT=1
17
- LOOP_UNTIL_GREEN=0
18
- RUN_TESTS_ON_EDIT=0
19
- AUTO_IMPLEMENTATION_LOOP=0
20
- AUTO_LOOP_MAX_CYCLES=5
21
- AUTO_PAUSE_REQUEST=0
22
- AUTO_PAUSE_POLICY=after_phase
23
- DONE=0
24
- #
25
- # Benchmarking
26
- # - MAGIC_BENCH_SESSION: free-form id for live benchmark logging
27
- MAGIC_BENCH_SESSION=
28
- #
29
- # Automation
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).
39
- # - PHASE_MODE: interactive|auto
40
- # - PERMISSION_MODE: interactive|auto
41
- # - AUTO_INSTALL_DEPS: 0|1
42
- # - AUTO_RELEASE_NOTES: 0|1
43
- # - AUTO_BACKLOG_DRAIN: 0|1 (continue across multiple stories when enabled)
44
- # - AUTO_BACKLOG_MAX_STORIES: integer >= 1 (max stories per auto run when drain enabled)
45
- # - AUTO_BACKLOG_ON_BLOCK: stop|skip (behavior when a story blocks)
46
- # - AUTO_STORY_SELECTION: priority_then_backlog_order
47
- # - AUTO_EXECUTE_BULK: 0|1 (explicit bulk execute orchestration mode)
48
- # - AUTO_EXECUTE_MAX_ITEMS: integer >= 1 (max planned items per bulk execute run)
49
- # - AUTO_EXECUTE_ON_BLOCK: stop|skip (behavior when a planned item blocks)
50
- # - AUTO_EXECUTE_SELECTION: planned_then_priority
51
- # - AUTO_TEAM_SCOPE_ENFORCE: 0|1 (when TEAM_MODE=1, enforce TEAM_MEMBER + ACTIVE_TASK_IDS)
52
- # Optional bug-queue mode (US-0087) default-off when absent/unset after merge
53
- # - AUTO_BUG_QUEUE: 0|1 (1 = enable bug-targeted /auto; mutex vs AUTO_BACKLOG_DRAIN without bug-target argv)
54
- # - AUTO_BUG_TARGET: all-open|BUG-#### (required when AUTO_BUG_QUEUE=1 unless bug-target= argv supplies target)
55
- # - AUTO_BUG_MAX_ITEMS: non-negative integer (0 or unset = no cap for all-open queue per run)
56
- # - AUTO_BUG_ON_BLOCK: stop|skip (bug segment pause/stop boundary)
57
- # Quiet mode (US-0088) suppress routine per-phase success chatter only
58
- # - AUTO_QUIET: 0|1 (default 0; 1 = quiet routine notifications)
59
- # Non-suppressible: decision_gate, errors, pause, loop_max, blocked, missing inputs.
60
- # Orthogonal to TOKEN_PROFILE (DEC-0035 / US-0080) TOKEN_PROFILE controls
61
- # context breadth / token cost, not notification policy.
62
- AUTO_QUIET=0
63
- AUTO_FLOW_MODE=auto_until_decision
64
- PHASE_MODE=interactive
65
- PERMISSION_MODE=interactive
66
- AUTO_INSTALL_DEPS=0
67
- AUTO_RELEASE_NOTES=1
68
- AUTO_BACKLOG_DRAIN=0
69
- AUTO_BACKLOG_MAX_STORIES=1
70
- AUTO_BACKLOG_ON_BLOCK=stop
71
- AUTO_STORY_SELECTION=priority_then_backlog_order
72
- AUTO_EXECUTE_BULK=0
73
- AUTO_EXECUTE_MAX_ITEMS=1
74
- AUTO_EXECUTE_ON_BLOCK=stop
75
- AUTO_EXECUTE_SELECTION=planned_then_priority
76
- AUTO_TEAM_SCOPE_ENFORCE=1
77
- AUTO_BUG_QUEUE=0
78
- AUTO_BUG_TARGET=
79
- AUTO_BUG_MAX_ITEMS=0
80
- AUTO_BUG_ON_BLOCK=stop
81
- AUTO_BLOCK_RETRY_MAX=3
82
- #
83
- # `/auto` phase role policy (US-0069 / DEC-0051)
84
- # - AUTO_ROLE_RESEARCH: po|tech-lead (empty -> default tech-lead)
85
- # - AUTO_ROLE_PLAN_VERIFY: qa|tech-lead (empty -> default qa)
1
+ # its-magic scratchpad (framework default catalog — Model B / DEC-0055)
2
+ #
3
+ # Copy this file to `.cursor/scratchpad.local.md` for personal overrides (gitignored).
4
+ # Merge precedence: local > materialized `.cursor/scratchpad.md` > this example
5
+ # (installers materialize the baseline from template when missing).
6
+ #
7
+ # Core behavior
8
+ # - MAGIC_CONTEXT_STRICT: 0|1 (require context refresh after code changes)
9
+ # - LOOP_UNTIL_GREEN: 0|1 (optional test loop)
10
+ # - RUN_TESTS_ON_EDIT: 0|1 (run tests after edits)
11
+ # - AUTO_IMPLEMENTATION_LOOP: 0|1 (auto cycle execute->qa->execute)
12
+ # - AUTO_LOOP_MAX_CYCLES: integer >= 1 (safety guard)
13
+ # - AUTO_PAUSE_REQUEST: 0|1 (request graceful stop at next safe boundary)
14
+ # - AUTO_PAUSE_POLICY: after_task|after_phase (safe stop boundary)
15
+ # - DONE: 0|1 (stop hook loops)
16
+ MAGIC_CONTEXT_STRICT=1
17
+ LOOP_UNTIL_GREEN=1
18
+ RUN_TESTS_ON_EDIT=1
19
+ AUTO_IMPLEMENTATION_LOOP=1
20
+ AUTO_LOOP_MAX_CYCLES=5
21
+ AUTO_PAUSE_REQUEST=0
22
+ AUTO_PAUSE_POLICY=after_phase
23
+ DONE=0
24
+ #
25
+ # Benchmarking
26
+ # - MAGIC_BENCH_SESSION: free-form id for live benchmark logging
27
+ MAGIC_BENCH_SESSION=
28
+ #
29
+ # Automation
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).
39
+ # - PHASE_MODE: interactive|auto
40
+ # - PERMISSION_MODE: interactive|auto
41
+ # - AUTO_INSTALL_DEPS: 0|1
42
+ # - AUTO_RELEASE_NOTES: 0|1
43
+ # - AUTO_BACKLOG_DRAIN: 0|1 (continue across multiple stories when enabled)
44
+ # - AUTO_BACKLOG_MAX_STORIES: integer >= 1 (max stories per auto run when drain enabled)
45
+ # - AUTO_BACKLOG_ON_BLOCK: stop|skip (behavior when a story blocks)
46
+ # - AUTO_STORY_SELECTION: priority_then_backlog_order
47
+ # - AUTO_EXECUTE_BULK: 0|1 (explicit bulk execute orchestration mode)
48
+ # - AUTO_EXECUTE_MAX_ITEMS: integer >= 1 (max planned items per bulk execute run)
49
+ # - AUTO_EXECUTE_ON_BLOCK: stop|skip (behavior when a planned item blocks)
50
+ # - AUTO_EXECUTE_SELECTION: planned_then_priority
51
+ # - AUTO_TEAM_SCOPE_ENFORCE: 0|1 (when TEAM_MODE=1, enforce TEAM_MEMBER + ACTIVE_TASK_IDS)
52
+ # Optional bug-queue mode (US-0087) — default-off when absent/unset after merge
53
+ # - AUTO_BUG_QUEUE: 0|1 (1 = enable bug-targeted /auto; mutex vs AUTO_BACKLOG_DRAIN without bug-target argv)
54
+ # - AUTO_BUG_TARGET: all-open|BUG-#### (required when AUTO_BUG_QUEUE=1 unless bug-target= argv supplies target)
55
+ # - AUTO_BUG_MAX_ITEMS: non-negative integer (0 or unset = no cap for all-open queue per run)
56
+ # - AUTO_BUG_ON_BLOCK: stop|skip (bug segment pause/stop boundary)
57
+ # Quiet mode (US-0088) — suppress routine per-phase success chatter only
58
+ # - AUTO_QUIET: 0|1 (default 0; 1 = quiet routine notifications)
59
+ # Non-suppressible: decision_gate, errors, pause, loop_max, blocked, missing inputs.
60
+ # Orthogonal to TOKEN_PROFILE (DEC-0035 / US-0080) — TOKEN_PROFILE controls
61
+ # context breadth / token cost, not notification policy.
62
+ AUTO_QUIET=1
63
+ AUTO_FLOW_MODE=full_autonomy
64
+ PHASE_MODE=auto
65
+ PERMISSION_MODE=auto
66
+ AUTO_INSTALL_DEPS=1
67
+ AUTO_RELEASE_NOTES=1
68
+ AUTO_BACKLOG_DRAIN=1
69
+ AUTO_BACKLOG_MAX_STORIES=10
70
+ AUTO_BACKLOG_ON_BLOCK=skip
71
+ AUTO_STORY_SELECTION=priority_then_backlog_order
72
+ AUTO_EXECUTE_BULK=0
73
+ AUTO_EXECUTE_MAX_ITEMS=1
74
+ AUTO_EXECUTE_ON_BLOCK=skip
75
+ AUTO_EXECUTE_SELECTION=planned_then_priority
76
+ AUTO_TEAM_SCOPE_ENFORCE=1
77
+ AUTO_BUG_QUEUE=0
78
+ AUTO_BUG_TARGET=
79
+ AUTO_BUG_MAX_ITEMS=0
80
+ AUTO_BUG_ON_BLOCK=skip
81
+ AUTO_BLOCK_RETRY_MAX=5
82
+ #
83
+ # `/auto` phase role policy (US-0069 / DEC-0051)
84
+ # - AUTO_ROLE_RESEARCH: po|tech-lead (empty -> default tech-lead)
85
+ # - AUTO_ROLE_PLAN_VERIFY: qa|tech-lead (empty -> default qa)
86
86
  # - AUTO_ROLE_REFRESH_CONTEXT: curator|po (empty -> default curator)
87
- # - AUTO_EXECUTE_ROLE_OVERRIDE: empty or allowed_non_dev_execute (execute default is dev)
88
- # - EXECUTE_OVERRIDE_GOVERNANCE_REF: parseable waiver pointer (DEC-xxxx / state anchor) when override set
89
- AUTO_ROLE_RESEARCH=
90
- AUTO_ROLE_PLAN_VERIFY=
91
- AUTO_ROLE_REFRESH_CONTEXT=
92
- AUTO_EXECUTE_ROLE_OVERRIDE=
93
- EXECUTE_OVERRIDE_GOVERNANCE_REF=
94
- #
95
- # `/auto` phase selection policy (US-0070 / DEC-0052)
96
- # Exactly one active mode after merge; conflict -> PHASE_POLICY_CONFLICT (no plan).
97
- # - AUTO_PHASE_PLAN: unset or full (default full canonical lifecycle)
98
- # - AUTO_PHASE_EXCLUDE: csv of canonical phase ids (exclude from full)
99
- # - AUTO_PHASE_INCLUDE: csv of canonical phase ids (re-sorted to canonical order)
100
- # - AUTO_PHASE_PROFILE: named profile (see /auto + DEC-0052; unknown -> fail closed)
101
- # - AUTO_PHASE_HIGH_RISK_ACK: required token when a high-risk profile demands it
102
- AUTO_PHASE_PLAN=
103
- AUTO_PHASE_EXCLUDE=
104
- AUTO_PHASE_INCLUDE=
105
- AUTO_PHASE_PROFILE=
106
- AUTO_PHASE_HIGH_RISK_ACK=
107
- #
108
- # Team mode
109
- # - TEAM_MODE: 0|1 (enable task/member scoped team workflow)
110
- # - TEAM_MEMBER: short id for current developer
111
- # - ACTIVE_TASK_IDS: comma-separated task ids (for example T-12,T-13)
112
- TEAM_MODE=0
113
- TEAM_MEMBER=
114
- ACTIVE_TASK_IDS=
115
- #
116
- # Sprint planning
117
- # - SPRINT_MAX_TASKS: integer >= 1 (max atomic tasks per sprint, default 12)
118
- # - SPRINT_AUTO_SPLIT: 0|1 (propose splitting when over threshold)
119
- # - SPRINT_BULK_MAX_STORIES: integer >= 1 (candidate stories when /sprint-plan --bulk)
120
- # - SPRINT_BULK_MAX_SPRINTS: integer >= 1 (generated sprints per /sprint-plan --bulk run)
121
- # - SPRINT_BULK_SELECTION: priority_then_backlog_order
122
- SPRINT_MAX_TASKS=12
123
- SPRINT_AUTO_SPLIT=1
124
- SPRINT_BULK_MAX_STORIES=5
125
- SPRINT_BULK_MAX_SPRINTS=3
126
- SPRINT_BULK_SELECTION=priority_then_backlog_order
127
- #
128
- # Remote execution (US-0086 / US-0084 / US-0064)
129
- # - REMOTE_EXECUTION: 0|1
130
- # - REMOTE_CONFIG: path to remote config
131
- # - AUTO_REMOTE_AUTOMATION_PROFILE: off|deterministic_v1 (default off/manual-safe)
132
- # - AUTO_REMOTE_ENVIRONMENT_LABEL: local|docker|ssh (names-only evidence label)
133
- REMOTE_EXECUTION=0
134
- REMOTE_CONFIG=.cursor/remote.json
135
- AUTO_REMOTE_AUTOMATION_PROFILE=off
136
- AUTO_REMOTE_ENVIRONMENT_LABEL=local
137
- #
138
- # Sync policy
139
- # - SYNC_POLICY_MODE: disabled|manual|by_phase|by_milestone|custom_phase_list
140
- # - SYNC_CUSTOM_PHASES: comma-separated canonical phase IDs; only used when
141
- # SYNC_POLICY_MODE=custom_phase_list
142
- # - ALLOW_AUTO_PUSH: 0|1 (default off; explicit opt-in required)
143
- # - AUTO_PUSH_BRANCH_ALLOWLIST: comma-separated branches/patterns eligible for
144
- # auto-push. Protected/default branches are denied unless allowlisted.
145
- SYNC_POLICY_MODE=manual
146
- SYNC_CUSTOM_PHASES=
147
- ALLOW_AUTO_PUSH=0
148
- AUTO_PUSH_BRANCH_ALLOWLIST=
149
- #
150
- # Knowledge curation
151
- # - EARLY_RESEARCH: 0|1 (PO/TL search web during intake/architecture)
152
- # - INTAKE_GUIDED_MODE: 0|1 (guided intake follow-up/options/research behavior)
153
- # - INTAKE_SUBAGENT_FALLBACK: deny|allow (deny by default; when deny, missing
154
- # role-specific intake subagent capability fails fast)
155
- # - INTAKE_WORK_ITEM_KIND: story|bug (default story; bug selects BUG-#### path per DEC-0061 / US-0079)
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)
157
- # - TOKEN_PROFILE: lean|balanced|full (tiered token-cost profile defaults)
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
162
- # - STATE_HOT_MAX_LINES: integer >= 200 (hot-surface soft cap trigger for
163
- # archival rollover checks)
164
- # - STATE_HOT_MAX_CHECKPOINTS: integer >= 10 (max recent checkpoints to retain
165
- # in `state.md` after rollover)
166
- # - PO_TO_TL_HOT_MAX_LINES: integer >= 200 (handoff hot-surface line cap)
167
- # - PO_TO_TL_HOT_MAX_SECTIONS: integer >= 10 (max top-level ## sections retained)
168
- # - ARCH_HOT_MAX_LINES: integer >= 500 (architecture hot-surface line cap)
169
- # - ARCH_HOT_MAX_STORY_SECTIONS: integer >= 20 (max # US-xxxx story sections retained)
170
- # - Manual-override precedence: explicit flag values in this file remain authoritative
171
- # for that flag and override profile defaults.
172
- #
173
- # Delivery mode (US-0096 / DEC-0082)
174
- # - DELIVERY_MODE: standard|ultra_lean|mega_quick (default standard; unset = standard)
175
- # - LEAN_MEMORY_READ: 0|1 (default 1 when pack/active-context paths exist)
176
- # - LEAN_MEMORY_WRITE: 0|1 (default 1 when pack/active-context paths exist)
177
- # - LEAN_COLD_READ_MAX_SECTIONS: int >= 1 (default 4)
178
- # - LEAN_STATE_INDEX_ROWS: int >= 30 (default 80)
179
- # - AUTO_DELIVERY_ROUTING: scratchpad_only|backlog_then_scratchpad (default scratchpad_only)
180
- # Tranche A default hot caps (US-0096): 1000/650/3000 — explicit values override.
181
- DELIVERY_MODE=standard
182
- LEAN_MEMORY_READ=1
183
- LEAN_MEMORY_WRITE=1
184
- LEAN_COLD_READ_MAX_SECTIONS=4
185
- LEAN_STATE_INDEX_ROWS=80
186
- AUTO_DELIVERY_ROUTING=scratchpad_only
187
- EARLY_RESEARCH=1
188
- INTAKE_GUIDED_MODE=1
189
- INTAKE_SUBAGENT_FALLBACK=deny
190
- INTAKE_WORK_ITEM_KIND=story
191
- ID_NAMESPACE_BOOTSTRAP=0
192
- TOKEN_PROFILE=balanced
193
- STATE_HOT_MAX_LINES=1000
194
- STATE_HOT_MAX_CHECKPOINTS=80
195
- PO_TO_TL_HOT_MAX_LINES=650
196
- PO_TO_TL_HOT_MAX_SECTIONS=60
197
- ARCH_HOT_MAX_LINES=3000
198
- ARCH_HOT_MAX_STORY_SECTIONS=120
199
-
200
- # Publish targets (US-0054)
201
- # - RELEASE_PUBLISH_MODE: disabled|confirm|auto
202
- # - disabled: skip post-release publish target execution
203
- # - confirm: require explicit operator confirmation before publish (default)
204
- # - auto: allow publish without confirmation (explicit opt-in)
205
- # - RELEASE_TARGETS_FILE: canonical target config path
206
- # - RELEASE_TARGETS_DEFAULT: comma-separated default target IDs (optional)
207
- RELEASE_PUBLISH_MODE=confirm
208
- RELEASE_TARGETS_FILE=docs/engineering/release-targets.json
209
- RELEASE_TARGETS_DEFAULT=
210
-
211
- #
212
- # Security review
213
- # - SECURITY_REVIEW: 0|1 (enable optional security/compliance review; default off)
214
- # - COMPLIANCE_PROFILES: comma-separated values (GDPR,SOC2,HIPAA,PCI-DSS,ISO27001)
215
- # Empty value means general security best practices only.
216
- # When SECURITY_REVIEW=0, the workflow adds zero security-review overhead.
217
- SECURITY_REVIEW=0
218
- COMPLIANCE_PROFILES=GDPR
219
-
220
- # Cross-repo compatibility observability
221
- # - CROSS_REPO_OBSERVABILITY: 0|1 (enable compatibility visibility and checks)
222
- # - COMPATIBILITY_GATE_ON_CRITICAL: 0|1 (when enabled, critical unresolved
223
- # compatibility findings trigger decision gate before release)
224
- # - COMPATIBILITY_SOURCES: semicolon-separated sources
225
- # (repo=<path|url>,module=<id>,contract=<path|url>,docs=<path|url>)
226
- CROSS_REPO_OBSERVABILITY=0
227
- COMPATIBILITY_GATE_ON_CRITICAL=1
228
- COMPATIBILITY_SOURCES=
229
-
230
- # Component-scoped execution mode
231
- # - COMPONENT_SCOPE_MODE: 0|1 (enable scoped planning/execution guardrails)
232
- # - TARGET_COMPONENTS: comma-separated component IDs intended in scope
233
- COMPONENT_SCOPE_MODE=0
234
- TARGET_COMPONENTS=
235
-
236
- # Optional spec-pack documentation (US-0031)
237
- # - SPEC_PACK_MODE: 0|1 (enable Design Concept, CRS, Technical Spec generation/validation; default 0)
238
- # When 0, intake/architecture/release add no required spec-pack steps.
239
- SPEC_PACK_MODE=0
240
-
241
- # Optional user-guide documentation (US-0032)
242
- # - USER_GUIDE_MODE: 0|1 (enable per-feature user guides at docs/user-guides/US-xxxx.md; default 0)
243
- # When 0, intake/architecture/sprint-plan/execute/qa/release add no required user-guide steps or blocking checks.
244
- USER_GUIDE_MODE=0
245
-
246
- # Documentation audience profile (DEC-0059)
247
- # - DOC_AUDIENCE_PROFILE: user|developer|both (empty -> both during transition)
248
- # - DOC_DETAIL_LEVEL: concise|balanced|technical-deep (empty -> balanced during transition)
249
- DOC_AUDIENCE_PROFILE=both
250
- DOC_DETAIL_LEVEL=balanced
251
-
252
- # README feature coverage gate (US-0091 / DEC-0074)
253
- # - README_FEATURE_COVERAGE_ENFORCE: 0|1 (default 0 until backfill + --report green)
254
- README_FEATURE_COVERAGE_ENFORCE=1
255
-
256
- #
257
- # ## Project README coverage (US-0097 / DEC-0083)
258
- # Project-owned root README bootstrap + per-story catalog growth.
259
- # - PROJECT_README_ENFORCE: 0|1 (default 1 post-bootstrap)
260
- # When 0, /release step 3g skips (migration/grandfathering only). When 1, blocking.
261
- # Flip 0→1 only after validate_project_readme_coverage.py --report shows coverage_missing: [].
262
- # - FRAMEWORK_KIT_REPO: 0|1 (default 0)
263
- # When 1 (its-magic dev kit repo only), skip execute 23a/23b and project validator root check.
264
- # Consumer repos never set FRAMEWORK_KIT_REPO=1.
265
- PROJECT_README_ENFORCE=1
266
- FRAMEWORK_KIT_REPO=0
267
-
268
- #
269
- # ## Browser UAT self-test (US-0093 / DEC-0079)
270
- # Two-tier browser probe: stdlib lib classifies + agent owns Cursor browser MCP (BUG-0006).
271
- # - UAT_BROWSER_PROBE_MODE: cursor|http_fallback|playwright_fallback (default cursor)
272
- # - cursor: agent executes MCP sequence; lib emits plan + UAT_PROBE_UNRESOLVED until evidence
273
- # - http_fallback: stdlib HTTP GET (CI recipe — set this in CI)
274
- # - playwright_fallback: subprocess Playwright primary; HTTP fallback when missing
275
- # - UAT_BROWSER_FALLBACK_CHAIN: 0|1 (default 1; enable HTTP → Playwright after MCP unavailable)
276
- # - UAT_PROCESS_HEALTH_POLL_SECONDS: positive int (default 60; process_health readiness cap)
277
- # - UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS: positive int (default 2; poll interval)
278
- # - DEV_SERVER_PORT: int (optional; URL/port inference override)
279
- # - DEV_SERVER_COMMAND: shell command (optional; process_health startup override)
280
- # Interaction: orthogonal to PERMISSION_MODE and Cursor browser approval modes (manual / allow-list /
281
- # auto-run per vendor docs). Health URLs from docs/engineering/runtime-connectivity.md first.
282
- UAT_BROWSER_PROBE_MODE=cursor
283
- UAT_BROWSER_FALLBACK_CHAIN=1
284
- UAT_PROCESS_HEALTH_POLL_SECONDS=60
285
- UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS=2
286
- DEV_SERVER_PORT=
287
- DEV_SERVER_COMMAND=
288
-
289
- #
290
- # ## Dev environment auto-launch (US-0098 / DEC-0084)
291
- # Execute-phase bounded rebuild/relaunch + Connect surfacing distinct from US-0065 phase QA,
292
- # US-0086 test routing, and US-0067 release hints. Orthogonal to AUTO_REMOTE_AUTOMATION_PROFILE.
293
- # When off, execute step 24 skipped with zero overhead.
294
- # - DEV_AUTO_LAUNCH_PROFILE: off|deterministic_v1 (default off)
295
- # - DEV_ENVIRONMENT_CONFIG: repo-relative path (default .cursor/dev-environment.json)
296
- DEV_AUTO_LAUNCH_PROFILE=off
297
- DEV_ENVIRONMENT_CONFIG=.cursor/dev-environment.json
298
-
299
- #
300
- # ## Caveman mode (US-0089)
301
- # Response-side voice toggle. Default off. Composition is orthogonal to
302
- # TOKEN_PROFILE (DEC-0035 / US-0080) and AUTO_QUIET (US-0088) --
303
- # TOKEN_PROFILE controls context breadth, CAVEMAN_MODE controls reply voice;
304
- # neither substitutes for the other.
305
- # - CAVEMAN_MODE: 0|1 (default 0; absence = 0)
306
- # - CAVEMAN_LEVEL: lite|full|ultra (empty; with MODE=1 empty -> treat as full;
307
- # unknown value -> CAVEMAN_LEVEL_UNKNOWN and fall back to pre-US-0089 voice)
308
- #
309
- # ## Caveman input compression (US-0090 / DEC-0073)
310
- # Input-side prose minification via scripts/caveman_compress_input.py. Default off.
311
- # Orthogonal to CAVEMAN_MODE (reply voice) and TOKEN_PROFILE (context breadth).
312
- # - CAVEMAN_COMPRESS_INPUT: 0|1 (default 0) -- activation gate; must be 1 for --write
313
- # - CAVEMAN_FILE_SCOPE: string (empty default) -- allow-list of files eligible for compression:
314
- # * empty: no files in scope (fail-closed on --write with CAVEMAN_COMPRESS_SCOPE_EMPTY)
315
- # * named profile: e.g. docs-prose-only (user-guides, runbook, state-archive, handoffs/archive)
316
- # * raw globs: e.g. docs/user-guides/**/*.md,handoffs/archive/*.md (forward slashes only)
317
- # * hybrid: profile:docs-prose-only;globs:handoffs/archive/*.md
318
- # Mutation requires COMPRESS_INPUT=1 + non-empty scope + CLI --write; use --dry-run first.
319
- # Originals land in docs/.caveman-originals/<path>; deny-list always wins over allow.
320
- CAVEMAN_MODE=0
321
- CAVEMAN_LEVEL=
322
- CAVEMAN_COMPRESS_INPUT=0
323
- CAVEMAN_FILE_SCOPE=
324
-
325
- #
326
- # ## Per-phase model tier selection (US-0101 / DEC-0086)
327
- # MODEL_TIER selects LLM model strength (which model runs).
328
- # MODEL_TIER TOKEN_PROFILE DELIVERY_MODE these are independent axes;
329
- # none substitutes for the other (DEC-0062 / US-0080 / US-0096).
330
- # - MODEL_TIER_DEFAULT: cheap|balanced|strong (default balanced)
331
- # - MODEL_TIER_<PHASE>: cheap|balanced|strong (per-phase override; PHASE = canonical phase id)
332
- # Default matrix (architecture-locked):
333
- # cheap — ask, refresh-context, memory-audit, status-reconcile, pause
334
- # balanced intake, discovery, research, release, plan-verify
335
- # strong architecture, execute, quick, qa, verify-work, security-review
336
- # (inherit parent) auto (orchestrator always inherits parent model)
337
- # - MODEL_CATALOG: path to local slug catalog (default .cursor/model-catalog.local.json)
338
- # - MODEL_RESOLVE: alias_only|local_catalog|role_catalog (default alias_only)
339
- # - MODEL_FALLBACK: fallback when catalog lookup fails (default inherit)
340
- # - MODEL_PROVIDER_MODE: cursor|api (default cursor)
341
- # cursor = all subagents route through Cursor-managed infrastructure
342
- # api = operator uses BYOK via Cursor Settings → Models → API Key
343
- # Known limitation: subagents do NOT inherit custom API keys/base URLs.
344
- #
345
- # ## Direct per-phase model slug override (US-0102 / DEC-0087) — set in this local file only
346
- # Precedence: MODEL_<PHASE> > MODEL_TIER_<PHASE> > MODEL_TIER_DEFAULT > Cursor alias
347
- # - MODEL_<PHASE>: direct vendor slug (e.g. MODEL_EXECUTE=<your-vendor-slug>, MODEL_ASK=<your-vendor-slug>)
348
- # - MODEL_RESOLVE=role_catalog enables phase→role→catalog slug lookup (requires v2 catalog with roles section)
349
- MODEL_TIER_DEFAULT=balanced
350
- MODEL_CATALOG=.cursor/model-catalog.local.json
351
- MODEL_RESOLVE=alias_only
352
- MODEL_FALLBACK=inherit
353
- MODEL_PROVIDER_MODE=cursor
354
-
355
- # Per-phase tier overrides for this project (uncomment and adjust as needed):
356
- #MODEL_TIER_INTAKE=balanced
357
- #MODEL_TIER_DISCOVERY=cheap
358
- #MODEL_TIER_RESEARCH=balanced
359
- #MODEL_TIER_ARCHITECTURE=strong
360
- #MODEL_TIER_SPRINT-PLAN=strong
361
- #MODEL_TIER_PLAN-VERIFY=balanced
362
- #MODEL_TIER_EXECUTE=cheap
363
- #MODEL_TIER_QA=strong
364
- #MODEL_TIER_VERIFY-WORK=strong
365
- #MODEL_TIER_RELEASE=balanced
366
- #MODEL_TIER_REFRESH-CONTEXT=cheap
367
-
368
- # Direct per-phase slug overrides (US-0102 — uncomment and set vendor slugs):
369
- #MODEL_ASK=<your-vendor-slug>
370
- #MODEL_EXECUTE=<your-vendor-slug>
371
- #MODEL_QA=<your-vendor-slug>
372
-
373
- # Use a vendor catalog instead of Cursor aliases:
374
- # cp .cursor/model-catalog.local.example.level-2-complex.json .cursor/model-catalog.local.json
375
- #MODEL_RESOLVE=local_catalog
376
- # Role-based catalog preset (US-0102):
377
- # cp .cursor/model-catalog.local.example.role-based-balanced.json .cursor/model-catalog.local.json
378
- #MODEL_RESOLVE=role_catalog
87
+ # - AUTO_ROLE_CLOSURE: qe|curator (empty -> default qe) (US-0120 / DEC-0051)
88
+ # - AUTO_EXECUTE_ROLE_OVERRIDE: empty or allowed_non_dev_execute (execute default is dev)
89
+ # - EXECUTE_OVERRIDE_GOVERNANCE_REF: parseable waiver pointer (DEC-xxxx / state anchor) when override set
90
+ AUTO_ROLE_RESEARCH=
91
+ AUTO_ROLE_PLAN_VERIFY=
92
+ AUTO_ROLE_REFRESH_CONTEXT=
93
+ AUTO_ROLE_CLOSURE=
94
+ AUTO_EXECUTE_ROLE_OVERRIDE=
95
+ EXECUTE_OVERRIDE_GOVERNANCE_REF=
96
+ #
97
+ # `/auto` phase selection policy (US-0070 / DEC-0052)
98
+ # Exactly one active mode after merge; conflict -> PHASE_POLICY_CONFLICT (no plan).
99
+ # - AUTO_PHASE_PLAN: unset or full (default full canonical lifecycle)
100
+ # - AUTO_PHASE_EXCLUDE: csv of canonical phase ids (exclude from full)
101
+ # - AUTO_PHASE_INCLUDE: csv of canonical phase ids (re-sorted to canonical order)
102
+ # - AUTO_PHASE_PROFILE: named profile (see /auto + DEC-0052; unknown -> fail closed)
103
+ # - AUTO_PHASE_HIGH_RISK_ACK: required token when a high-risk profile demands it
104
+ AUTO_PHASE_PLAN=
105
+ AUTO_PHASE_EXCLUDE=
106
+ AUTO_PHASE_INCLUDE=
107
+ AUTO_PHASE_PROFILE=
108
+ AUTO_PHASE_HIGH_RISK_ACK=
109
+ #
110
+ # Team mode
111
+ # - TEAM_MODE: 0|1 (enable task/member scoped team workflow)
112
+ # - TEAM_MEMBER: short id for current developer
113
+ # - ACTIVE_TASK_IDS: comma-separated task ids (for example T-12,T-13)
114
+ TEAM_MODE=0
115
+ TEAM_MEMBER=
116
+ ACTIVE_TASK_IDS=
117
+ #
118
+ # Sprint planning
119
+ # - SPRINT_MAX_TASKS: integer >= 1 (max atomic tasks per sprint, default 12)
120
+ # - SPRINT_AUTO_SPLIT: 0|1 (propose splitting when over threshold)
121
+ # - SPRINT_BULK_MAX_STORIES: integer >= 1 (candidate stories when /sprint-plan --bulk)
122
+ # - SPRINT_BULK_MAX_SPRINTS: integer >= 1 (generated sprints per /sprint-plan --bulk run)
123
+ # - SPRINT_BULK_SELECTION: priority_then_backlog_order
124
+ SPRINT_MAX_TASKS=12
125
+ SPRINT_AUTO_SPLIT=1
126
+ SPRINT_BULK_MAX_STORIES=5
127
+ SPRINT_BULK_MAX_SPRINTS=3
128
+ SPRINT_BULK_SELECTION=priority_then_backlog_order
129
+ #
130
+ # Remote execution (US-0086 / US-0084 / US-0064)
131
+ # - REMOTE_EXECUTION: 0|1
132
+ # - REMOTE_CONFIG: path to remote config
133
+ # - AUTO_REMOTE_AUTOMATION_PROFILE: off|deterministic_v1 (default off/manual-safe)
134
+ # - AUTO_REMOTE_ENVIRONMENT_LABEL: local|docker|ssh (names-only evidence label)
135
+ REMOTE_EXECUTION=0
136
+ REMOTE_CONFIG=.cursor/remote.json
137
+ AUTO_REMOTE_AUTOMATION_PROFILE=off
138
+ AUTO_REMOTE_ENVIRONMENT_LABEL=local
139
+ #
140
+ # Sync policy
141
+ # - SYNC_POLICY_MODE: disabled|manual|by_phase|by_milestone|custom_phase_list
142
+ # - SYNC_CUSTOM_PHASES: comma-separated canonical phase IDs; only used when
143
+ # SYNC_POLICY_MODE=custom_phase_list
144
+ # - ALLOW_AUTO_PUSH: 0|1 (default off; explicit opt-in required)
145
+ # - AUTO_PUSH_BRANCH_ALLOWLIST: comma-separated branches/patterns eligible for
146
+ # auto-push. Protected/default branches are denied unless allowlisted.
147
+ SYNC_POLICY_MODE=disabled
148
+ SYNC_CUSTOM_PHASES=
149
+ ALLOW_AUTO_PUSH=1
150
+ AUTO_PUSH_BRANCH_ALLOWLIST=main
151
+ #
152
+ # Knowledge curation
153
+ # - EARLY_RESEARCH: 0|1 (PO/TL search web during intake/architecture)
154
+ # - INTAKE_GUIDED_MODE: 0|1 (guided intake follow-up/options/research behavior)
155
+ # - INTAKE_SUBAGENT_FALLBACK: deny|allow (deny by default; when deny, missing
156
+ # role-specific intake subagent capability fails fast)
157
+ # - INTAKE_WORK_ITEM_KIND: story|bug (default story; bug selects BUG-#### path per DEC-0061 / US-0079)
158
+ # - 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)
159
+ # - TOKEN_PROFILE: lean|balanced|full (tiered token-cost profile defaults)
160
+ # TOKEN_PROFILE controls context breadth / token cost only (DEC-0062 / US-0092).
161
+ # - lean: lowest context breadth / token cost defaults
162
+ # - balanced: default profile; moderate context breadth
163
+ # - full: highest context breadth / token cost for complex work
164
+ # - STATE_HOT_MAX_LINES: integer >= 200 (hot-surface soft cap trigger for
165
+ # archival rollover checks)
166
+ # - STATE_HOT_MAX_CHECKPOINTS: integer >= 10 (max recent checkpoints to retain
167
+ # in `state.md` after rollover)
168
+ # - PO_TO_TL_HOT_MAX_LINES: integer >= 200 (handoff hot-surface line cap)
169
+ # - PO_TO_TL_HOT_MAX_SECTIONS: integer >= 10 (max top-level ## sections retained)
170
+ # - ARCH_HOT_MAX_LINES: integer >= 500 (architecture hot-surface line cap)
171
+ # - ARCH_HOT_MAX_STORY_SECTIONS: integer >= 20 (max # US-xxxx story sections retained)
172
+ # - Manual-override precedence: explicit flag values in this file remain authoritative
173
+ # for that flag and override profile defaults.
174
+ #
175
+ # Delivery mode (US-0096 / DEC-0082)
176
+ # - DELIVERY_MODE: standard|ultra_lean|mega_quick (default standard; unset = standard)
177
+ # - LEAN_MEMORY_READ: 0|1 (default 1 when pack/active-context paths exist)
178
+ # - LEAN_MEMORY_WRITE: 0|1 (default 1 when pack/active-context paths exist)
179
+ # - LEAN_COLD_READ_MAX_SECTIONS: int >= 1 (default 4)
180
+ # - LEAN_STATE_INDEX_ROWS: int >= 30 (default 80)
181
+ # - AUTO_DELIVERY_ROUTING: scratchpad_only|backlog_then_scratchpad (default scratchpad_only)
182
+ # Tranche A default hot caps (US-0096): example uses 1000/650/3000; explicit values here override.
183
+ DELIVERY_MODE=standard
184
+ LEAN_MEMORY_READ=1
185
+ LEAN_MEMORY_WRITE=1
186
+ LEAN_COLD_READ_MAX_SECTIONS=4
187
+ LEAN_STATE_INDEX_ROWS=80
188
+ AUTO_DELIVERY_ROUTING=scratchpad_only
189
+ #
190
+ # Work-kind routing (US-0118 / DEC-0118)
191
+ # Default-off per-story work-kind classifier. When WORK_KIND_ROUTING=0,
192
+ # /auto resolve_delivery_mode step 0 + /intake step 5 skip the classifier
193
+ # entirely (zero overhead — byte-identical to pre-US-0118). When 1, the
194
+ # classifier derives (delivery_mode, phase_plan) per the L8 precedence
195
+ # chain: explicit DELIVERY_MODE > AUTO_PHASE_* > WORK_KIND_ROUTING-derived
196
+ # > current default. Merge precedence (US-0078 model B): local > baseline
197
+ # > example. Reuses scripts/dev_environment_lib.classify_touched_files.
198
+ # - WORK_KIND_ROUTING: 0|1 (default 0; absence = 0)
199
+ # - WORK_KIND_TIE_BREAK: highest_tier_wins (default; LOCKED Q1 — code > mini > doc)
200
+ WORK_KIND_ROUTING=0
201
+ WORK_KIND_TIE_BREAK=highest_tier_wins
202
+
203
+ EARLY_RESEARCH=1
204
+ INTAKE_GUIDED_MODE=1
205
+ INTAKE_SUBAGENT_FALLBACK=deny
206
+ INTAKE_WORK_ITEM_KIND=story
207
+ ID_NAMESPACE_BOOTSTRAP=0
208
+ TOKEN_PROFILE=balanced
209
+ STATE_HOT_MAX_LINES=1000
210
+ STATE_HOT_MAX_CHECKPOINTS=80
211
+ PO_TO_TL_HOT_MAX_LINES=650
212
+ PO_TO_TL_HOT_MAX_SECTIONS=60
213
+ ARCH_HOT_MAX_LINES=3000
214
+ ARCH_HOT_MAX_STORY_SECTIONS=120
215
+
216
+ # Publish targets (US-0054)
217
+ # - RELEASE_PUBLISH_MODE: disabled|confirm|auto
218
+ # - disabled: skip post-release publish target execution
219
+ # - confirm: require explicit operator confirmation before publish (default)
220
+ # - auto: allow publish without confirmation (explicit opt-in)
221
+ # - RELEASE_TARGETS_FILE: canonical target config path
222
+ # - RELEASE_TARGETS_DEFAULT: comma-separated default target IDs (optional)
223
+ RELEASE_PUBLISH_MODE=disabled
224
+ RELEASE_TARGETS_FILE=docs/engineering/release-targets.json
225
+ RELEASE_TARGETS_DEFAULT=
226
+
227
+ #
228
+ # Security review
229
+ # - SECURITY_REVIEW: 0|1 (enable optional security/compliance review; default off)
230
+ # - COMPLIANCE_PROFILES: comma-separated values (GDPR,SOC2,HIPAA,PCI-DSS,ISO27001)
231
+ # Empty value means general security best practices only.
232
+ # When SECURITY_REVIEW=0, the workflow adds zero security-review overhead.
233
+ SECURITY_REVIEW=0
234
+ COMPLIANCE_PROFILES=GDPR
235
+
236
+ # Cross-repo compatibility observability
237
+ # - CROSS_REPO_OBSERVABILITY: 0|1 (enable compatibility visibility and checks)
238
+ # - COMPATIBILITY_GATE_ON_CRITICAL: 0|1 (when enabled, critical unresolved
239
+ # compatibility findings trigger decision gate before release)
240
+ # - COMPATIBILITY_SOURCES: semicolon-separated sources
241
+ # (repo=<path|url>,module=<id>,contract=<path|url>,docs=<path|url>)
242
+ CROSS_REPO_OBSERVABILITY=0
243
+ COMPATIBILITY_GATE_ON_CRITICAL=1
244
+ COMPATIBILITY_SOURCES=
245
+
246
+ # Component-scoped execution mode
247
+ # - COMPONENT_SCOPE_MODE: 0|1 (enable scoped planning/execution guardrails)
248
+ # - TARGET_COMPONENTS: comma-separated component IDs intended in scope
249
+ COMPONENT_SCOPE_MODE=0
250
+ TARGET_COMPONENTS=
251
+
252
+ # Optional spec-pack documentation (US-0031)
253
+ # - SPEC_PACK_MODE: 0|1 (enable Design Concept, CRS, Technical Spec generation/validation; default 0)
254
+ # When 0, intake/architecture/release add no required spec-pack steps.
255
+ SPEC_PACK_MODE=0
256
+
257
+ # Optional user-guide documentation (US-0032)
258
+ # - USER_GUIDE_MODE: 0|1 (enable per-feature user guides at docs/user-guides/US-xxxx.md; default 0)
259
+ # When 0, intake/architecture/sprint-plan/execute/qa/release add no required user-guide steps or blocking checks.
260
+ USER_GUIDE_MODE=0
261
+
262
+ # Documentation audience profile (DEC-0059)
263
+ # - DOC_AUDIENCE_PROFILE: user|developer|both (empty -> both during transition)
264
+ # - DOC_DETAIL_LEVEL: concise|balanced|technical-deep (empty -> balanced during transition)
265
+ DOC_AUDIENCE_PROFILE=both
266
+ DOC_DETAIL_LEVEL=balanced
267
+
268
+ # README feature coverage gate (US-0091 / DEC-0074)
269
+ # - README_FEATURE_COVERAGE_ENFORCE: 0|1 (default 0 until backfill + --report green)
270
+ # When 0, /release step 3f skips (grandfathering). When 1, static coverage is blocking.
271
+ README_FEATURE_COVERAGE_ENFORCE=1
272
+
273
+ #
274
+ # ## Project README coverage (US-0097 / DEC-0083)
275
+ # Project-owned root README bootstrap + per-story catalog growth.
276
+ # - PROJECT_README_ENFORCE: 0|1 (default 1 post-bootstrap)
277
+ # When 0, /release step 3g skips (migration/grandfathering only). When 1, blocking.
278
+ # Flip 0→1 only after validate_project_readme_coverage.py --report shows coverage_missing: [].
279
+ # - FRAMEWORK_KIT_REPO: 0|1 (default 0)
280
+ # When 1 (its-magic dev kit repo only), skip execute 23a/23b and project validator root check.
281
+ # Consumer repos never set FRAMEWORK_KIT_REPO=1.
282
+ PROJECT_README_ENFORCE=1
283
+ FRAMEWORK_KIT_REPO=0
284
+
285
+ #
286
+ # ## Browser UAT self-test (US-0093 / DEC-0079)
287
+ # Two-tier browser probe: stdlib lib classifies + agent owns Cursor browser MCP (BUG-0006).
288
+ # - UAT_BROWSER_PROBE_MODE: cursor|http_fallback|playwright_fallback (default cursor)
289
+ # - cursor: agent executes MCP sequence; lib emits plan + UAT_PROBE_UNRESOLVED until evidence
290
+ # - http_fallback: stdlib HTTP GET (CI recipe — set this in CI)
291
+ # - playwright_fallback: subprocess Playwright primary; HTTP fallback when missing
292
+ # - UAT_BROWSER_FALLBACK_CHAIN: 0|1 (default 1; enable HTTP → Playwright after MCP unavailable)
293
+ # - UAT_PROCESS_HEALTH_POLL_SECONDS: positive int (default 60; process_health readiness cap)
294
+ # - UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS: positive int (default 2; poll interval)
295
+ # - DEV_SERVER_PORT: int (optional; URL/port inference override)
296
+ # - DEV_SERVER_COMMAND: shell command (optional; process_health startup override)
297
+ # Interaction: orthogonal to PERMISSION_MODE and Cursor browser approval modes (manual / allow-list /
298
+ # auto-run per vendor docs). Health URLs from docs/engineering/runtime-connectivity.md first.
299
+ UAT_BROWSER_PROBE_MODE=cursor
300
+ UAT_BROWSER_FALLBACK_CHAIN=1
301
+ UAT_PROCESS_HEALTH_POLL_SECONDS=60
302
+ UAT_PROCESS_HEALTH_POLL_INTERVAL_SECONDS=2
303
+ DEV_SERVER_PORT=
304
+ DEV_SERVER_COMMAND=
305
+
306
+ #
307
+ # ## Dev environment auto-launch (US-0098 / DEC-0084)
308
+ # Execute-phase bounded rebuild/relaunch + Connect surfacing — distinct from US-0065 phase QA,
309
+ # US-0086 test routing, and US-0067 release hints. Orthogonal to AUTO_REMOTE_AUTOMATION_PROFILE.
310
+ # When off, execute step 24 skipped with zero overhead.
311
+ # - DEV_AUTO_LAUNCH_PROFILE: off|deterministic_v1 (default off)
312
+ # - DEV_ENVIRONMENT_CONFIG: repo-relative path (default .cursor/dev-environment.json)
313
+ DEV_AUTO_LAUNCH_PROFILE=off
314
+ DEV_ENVIRONMENT_CONFIG=.cursor/dev-environment.json
315
+
316
+ #
317
+ # ## Caveman mode (US-0089)
318
+ # Response-side voice toggle. Default off. Composition is orthogonal to
319
+ # TOKEN_PROFILE (DEC-0035 / US-0080) and AUTO_QUIET (US-0088) --
320
+ # TOKEN_PROFILE controls context breadth, CAVEMAN_MODE controls reply voice;
321
+ # neither substitutes for the other.
322
+ # - CAVEMAN_MODE: 0|1 (default 0; absence = 0)
323
+ # - CAVEMAN_LEVEL: lite|full|ultra (empty; with MODE=1 empty -> treat as full;
324
+ # unknown value -> CAVEMAN_LEVEL_UNKNOWN and fall back to pre-US-0089 voice)
325
+ #
326
+ # ## Caveman input compression (US-0090 / DEC-0073)
327
+ # Input-side prose minification via scripts/caveman_compress_input.py. Default off.
328
+ # Orthogonal to CAVEMAN_MODE (reply voice) and TOKEN_PROFILE (context breadth).
329
+ # - CAVEMAN_COMPRESS_INPUT: 0|1 (default 0) -- activation gate; must be 1 for --write
330
+ # - CAVEMAN_FILE_SCOPE: string (empty default) -- allow-list of files eligible for compression:
331
+ # * empty: no files in scope (fail-closed on --write with CAVEMAN_COMPRESS_SCOPE_EMPTY)
332
+ # * named profile: e.g. docs-prose-only (user-guides, runbook, state-archive, handoffs/archive)
333
+ # * raw globs: e.g. docs/user-guides/**/*.md,handoffs/archive/*.md (forward slashes only)
334
+ # * hybrid: profile:docs-prose-only;globs:handoffs/archive/*.md
335
+ # Mutation requires COMPRESS_INPUT=1 + non-empty scope + CLI --write; use --dry-run first.
336
+ # Originals land in docs/.caveman-originals/<path>; deny-list always wins over allow.
337
+ CAVEMAN_MODE=0
338
+ CAVEMAN_LEVEL=
339
+ CAVEMAN_COMPRESS_INPUT=0
340
+ CAVEMAN_FILE_SCOPE=
341
+
342
+ #
343
+ # ## Per-phase model tier selection (US-0101 / DEC-0086)
344
+ # MODEL_TIER selects LLM model strength (which model runs).
345
+ # MODEL_TIER ≠ TOKEN_PROFILE ≠ DELIVERY_MODE — these are independent axes;
346
+ # none substitutes for the other (DEC-0062 / US-0080 / US-0096).
347
+ # - MODEL_TIER_DEFAULT: cheap|balanced|strong (default balanced)
348
+ # - MODEL_TIER_<PHASE>: cheap|balanced|strong (per-phase override; PHASE = canonical phase id)
349
+ # Examples: MODEL_TIER_EXECUTE=cheap, MODEL_TIER_QA=strong, MODEL_TIER_RESEARCH=balanced
350
+ # Set in .cursor/scratchpad.local.md to override per phase without touching committed defaults.
351
+ # Default matrix (architecture-locked):
352
+ # cheap — ask, refresh-context, memory-audit, status-reconcile, pause
353
+ # balanced — intake, discovery, research, release, plan-verify
354
+ # strong — architecture, execute, quick, qa, verify-work, security-review
355
+ # (inherit parent) — auto (orchestrator always inherits parent model)
356
+ # - MODEL_CATALOG: path to local slug catalog (default .cursor/model-catalog.local.json)
357
+ # - MODEL_RESOLVE: alias_only|local_catalog|role_catalog (default alias_only)
358
+ # alias_only = use Cursor-stable aliases (cheap->fast, balanced->inherit, strong->omit model:)
359
+ # local_catalog = look up vendor model slugs from MODEL_CATALOG; requires valid JSON catalog
360
+ # role_catalog = opt-in phase→role→catalog slug lookup (US-0102 / DEC-0087); falls through on miss
361
+ # - MODEL_FALLBACK: fallback when catalog lookup fails (default inherit)
362
+ # - MODEL_PROVIDER_MODE: cursor|api (default cursor)
363
+ # cursor = all subagents route through Cursor-managed infrastructure
364
+ # api = operator uses BYOK via Cursor Settings → Models → API Key
365
+ # Known limitation: subagents do NOT inherit custom API keys/base URLs.
366
+ #
367
+ # Example catalogs for 4 software-complexity levels + a Cursor-only variant:
368
+ # .cursor/model-catalog.local.example.json — minimal placeholder template
369
+ # .cursor/model-catalog.local.example.cursor-only.json — only Cursor-integrated Composer models
370
+ # .cursor/model-catalog.local.example.level-1-easy.json — small/simple apps
371
+ # .cursor/model-catalog.local.example.level-2-complex.json — complex multi-service apps
372
+ # .cursor/model-catalog.local.example.level-3-mega.json — mega-complex / modular monoliths
373
+ # .cursor/model-catalog.local.example.level-4-super.json — super-high-sophisticated / mission-critical
374
+ # .cursor/model-catalog.local.example.role-based-balanced.json — v2 role preset (balanced)
375
+ # .cursor/model-catalog.local.example.role-based-highend.json — v2 role preset (high-end)
376
+ # Copy one to .cursor/model-catalog.local.json and set MODEL_RESOLVE=local_catalog or role_catalog to activate.
377
+ MODEL_TIER_DEFAULT=balanced
378
+ MODEL_CATALOG=.cursor/model-catalog.local.json
379
+ MODEL_RESOLVE=alias_only
380
+ MODEL_FALLBACK=inherit
381
+ MODEL_PROVIDER_MODE=cursor
382
+ #
383
+ # ## Direct per-phase model slug override + role catalog (US-0102 / DEC-0087)
384
+ # Composes on US-0101 / DEC-0086 — tier baseline unchanged; overlays are optional.
385
+ # Precedence chain (deterministic, per canonical phase_id):
386
+ # 1. MODEL_<PHASE> — direct vendor slug override (highest priority)
387
+ # 2. MODEL_TIER_<PHASE> — DEC-0086 tier→alias / local_catalog chain
388
+ # 3. role_catalog lookup — only when MODEL_RESOLVE=role_catalog; miss falls through
389
+ # 4. MODEL_TIER_DEFAULT — DEC-0086 tier chain
390
+ # 5. Cursor stable alias — DEC-0086 built-in mapping (fast / inherit / omit)
391
+ # Scratchpad merge precedence for all MODEL_* keys: MODEL_<PHASE> > MODEL_TIER_<PHASE> > MODEL_TIER_DEFAULT
392
+ # - MODEL_<PHASE>: direct vendor slug; <PHASE> = canonical phase id (same list as MODEL_TIER_<PHASE>)
393
+ # Set in .cursor/scratchpad.local.md only — use <your-vendor-slug> placeholders in committed files.
394
+ # Canonical phase ids: ask, refresh-context, memory-audit, status-reconcile, pause,
395
+ # intake, discovery, research, release, plan-verify, architecture, execute, quick,
396
+ # qa, verify-work, security-review, auto
397
+ # Examples (placeholders — replace in scratchpad.local.md):
398
+ # MODEL_ASK=<your-vendor-slug>
399
+ # MODEL_EXECUTE=<your-vendor-slug>
400
+ # MODEL_QA=<your-vendor-slug>
401
+ # MODEL_REFRESH-CONTEXT=<your-vendor-slug>
402
+ # MODEL_ASK participates in step 1 like any other phase (no special-case bypass).
403
+ #
404
+ # AI Decision Ledger + Plan Fidelity (US-0103 / DEC-0103)
405
+ # Sovereign-loop foundation. Default-off — zero overhead when AI_DECISION_LEDGER=0.
406
+ # - AI_DECISION_LEDGER: 0|1 (default 0) — when 0: no ledger reads/writes/schema checks.
407
+ # - AUTO_PLAN_FIDELITY: strict|relaxed|extended (default strict) — active only when ledger enabled.
408
+ # strict = any unapproved drop/reorder/scope-add → PLAN_FIDELITY_VIOLATION hard stop
409
+ # relaxed = drop/reorder allowed (ledger entry); scope-add still hard stop
410
+ # extended = scope-add allowed (extension report); drop/reorder allowed
411
+ AI_DECISION_LEDGER=0
412
+ AUTO_PLAN_FIDELITY=strict
413
+ #
414
+ # Goal-Based Convergence (US-0110 / DEC-0110)
415
+ # Default-off sovereign-loop terminal predicate. When SOVEREIGN_GOAL_MODE=phase_driven,
416
+ # zero overhead — no evaluation, no goal_progress block, no partial-delivery write.
417
+ # Compose do NOT amend US-0088 / US-0092 / US-0095 / US-0044 / US-0103 (read-only surfaces).
418
+ # - SOVEREIGN_GOAL_MODE: phase_driven|goal_convergence (default phase_driven)
419
+ # - SOVEREIGN_GOAL: explicit goal text (wins over vision auto-derive; default empty)
420
+ # - SOVEREIGN_GOAL_TOP_N: int >= 1 vision paragraph count for auto-derive (default 3)
421
+ # - SOVEREIGN_GOAL_MAX_CHARS: int >= 64 truncation cap (default 512)
422
+ # - SOVEREIGN_GOAL_TIMEOUT_MAX: int >= 0 iteration-count cap (0 = disabled; not wall-clock)
423
+ SOVEREIGN_GOAL_MODE=phase_driven
424
+ SOVEREIGN_GOAL=
425
+ SOVEREIGN_GOAL_TOP_N=3
426
+ SOVEREIGN_GOAL_MAX_CHARS=512
427
+ SOVEREIGN_GOAL_TIMEOUT_MAX=0
428
+ #
429
+ # Cross-Model Adversarial Critic (US-0104 / DEC-0104)
430
+ # Default-off cross-model review. When CROSS_MODEL_REVIEW=0, zero overhead — no critic
431
+ # spawn, no findings writes, no anti-slop gate. Compose do NOT amend US-0048 / US-0069 /
432
+ # US-0023 / US-0110 / US-0103 (additive surfaces only).
433
+ # - CROSS_MODEL_REVIEW: 0|1 (default 0)
434
+ # - CROSS_MODEL_ANTISLOP_THRESHOLD: int 0-10 aggregate floor (default 6)
435
+ # - CROSS_MODEL_REWORK_MAX: int >= 0 producer re-spawns per (run, phase) (default 2)
436
+ CROSS_MODEL_REVIEW=0
437
+ CROSS_MODEL_ANTISLOP_THRESHOLD=6
438
+ CROSS_MODEL_REWORK_MAX=2
439
+ #
440
+ # Sovereign Memory (US-0105 / DEC-0105)
441
+ # Default-off institutional memory. When SOVEREIGN_MEMORY=0, zero overhead —
442
+ # no JSONL writes, no injection reads, no spawn digest assembly.
443
+ # Compose do NOT amend US-0029 / US-0080 / US-0103 / US-0072 / US-0096.
444
+ # - SOVEREIGN_MEMORY: 0|1 (default 0)
445
+ # - SOVEREIGN_MEMORY_TOP_N: int >= 0 (default 5) — global recent pool (all four JSONL families)
446
+ # - SOVEREIGN_MEMORY_TOP_K: int >= 0 (default 3) — high-impact pool (patterns + mistakes only)
447
+ # - SOVEREIGN_MEMORY_MAX_CHARS: int >= 0 (default 2048) — hard cap on assembled digest_text
448
+ # - SOVEREIGN_MEMORY_JSONL_MAX_LINES: int >= 1 (default 500) — active JSONL line cap before archive rollover
449
+ SOVEREIGN_MEMORY=0
450
+ SOVEREIGN_MEMORY_TOP_N=5
451
+ SOVEREIGN_MEMORY_TOP_K=3
452
+ SOVEREIGN_MEMORY_MAX_CHARS=2048
453
+ SOVEREIGN_MEMORY_JSONL_MAX_LINES=500
454
+ #
455
+ # Sovereign Loop Mode (US-0107 / DEC-0107)
456
+ # Default-off project orchestration. When AUTO_SOVEREIGN=0, zero overhead — no deferral
457
+ # reads/writes, no advance, no notifications. Requires SOVEREIGN_GOAL_MODE=goal_convergence
458
+ # when enabled (fail-closed SOVEREIGN_LOOP_GOAL_MODE_REQUIRED). Compose do NOT amend
459
+ # US-0088 / US-0092 / US-0095 / US-0044 / US-0103 / US-0105 / US-0110 (additive hooks only).
460
+ # - AUTO_SOVEREIGN: 0|1 (default 0)
461
+ # - AUTO_SOVEREIGN_DEFERRAL_MAX: int >= 1 (default 50) — max open deferral rows
462
+ # - AUTO_SOVEREIGN_DRAIN_GENERATE_MAX: int >= 0 (default 3) — drain-generate iterations per run
463
+ # - AUTO_SOVEREIGN_DEFERRAL_POLICY: stop|skip|resolve_first (default resolve_first)
464
+ # - SOVEREIGN_NOTIFY_TARGET: off|ntfy|email|hook (default off)
465
+ # - SOVEREIGN_NOTIFY_NTFY_TOPIC: string (default empty — local-only)
466
+ # - SOVEREIGN_NOTIFY_NTFY_BASE: URL (default empty — local-only ntfy base override)
467
+ # - SOVEREIGN_NOTIFY_HOOK_URL: URL (default empty — local-only webhook)
468
+ # - SOVEREIGN_NOTIFY_EMAIL_TO: email (default empty — email v1 deferred)
469
+ AUTO_SOVEREIGN=0
470
+ AUTO_SOVEREIGN_DEFERRAL_MAX=50
471
+ AUTO_SOVEREIGN_DRAIN_GENERATE_MAX=3
472
+ AUTO_SOVEREIGN_DEFERRAL_POLICY=resolve_first
473
+ SOVEREIGN_NOTIFY_TARGET=off
474
+ SOVEREIGN_NOTIFY_NTFY_TOPIC=
475
+ SOVEREIGN_NOTIFY_NTFY_BASE=
476
+ SOVEREIGN_NOTIFY_HOOK_URL=
477
+ SOVEREIGN_NOTIFY_EMAIL_TO=
478
+ #
479
+ # Sovereign Role-Behavior Manifest (US-0106 / DEC-0106)
480
+ # Default-off per-role objective + inter-role review obligations. When SOVEREIGN_ROLE_MANIFEST=0,
481
+ # zero overhead — no manifest reads, no objective injection, no review dispatch.
482
+ # Compose do NOT amend US-0069 (phase→role matrix unchanged; review spawns supplementary),
483
+ # US-0104 (critic lenses + findings schema unchanged; role reviews additive),
484
+ # US-0003 / US-0023 / US-0103 / US-0105 / US-0107 (unchanged surfaces).
485
+ # - SOVEREIGN_ROLE_MANIFEST: 0|1 (default 0)
486
+ # - SOVEREIGN_ROLE_OBJECTIVE_MAX_CHARS: int >= 1 (default 512) — hard truncate for injection
487
+ # - SOVEREIGN_ROLE_REVIEW_MAX_PER_PHASE: int >= 0 (default 2) — per-phase review cap
488
+ # - SOVEREIGN_ROLE_REVIEW_REWORK_MAX: int >= 0 (default 1) — bounded rework before decision gate
489
+ SOVEREIGN_ROLE_MANIFEST=0
490
+ SOVEREIGN_ROLE_OBJECTIVE_MAX_CHARS=512
491
+ SOVEREIGN_ROLE_REVIEW_MAX_PER_PHASE=2
492
+ SOVEREIGN_ROLE_REVIEW_REWORK_MAX=1
493
+ #
494
+ # Parallel Instance Arbitrage (US-0108 / DEC-0108)
495
+ # Default-off parallel execute-phase instance orchestration. When SOVEREIGN_PARALLEL_DEV=0,
496
+ # zero overhead — no worktrees, no parallel QA, no pick JSON, no resource guard.
497
+ # Compose do NOT amend US-0047 (bulk execute unchanged), US-0092 (full autonomy unchanged),
498
+ # US-0103 (ledger schema unchanged; read-only consumer), US-0104 (critic schema unchanged;
499
+ # read-only anti_slop_score consumer), US-0107 (sovereign loop unchanged; consumer only).
500
+ # - SOVEREIGN_PARALLEL_DEV: 0|1 (default 0) — global enable gate
501
+ # - AUTO_SOVEREIGN_PARALLEL_N: int >= 1 (default 3) — instances per execute cycle
502
+ # - AUTO_SOVEREIGN_PARALLEL_MAX_TOTAL: int >= 1 (default 6) — system-wide instance cap
503
+ # - AUTO_SOVEREIGN_MERGE_RESOLVE: first_pass_wins|last_pass_wins|winner_takes_all|manual (default first_pass_wins)
504
+ # - AUTO_SOVEREIGN_WORKTREE_KEEP: 0|1 (default 0) — retain loser worktrees for debugging
505
+ # - AUTO_SOVEREIGN_PARALLEL_QA: 0|1 (default 0) — enable parallel QA cross-review (v2)
506
+ # - AUTO_SOVEREIGN_PARALLEL_QA_ARBITER: critic_first_pass|majority_vote (default critic_first_pass)
507
+ # - AUTO_SOVEREIGN_PARALLEL_ANTI_SLOP_THRESHOLD: int 0-10 (default 6) — anti-slop floor
508
+ # - AUTO_SOVEREIGN_PARALLEL_REWORK_MAX: int >= 0 (default 2) — per-instance rework cap
509
+ # - AUTO_SOVEREIGN_PARALLEL_MERGE_TIMEOUT_SEC: int >= 10 (default 60) — merge timeout
510
+ # - AUTO_SOVEREIGN_PARALLEL_MODEL_<idx>: model slug per instance (optional)
511
+ # - AUTO_SOVEREIGN_PARALLEL_LENS_<idx>: lens config per instance (optional)
512
+ SOVEREIGN_PARALLEL_DEV=0
513
+ AUTO_SOVEREIGN_PARALLEL_N=3
514
+ AUTO_SOVEREIGN_PARALLEL_MAX_TOTAL=6
515
+ AUTO_SOVEREIGN_MERGE_RESOLVE=first_pass_wins
516
+ AUTO_SOVEREIGN_WORKTREE_KEEP=0
517
+ AUTO_SOVEREIGN_PARALLEL_QA=0
518
+ AUTO_SOVEREIGN_PARALLEL_QA_ARBITER=critic_first_pass
519
+ AUTO_SOVEREIGN_PARALLEL_ANTI_SLOP_THRESHOLD=6
520
+ AUTO_SOVEREIGN_PARALLEL_REWORK_MAX=2
521
+ AUTO_SOVEREIGN_PARALLEL_MERGE_TIMEOUT_SEC=60
522
+ #
523
+ # Self-Healing Deploy Loop (US-0109 / DEC-0109)
524
+ # Default-off auto-heal post-publish probe + bounded retry + DEPLOY_DEFERRED.
525
+ # When AUTO_SOVEREIGN_SELF_HEALING_DEPLOY=0 zero overhead, byte-identical US-0054 publish path —
526
+ # no probe, no retry, no deferral, no execute steps 29-31. Compose do NOT amend US-0054 / US-0100 /
527
+ # US-0103 / US-0107 / US-0110 (US-0109 consumer-only hook after US-0054 publish PASS).
528
+ # - AUTO_SOVEREIGN_SELF_HEALING_DEPLOY: 0|1 (default 0) — global gate
529
+ # - AUTO_SOVEREIGN_DEPLOY_RETRY_MAX: int >= 1 (default 3) — max retry attempts after probe FAIL
530
+ # - AUTO_SOVEREIGN_DEPLOY_SMOKE_TIMEOUT_SEC: int >= 1 (default 30) — per-stage probe HTTP timeout
531
+ # - AUTO_SOVEREIGN_DEPLOY_PROBE_KIND: health_endpoint|acceptance_smoke|both (default both)
532
+ # - SOVEREIGN_DEPLOY_ACCEPTANCE_SMOKE_PATH: repo-relative path (default tests/deploy_smoke/)
533
+ # - AUTO_SOVEREIGN_DEPLOY_HEALTH_ENDPOINT: names-only env ref (US-0085 compose); empty = unresolvable
534
+ # Reason codes (DEC-0109 §7): DEPLOY_HEALING_DISABLED (info), DEPLOY_HEALING_SMOKE_HEALTH_FAIL,
535
+ # DEPLOY_HEALING_SMOKE_ACCEPTANCE_FAIL, DEPLOY_HEALING_RETRY_ATTEMPT,
536
+ # DEPLOY_HEALING_RETRY_CAP_EXHAUSTED, DEPLOY_HEALING_DEFERRED,
537
+ # DEPLOY_HEALING_PROBE_TARGET_MISSING, DEPLOY_HEALING_TIMEOUT.
538
+ AUTO_SOVEREIGN_SELF_HEALING_DEPLOY=0
539
+ AUTO_SOVEREIGN_DEPLOY_RETRY_MAX=3
540
+ AUTO_SOVEREIGN_DEPLOY_SMOKE_TIMEOUT_SEC=30
541
+ AUTO_SOVEREIGN_DEPLOY_PROBE_KIND=both
542
+ SOVEREIGN_DEPLOY_ACCEPTANCE_SMOKE_PATH=tests/deploy_smoke/
543
+ AUTO_SOVEREIGN_DEPLOY_HEALTH_ENDPOINT=
544
+ #
545
+ # Release Trigger Adapters (US-0111 / DEC-0111)
546
+ # Dispatch release flow by trigger source (GitHub webhook, npm publish, Git tag
547
+ # push, manual /release). Default source is manual (zero behavior change vs
548
+ # pre-US-0111 /release path — byte-identical). Compose with US-0100; reuses
549
+ # release_changelog_lib APIs without modification.
550
+ # - RELEASE_TRIGGER_SOURCE: manual|github|npm|git_tag|auto (default manual)
551
+ # - RELEASE_TRIGGER_TIMEOUT_SEC: int >= 1 (default 10; adapter subprocess timeout)
552
+ # - RELEASE_TRIGGER_FALLBACK_TO_LOCAL: 0|1 (default 0; npm adapter offline fallback)
553
+ RELEASE_TRIGGER_SOURCE=manual
554
+ RELEASE_TRIGGER_TIMEOUT_SEC=10
555
+ RELEASE_TRIGGER_FALLBACK_TO_LOCAL=0
556
+ #
557
+ # Autonomy presets (US-0119 / DEC-0119)
558
+ # Configurable autonomy presets and per-feature autonomy flags.
559
+ # Default-off; byte-identical pre-US-0119 when AUTONOMY_PRESET=none.
560
+ #
561
+ # Merge precedence (LOCKED):
562
+ # 1. Explicit per-flag value (in scratchpad or scratchpad.local)
563
+ # 2. AUTONOMY_PRESET expansion (via scripts/autonomy_preset_lib.py)
564
+ # 3. Scratchpad defaults (this file)
565
+ #
566
+ # AUTONOMY_PRESET: none|balanced|full (default=none)
567
+ # none: empty {} — byte-identical pre-US-0119
568
+ # balanced: 8 flags — moderate autonomy
569
+ # full: 12 flags — maximum autonomy (superset of balanced)
570
+ #
571
+ # AUTONOMY_STOP_POLICY: block|auto_repair_then_block|auto_repair_then_skip (default=block)
572
+ # block: all fail-closed codes block (pre-US-0119 behavior)
573
+ # auto_repair_then_block: autonomy_resolvable codes get bounded repair; cap exhaustion -> BLOCK
574
+ # auto_repair_then_skip: autonomy_resolvable codes get bounded repair; cap exhaustion -> SKIP
575
+ #
576
+ # Per-feature autonomy flags (12 total — DEC-0119 §7):
577
+ #
578
+ # INTAKE_AUTONOMY_MODE: 0|1 (default=0)
579
+ # balanced: OFF | full: ON
580
+ # Auto-derives intake answers on known-stack repeat projects (US-0068 compose).
581
+ #
582
+ # INTAKE_MINIMAL_PACK: 0|1 (default=0)
583
+ # balanced: OFF | full: ON
584
+ # Shrinks follow-up intake on established projects (Q7: MAX_US_ID >= US-0100 AND STACK_KNOWN = true).
585
+ #
586
+ # INTAKE_ASSUME_STACK_CONTEXT: 0|1 (default=0)
587
+ # balanced: OFF | full: ON
588
+ # Auto-fills stack/runtime from backlog history with assumption_confirmation_ref contract (BUG-0007 compose).
589
+ #
590
+ # WORK_KIND_AUTO_ACCEPT: 0|1 (default=0)
591
+ # balanced: ON | full: ON
592
+ # Auto-accepts classifier output when WORK_KIND_ROUTING=1.
593
+ #
594
+ # CROSS_MODEL_REWORK_EXHAUSTED_POLICY: block|downgrade (default=block)
595
+ # balanced: downgrade | full: downgrade
596
+ # Converts decision gate to warning when critic rework cap exhausted (US-0104 compose).
597
+ #
598
+ # CROSS_MODEL_SKIP_PHASES: csv (default=empty)
599
+ # balanced: empty | full: empty
600
+ # Skips critic for low-risk phases (e.g., refresh-context,release) (US-0104 compose).
601
+ #
602
+ # RESUME_BRIEF_AUTO_REFRESH: 0|1 (default=0)
603
+ # balanced: ON | full: ON
604
+ # Auto-refreshes stale brief; RESUME_BRIEF_STALE becomes autonomy_resolvable when ON.
605
+ #
606
+ # RUNTIME_PROOF_KIND: strict|lightweight (default=strict)
607
+ # balanced: lightweight | full: lightweight
608
+ # Counter+timestamp attestation instead of SHA-256; TTL unchanged (Q4: 3600s) (US-0056 compose).
609
+ #
610
+ # GOAL_CONVERGENCE_INTERVAL: int >= 1 (default=3)
611
+ # balanced: 3 | full: 1
612
+ # Evaluates goal every N phases (3 = balanced cadence; 1 = every phase) (US-0107 compose).
613
+ #
614
+ # SOVEREIGN_DRAIN_AUTO_ACCEPT: 0|1 (default=0)
615
+ # balanced: ON | full: ON
616
+ # Auto-accepts drain candidates below medium risk tier (Q5) (US-0107 compose).
617
+ #
618
+ # RELEASE_PUBLISH_AUTO_CONFIRM: 0|1 (default=0)
619
+ # balanced: OFF | full: OFF
620
+ # Auto-confirms publish targets when in RELEASE_TARGETS_ALLOWLIST (Q6) (US-0054 compose).
621
+ #
622
+ # AUTONOMY_REPAIR_CAP_OVERRIDE: int >= 1 or empty (default=empty)
623
+ # Operator override for per-run repair cap (empty = use matrix default cap=3 per DEC-0119 §5).
624
+ AUTONOMY_PRESET=none
625
+ AUTONOMY_STOP_POLICY=block
626
+ INTAKE_AUTONOMY_MODE=0
627
+ INTAKE_MINIMAL_PACK=0
628
+ INTAKE_ASSUME_STACK_CONTEXT=0
629
+ WORK_KIND_AUTO_ACCEPT=0
630
+ CROSS_MODEL_REWORK_EXHAUSTED_POLICY=block
631
+ CROSS_MODEL_SKIP_PHASES=
632
+ RESUME_BRIEF_AUTO_REFRESH=0
633
+ RUNTIME_PROOF_KIND=strict
634
+ GOAL_CONVERGENCE_INTERVAL=3
635
+ SOVEREIGN_DRAIN_AUTO_ACCEPT=0
636
+ RELEASE_PUBLISH_AUTO_CONFIRM=0
637
+ AUTONOMY_REPAIR_CAP_OVERRIDE=