@event4u/agent-config 16.0.0 → 16.2.0

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 (382) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +289 -140
  5. package/CONTRIBUTING.md +9 -0
  6. package/README.md +2 -2
  7. package/dist/agent-src/commands/analyze/inbox.md +26 -0
  8. package/dist/agent-src/commands/analyze/roadmap-repos.md +27 -0
  9. package/dist/agent-src/commands/challenge-me/closure.md +178 -0
  10. package/dist/agent-src/commands/challenge-me.md +9 -2
  11. package/dist/agent-src/commands/council/default.md +25 -5
  12. package/dist/agent-src/commands/feature/plan.md +28 -1
  13. package/dist/agent-src/commands/feature/roadmap.md +28 -1
  14. package/dist/agent-src/commands/implement-ticket.md +27 -0
  15. package/dist/agent-src/commands/jira-ticket.md +27 -0
  16. package/dist/agent-src/commands/pr/create.md +29 -0
  17. package/dist/agent-src/commands/pr/merge.md +60 -9
  18. package/dist/agent-src/commands/roadmap/ai-council.md +7 -1
  19. package/dist/agent-src/commands/roadmap/create.md +74 -27
  20. package/dist/agent-src/commands/roadmap/materialize.md +27 -0
  21. package/dist/agent-src/commands/roadmap/process-full.md +123 -18
  22. package/dist/agent-src/commands/team.md +22 -0
  23. package/dist/agent-src/commands/work.md +4 -0
  24. package/dist/agent-src/contexts/authority/scope-growth-ownership.md +80 -0
  25. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +47 -0
  26. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +44 -3
  27. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +19 -23
  28. package/dist/agent-src/contexts/execution/decision-closure-execution.md +93 -0
  29. package/dist/agent-src/contexts/execution/fix-loop-ladder.md +108 -0
  30. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +4 -2
  31. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +75 -6
  32. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +57 -0
  33. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +102 -0
  34. package/dist/agent-src/guidelines/design-fidelity-routing.md +29 -0
  35. package/dist/agent-src/rules/autonomous-execution.md +15 -8
  36. package/dist/agent-src/rules/delegation-policy.md +23 -45
  37. package/dist/agent-src/rules/design-fidelity.md +32 -37
  38. package/dist/agent-src/rules/evaluator-independence.md +43 -49
  39. package/dist/agent-src/rules/test-first.md +41 -0
  40. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  41. package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +1 -1
  42. package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
  43. package/dist/agent-src/skills/ai-council/SKILL.md +11 -3
  44. package/dist/agent-src/skills/api-design/data/manifest.json +3 -3
  45. package/dist/agent-src/skills/database/data/manifest.json +4 -4
  46. package/dist/agent-src/skills/database/data/query-tuning.csv +3 -3
  47. package/dist/agent-src/skills/design-review/SKILL.md +80 -4
  48. package/dist/agent-src/skills/design-review/references/verification-automation.md +32 -0
  49. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +30 -5
  50. package/dist/agent-src/skills/existing-ui-audit/references/component-taxonomy-detection.md +56 -0
  51. package/dist/agent-src/skills/experiment-loop/SKILL.md +31 -1
  52. package/dist/agent-src/skills/markitdown/SKILL.md +4 -0
  53. package/dist/agent-src/skills/playwright-testing/SKILL.md +30 -6
  54. package/dist/agent-src/skills/roadmap-writing/SKILL.md +1 -1
  55. package/dist/agent-src/skills/storybook-workshop/SKILL.md +42 -3
  56. package/dist/agent-src/skills/threat-modeling/SKILL.md +9 -4
  57. package/dist/agent-src/skills/threat-modeling/data/manifest.json +4 -4
  58. package/dist/agent-src/skills/ui-component-architect/SKILL.md +23 -0
  59. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +37 -3
  60. package/dist/agent-src/templates/agent-settings.md +1 -1
  61. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  62. package/dist/agent-src/templates/roadmaps.md +218 -0
  63. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +62 -2
  64. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +1 -0
  65. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +1 -0
  66. package/dist/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +10 -4
  67. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +260 -21
  68. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +22 -3
  69. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +6 -1
  70. package/dist/agent-src/templates/scripts/work_engine/state.ts +57 -7
  71. package/dist/agent-src/templates/scripts/work_engine/taxonomy/detect.ts +500 -0
  72. package/dist/agent-src/templates/scripts/work_engine/taxonomy/place.ts +183 -0
  73. package/dist/cli/python/knowledge_ingest.js +1 -1
  74. package/dist/cli/python/workspace_drive.js +1 -1
  75. package/dist/cli-delegate/check_update_banner.js +40 -2
  76. package/dist/cli-delegate/chunk-4E2W63DA.js +335 -0
  77. package/dist/cli-delegate/{chunk-S3VFXMTM.js → chunk-4XFP2Y3E.js} +1 -1
  78. package/dist/cli-delegate/chunk-5R7HOLAF.js +99 -0
  79. package/dist/cli-delegate/{chunk-IVBPRCQO.js → chunk-6KFEC3G7.js} +1 -1
  80. package/dist/cli-delegate/{chunk-2TAQ2K4V.js → chunk-6KM6ORRY.js} +55 -386
  81. package/dist/cli-delegate/{chunk-AK6HODNQ.js → chunk-7XGBX6ZH.js} +973 -555
  82. package/dist/cli-delegate/{chunk-2XY7ILBT.js → chunk-FC75PGJE.js} +42 -2
  83. package/dist/cli-delegate/{chunk-55ACLDUE.js → chunk-FP36SWJD.js} +587 -141
  84. package/dist/cli-delegate/{chunk-3FKR64R5.js → chunk-IGD6ERX6.js} +62 -7
  85. package/dist/cli-delegate/{chunk-GYC3VRYN.js → chunk-JNMVLWLR.js} +99 -14
  86. package/dist/cli-delegate/{chunk-H32DGUJH.js → chunk-P6ZHP5W2.js} +1 -1
  87. package/dist/cli-delegate/{chunk-57PN4GYJ.js → chunk-RGNIWTEA.js} +1 -1
  88. package/dist/cli-delegate/chunk-ROYYTEZU.js +39 -0
  89. package/dist/cli-delegate/{chunk-2DK2VJWG.js → chunk-WGXTVKCQ.js} +20 -6
  90. package/dist/cli-delegate/chunk-YDPILCOL.js +152 -0
  91. package/dist/cli-delegate/{chunk-QJWAUMJW.js → chunk-YJ72UIAK.js} +730 -15
  92. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  93. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  94. package/dist/cli-delegate/cmd_conformance.js +985 -831
  95. package/dist/cli-delegate/cmd_doctor.js +7 -5
  96. package/dist/cli-delegate/cmd_explain.js +2 -2
  97. package/dist/cli-delegate/cmd_export.js +9 -7
  98. package/dist/cli-delegate/cmd_fleet.js +4 -2
  99. package/dist/cli-delegate/cmd_handoff.js +7 -7
  100. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  101. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  102. package/dist/cli-delegate/cmd_migrate.js +2 -2
  103. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  104. package/dist/cli-delegate/cmd_preflight.js +4 -2
  105. package/dist/cli-delegate/cmd_prune.js +10 -8
  106. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  107. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  108. package/dist/cli-delegate/cmd_session_recycle.js +4 -4
  109. package/dist/cli-delegate/cmd_settings_get.js +28 -2
  110. package/dist/cli-delegate/cmd_settings_migrate.js +9 -7
  111. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  112. package/dist/cli-delegate/cmd_sync.js +10 -8
  113. package/dist/cli-delegate/cmd_uninstall.js +16 -13
  114. package/dist/cli-delegate/cmd_update.js +1 -1
  115. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  116. package/dist/cli-delegate/cmd_validate.js +12 -10
  117. package/dist/cli-delegate/cmd_versions.js +1 -1
  118. package/dist/discovery/deprecation-report.md +1 -1
  119. package/dist/discovery/discovery-manifest.json +90 -43
  120. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  121. package/dist/discovery/discovery-manifest.summary.md +4 -4
  122. package/dist/discovery/dormancy-report.md +1 -1
  123. package/dist/discovery/orphan-report.md +1 -1
  124. package/dist/discovery/packs.json +10 -8
  125. package/dist/discovery/trust-report.md +3 -3
  126. package/dist/discovery/workspaces.json +8 -6
  127. package/dist/hooks/dispatch.js +7682 -2772
  128. package/dist/hooks/dispatch.sha256 +1 -0
  129. package/dist/install/claudeRuleRewrite.js +14 -3
  130. package/dist/install/conflict.js +60 -10
  131. package/dist/install/conflictTracker.js +218 -0
  132. package/dist/install/fsPrimitives.js +54 -0
  133. package/dist/install/install.mjs +2200 -1559
  134. package/dist/install/manifestFiles.js +259 -0
  135. package/dist/install/preflight.js +14 -2
  136. package/dist/install/preserve.js +157 -0
  137. package/dist/install/recordedOwnership.js +132 -0
  138. package/dist/install/txlog.js +11 -2
  139. package/dist/mcp/registry-manifest.json +3 -3
  140. package/dist/mcp/server.json +2 -2
  141. package/dist/mcp/server.mjs +3066 -1470
  142. package/dist/router.json +1 -1
  143. package/dist/scripts/_lib/agent_settings.js +3 -2
  144. package/dist/scripts/_lib/fs_atomic.js +167 -0
  145. package/dist/scripts/_lib/installed_tools.js +460 -0
  146. package/dist/scripts/_lib/lean_projection_mode.js +3 -2
  147. package/dist/scripts/_lib/settings_renamed_keys.js +78 -0
  148. package/dist/server/routes/install.js +8 -0
  149. package/dist/server/routes/wizard.js +9 -3
  150. package/dist/server/schemas/settings.js +40 -5
  151. package/dist/shared/missionExecution.js +97 -0
  152. package/dist/ui/assets/index-Cwq4d0hX.js +23 -0
  153. package/dist/ui/assets/index-Cyjy8bWO.css +1 -0
  154. package/dist/ui/index.html +2 -2
  155. package/docs/MIGRATION.md +103 -0
  156. package/docs/contracts/settings-classes.md +28 -7
  157. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +57 -0
  158. package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +102 -0
  159. package/docs/guidelines/design-fidelity-routing.md +29 -0
  160. package/package.json +4 -4
  161. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +62 -2
  162. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +1 -0
  163. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +1 -0
  164. package/src/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +10 -4
  165. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +260 -21
  166. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +22 -3
  167. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +6 -1
  168. package/src/agent-src/templates/scripts/work_engine/state.ts +57 -7
  169. package/src/agent-src/templates/scripts/work_engine/taxonomy/detect.ts +500 -0
  170. package/src/agent-src/templates/scripts/work_engine/taxonomy/place.ts +183 -0
  171. package/src/config/agent-settings.template.yml +168 -27
  172. package/src/config/auto-rule-budget.json +16 -0
  173. package/src/config/ci-local-parity.yml +36 -5
  174. package/src/config/continuity-surface.json +23 -2
  175. package/src/config/gate-coverage.yml +377 -13
  176. package/src/config/gate-violation-baselines.json +10 -6
  177. package/src/config/hook-latency-budget.json +21 -0
  178. package/src/config/hook-token-budget.json +4 -2
  179. package/src/config/loop-surfaces.yaml +215 -0
  180. package/src/config/metric-registry.yml +114 -0
  181. package/src/config/placeholder-drift-budget.json +10 -0
  182. package/src/config/platform-anchor.json +3 -2
  183. package/src/config/release-gate-locality.yml +11 -0
  184. package/src/config/routing-coverage-seed.json +33 -5
  185. package/src/config/rule-enforcement-baseline.json +0 -1
  186. package/src/install/claudeRuleRewrite.ts +16 -2
  187. package/src/install/conflict.ts +65 -9
  188. package/src/install/conflictTracker.ts +299 -0
  189. package/src/install/fsPrimitives.ts +54 -0
  190. package/src/install/manifestFiles.ts +312 -0
  191. package/src/install/preflight.ts +16 -2
  192. package/src/install/preserve.ts +205 -0
  193. package/src/install/recordedOwnership.ts +149 -0
  194. package/src/install/txlog.ts +11 -2
  195. package/src/install/types.ts +19 -4
  196. package/src/scripts/_cli/cmd_conformance.ts +88 -15
  197. package/src/scripts/_cli/cmd_doctor.ts +7 -20
  198. package/src/scripts/_cli/cmd_route_explain.ts +9 -2
  199. package/src/scripts/_cli/cmd_settings_get.ts +44 -0
  200. package/src/scripts/_cli/doctor_execution.ts +173 -0
  201. package/src/scripts/_cli/doctor_network_posture.ts +226 -0
  202. package/src/scripts/_lib/activation_payload.ts +247 -0
  203. package/src/scripts/_lib/agent_settings.ts +4 -2
  204. package/src/scripts/_lib/authority_path.ts +102 -0
  205. package/src/scripts/_lib/body_portable.ts +102 -0
  206. package/src/scripts/_lib/cascade_base.ts +94 -0
  207. package/src/scripts/_lib/cc_transcript.ts +132 -1
  208. package/src/scripts/_lib/changelog_eras.ts +7 -2
  209. package/src/scripts/_lib/concern_sla_window.ts +200 -0
  210. package/src/scripts/_lib/continuation_ladder.ts +149 -2
  211. package/src/scripts/_lib/council_transport.ts +129 -0
  212. package/src/scripts/_lib/delivery_ready.ts +112 -0
  213. package/src/scripts/_lib/forge_protection.ts +381 -0
  214. package/src/scripts/_lib/forge_reader.ts +558 -0
  215. package/src/scripts/_lib/hook_platform_keys.ts +27 -0
  216. package/src/scripts/_lib/host_env_write.ts +111 -0
  217. package/src/scripts/_lib/json_python_parity.ts +127 -0
  218. package/src/scripts/_lib/lean_projection_mode.ts +14 -3
  219. package/src/scripts/_lib/llm_proposer_transport.ts +14 -4
  220. package/src/scripts/_lib/loop_surfaces.ts +382 -0
  221. package/src/scripts/_lib/mission_record.ts +190 -0
  222. package/src/scripts/_lib/obligation_frequency.ts +217 -0
  223. package/src/scripts/_lib/obligations.ts +513 -0
  224. package/src/scripts/_lib/orchestration_record.ts +11 -20
  225. package/src/scripts/_lib/probe_inputs.ts +271 -0
  226. package/src/scripts/_lib/read_surface_scan.ts +322 -0
  227. package/src/scripts/_lib/release_highlights.ts +201 -11
  228. package/src/scripts/_lib/release_holds.ts +493 -0
  229. package/src/scripts/_lib/release_migration_gate.ts +184 -0
  230. package/src/scripts/_lib/retrieval_sanitize.ts +77 -16
  231. package/src/scripts/_lib/rides_along.ts +102 -0
  232. package/src/scripts/_lib/settings_renamed_keys.ts +82 -0
  233. package/src/scripts/_lib/shell_write_shapes.ts +108 -0
  234. package/src/scripts/_lib/structural_hiding.ts +622 -0
  235. package/src/scripts/_lib/test_delta.ts +166 -0
  236. package/src/scripts/_lib/test_provenance.ts +171 -0
  237. package/src/scripts/_lib/turn_end_refusals.ts +525 -4
  238. package/src/scripts/_lib/turn_end_transcript.ts +216 -0
  239. package/src/scripts/_lib/typed_op_grant.ts +246 -0
  240. package/src/scripts/_lib/typed_op_watch.ts +185 -0
  241. package/src/scripts/_lib/verification_command.ts +324 -0
  242. package/src/scripts/_lib/verification_evidence.ts +647 -0
  243. package/src/scripts/_lib/verify_clause.ts +280 -0
  244. package/src/scripts/ai_council/config.ts +8 -11
  245. package/src/scripts/ai_council/fallback_config.ts +5 -3
  246. package/src/scripts/ai_council/ownership_classes.ts +118 -0
  247. package/src/scripts/ai_team/team_dispatch.ts +4 -0
  248. package/src/scripts/ask_block_census.ts +285 -15
  249. package/src/scripts/before_complete_hook.ts +340 -23
  250. package/src/scripts/bench_hook_latency.ts +412 -5
  251. package/src/scripts/cache_realization_report.ts +61 -1
  252. package/src/scripts/check_argument_hint.ts +287 -0
  253. package/src/scripts/check_claims.ts +125 -1
  254. package/src/scripts/check_enforcement_coverage.ts +38 -9
  255. package/src/scripts/check_enforcement_matrix.ts +866 -0
  256. package/src/scripts/check_finding_dispositions.ts +22 -3
  257. package/src/scripts/check_gate_reachability.ts +173 -10
  258. package/src/scripts/check_generator_sync.ts +1025 -0
  259. package/src/scripts/check_host_docs_digest.ts +786 -0
  260. package/src/scripts/check_host_format_column.ts +559 -0
  261. package/src/scripts/check_input_references.ts +228 -0
  262. package/src/scripts/check_inputs_parity.ts +235 -0
  263. package/src/scripts/check_kernel_edit_ratified.ts +47 -5
  264. package/src/scripts/check_kill_switch_table.ts +294 -0
  265. package/src/scripts/check_placeholder_drift.ts +221 -0
  266. package/src/scripts/check_preamble_payload_budget.ts +75 -2
  267. package/src/scripts/check_read_surface_coverage.ts +515 -0
  268. package/src/scripts/check_release_highlights.ts +33 -1
  269. package/src/scripts/check_release_holds.ts +568 -0
  270. package/src/scripts/check_routing_coverage.ts +378 -11
  271. package/src/scripts/check_rule_projection_integrity.ts +22 -12
  272. package/src/scripts/check_static_parity.ts +17 -0
  273. package/src/scripts/check_test_delta.ts +294 -0
  274. package/src/scripts/check_test_weakening.ts +299 -0
  275. package/src/scripts/ci_settle.ts +145 -19
  276. package/src/scripts/closure_scan.ts +447 -0
  277. package/src/scripts/compile_hook_manifest.ts +102 -18
  278. package/src/scripts/council_record_shape.ts +209 -0
  279. package/src/scripts/external_sources_denylist.json +29 -4
  280. package/src/scripts/hook_manifest.json +1 -1
  281. package/src/scripts/hook_manifest.yaml +127 -11
  282. package/src/scripts/hooks/block_config_weakening.ts +229 -4
  283. package/src/scripts/hooks/block_kernel_rule_writes.ts +9 -78
  284. package/src/scripts/hooks/block_plumbing_writes.ts +314 -0
  285. package/src/scripts/hooks/bundle_integrity.ts +291 -0
  286. package/src/scripts/hooks/chain_nudge_hook.ts +1 -2
  287. package/src/scripts/hooks/code_graph_context_hook.ts +1 -2
  288. package/src/scripts/hooks/comment_discipline_hook.ts +1 -3
  289. package/src/scripts/hooks/concern_registry.ts +6 -0
  290. package/src/scripts/hooks/concern_timings.ts +94 -0
  291. package/src/scripts/hooks/delegation_nudge_hook.ts +1 -2
  292. package/src/scripts/hooks/design_pass_hook.ts +221 -5
  293. package/src/scripts/hooks/design_slop_hook.ts +1 -2
  294. package/src/scripts/hooks/dispatch_hook.ts +25 -19
  295. package/src/scripts/hooks/edit_shape_hook.ts +1 -2
  296. package/src/scripts/hooks/end_review_nudge_hook.ts +1 -1
  297. package/src/scripts/hooks/evidence_independence.ts +97 -2
  298. package/src/scripts/hooks/exit_codes.ts +128 -0
  299. package/src/scripts/hooks/host_lowering.json +1 -0
  300. package/src/scripts/hooks/host_lowering.ts +128 -3
  301. package/src/scripts/hooks/host_lowering.yaml +262 -46
  302. package/src/scripts/hooks/host_semantics.ts +30 -2
  303. package/src/scripts/hooks/injection_budget.ts +9 -2
  304. package/src/scripts/hooks/interruption_ledger_hook.ts +1 -2
  305. package/src/scripts/hooks/journal_record_hook.ts +1 -2
  306. package/src/scripts/hooks/memory_recall_hook.ts +539 -0
  307. package/src/scripts/hooks/obligation_settle_hook.ts +328 -0
  308. package/src/scripts/hooks/one_question_per_ask_hook.ts +25 -4
  309. package/src/scripts/hooks/orchestration_record_hook.ts +1 -2
  310. package/src/scripts/hooks/permission_gate.ts +1 -2
  311. package/src/scripts/hooks/push_settle_hook.ts +1 -3
  312. package/src/scripts/hooks/replay_hook.ts +2 -1
  313. package/src/scripts/hooks/reread_guard_hook.ts +1 -2
  314. package/src/scripts/hooks/review_baseline_hook.ts +1 -2
  315. package/src/scripts/hooks/rtk_wrap_hook.ts +1 -2
  316. package/src/scripts/hooks/rule_inject_hook.ts +55 -4
  317. package/src/scripts/hooks/run_continuation_hook.ts +30 -35
  318. package/src/scripts/hooks/skill_route_hook.ts +1 -2
  319. package/src/scripts/hooks/source_first_gate_hook.ts +1 -2
  320. package/src/scripts/hooks/spawn_guard_shadow_hook.ts +1 -2
  321. package/src/scripts/hooks/subagent_ledger_hook.ts +1 -2
  322. package/src/scripts/hooks/suggestion_capture_hook.ts +1 -1
  323. package/src/scripts/hooks/table_fingerprint.ts +49 -0
  324. package/src/scripts/hooks/telemetry_flush_hook.ts +1 -2
  325. package/src/scripts/hooks/telemetry_usage_hook.ts +1 -2
  326. package/src/scripts/hooks/tool_result_bytes_hook.ts +93 -9
  327. package/src/scripts/hooks/turn_end_gate_hook.ts +337 -324
  328. package/src/scripts/hooks/ui_route_nudge_hook.ts +1 -2
  329. package/src/scripts/hooks_doctor.ts +85 -0
  330. package/src/scripts/hooks_status.ts +19 -0
  331. package/src/scripts/install.ts +109 -210
  332. package/src/scripts/janitor.ts +7 -0
  333. package/src/scripts/lint_decision_classes.ts +464 -0
  334. package/src/scripts/lint_deny_text.ts +419 -0
  335. package/src/scripts/lint_exit_codes.ts +262 -0
  336. package/src/scripts/lint_hook_manifest.ts +66 -0
  337. package/src/scripts/lint_major_migration_sections.ts +450 -0
  338. package/src/scripts/lint_plan_risk_register.ts +47 -3
  339. package/src/scripts/lint_roadmap_blockers.ts +139 -12
  340. package/src/scripts/lint_roadmap_producers.ts +202 -0
  341. package/src/scripts/lint_skill_descriptions.ts +1 -1
  342. package/src/scripts/lint_skill_scripts_readonly.ts +1 -1
  343. package/src/scripts/mcp_server/prompts.ts +142 -1
  344. package/src/scripts/measure_rule_budget.ts +101 -5
  345. package/src/scripts/measure_skill_ranker_baseline.ts +305 -51
  346. package/src/scripts/measure_turn_end_gate.ts +193 -0
  347. package/src/scripts/memory_lookup.ts +1 -1
  348. package/src/scripts/new_roadmap.ts +37 -0
  349. package/src/scripts/orchestration_record.ts +0 -5
  350. package/src/scripts/prepack-check.mjs +53 -0
  351. package/src/scripts/release.ts +14 -98
  352. package/src/scripts/release_drill.ts +267 -1
  353. package/src/scripts/release_publication.ts +64 -1
  354. package/src/scripts/report_enforcement_drift.ts +566 -0
  355. package/src/scripts/report_host_injection_effect.ts +3 -11
  356. package/src/scripts/report_invocation_surface.ts +383 -0
  357. package/src/scripts/report_obligation_carriers.ts +699 -0
  358. package/src/scripts/report_obligation_writer_split.ts +236 -0
  359. package/src/scripts/report_skill_menu_census.ts +208 -0
  360. package/src/scripts/report_standing_payload_by_host.ts +26 -152
  361. package/src/scripts/roadmap_verify_share.ts +213 -0
  362. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  363. package/src/scripts/schemas/command.schema.json +48 -0
  364. package/src/scripts/schemas/review-findings.schema.json +4 -0
  365. package/src/scripts/schemas/skill.schema.json +44 -0
  366. package/src/scripts/scope_growth.ts +219 -0
  367. package/src/scripts/self_review_gate.ts +359 -10
  368. package/src/scripts/semantic_parity_census.ts +314 -0
  369. package/src/scripts/session_eol_report.ts +54 -1
  370. package/src/scripts/sweep_dead_scan_roots.ts +1 -1
  371. package/src/scripts/trigger_eval_grandfather.json +0 -3
  372. package/src/scripts/trigger_eval_rotation.ts +122 -27
  373. package/src/scripts/ui_conformance_probe.ts +774 -0
  374. package/src/scripts/update_prices.ts +85 -3
  375. package/src/scripts/write_bundle_digest.mjs +74 -0
  376. package/src/server/schemas/settings.ts +62 -7
  377. package/src/shared/missionExecution.ts +126 -0
  378. package/src/templates/consumer-settings/ONBOARDING.md +1 -0
  379. package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
  380. package/dist/ui/assets/index-D0jaCRPM.js +0 -29
  381. package/dist/ui/assets/index-jSfMW8_t.css +0 -1
  382. /package/dist/cli-delegate/{chunk-YUM5KURG.js → chunk-7RQP4UDH.js} +0 -0
@@ -423,6 +423,76 @@ github:
423
423
  # auto = detect on first use and update this setting
424
424
  pr_reply_method: create_review_comment
425
425
 
426
+ # --- Delivery: what a run does with the branch it produced ---
427
+ #
428
+ # ADR-268 section 3 resolves ADR-239 section 3's "undecided, not rejected" on merge
429
+ # authority in the affirmative, and these keys are where that decision is
430
+ # configured rather than inferred. All three are Class C in
431
+ # docs/contracts/settings-classes.md: every agent write path refuses them, so
432
+ # a run can read its delivery policy and can never widen it.
433
+ #
434
+ # NAMING IS DELIBERATE. check_no_automerge_key.ts is a namespace ratchet on the
435
+ # three key names autoMerge / auto_merge / mergePolicy, and its own text reserves
436
+ # its deletion to the owner. `delivery.merge` grants the same capability under a
437
+ # name outside that closed set, so the ratchet stays green and stays standing --
438
+ # the boundary it protects is a name, and the decision it points at was taken by
439
+ # an ADR rather than by a key.
440
+ delivery:
441
+ # Whether a run may merge the pull request it produced.
442
+ # off = default. The run ends at mergeable-green-and-open and says so.
443
+ # on-green = merge is permitted, and ONLY when an object-bound grant covering
444
+ # {op: prod_merge, target: <base>} exists AND the final head is
445
+ # required-check-green, target-current and tamper-checked. This
446
+ # key is a precondition, never the authorisation by itself.
447
+ # Forge auto-merge is the mechanism, so branch protection stays the gate.
448
+ # Required protections are never bypassed -- an invariant, not a default.
449
+ merge: "off"
450
+
451
+ # Whether the run stays alive until the required checks settle.
452
+ # true = default. The run drives CI and reports the settled verdict.
453
+ # false = the run ends once the branch is pushed and the PR is open,
454
+ # leaving the checks to be read later.
455
+ # Independent of `merge`: a run may wait for CI without being allowed to
456
+ # merge, which is the shape every drain run uses today.
457
+ wait_for_ci: true
458
+
459
+ # How a mission's work is shaped into pull requests.
460
+ # single = default. One branch, one pull request.
461
+ # stacked = a dependent series.
462
+ # `stacked` is NEVER chosen by the agent and is never asked about at roadmap
463
+ # creation. The owner plans it in roadmap frontmatter or it does not happen;
464
+ # that is why this key is Class C rather than a preference.
465
+ pr_topology: single
466
+
467
+ # --- What this package may write into the HOST's own environment ---
468
+ #
469
+ # THE GUARANTEE IS THE SHAPE, not a list. Only request-SIZE caps live here.
470
+ # Neither `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` nor `DISABLE_AUTOUPDATER`
471
+ # is expressible: both reach the host's update-disabled resolver -- the blanket
472
+ # one as its THIRD RUNG, measured on Claude Code 2.1.284 -- so a profile able to
473
+ # write either could disable a consumer's security updates. Owner-decided
474
+ # 2026-09-30: this package never writes them, and a schema that cannot say them
475
+ # holds that better than an exclusion list somebody has to keep true.
476
+ #
477
+ # Both keys are `null` by default, and null IS the off switch -- nothing is
478
+ # written. There is deliberately no separate enable flag: a flag plus a value
479
+ # would be two ways to say off, and one of them would drift.
480
+ #
481
+ # Size, never count. Lowering either cap suppresses no telemetry, no update
482
+ # check and no download; it bounds how big a request is, not how many there are.
483
+ # What each variable governs is in docs/setup/host-traffic-environment.md and is
484
+ # not copied here.
485
+ host_environment:
486
+ request_size_caps:
487
+ # Character cap on Bash tool output placed inline into a model request.
488
+ # null = not written, host default 30000 applies. Max 150000 -- above that
489
+ # the host caps it silently, so the schema refuses rather than writing a
490
+ # value the host changes behind you.
491
+ bash_max_output_length: null
492
+ # Token cap on a single MCP tool result. null = not written, host default
493
+ # 25000 applies.
494
+ max_mcp_output_tokens: null
495
+
426
496
  # --- Augment Code projection (.augment/) ---
427
497
  #
428
498
  # Controls how rule files are written into .augment/rules/ during
@@ -533,9 +603,23 @@ roadmap:
533
603
  # pattern: which asks are batched into the run-start execution
534
604
  # contract and where checkpoint prompts fire. It overrides NONE of
535
605
  # the keys below — `skip_pre_run_gate`, `quality_cadence`, and
536
- # `dashboard_regen_cadence` keep their global meaning in every mode,
537
- # and no mode lifts a safety floor. See
538
- # contexts/execution/roadmap-execution-contract.md.
606
+ # `dashboard_regen_cadence` keep their global meaning in every mode.
607
+ #
608
+ # WHAT NO MODE LIFTS, NAMED. This sentence used to read "no mode lifts a
609
+ # safety floor", which is unfalsifiable: it never says which floor or how
610
+ # far it reaches. What no `execution.mode` value lifts is ADR-260 section 2's
611
+ # closed eleven-op vocabulary -- force_push, prod_merge, tag_push, release,
612
+ # publish, branch_protection_change, repo_delete, prod_data_delete,
613
+ # secret_write, payment, external_send. Each of those needs its own
614
+ # object-bound grant, and no interaction pattern substitutes for one.
615
+ #
616
+ # The Hard Floor in `non-destructive-by-default` is today WIDER than that
617
+ # vocabulary -- it also covers every `git push` and every non-prod merge --
618
+ # and that wider reach is what is in force right now. ADR-260 decision 11
619
+ # narrows it to the eleven ops and ADR-268 accepted that, but the narrowing
620
+ # has not landed, so read the rule's own trigger table as the authority on
621
+ # reach and this comment as the authority on what a MODE can change: nothing.
622
+ # See contexts/execution/roadmap-execution-contract.md.
539
623
 
540
624
  # Skip the /roadmap:process-* pre-run confirmation gate (true, false).
541
625
  # true = default. The command name names the scope; a discoverable
@@ -549,15 +633,19 @@ roadmap:
549
633
  skip_pre_run_gate: true
550
634
 
551
635
  # When to run quality tools during /roadmap execute.
552
- # end_of_roadmap = once, before archiving the completed roadmap (default — fastest, fewest tokens)
553
- # per_phase = once after every completed phase
636
+ # end_of_roadmap = once, before archiving the completed roadmap (fastest, fewest tokens)
637
+ # per_phase = once after every completed phase (default since 2026-09-13)
554
638
  # per_step = after every completed step (legacy verbose; highest token cost)
555
- # Trade-off: end_of_roadmap saves tokens and time but lets errors compound
556
- # across phases. Pick per_phase if the work is risky or unfamiliar.
557
- # `quality.local_auto_run: false` (the default) suppresses local
558
- # pipeline runs at EVERY cadence — remote CI is the gate; this knob
559
- # only matters when `local_auto_run` is `true`.
560
- quality_cadence: end_of_roadmap
639
+ # The default moved from end_of_roadmap to per_phase on the strength of
640
+ # this block's OWN trade-off sentence: end_of_roadmap saves tokens and
641
+ # time but lets errors compound across phases. A multi-phase autonomous
642
+ # run is exactly the case where compounding is expensive and nobody is
643
+ # watching, so the cheaper default was the wrong one to ship. Set
644
+ # end_of_roadmap back if the work is routine and token cost dominates.
645
+ # `quality.local_auto_run` (chat) and `quality.local_auto_run_in_mission`
646
+ # (a mission) decide WHETHER local pipeline runs happen at all; this
647
+ # knob only decides WHEN, and is inert wherever both resolve false.
648
+ quality_cadence: per_phase
561
649
 
562
650
  # Dashboard regen cadence inside autonomous runs (process-step /
563
651
  # process-phase / process-full). Controls how often
@@ -635,20 +723,26 @@ roadmap:
635
723
  # roadmaps AND feature plans — which is why these keys do not live under
636
724
  # `roadmap:`. All three default to true; a missing key behaves as true.
637
725
  planning:
638
- # Gate C — plan-confidence gate, BEFORE authoring (true, false).
639
- # true = default. A plan-artifact authoring ask (/roadmap:create,
640
- # roadmap-writing, /feature:plan, /feature:roadmap) first runs
641
- # the four 95%-confidence conditions from /challenge-me vision.
642
- # All four hold → the agent creates directly and emits exactly
643
- # one marker line ("Confidence ≥ 95% — creating directly").
644
- # Any gap → the ask routes into the /challenge-me vision
645
- # interview first; hosts without that command run the inline
646
- # degrade interview (one question per turn, same stop
647
- # conditions — contexts/execution/plan-confidence-gate.md).
726
+ # Gate C — plan-closure pass, at the END of planning (true, false).
727
+ # true = default. Every command declaring `produces_roadmap: true`
728
+ # ends in a closure pass (/challenge-me closure): the open
729
+ # decisions are detected, each resolved at the lowest rung
730
+ # that owns it — evidence, convention, the agent, an
731
+ # independent session, the council, the team, the owner last
732
+ # and only for owner-owned residue — and written into the
733
+ # roadmap's `## Decisions` table. The seed-confidence check
734
+ # from /challenge-me vision still runs where a plan starts
735
+ # from a fuzzy ask; the difference is that closure is now
736
+ # measured at the END, where an open decision actually costs
737
+ # a run, rather than only at the start.
648
738
  # An explicit user bypass ("just write it") wins for that turn
649
- # and is counted (gate_c_bypass_rate).
739
+ # and is counted AS A BYPASS, on its own axis — never as an
740
+ # absent closure.
650
741
  # false = inert; plan asks author directly (today's behavior).
651
- challenge_on_create: true
742
+ #
743
+ # `challenge_on_create` is the deprecated alias, accepted for one
744
+ # minor so an installed settings file keeps loading.
745
+ closure_pass: true
652
746
 
653
747
  # Gate R1 — plan-risk review at plan creation / substantial change
654
748
  # (true, false).
@@ -674,6 +768,35 @@ planning:
674
768
  # false = escape hatch; the validator skips (governance default is on).
675
769
  completion_review: true
676
770
 
771
+ # --- Execution — the fix-loop bound and its escalation ladder ---
772
+ #
773
+ # The bound on how long the agent keeps attempting the same failing
774
+ # target, and what happens when it is reached. Reaching the bound is a
775
+ # STRATEGY CHANGE, never a question: `escalation` names the rungs the
776
+ # agent walks, in order, before any owner ask is even considered.
777
+ #
778
+ # `owner_owned_check` is the last rung and it is NOT "ask now" — it asks
779
+ # whether the remaining residue is owner-owned per the ownership table.
780
+ # Where it is not, the run continues under a new strategy epoch. Removing
781
+ # that rung by setting is refused: it is the rung that DECIDES whether a
782
+ # residue is owner-owned at all, so dropping it turns every residue into
783
+ # an owner ask, which is the failure the ladder exists to end.
784
+ execution:
785
+ # Consecutive failed fix attempts against one validation target before
786
+ # the ladder's terminal rung is reached. Overridable globally, per
787
+ # project, and per prompt. A non-integer or non-positive value falls
788
+ # back to 10 — a bound of 0 makes every first attempt terminal.
789
+ fix_loop_max: 10
790
+
791
+ # The rungs, in order. Attempts escalate INDEPENDENTLY first: another
792
+ # session or a provider-diverse reviewer, then the council, then the
793
+ # team, and only then the owner-ownership question.
794
+ # A FLOW sequence, like every other list in this file: the settings
795
+ # writer locates a key by its `key: <value>` line, so a block sequence
796
+ # reads as an empty section header and the write corrupts the file.
797
+ escalation: [independent, council, team, owner_owned_check]
798
+
799
+
677
800
  # --- Quality / CI execution ---
678
801
  #
679
802
  # Controls whether the agent runs the project's quality pipeline
@@ -705,16 +828,34 @@ quality:
705
828
  # MUST execute it locally to prove the gate works. Without that
706
829
  # execution the new gate is unverified evidence.
707
830
  #
708
- # Posture note (feedback-8.11-2): `false` is a DELIBERATE, documented
709
- # design decision, not an omission — remote CI is the single
710
- # authoritative gate; local full-pipeline runs duplicate it at
711
- # wall-clock + token cost. It never suppresses (a) narrow diff-scoped
831
+ # Posture note (feedback-8.11-2, rewritten 2026-09-13): `false` is a
832
+ # DELIBERATE, documented design decision — and it describes a CHAT
833
+ # TURN, not an autonomous mission. That is the half the old wording
834
+ # left implicit, and naming it is the whole point of the rewrite.
835
+ # In a chat turn a human is present, the next action is theirs, and a
836
+ # local full-pipeline run duplicates remote CI at wall-clock + token
837
+ # cost while they wait. In an autonomous mission nobody is waiting,
838
+ # the next action is the agent's own, and a red discovered twenty
839
+ # steps later costs more than the run that would have caught it at
840
+ # step one — the same "lets errors compound" argument the roadmap
841
+ # cadence knob above already makes about itself.
842
+ # So: this key governs CHAT. `local_auto_run_in_mission` below
843
+ # governs a mission. Neither ever suppresses (a) narrow diff-scoped
712
844
  # probes (type-check/lint/tests over the agent's OWN changed files
713
845
  # before pushing — those always run), (b) the new-gate carve-out
714
846
  # above, (c) user-invoked runs. Run-end reports must say "quality
715
847
  # gates delegated to remote CI", never claim an unrun pipeline passed.
716
848
  local_auto_run: false
717
849
 
850
+ # Run local quality / CI tasks autonomously INSIDE a mission — an
851
+ # autonomous roadmap run with a claimed contract (true, false).
852
+ # true = default. A mission resolves `local_auto_run` to true.
853
+ # false = a mission behaves like chat; remote CI alone is the gate.
854
+ # Resolution is a runtime condition, never a settings layer: outside a
855
+ # mission this key is inert, and `local_auto_run: true` is never
856
+ # LOWERED by a mission. Resolver: src/shared/missionExecution.ts.
857
+ local_auto_run_in_mission: true
858
+
718
859
 
719
860
  # --- Design fidelity ---
720
861
  #
@@ -0,0 +1,16 @@
1
+ {
2
+ "_comment": "Growth ratchet for the `auto`-tier rule bucket (road-to-design-fidelity-proof Phase 3). check_always_budget gates the nine kernel rules; measure_rule_budget already measured all 121 and gated none of them, so ~93 % of the estate's rule prose grew against nothing. Seeded AT the measurement, exactly like the preamble-payload ceiling and for the same reason: seeding below it would red every pull request from the day it lands, which is a self-inflicted CI stop rather than a gate. It may only move DOWN. Raising it to clear a failing check is the config-weakening move this repo refuses; walk the bucket back instead, or state the compensating reduction.",
3
+ "schema_version": 1,
4
+ "registered_at": "2026-09-18",
5
+ "owner": "maintainer",
6
+ "review_by": "2027-09-18",
7
+ "baseline_chars": 373000,
8
+ "baseline_history": [
9
+ {
10
+ "chars": 373000,
11
+ "at": "2026-09-18",
12
+ "why": "registered with the gate, seeded at the measured auto bucket (107 rules) after road-to-design-fidelity-proof Phase 1 returned 1,885 chars from design-fidelity.md"
13
+ }
14
+ ],
15
+ "_what_this_does_not_claim": "A char count is not an obligation count. The Iron-Law total printed beside it is the closer proxy for what the instruction-following research calls simultaneous constraints, and it is REPORTED, not gated \u2014 nobody has measured a threshold for this layer, and gating an unmeasured number would publish a bound as if it were a finding."
16
+ }
@@ -270,6 +270,24 @@ ci_only:
270
270
  - id: release
271
271
  class: release
272
272
  reason: "tags, bumps, publishes, opens the release PR — the release itself"
273
+ - id: check_host_docs_digest
274
+ class: network
275
+ reason: >
276
+ road-to-hooks-on-every-host Phase 1.3. The watcher's whole subject is the
277
+ LIVE body of each host's hooks page, so its CI-side mode (`--fetch`) makes
278
+ eight outbound requests to vendor documentation sites. Putting that in
279
+ `task ci` would add eight network calls — and eight new ways to fail — to
280
+ every local run of an otherwise hermetic gate chain, for a signal that
281
+ changes on the order of vendor releases rather than of commits. It runs in
282
+ its own WEEKLY workflow (`host-docs-digest.yml`) and nowhere else.
283
+ It is also not a pull-request gate, so there is no failure a contributor
284
+ could discover only after pushing, which is the exact harm this checker
285
+ exists to prevent: a drift red is a standing finding about an upstream
286
+ page, never a verdict on anyone's branch.
287
+ Reachable locally without egress: `./scripts-run src/scripts/check_host_docs_digest`
288
+ (offline report) and `--self-test` (pure functions, no network); the
289
+ comparison logic itself is covered hermetically by
290
+ `tests/scripts/host_docs_digest.test.ts`.
273
291
 
274
292
  # Gates a local chain runs that no workflow does — each needs a reason it is not
275
293
  # worth remote enforcement, OR it should simply be added to a workflow. Prefer
@@ -278,11 +296,24 @@ local_only:
278
296
  - id: check_platform_anchor
279
297
  class: token-scope-unavailable
280
298
  reason: >
281
- Reads `repos/{owner}/{repo}/rulesets` to check that the forge actually
282
- requires what the ratification mechanism claims it does — an active branch
283
- ruleset over the default branch, an approving review, last-push approval,
284
- deletion and force-push blocked, strict required checks, and no
285
- unconditional bypass actor.
299
+ Reads `repos/{owner}/{repo}/rulesets` to compare the committed expectation
300
+ against the live ruleset — an active branch ruleset over the default
301
+ branch, review-thread resolution, deletion and force-push blocked, at
302
+ least one required status check context, and no unconditional bypass
303
+ actor. `strict_required_status_checks` is a baseline expectation currently
304
+ covered by the recorded waiver `arr-2026-09-10-strict-status-checks`
305
+ (owner, expires 2026-12-09), so a deviation there is reported as an
306
+ accepted risk rather than a finding.
307
+
308
+ Corrected 2026-09-13. This text used to name "an approving review,
309
+ last-push approval" among what is checked; both dimensions were removed
310
+ from the trust model by owner ruling on 2026-09-10 and are now reported as
311
+ observed evidence, never as a requirement. It also said the gate checks
312
+ that the forge "actually requires what the ratification mechanism claims
313
+ it does" — which overstates a voluntarily invoked local control, per the
314
+ reviewing council of 2026-09-13, and `check_platform_anchor` must not be
315
+ described as enforcing repository-wide compliance. See
316
+ `enforcement_boundary_note` in `src/config/platform-anchor.json`.
286
317
 
287
318
  Local-only because the permission does not exist, not because remote
288
319
  enforcement is unwanted — which is the opposite of the usual reason on this
@@ -148,6 +148,13 @@
148
148
  "locus": "src/scripts/hooks/design_pass_hook.ts:66",
149
149
  "reason": "Design-pass hook latch."
150
150
  },
151
+ {
152
+ "id": "obligations",
153
+ "axis": "persistent_continuity_artefacts",
154
+ "disposition": "excluded",
155
+ "locus": "src/scripts/_lib/obligations.ts:57",
156
+ "reason": "Per-session obligation ledger — instrumentation, not continuity. A later session must not resume from it: the rows record which obligations THIS session was delivered, and attributing them to a successor would be the one claim the ledger is forbidden to make."
157
+ },
151
158
  {
152
159
  "id": "design-slop-hook.json",
153
160
  "axis": "persistent_continuity_artefacts",
@@ -267,6 +274,13 @@
267
274
  "locus": "src/scripts/hooks/reread_guard_hook.ts:21",
268
275
  "reason": "Per-file re-read guard stamps, scoped to one session and never restored into another."
269
276
  },
277
+ {
278
+ "id": "memory-recall",
279
+ "axis": "persistent_continuity_artefacts",
280
+ "disposition": "excluded",
281
+ "locus": "src/scripts/hooks/memory_recall_hook.ts:429",
282
+ "reason": "Per-session once-per-slug latch for the memory-recall advisory, so a delivered memory is not re-injected on the next matching tool call. Slug keys and timestamps only, scoped to one session and never restored into another — a successor session SHOULD be told again."
283
+ },
270
284
  {
271
285
  "id": "review-axis",
272
286
  "axis": "persistent_continuity_artefacts",
@@ -390,8 +404,8 @@
390
404
  "id": "tool-result-census.jsonl",
391
405
  "axis": "persistent_continuity_artefacts",
392
406
  "disposition": "excluded",
393
- "locus": "src/scripts/hooks/tool_result_bytes_hook.ts:92",
394
- "reason": "Tool-result byte census. Measurement output."
407
+ "locus": "src/scripts/hooks/tool_result_bytes_hook.ts",
408
+ "reason": "Tool-result byte census (raw_bytes / delivered_bytes). Measurement output, written only where the maintainer workspace resolves."
395
409
  },
396
410
  {
397
411
  "id": "turn-end-gate",
@@ -407,6 +421,13 @@
407
421
  "locus": "src/scripts/_dispatch.bash:74",
408
422
  "reason": "UI audit output. Analysis result."
409
423
  },
424
+ {
425
+ "id": "ui-conformance.json",
426
+ "axis": "persistent_continuity_artefacts",
427
+ "disposition": "excluded",
428
+ "locus": "src/scripts/hooks/design_pass_hook.ts:68",
429
+ "reason": "Behavioural-conformance probe output. Analysis result, on the same footing as its `ui-audit.json` neighbour: keyed on a target path rather than a session, consumed by the design pass as a shadow verdict, and never read by a successor session to resume anything."
430
+ },
410
431
  {
411
432
  "id": "ui-route-nudge.json",
412
433
  "axis": "persistent_continuity_artefacts",