@event4u/agent-config 14.22.0 → 15.0.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 (557) 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 +333 -356
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +48 -39
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +9 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +13 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +36 -25
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  249. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  250. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  251. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  252. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  253. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  254. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  255. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  256. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  257. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  258. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  259. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -1
  260. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  261. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  262. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  263. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  264. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  265. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  266. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  267. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  268. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  269. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  270. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  271. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  272. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  273. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  274. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  275. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  276. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  277. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  278. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  279. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  281. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  282. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  283. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  284. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  285. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  286. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  287. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  288. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  289. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  290. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  291. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  292. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  293. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  294. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  296. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  297. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  298. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  299. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  300. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  301. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  302. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  303. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  304. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +9 -0
  305. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  306. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  307. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  308. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  309. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  310. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  311. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  312. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  313. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  314. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  315. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  316. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  317. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  318. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  319. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  320. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  321. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  322. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  323. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  324. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  325. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  326. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  327. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  328. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  329. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  330. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  332. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  333. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  334. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  335. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  336. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  337. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  338. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  339. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  340. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  341. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  342. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  343. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  344. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  345. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  346. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  347. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  348. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  349. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  350. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  351. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  352. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  353. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  354. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  355. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  356. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  357. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +60 -4
  358. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  359. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  360. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  361. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  362. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  363. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  364. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  365. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  366. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  367. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  368. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  369. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  370. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  371. package/dist/agent-src/templates/agent-settings.md +6 -6
  372. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  373. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  374. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  375. package/dist/agent-src/templates/roadmaps.md +1 -1
  376. package/dist/agent-src/templates/scripts/README.md +2 -2
  377. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  378. package/dist/cli/registry.js +1 -1
  379. package/dist/cli-delegate/archive_completed_roadmaps.js +52 -4
  380. package/dist/cli-delegate/check_update_banner.js +12 -1
  381. package/dist/cli-delegate/{chunk-TGIPZBCW.js → chunk-2KKXJW25.js} +22 -8
  382. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  383. package/dist/cli-delegate/{chunk-4FS4WRXP.js → chunk-3FKR64R5.js} +34 -6
  384. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  385. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  386. package/dist/cli-delegate/{chunk-BIXEDQPZ.js → chunk-AK6HODNQ.js} +4 -4
  387. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  388. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  389. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  390. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  391. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  392. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  393. package/dist/cli-delegate/cmd_conformance.js +3 -3
  394. package/dist/cli-delegate/cmd_doctor.js +3 -3
  395. package/dist/cli-delegate/cmd_explain.js +2 -2
  396. package/dist/cli-delegate/cmd_export.js +4 -4
  397. package/dist/cli-delegate/cmd_handoff.js +24 -16
  398. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  399. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  400. package/dist/cli-delegate/cmd_migrate.js +2 -2
  401. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  402. package/dist/cli-delegate/cmd_prune.js +4 -4
  403. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  404. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  405. package/dist/cli-delegate/cmd_session_recycle.js +4 -14
  406. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  407. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  408. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  409. package/dist/cli-delegate/cmd_sync.js +4 -4
  410. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  411. package/dist/cli-delegate/cmd_update.js +1 -1
  412. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  413. package/dist/cli-delegate/cmd_validate.js +4 -4
  414. package/dist/cli-delegate/cmd_versions.js +1 -1
  415. package/dist/discovery/deprecation-report.md +1 -1
  416. package/dist/discovery/discovery-manifest.json +27 -80
  417. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  418. package/dist/discovery/discovery-manifest.summary.md +3 -3
  419. package/dist/discovery/dormancy-report.md +1 -1
  420. package/dist/discovery/orphan-report.md +1 -1
  421. package/dist/discovery/packs.json +5 -7
  422. package/dist/discovery/trust-report.md +2 -2
  423. package/dist/discovery/workspaces.json +4 -6
  424. package/dist/hooks/dispatch.js +9249 -8981
  425. package/dist/install/install.mjs +47 -8
  426. package/dist/mcp/registry-manifest.json +3 -3
  427. package/dist/mcp/server.json +2 -2
  428. package/dist/mcp/server.mjs +5496 -2400
  429. package/dist/router.json +1 -1
  430. package/dist/scripts/_lib/agent_settings.js +73 -0
  431. package/dist/scripts/_lib/agent_src.js +20 -0
  432. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  433. package/dist/scripts/_lib/lean_projection_mode.js +108 -0
  434. package/dist/scripts/_lib/router_match.js +243 -0
  435. package/dist/scripts/_lib/rule_injection.js +216 -0
  436. package/dist/scripts/condense.js +22 -25
  437. package/dist/scripts/project_thin_rules.js +139 -19
  438. package/dist/server/io/yamlIO.js +125 -17
  439. package/dist/server/schemas/settings.js +32 -5
  440. package/dist/shared/settingsSurface.js +6 -1
  441. package/docs/MIGRATION.md +56 -0
  442. package/docs/contracts/settings-classes.md +48 -7
  443. package/docs/guidelines/abstraction-thresholds.md +35 -0
  444. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  445. package/docs/guidelines/agent-infra/false-green.md +2 -2
  446. package/docs/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  447. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  448. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  449. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  450. package/docs/guidelines/design-fidelity-routing.md +78 -0
  451. package/docs/guidelines/design-reconciliation.md +172 -0
  452. package/docs/guidelines/gtm-handoff.md +2 -2
  453. package/docs/guidelines/wing4-handoff.md +2 -2
  454. package/llms.txt +1 -1
  455. package/package.json +7 -3
  456. package/src/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  457. package/src/config/agent-settings.template.yml +94 -1
  458. package/src/config/ci-local-parity.yml +34 -0
  459. package/src/config/continuity-surface.json +8 -29
  460. package/src/config/evaluator-budgets.json +4 -4
  461. package/src/config/gate-coverage.yml +31 -8
  462. package/src/config/gate-reachability-exemptions.json +1 -0
  463. package/src/config/gate-violation-baselines.json +3 -3
  464. package/src/config/hook-token-budget.json +8 -7
  465. package/src/config/host-injection-effect.json +2 -2
  466. package/src/config/pack-size-budget.json +55 -4
  467. package/src/config/packed-binary-manifest.json +1 -1
  468. package/src/config/platform-anchor.json +47 -0
  469. package/src/config/preamble-payload-budget.json +2 -3
  470. package/src/config/publish-surface.json +4 -2
  471. package/src/config/ratification-policy.json +7 -0
  472. package/src/config/routing-coverage-seed.json +9 -2
  473. package/src/config/rule-stub-ceilings.json +16 -9
  474. package/src/scripts/_cli/cmd_session_recycle.ts +2 -25
  475. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  476. package/src/scripts/_cli/handoff_sessions.ts +14 -44
  477. package/src/scripts/_lib/agent_settings.ts +85 -0
  478. package/src/scripts/_lib/agent_src.ts +21 -0
  479. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  480. package/src/scripts/_lib/conformance_report.ts +403 -0
  481. package/src/scripts/_lib/continuity_slot.ts +295 -0
  482. package/src/scripts/_lib/continuity_writer.ts +312 -0
  483. package/src/scripts/_lib/design_system_import.ts +20 -0
  484. package/src/scripts/_lib/design_tolerance.ts +281 -0
  485. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  486. package/src/scripts/_lib/hook_settings.ts +85 -0
  487. package/src/scripts/_lib/lean_projection_mode.ts +127 -0
  488. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  489. package/src/scripts/_lib/packed_binary_predicate.ts +37 -0
  490. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  491. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  492. package/src/scripts/_lib/recycle_envelope_paths.ts +109 -21
  493. package/src/scripts/_lib/regression_neighbourhood.ts +159 -22
  494. package/src/scripts/_lib/security_lint.ts +23 -2
  495. package/src/scripts/_lib/self_repair.ts +21 -0
  496. package/src/scripts/_lib/session_eol.ts +44 -0
  497. package/src/scripts/_lib/session_index_trust.ts +387 -0
  498. package/src/scripts/_lib/standing_bound_ratchet.ts +220 -0
  499. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  500. package/src/scripts/_lib/vendored_grammar_upstream.ts +280 -0
  501. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  502. package/src/scripts/audit_mcp_tools.ts +69 -25
  503. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  504. package/src/scripts/build_mcp_catalog.ts +24 -1
  505. package/src/scripts/check_host_tree_parity.ts +291 -0
  506. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  507. package/src/scripts/check_loss_class_declared.ts +793 -46
  508. package/src/scripts/check_platform_anchor.ts +390 -0
  509. package/src/scripts/check_preamble_payload_budget.ts +424 -7
  510. package/src/scripts/check_projected_rule_routes.ts +395 -0
  511. package/src/scripts/check_rule_projection_integrity.ts +102 -2
  512. package/src/scripts/ci_settle.ts +205 -5
  513. package/src/scripts/code_graph/build.ts +79 -0
  514. package/src/scripts/code_graph/cli.ts +264 -7
  515. package/src/scripts/code_graph/detect.ts +38 -0
  516. package/src/scripts/code_graph/query.ts +25 -2
  517. package/src/scripts/code_graph/sqlite_store.ts +16 -1
  518. package/src/scripts/code_graph/types.ts +52 -3
  519. package/src/scripts/code_graph/validate.ts +3 -1
  520. package/src/scripts/code_graph/verbs.ts +590 -0
  521. package/src/scripts/condense.ts +22 -26
  522. package/src/scripts/generate_host_cost_table.ts +354 -0
  523. package/src/scripts/handoff_context_hook.ts +39 -1
  524. package/src/scripts/hook_manifest.json +1 -1
  525. package/src/scripts/hook_manifest.yaml +59 -28
  526. package/src/scripts/hooks/block_speaking_inbox_dir.ts +182 -16
  527. package/src/scripts/hooks/category_a.ts +1 -1
  528. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  529. package/src/scripts/hooks/code_graph_context_hook.ts +7 -18
  530. package/src/scripts/hooks/push_settle_hook.ts +3 -2
  531. package/src/scripts/hooks/rule_inject_hook.ts +107 -20
  532. package/src/scripts/hooks/session_eol_hook.ts +177 -145
  533. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  534. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  535. package/src/scripts/hot_context_hook.ts +103 -408
  536. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  537. package/src/scripts/lint_knowledge_scale.ts +0 -26
  538. package/src/scripts/lint_roadmap_blockers.ts +164 -1
  539. package/src/scripts/mcp_server/consumer_tool_catalog.json +152 -2
  540. package/src/scripts/mcp_server/graph_tools.ts +294 -0
  541. package/src/scripts/mcp_server/path_util.ts +31 -0
  542. package/src/scripts/mcp_server/tool_catalog_source.ts +7 -1
  543. package/src/scripts/mcp_server/tools.ts +3 -13
  544. package/src/scripts/memory_lookup.ts +9 -9
  545. package/src/scripts/model_rule_injection.ts +61 -4
  546. package/src/scripts/project_thin_rules.ts +149 -16
  547. package/src/scripts/report_standing_payload_by_host.ts +650 -0
  548. package/src/scripts/schemas/agent-settings.schema.json +7 -1
  549. package/src/scripts/session_memory_index.ts +86 -8
  550. package/src/scripts/sync_agent_settings.ts +270 -10
  551. package/src/server/io/yamlIO.ts +127 -17
  552. package/src/server/schemas/settings.ts +45 -6
  553. package/src/shared/settingsSurface.ts +13 -2
  554. package/src/templates/compact-instructions.md +8 -3
  555. package/src/vendor/grammars/README.md +27 -2
  556. package/dist/agent-src/commands/chat-history/import.md +0 -170
  557. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,109 @@
1
+ # Cross-Source Consistency — Mechanics
2
+
3
+ > The discrepancy taxonomy, the scan procedure, the confidence-tiered noise control, worked examples, and the precedence table for the `cross-source-consistency` rule
4
+
5
+ _Companion to `src/rules/cross-source-consistency.md` (P4 pattern of `road-to-kernel-and-router.md`). The Iron Law, the fire/not-fire scope, and the subordination clauses stay in the rule; this file carries the taxonomy detail, the scan procedure, and the examples._
6
+
7
+ ## The discrepancy taxonomy
8
+
9
+ | # | Class | Definition | Canonical example |
10
+ |---|---|---|---|
11
+ | a | **text ↔ image** | The ticket/spec text contradicts an attached mockup, screenshot, or diagram. | Text: "show birthdays **today**". Mockup: a birthday from two days ago. |
12
+ | b | **silent-but-needed** | The spec is silent on a behavior that is clearly required for the feature to be correct. | Spec: weekend-shifting only. Clearly also needed: public-holiday shifting — but never specified. |
13
+ | c | **spec ↔ codebase/reality** | The spec contradicts what the code, DB, API, or a real source actually does. | Spec: "the endpoint returns `dueDate`". The DTO has no such field. |
14
+ | d | **intra-ticket** | Acceptance criteria, description, and comments contradict each other. | Description: real-time. AC: "nightly batch is fine." |
15
+
16
+ Type (a) and (d) are **contradictions between present sources** — the agent
17
+ must not pick one silently. Type (b) is a **scope decision** — the inferred
18
+ behavior may be right, but adding it is a scope expansion the user owns. Type
19
+ (c) routes the *verification* to `source-discovery` (read the real source); this
20
+ rule only owns *surfacing the conflict and asking*.
21
+
22
+ ## The scan procedure
23
+
24
+ Run this whenever planning, refining, estimating, roadmapping, or implementing
25
+ from a ticket/spec that carries a second source:
26
+
27
+ 1. **Enumerate the sources.** Ticket text, every attachment (mockup / screenshot
28
+ / diagram), the AC block, description, comments, and — for implementation —
29
+ the relevant codebase/DB/API surface. If an attachment cannot be read,
30
+ say so; do not assume it agrees.
31
+ 2. **Compare pairwise for type (a), (c), (d).** For each pair, ask: do they state
32
+ the same thing about the same requirement? A mismatch is a discrepancy.
33
+ 3. **Scan for type (b) — silence.** List the behaviors the feature obviously
34
+ needs but the spec never mentions (weekend/holiday shifts, empty states,
35
+ error paths, permission edges, pagination, timezone). Each unstated-but-needed
36
+ behavior is a candidate to surface — not to implement.
37
+ 4. **Classify confidence.** High = the sources plainly disagree, or the missing
38
+ behavior is clearly load-bearing. Low = the "conflict" is a plausible
39
+ re-reading, or the missing behavior may be intentionally out of scope.
40
+ 5. **Decide per the setting** (below), then **batch** every surviving discrepancy
41
+ into ONE question folded into this turn's single `ask-when-uncertain` prompt.
42
+
43
+ ## Confidence-tiered noise control (`consistency.cross_source`)
44
+
45
+ The rule fires only under a real trade-off (it must pass the
46
+ `no-cheap-questions` Pre-Send Self-Check). The setting tunes how aggressively:
47
+
48
+ | Value | High-confidence discrepancy | Low-confidence discrepancy |
49
+ |---|---|---|
50
+ | `on` (default) | Surface + ask before proceeding. | Surface + ask (batched into the same question). |
51
+ | `auto` | Surface + ask. | State as an explicit assumption and proceed (no question). |
52
+ | `off` | No cross-source checking — legacy behavior. | No cross-source checking. |
53
+
54
+ Batching is the anti-noise mechanism: N discrepancies for one artefact become
55
+ one numbered-options block, never N prompts. Plain vagueness (a single unclear
56
+ source, no second source to compare) is **not** a discrepancy — it stays with
57
+ `ask-when-uncertain` so the two disciplines never double-fire on the same input.
58
+
59
+ ## Worked examples
60
+
61
+ ### Example 1 — text ↔ image (type a)
62
+
63
+ Ticket: *"The tile shows employees who have their birthday **today**."* Attached
64
+ mockup: a card with a birthday dated **two days ago**.
65
+
66
+ - Wrong: implement "today" (or implement "recent, like the mockup") and move on.
67
+ Both are silent guesses on a real contradiction — a violation even if the
68
+ chosen reading turns out correct.
69
+ - Right: *"The ticket text says 'today' but the mockup shows a birthday from two
70
+ days ago. Which is authoritative — (1) strictly today, (2) a recent window as
71
+ the mockup implies, (3) something else?"* Then implement the confirmed reading;
72
+ `design-fidelity` governs building it 1:1 afterwards.
73
+
74
+ ### Example 2 — silent-but-needed (type b)
75
+
76
+ Ticket update: *"If a birthday falls on the weekend, show it on the next
77
+ workday."* The spec never mentions public holidays.
78
+
79
+ - Wrong: also shift birthdays that fall on a public holiday, because it is
80
+ "obviously" consistent with the weekend rule — a silent scope expansion.
81
+ - Right: *"The spec covers weekend-shifting but is silent on public holidays.
82
+ Should birthdays on a public holiday also shift to the next workday? (1) yes,
83
+ same as weekends, (2) no, holidays are out of scope, (3) only regional
84
+ holidays."* Obvious-to-the-agent ≠ in-scope; `scope-control` owns the
85
+ expansion permission.
86
+
87
+ ## Precedence & subordination
88
+
89
+ | Neighbour rule | Relationship |
90
+ |---|---|
91
+ | `ask-when-uncertain` | **Parent ask discipline.** This rule folds its discrepancy into that rule's single question. `ask-when-uncertain` fires on *missing* info; this adds *conflicting present* sources. Never a second question block. |
92
+ | `scope-control` | **Permission authority** for the type-(b) silent-scope-expansion. This rule surfaces the expansion; `scope-control` gates it. |
93
+ | `design-fidelity` | **Fires after** this rule. This rule resolves a text↔image conflict at decision time; `design-fidelity` then enforces build-time 1:1 fidelity to the resolved design. |
94
+ | `source-discovery` / `source-discovery-gate` | **Owns verification** for type (c). This rule surfaces the spec↔code conflict; `source-discovery` provides the evidence procedure. |
95
+ | `no-cheap-questions` | **Floor.** A discrepancy ask must carry a real trade-off; batch, never nag. |
96
+ | `active-remediation` | **Sibling shape.** Its never-silently-ignore ladder is the response model this rule applies to source discrepancies rather than code issues. |
97
+
98
+ ## Failure modes
99
+
100
+ - **Silent-correct-guess.** Picking the right reading of a contradiction without
101
+ asking. Correct output, wrong process — still a violation.
102
+ - **Double-firing.** Emitting a discrepancy question AND a separate
103
+ `ask-when-uncertain` / `improve-before-implement` question about the same
104
+ underlying uncertainty. Fold into one turn's one question.
105
+ - **Noise creep.** Surfacing plausible re-readings as if they were hard
106
+ contradictions. Use the confidence tier; `auto` states low-confidence as an
107
+ assumption instead of asking.
108
+ - **Silent scope expansion.** Implementing an inferred-but-unspecified behavior
109
+ because it seems obvious. It is a scope decision the user owns.
@@ -0,0 +1,82 @@
1
+ # Developer Judgment Guideline
2
+
3
+ When the agent should challenge, when it should ask, and when it should just execute.
4
+
5
+ ## Decision table
6
+
7
+ | Situation | Agent behavior | Max delay |
8
+ |---|---|---|
9
+ | Clear, well-defined request | Execute immediately | 0 |
10
+ | Minor ambiguity | Ask ONE clarifying question | 10s |
11
+ | Request overlaps existing code | Point out existing solution | 15s |
12
+ | Request contradicts architecture | Challenge with evidence, propose alternative | 30s |
13
+ | Request is technically harmful | Warn, propose safe alternative | 30s |
14
+ | User insists after challenge | Execute immediately | 0 |
15
+ | Simple task (config, typo, docs) | Never challenge | 0 |
16
+
17
+ ## What makes a good challenge
18
+
19
+ ✅ **Good challenge:**
20
+ - References specific files or code
21
+ - Offers a concrete alternative
22
+ - Fits in 2-3 sentences
23
+ - Ends with numbered options
24
+
25
+ ❌ **Bad challenge:**
26
+ - Vague ("this might be problematic")
27
+ - No alternative offered
28
+ - Long explanation before the point
29
+ - Blocks work without clear reason
30
+
31
+ ## Examples
32
+
33
+ ### Good: Existing functionality
34
+
35
+ ```
36
+ > ⚠️ `UserService::deactivate()` (app/Services/UserService.php:45) already handles
37
+ > account deactivation with email notification.
38
+ >
39
+ > 1. Extend existing method with the new parameter
40
+ > 2. Create separate method — I'll document the overlap
41
+ ```
42
+
43
+ ### Good: Architecture concern
44
+
45
+ ```
46
+ > ⚠️ This would create a direct dependency from Module A to Module B's internals.
47
+ > The current pattern uses events for cross-module communication.
48
+ >
49
+ > 1. Use an event instead (follows existing pattern)
50
+ > 2. Add direct dependency (I'll add a note about the coupling)
51
+ ```
52
+
53
+ ### Bad: Vague concern
54
+
55
+ ```
56
+ > I'm not sure this is the best approach. There might be issues with this design.
57
+ > Should I look into alternatives?
58
+ ```
59
+
60
+ → This wastes the user's time. Either have a specific concern or don't raise one.
61
+
62
+ ## Integration with rules and skills
63
+
64
+ | Component | Role |
65
+ |---|---|
66
+ | `improve-before-implement` rule | Triggers validation on feature/architecture tasks |
67
+ | `validate-feature-fit` skill | Deep analysis when rule detects potential misfit |
68
+ | `ask-when-uncertain` rule | General uncertainty handling (complementary) |
69
+ | `think-before-action` rule | Analysis-first workflow (complementary) |
70
+
71
+ ## The spectrum of judgment
72
+
73
+ ```
74
+ Silent ────────────────── Challenging ──────────────── Blocking
75
+ ↑ ↑ ↑
76
+ Bug fixes Features NEVER
77
+ Config Architecture
78
+ Docs New patterns
79
+ ```
80
+
81
+ The agent NEVER reaches "Blocking". The right side of the spectrum is
82
+ "Challenge and let the user decide", never "refuse to implement".
@@ -0,0 +1,142 @@
1
+ ---
2
+ demo_for: direct-answers
3
+ layer: pattern-memory
4
+ prose_delta:
5
+ rule_chars_before: 4098
6
+ rule_chars_after: 4514
7
+ measured_at: phase-3.3-cross-link-landing
8
+ note: "+416 chars from the Examples cross-link block; future prose-pruning rounds (out of scope for Phase 3) will pull pattern prose from the rule into this demo and drive the after-count below the before-count."
9
+ ---
10
+
11
+ # direct-answers — Pattern Memory
12
+
13
+ > Wrong / right / why demos for the three Iron Laws of
14
+ > `direct-answers` (no flattery, no invented facts, brevity by
15
+ > default). Linked from
16
+ > [`direct-answers`](../../rules/direct-answers.md)
17
+ > § Examples. Outcome baseline at
18
+ > [`tests/golden/outcomes/direct_answers.json`](../../../tests/golden/outcomes/direct_answers.json).
19
+
20
+ ## Demo 1 — Flattery opener (Iron Law 1)
21
+
22
+ ### Wrong shape
23
+
24
+ ```
25
+ User: Wie viele Always-Rules gibt es aktuell?
26
+
27
+ Agent: Sehr gute Frage! Das ist tatsächlich eine spannende
28
+ Eigenschaft des Systems. Lass mich das für dich aufschlüsseln —
29
+ aktuell sind es 38 Always-Rules.
30
+ ```
31
+
32
+ **Failure mode:** flattery opener, action announcement, then a long
33
+ run-up to a one-word answer. Iron Law 1 + Iron Law 3 violated together.
34
+
35
+ ### Right shape
36
+
37
+ ```
38
+ User: Wie viele Always-Rules gibt es aktuell?
39
+
40
+ Agent: 38.
41
+ ```
42
+
43
+ ### Why it works
44
+
45
+ One question with one true answer = one sentence. No run-up, no
46
+ cushion, no "let me…". The number is the whole answer.
47
+
48
+ ## Demo 2 — Hedged claim without verification (Iron Law 2)
49
+
50
+ ### Wrong shape
51
+
52
+ ```
53
+ User: Hat verify-before-complete ein "load_context"-Feld?
54
+
55
+ Agent: Ja, ich glaube schon — die meisten Always-Rules haben das
56
+ inzwischen. Sollte in der Frontmatter stehen.
57
+ ```
58
+
59
+ **Failure mode:** load-bearing project-shape claim without verify, with
60
+ two hedges. Iron Law 2 § Severity-tiered: project-shape claims must be
61
+ backed by a tool call when one suffices — and here a `view` / `grep`
62
+ easily suffices.
63
+
64
+ ### Right shape
65
+
66
+ ```
67
+ User: Hat verify-before-complete ein "load_context"-Feld?
68
+
69
+ Agent: [grept frontmatter]
70
+ Nein. `verify-before-complete.md` deklariert keinen load_context-
71
+ Eintrag (nur die anderen vier Safety-Floor-Rules tun das).
72
+ ```
73
+
74
+ ### Why it works
75
+
76
+ Tool call before the answer, then a concrete statement with reasoning.
77
+ If the verify cost were too high → ask, don't guess. Here a `grep`
78
+ costs two seconds, so a tool call is mandatory.
79
+
80
+ ## Demo 3 — Post-hoc summary creep (Iron Law 3)
81
+
82
+ ### Wrong shape
83
+
84
+ ```
85
+ User: Wie öffne ich die VBC-Demos?
86
+
87
+ Agent: Hier der Pfad zur Datei:
88
+
89
+ `docs/guidelines/agent-infra/verify-before-complete-demos.md`
90
+
91
+ Zusammenfassend: das ist die Demo-Datei für die Iron Law des
92
+ verify-before-complete-Rule. Sie folgt dem wrong/right/why-Schema
93
+ und ist Teil der Phase 3 von road-to-context-layer-maturity.
94
+ Lass mich wissen, falls du Fragen dazu hast.
95
+ ```
96
+
97
+ **Failure mode:** useless summary after the answer, then a service
98
+ phrase. Iron Law 3: the shortest complete answer wins; restating
99
+ context and a closing phrase are both failure modes.
100
+
101
+ ### Right shape
102
+
103
+ ```
104
+ User: Wie öffne ich die VBC-Demos?
105
+
106
+ Agent: `docs/guidelines/agent-infra/verify-before-complete-demos.md`
107
+ ```
108
+
109
+ ### Why it works
110
+
111
+ The path is the whole answer. No re-frame of the question, no
112
+ "in summary", no offered follow-up. If the user wants more, they ask.
113
+
114
+ ## Demo 4 — Functional emoji vs prose flair
115
+
116
+ ### Wrong shape
117
+
118
+ ```
119
+ Agent: 🚀 Tests sind durch! ✨ Alle 47 grün 🎉 Bereit für den nächsten Schritt 💪
120
+ ```
121
+
122
+ **Failure mode:** emoji as a style element, not as a functional
123
+ marker. § Emoji Scope allows only the whitelist (`📒` heartbeat,
124
+ mode marker, `❌` `✅` `⚠️` with the two-space rule, roadmap `[x]/[~]/[-]`).
125
+ Everything else is noise.
126
+
127
+ ### Right shape
128
+
129
+ ```
130
+ Agent: Tests durch:
131
+
132
+ $ vendor/bin/pest -q
133
+ ............................................... 47 passed
134
+
135
+ ✅ 47/47 grün, Exit 0.
136
+ ```
137
+
138
+ ### Why it works
139
+
140
+ Exactly one emoji from the whitelist (`✅` with two-space), used
141
+ functionally as a status marker next to the CLI output. No decoration,
142
+ no reaction emojis.
@@ -0,0 +1,112 @@
1
+ # Domain Adoption — Gates
2
+
3
+ > The three-gate evidence contract, sunset policy, and failure-mode catalog for the `domain-adoption-policy` rule
4
+
5
+ _Origin: migrated from `src/rules/domain-adoption-policy.md` per the P4 pattern of `road-to-kernel-and-router.md`. The Iron Law and the three gate names stay in the rule; this file carries the per-gate evidence bars and procedures._
6
+
7
+ ## Gate 1 — Demand signal
8
+
9
+ At least one of the following must be **true and citeable** in the roadmap:
10
+
11
+ - **≥ 2 consumer projects** in the domain. Cite repository names or
12
+ `agents/settings/contexts/` notes — not "I think there might be".
13
+ - **Named user direction with target.** A specific user ask plus a target
14
+ project / use case — e.g. "harvest the mobile skills for project X, due
15
+ next quarter". Vague *"this might be useful"* does not count.
16
+ - **Public-incident pull.** A reproducible incident on a consumer project
17
+ the domain would have prevented, captured in `agents/settings/contexts/` with
18
+ the missing surface area named.
19
+
20
+ If none of the three is citeable, **defer**. Open a watch-only context note
21
+ under `agents/settings/contexts/domain-watch/<domain>.md` listing the missing signal
22
+ so the next harvest can re-evaluate without re-relitigating the case.
23
+
24
+ ## Gate 2 — Named maintenance owner
25
+
26
+ Domain plates rot. Pick the owner before the import, not after.
27
+
28
+ - The roadmap names a **single maintainer** (not "the team", not "TBD")
29
+ responsible for the domain quarterly review.
30
+ - The owner commits to the **refresh cadence** — quarterly review at
31
+ minimum, faster if the domain is volatile (mobile RN/Expo SDK,
32
+ ML model APIs).
33
+ - Each adopted artefact carries an **inline upstream-source line** with
34
+ SHA + last-checked timestamp so refresh is mechanical, not archaeological.
35
+
36
+ If no owner is named or no cadence is set, **defer**. An unowned domain
37
+ plate becomes broken authoritative-links and stale skills inside two cycles.
38
+
39
+ ## Gate 3 — CI-tooling decision
40
+
41
+ Either the domain's verification tooling is validated in CI, or the suite
42
+ explicitly accepts platform-bound reference-only status.
43
+
44
+ - **Validated.** The CI pipeline runs the relevant linters/tests/integration
45
+ checks for the domain (e.g. `mobile-e2e` runners, ML model validation,
46
+ contract conformance) on every PR. Cost noted in the roadmap risk
47
+ register.
48
+ - **Out-of-scope (reference-only).** The domain is a platform fact the
49
+ suite cannot validate (iOS Simulator on non-macOS runners, GPU-bound
50
+ ML, hardware-bound IoT). The roadmap states this explicitly; affected
51
+ artefacts carry a "reference-only on \<unsupported platforms\>" header
52
+ so consumers do not file false-positive bugs.
53
+
54
+ If neither line is drawn, **defer**. Half-validated CI silently rots the
55
+ domain — green builds while the underlying tooling drifts.
56
+
57
+ ## Sunset Policy stacks on top
58
+
59
+ Every domain track inherits the authoritative-link Sunset path documented
60
+ in any plate that imports volatile upstream content:
61
+
62
+ - Volatile content (SDK-pinned, API-pinned, tool-version-pinned) lives as
63
+ guideline body + SHA-pinned upstream link, not as forked scripts.
64
+ - Refresh trigger: quarterly cadence or earlier if a SHA-pinned link
65
+ 404s in CI.
66
+ - The `check-refs` and `check-portability` linters apply unchanged.
67
+
68
+ Adopting a domain does not exempt it from any other suite-wide rule —
69
+ `augment-edit-discipline`, `skill-quality`, `size-enforcement`,
70
+ `rule-type-governance`. Every domain artefact passes the same gates as a
71
+ core artefact.
72
+
73
+ ## Failure modes
74
+
75
+ - *"It's just one skill, not a domain."* — Audit the skill's prerequisites.
76
+ If it pulls in a new toolchain, simulator, language runtime, or
77
+ platform-specific build system, it **is** a domain entry. Run the gates.
78
+ - *"The upstream is well-maintained, we can just track it."* — Tracking
79
+ upstream means owning the diff, the breaking changes, and the migrations.
80
+ Tracking is maintenance work; budget for it under Gate 2 or skip the
81
+ adoption.
82
+ - *"We'll add CI later."* — Later does not arrive. Either CI is wired in
83
+ the same plate, or the artefacts ship with explicit reference-only
84
+ headers so users do not assume validated coverage.
85
+ - *"Council convergence is enough."* — Council informs the gates; it does
86
+ not replace them. A council session may surface that all three gates
87
+ pass; the roadmap still cites the evidence.
88
+ - *"Demand-signal is the user asking once."* — Single-shot interest is a
89
+ watch trigger, not an open trigger. Either name the target use case
90
+ with project + timeline, or open a watch note and wait.
91
+
92
+ ## What to do when the gates fail
93
+
94
+ 1. Mark the domain plate `[-] gated — <gate name> not met` in the relevant
95
+ roadmap. Do **not** silently shrink scope to dodge the gate.
96
+ 2. Open a watch-only context note under `agents/settings/contexts/domain-watch/`
97
+ capturing what's missing — citations, owner candidates, CI feasibility.
98
+ 3. Re-evaluate at the next harvest cycle. The note is the evidence trail
99
+ so the same questions are not relitigated.
100
+
101
+ ## Allowed without gates
102
+
103
+ - Adding **a single skill** to an **already-opened** domain follows the
104
+ regular harvest plate; the gates do not re-fire per skill.
105
+ - Authoring a **guideline** that documents a domain the suite already
106
+ ships in — the domain is open, the guideline is a within-domain artefact.
107
+ - A **rule** that constrains an already-opened domain — within-domain.
108
+
109
+ ## See also
110
+
111
+ - `domain-adoption-policy` (rule) — the Iron Law + gate names.
112
+ - `size-enforcement` · `rule-type-governance` · `skill-quality` — the suite-wide floors every domain artefact still passes.
@@ -0,0 +1,53 @@
1
+ # Domain-eval anti-pattern — manufactured false objectivity at N=1
2
+
3
+ > A retrospective from the legal pack (council round 3). It exists so the next
4
+ > domain does not repeat the mistake. The short version: **do not call a
5
+ > self-labeled regression harness an "objective" correctness gate.**
6
+
7
+ ## The anti-pattern
8
+
9
+ Gating skill ship on *"≥X% match to expert ground-truth"* and calling it "the
10
+ objective replacement for reviewer sign-off" — when:
11
+
12
+ 1. **The ground-truth is unsourced or self-generated.** If the maintainer guesses
13
+ what an expert would flag, the eval measures "does the skill match the
14
+ maintainer's guess," i.e. reviewer subjectivity wearing a quantitative costume.
15
+ 2. **Expert agreement is not truth.** Even an attorney-validated gold set at
16
+ inter-annotator agreement ≥0.7 is *inter-subjective expert consensus*, not
17
+ ground truth — `0.7 ≠ 1.0` admits the domain is contested ~30% of the time.
18
+ The honest goal is **measurement objectivity** (reliably detect change), not
19
+ **ground-truth objectivity** (the labels are correct).
20
+ 3. **Model capability caps below the threshold.** Clause-extraction caps at
21
+ ~F1 0.62; any passable threshold therefore measures "not worse than a mediocre
22
+ baseline," i.e. regression detection — never correctness.
23
+ 4. **The statistical language is borrowed from infra that does not exist.**
24
+ Calibrating a threshold "from cross-model distributions" requires a built
25
+ cross-model-parity layer. Borrowing the vocabulary before the layer exists is
26
+ false precision.
27
+
28
+ ## The honest alternative
29
+
30
+ - **Ship a regression / consistency harness.** Self-labeled fixtures, explicitly
31
+ marked "regression-only, not correctness, not objective." It catches "did a
32
+ change make a skill worse than its own baseline."
33
+ - **Keep correctness with the human.** Licensed-expert review on material use,
34
+ baked into the skill's output, not a footnote.
35
+ - **Make the objective eval a separate, gated track.** Attorney/expert-validated
36
+ gold set + inter-annotator ≥0.7 is real but expensive; gate it on **validated
37
+ demand + funding**, not on a phase timeline — and note it is classification, so
38
+ it does **not** depend on a cross-model-parity keystone.
39
+
40
+ ## The false-blocker corollary
41
+
42
+ When you scope an eval, check what it *actually* depends on. The legal eval was
43
+ briefly gated on the cross-model-parity keystone; the full critique round showed
44
+ that was wrong — legal fixture matching is **classification** (clause
45
+ present/absent/ambiguous), not the finding-count distributions that keystone
46
+ calibrates. The real dependency was labeled-gold-set tooling, buildable in-pack.
47
+ A false structural blocker is as much an error as false objectivity.
48
+
49
+ ## See also
50
+
51
+ - [ADR-107 — Legal domain-pack adoption](../../decisions/ADR-107-legal-domain-pack-adoption.md)
52
+ - `domain-pack-architecture.md` — the retrospective sequence this is part of.
53
+ - `src/domains/legal-review-prep/evals/README.md` — the regression harness in practice.
@@ -0,0 +1,56 @@
1
+ # Domain-pack architecture — a retrospective observation (NOT a design driver)
2
+
3
+ > **Status: retrospective hypothesis, N=1.** This documents the sequence the
4
+ > **legal** pack happened to follow. It is **not** a rule and **not** a template
5
+ > that future packs must fit. Validate it against a *second* domain before
6
+ > promoting any of it to a rule or building scaffolding tooling — per
7
+ > `domain-adoption-policy` and the `domain-pack-extraction-when-triggered` (N=2)
8
+ > roadmap. Designing a new pack to fit this speculative pattern would invert the
9
+ > lever: build the domain correctly on its own legs, then observe whether the
10
+ > pattern recurred.
11
+
12
+ ## The sequence legal followed
13
+
14
+ 1. **Safety floor first** — a domain `*-safety-floor` rule (Iron-Law-shaped,
15
+ ~100 lines) before any drafting skill. A drafting skill shipped before its
16
+ floor is the exact liability the floor prevents.
17
+ 2. **Enforcement teeth** — the floor's machine-checkable elements become a
18
+ deterministic linter (`lint_legal_pack`) wired into CI. Prompt rules are not
19
+ governance; lint rules are. This is the differentiator vs prompt-only suites.
20
+ 3. **Eval = regression harness, not a correctness oracle** — self-labeled
21
+ fixtures in the maintainer's genuine-competence sub-domain; the *objective*
22
+ eval (attorney-validated gold set, inter-annotator ≥0.7) is a separate,
23
+ demand-and-funding-gated track. See `domain-eval-anti-pattern.md`.
24
+ 4. **Skills = procedure + output template only** — no default domain positions;
25
+ positions live in a practice profile, so one skill set behaves
26
+ team-specifically and the pack stays portable.
27
+ 5. **Practice profile (the keystone)** — a cold-start interview writing a
28
+ plain-prose profile into `.agent-settings.yml` / the setup wizard; skills read
29
+ it and halt on unresolved placeholders.
30
+ 6. **Deferred by default** — personas, scheduled watchers, installer hubs, and
31
+ broader scope are recorded as rejected/gated, not built, until evidence pulls
32
+ them in.
33
+
34
+ ## Why it is NOT yet a rule
35
+
36
+ - **N=1.** Finance might need real-time-data evals; security might need red-team
37
+ evals; neither looks like "clause extraction + self-labeled fixtures." The
38
+ shape that fit legal may not fit them.
39
+ - **Premature tooling is the maintainer's enemy.** No `domain-pack:new`
40
+ scaffolding ships from this observation. Extraction waits for N=2, where a
41
+ second domain either confirms the sequence (promote to a rule) or diverges
42
+ (document the delta, keep both bespoke).
43
+
44
+ ## What to do at N=2
45
+
46
+ Build the second domain on its own merits. *Then* compare: which steps generalised,
47
+ which broke. If the sequence held twice, promote it to a rule and consider
48
+ scaffolding. If it diverged, this note records why a one-size pattern was wrong —
49
+ itself a useful result.
50
+
51
+ ## See also
52
+
53
+ - [Capability Boundary Matrix](../../contracts/capability-boundary.md) — per-pack safety posture (default-install / consent / council / disclaimer / eval / risk_class).
54
+ - [ADR-107 — Legal domain-pack adoption](../../decisions/ADR-107-legal-domain-pack-adoption.md)
55
+ - `domain-adoption-policy` (rule) — the three gates before opening any domain.
56
+ - `domain-eval-anti-pattern.md` — why the legal eval is a regression harness, not an objective gate.
@@ -0,0 +1,91 @@
1
+ # Downstream-Changes Mechanics — closed-set evolution
2
+
3
+ > The procedure behind [`downstream-changes`](../../rules/downstream-changes.md)
4
+ > for one change class its table does not reach: a **closed set** whose member
5
+ > list changed. Cited by `skill:code-review` (the propagation dimension) and
6
+ > `skill:code-refactoring` (the reference sweep).
7
+ >
8
+ > It lives here rather than in the rule for a measured reason. Project-scope
9
+ > rules are a gated bucket of the per-spawn standing payload, and that payload
10
+ > currently measures **at** its grace ceiling
11
+ > (`src/config/preamble-payload-budget.json`), so the rule cannot grow by a
12
+ > single line without reddening `check_preamble_payload_budget`. Guidelines are
13
+ > an excluded bucket — read on demand, not re-sent per spawn. The obligation is
14
+ > therefore carried by the two skills that fire at the moment it matters, and
15
+ > the rule keeps its current size until a reduction lands.
16
+
17
+ ## The Iron Law
18
+
19
+ ```
20
+ CHANGING A MEMBER OF A CLOSED SET IS NEVER DONE WHEN THE TYPE COMPILES.
21
+ EVERY CONSUMER IS CLASSIFIED: EXHAUSTIVE, DELIBERATE FALLBACK, OR MISSING CASE.
22
+ A `default` THAT SWALLOWS THE NEW MEMBER IS A MISSING CASE WEARING A BRANCH.
23
+ ```
24
+
25
+ ## Why the ordinary sweep misses it
26
+
27
+ `downstream-changes` enumerates callers, tests, imports, type definitions,
28
+ config bindings, routes and docs — all of which are found by searching for the
29
+ **identifier**. A closed set breaks that assumption: the member list changes,
30
+ the type still compiles, and a serializer, a badge variant, an OpenAPI schema or
31
+ a transition table silently keeps the old set. None of them names the type, so
32
+ no identifier search reaches them. This is the shotgun-surgery shape — one
33
+ conceptual change scattered across many small sites, where forgetting one is the
34
+ default outcome rather than the unlucky one.
35
+
36
+ ## What counts as a closed set
37
+
38
+ PHP enums · TypeScript enums · discriminated unions · literal-union state types ·
39
+ Rust enums · sealed types · Python `enum` classes · DB enum and check
40
+ constraints · OpenAPI / JSON-Schema `enum` · state machines · role and permission
41
+ sets · finite component variants.
42
+
43
+ ## Discover by shape, not by identifier
44
+
45
+ - the member name and its **backing value** (the wire value often differs);
46
+ - `match` / `switch` / if-chains over the type;
47
+ - `Record<Member, …>`, lookup tables and maps keyed by it;
48
+ - `cases()` / `values()` iteration;
49
+ - validators and serializers;
50
+ - DB constraints and migrations;
51
+ - API schemas;
52
+ - UI option sources and variant maps;
53
+ - translation keys;
54
+ - tests, factories and fixtures.
55
+
56
+ ## Classify every hit — three outcomes, one defect
57
+
58
+ | Class | What it means | Action |
59
+ |---|---|---|
60
+ | Exhaustive | The compiler or the data structure forces completeness (a fully-typed `Record<Member, …>`, a `match` with no default) | nothing — this is the outcome to prefer |
61
+ | Deliberate fallback | The fallback is part of the contract: a forward-compatible external value, a protocol unknown, a defensive boundary parse | record why, leave it |
62
+ | Missing case | The new member reaches code written for the old set | fix it |
63
+
64
+ **There is deliberately no blanket rule that a `default` branch is wrong.** Such
65
+ a rule would be refuted by every protocol parser and boundary parse in the tree.
66
+ What is true is sharper and easier to miss: where an exhaustiveness check exists,
67
+ **a `default` clause suppresses its report entirely**, so adding one to quiet the
68
+ check removes exactly the signal it existed to give.
69
+ <!-- harvest:exhaustiveness-default-clause-masks-the-check -->
70
+
71
+ Prefer the language-native guarantee over a comment. In TypeScript a
72
+ `Record<Member, T>` where every member needs a value fails to compile on a new
73
+ member, while a partially-typed string-keyed map does not. In PHP an exhaustive
74
+ `match` without a masking `default` throws on an unhandled case.
75
+
76
+ ## Prove the sweep, do not assert it
77
+
78
+ Add a **synthetic member** to the set, confirm the checks you are relying on go
79
+ red, then update the consumers and confirm they go green. A sweep never seen red
80
+ has unknown coverage — the same sensitivity argument
81
+ [`downstream-changes`](../../rules/downstream-changes.md) § Verification
82
+ makes for tests, applied to the discovery step.
83
+
84
+ ## See also
85
+
86
+ - [`downstream-changes`](../../rules/downstream-changes.md) — the rule this
87
+ extends; its § Defect-pattern search is the sibling-occurrence half.
88
+ - [`redundancy-taxonomy`](../redundancy-taxonomy.md) — the naming half: one
89
+ concept, several terms.
90
+ - [`prefer-enums-over-literals`](../../rules/prefer-enums-over-literals.md)
91
+ — how a closed set comes to exist in the first place.