@event4u/agent-config 14.23.0 → 16.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 (541) 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 +144 -152
  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 +1 -1
  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 +4 -3
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +1 -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 +51 -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 +1 -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 +2 -2
  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/rules/user-interaction.md +31 -30
  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-refactoring/SKILL.md +3 -3
  260. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  261. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  262. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  263. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  264. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  265. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  266. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  267. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  268. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  269. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  270. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  271. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  272. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  273. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  274. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  275. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  276. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  277. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  278. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  279. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  280. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  281. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  282. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  283. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  284. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  285. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  286. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  287. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  288. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +9 -0
  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/gtm-launch/SKILL.md +2 -2
  305. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  306. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  307. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  308. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  309. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  310. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  311. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  312. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  313. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  314. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  315. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  316. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  317. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  318. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  319. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  320. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  321. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  322. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  323. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  324. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  325. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  326. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  327. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  328. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  329. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  330. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  331. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  332. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  333. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  334. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  335. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  336. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  337. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  338. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  339. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  340. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  341. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  342. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  343. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  344. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  345. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  346. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  347. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  348. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  349. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  350. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  351. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  352. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  353. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  354. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  355. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  356. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
  357. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  358. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  359. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  360. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  361. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  362. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  363. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  364. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  365. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  366. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  367. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  368. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  369. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  370. package/dist/agent-src/templates/agent-settings.md +6 -6
  371. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  372. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  373. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  374. package/dist/agent-src/templates/roadmaps.md +1 -1
  375. package/dist/agent-src/templates/scripts/README.md +2 -2
  376. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  377. package/dist/cli-delegate/check_update_banner.js +12 -1
  378. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  379. package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
  380. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  381. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  382. package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
  383. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  384. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-H32DGUJH.js} +15 -84
  385. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  386. package/dist/cli-delegate/chunk-NUHLI2RX.js +80 -0
  387. package/dist/cli-delegate/{chunk-TYSY33MD.js → chunk-QJWAUMJW.js} +12 -2
  388. package/dist/cli-delegate/{chunk-2KKXJW25.js → chunk-S3VFXMTM.js} +1 -1
  389. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  390. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  391. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  392. package/dist/cli-delegate/cmd_conformance.js +834 -275
  393. package/dist/cli-delegate/cmd_doctor.js +3 -3
  394. package/dist/cli-delegate/cmd_explain.js +5 -3
  395. package/dist/cli-delegate/cmd_export.js +4 -4
  396. package/dist/cli-delegate/cmd_handoff.js +6 -6
  397. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  398. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  399. package/dist/cli-delegate/cmd_migrate.js +2 -2
  400. package/dist/cli-delegate/cmd_packs_active.js +3 -2
  401. package/dist/cli-delegate/cmd_prune.js +4 -4
  402. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  403. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  404. package/dist/cli-delegate/cmd_session_recycle.js +3 -3
  405. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  406. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  407. package/dist/cli-delegate/cmd_settings_set.js +54 -11
  408. package/dist/cli-delegate/cmd_sync.js +4 -4
  409. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  410. package/dist/cli-delegate/cmd_update.js +1 -1
  411. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  412. package/dist/cli-delegate/cmd_validate.js +4 -4
  413. package/dist/cli-delegate/cmd_versions.js +1 -1
  414. package/dist/discovery/deprecation-report.md +1 -1
  415. package/dist/discovery/discovery-manifest.json +25 -78
  416. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  417. package/dist/discovery/discovery-manifest.summary.md +3 -3
  418. package/dist/discovery/dormancy-report.md +1 -1
  419. package/dist/discovery/orphan-report.md +1 -1
  420. package/dist/discovery/packs.json +5 -7
  421. package/dist/discovery/trust-report.md +2 -2
  422. package/dist/discovery/workspaces.json +4 -6
  423. package/dist/hooks/dispatch.js +9684 -9304
  424. package/dist/install/install.mjs +36 -8
  425. package/dist/mcp/registry-manifest.json +3 -3
  426. package/dist/mcp/server.json +2 -2
  427. package/dist/mcp/server.mjs +2147 -1470
  428. package/dist/router.json +1 -1
  429. package/dist/scripts/_lib/agent_settings.js +73 -0
  430. package/dist/scripts/_lib/agent_src.js +20 -0
  431. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  432. package/dist/scripts/_lib/installed_lock.js +1 -1
  433. package/dist/scripts/condense.js +2 -5
  434. package/dist/server/io/yamlIO.js +175 -17
  435. package/dist/server/schemas/settings.js +18 -4
  436. package/dist/shared/settingsSurface.js +6 -1
  437. package/docs/contracts/settings-classes.md +18 -9
  438. package/docs/guidelines/abstraction-thresholds.md +35 -0
  439. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  440. package/docs/guidelines/agent-infra/false-green.md +2 -2
  441. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  442. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  443. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  444. package/docs/guidelines/design-fidelity-routing.md +78 -0
  445. package/docs/guidelines/design-reconciliation.md +172 -0
  446. package/docs/guidelines/gtm-handoff.md +2 -2
  447. package/docs/guidelines/wing4-handoff.md +2 -2
  448. package/package.json +7 -3
  449. package/src/config/agent-settings.template.yml +55 -8
  450. package/src/config/ci-local-parity.yml +34 -0
  451. package/src/config/continuity-surface.json +11 -32
  452. package/src/config/gate-coverage.yml +31 -8
  453. package/src/config/gate-reachability-exemptions.json +1 -0
  454. package/src/config/gate-violation-baselines.json +3 -3
  455. package/src/config/hook-token-budget.json +1 -1
  456. package/src/config/host-injection-effect.json +2 -2
  457. package/src/config/pack-size-budget.json +55 -4
  458. package/src/config/platform-anchor.json +47 -0
  459. package/src/config/preamble-payload-budget.json +12 -8
  460. package/src/config/preamble-payload-exceptions.json +28 -0
  461. package/src/config/publish-surface.json +4 -2
  462. package/src/config/ratification-policy.json +7 -0
  463. package/src/config/rule-stub-ceilings.json +16 -9
  464. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  465. package/src/scripts/_dispatch.bash +3 -1
  466. package/src/scripts/_lib/agent_settings.ts +85 -0
  467. package/src/scripts/_lib/agent_src.ts +21 -0
  468. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  469. package/src/scripts/_lib/base_ref_payload.ts +315 -0
  470. package/src/scripts/_lib/conformance_report.ts +403 -0
  471. package/src/scripts/_lib/continuity_writer.ts +72 -13
  472. package/src/scripts/_lib/design_system_import.ts +20 -0
  473. package/src/scripts/_lib/design_tolerance.ts +281 -0
  474. package/src/scripts/_lib/dropped_decision.ts +142 -0
  475. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  476. package/src/scripts/_lib/installed_lock.ts +1 -1
  477. package/src/scripts/_lib/measured_payload_ceiling.ts +424 -0
  478. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  479. package/src/scripts/_lib/payload_catalogue_completeness.ts +211 -0
  480. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  481. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  482. package/src/scripts/_lib/release_findings_ingest.ts +324 -0
  483. package/src/scripts/_lib/release_tag_dispatch.ts +63 -0
  484. package/src/scripts/_lib/review_baseline.ts +254 -0
  485. package/src/scripts/_lib/review_skipped_record.ts +61 -1
  486. package/src/scripts/_lib/security_lint.ts +23 -2
  487. package/src/scripts/_lib/self_repair.ts +21 -0
  488. package/src/scripts/_lib/session_index_trust.ts +42 -1
  489. package/src/scripts/_lib/standing_bound_ratchet.ts +267 -88
  490. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  491. package/src/scripts/_lib/turn_end_refusals.ts +51 -4
  492. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  493. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  494. package/src/scripts/check_beta_review_markers.ts +35 -4
  495. package/src/scripts/check_finding_dispositions.ts +167 -16
  496. package/src/scripts/check_held_object_arrivals.ts +381 -0
  497. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  498. package/src/scripts/check_loss_class_declared.ts +793 -46
  499. package/src/scripts/check_platform_anchor.ts +390 -0
  500. package/src/scripts/check_preamble_payload_budget.ts +672 -107
  501. package/src/scripts/check_projected_rule_routes.ts +395 -0
  502. package/src/scripts/check_release_published.ts +1 -1
  503. package/src/scripts/check_reply_consistency.ts +86 -17
  504. package/src/scripts/code_graph/cli.ts +6 -0
  505. package/src/scripts/condense.ts +2 -6
  506. package/src/scripts/generate_host_cost_table.ts +354 -0
  507. package/src/scripts/hook_manifest.json +1 -1
  508. package/src/scripts/hook_manifest.yaml +74 -30
  509. package/src/scripts/hooks/block_kernel_rule_writes.ts +12 -2
  510. package/src/scripts/hooks/category_a.ts +1 -1
  511. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  512. package/src/scripts/hooks/concern_registry.ts +2 -0
  513. package/src/scripts/hooks/end_review_nudge_hook.ts +101 -21
  514. package/src/scripts/hooks/review_baseline_hook.ts +130 -0
  515. package/src/scripts/hooks/session_eol_hook.ts +68 -154
  516. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  517. package/src/scripts/hooks/turn_end_gate_hook.ts +232 -14
  518. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  519. package/src/scripts/hooks_doctor.ts +4 -1
  520. package/src/scripts/hot_context_hook.ts +41 -401
  521. package/src/scripts/install.ts +1 -1
  522. package/src/scripts/interruption_report.ts +8 -2
  523. package/src/scripts/janitor.ts +8 -1
  524. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  525. package/src/scripts/lint_knowledge_scale.ts +0 -26
  526. package/src/scripts/measure_turn_end_gate.ts +302 -5
  527. package/src/scripts/memory_lookup.ts +9 -9
  528. package/src/scripts/release.ts +52 -64
  529. package/src/scripts/release_drill.ts +193 -14
  530. package/src/scripts/release_env.ts +1 -1
  531. package/src/scripts/release_publication.ts +1 -1
  532. package/src/scripts/report_held_object_arrivals.ts +456 -0
  533. package/src/scripts/report_standing_payload_by_host.ts +7 -7
  534. package/src/scripts/session_memory_index.ts +5 -0
  535. package/src/scripts/sync_agent_settings.ts +394 -12
  536. package/src/server/io/yamlIO.ts +175 -17
  537. package/src/server/schemas/settings.ts +25 -5
  538. package/src/shared/settingsSurface.ts +13 -2
  539. package/src/templates/compact-instructions.md +8 -3
  540. package/dist/agent-src/commands/chat-history/import.md +0 -170
  541. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,80 @@
1
+ # The existence question — its verdict set, its cost, and why it is not TDD
2
+
3
+ Depth for [`improve-before-implement`](../../rules/improve-before-implement.md)
4
+ § The solution-size ladder, migrated out of
5
+ [`agent-interaction-and-decision-quality`](agent-interaction-and-decision-quality.md)
6
+ § 8b.
7
+
8
+ **Why it moved.** That guideline crossed `check_depth_budget`'s 16,000-character
9
+ ceiling when this depth landed in it, becoming a fifth over-ceiling file against
10
+ a baseline of four. The ratchet turns one way, so the fix is extraction rather
11
+ than a raised baseline — and these three sections are the natural unit: they
12
+ answer what the ladder RETURNS, what it costs, and which cluster it does not
13
+ belong to, none of which the surrounding interaction guideline needs in order to
14
+ be read.
15
+
16
+ The ladder itself — the rungs, the shape axis and their precedence — stays at
17
+ § 8b-ladder / 8b-shape / 8b-precedence, because the rule routes there.
18
+
19
+ #### 8b-verdict. The verdict set, and what `new` owes
20
+
21
+ The ladder's answer is a **named verdict, never a yes/no**:
22
+
23
+ | verdict | meaning |
24
+ |---|---|
25
+ | `reuse` | the existing thing carries the requirement as-is |
26
+ | `extract` | it carries it once a shared part is pulled out |
27
+ | `refactor` | it carries it once reshaped, same responsibility |
28
+ | `extend` | it carries it with an added, non-distorting case |
29
+ | `migrate` | it should carry it, and the move is the work |
30
+ | `new` | nothing carries it, and the search that establishes that is the evidence |
31
+
32
+ **`new` owes negative evidence** — the closest existing candidate **by name and
33
+ path**, and why it does not carry the requirement. *"Nothing similar exists"*
34
+ naming no candidate is an unrun search, not an answer, and it is the shape this
35
+ verdict set exists to make visible.
36
+
37
+ Two clauses hold the set honest, and both cut against reading it as a ranking:
38
+
39
+ - **The order is a thinking preference, not a ranking.** A `new` after a real
40
+ search beats an `extend` that bends a helper out of shape. Preferring reuse is
41
+ not preferring reuse *at any cost*.
42
+ - **Textual similarity alone is never grounds for an abstraction.** Two blocks
43
+ that read alike and change for different reasons are two blocks — the
44
+ per-class bars are in [`abstraction-thresholds`](../abstraction-thresholds.md).
45
+
46
+ **Reach the verdict with the engine, not a fresh grep protocol.** `agent-config
47
+ code-graph query` and `code-graph affected`;
48
+ [`external-code-graph-interop`](../../rules/external-code-graph-interop.md)
49
+ already mandates query-before-grep and names grep the fallback, so a second
50
+ search specification here would contradict it rather than add to it.
51
+
52
+ #### 8b-cheap. Why the exclusions buy the checks and never the question
53
+
54
+ The rule excludes bug fixes, config changes, user-fenced tasks and trivial
55
+ changes from the **three heavy checks**. The one cheap question — *does this
56
+ already exist in the tree* — fires on all four rows anyway.
57
+
58
+ The reason is empirical rather than tidy: **bug fixes and renames re-add an
59
+ existing helper more often than features do**, because the author is inside one
60
+ file and reaching for something small. Switching the reuse rung off there
61
+ switches it off where it pays most.
62
+
63
+ Cheap means cheap, on the [`ui-audit-gate`](../../rules/ui-audit-gate.md)
64
+ precedent: one `code-graph query`, one named verdict, no interview.
65
+
66
+ **The skip is decidable from the diff alone** — ≤ 1 file, ≤ 5 changed lines, no
67
+ new symbol, no new dependency. A typo satisfies all four with no state to
68
+ consult; an added symbol never does.
69
+
70
+ #### 8b-routing. Why this is not routed through the TDD cluster
71
+
72
+ Two source proposals put the existence question in `/tdd`'s design mode, as the
73
+ one point every behaviour passes through. **It cannot live there, and the reason
74
+ is delivery rather than design:**
75
+ `src/domains/engineering-base/tdd/command.md` carries `visibility: internal` and
76
+ `disable-model-invocation: true`, so **a consumer cannot reach it.** The routing
77
+ is undeliverable, not merely unwanted.
78
+
79
+ Recorded here so the next author does not re-derive the proposal and re-propose
80
+ it.
@@ -0,0 +1,70 @@
1
+ # Failure signatures — symptom → likely cause → first check
2
+
3
+ A file-first lookup the [`systematic-debugging`](../../skills/systematic-debugging/SKILL.md)
4
+ skill reads when a failure shows a recognisable signature. It does **not**
5
+ replace the 6-phase loop — it shortcuts **Phase 2 (Isolate)** by pointing at the
6
+ *first* check for a known shape, so you stop guessing and start with the highest-
7
+ probability cause.
8
+
9
+ > File-first by design (council 2026-06-15): kept as a reference table the skill
10
+ > reads, **not** hardcoded into the skill body — so it grows without bloating the
11
+ > always-loaded skill and stays one edit away from current.
12
+
13
+ ## Lookup
14
+
15
+ | ID | Signature (what you see) | Likely cause | First check |
16
+ |---|---|---|---|
17
+ | `tool-loop` | **Tool/agent loop** — same tool called >2× with near-identical args, no progress | Missing stop condition; reading without acting; ambiguous state | Stop. State the hypothesis in one line. Act or ask — do not re-read. (`context-hygiene` 15/25 rule) |
18
+ | `rate-limited` | **HTTP 429 / "rate limit" / "quota"** | Too-frequent calls; shared quota; missing backoff | Inspect response headers (`Retry-After`, `X-RateLimit-*`); add exponential backoff; check if a loop is firing the calls |
19
+ | `connection-refused` | **`ECONNREFUSED` / connection refused** | Service not up; wrong host/port; container not started | Is the service running? (`docker compose ps`, health endpoint); is the port right? (`lsof -i :PORT`); is it bound to `127.0.0.1` vs `0.0.0.0`? |
20
+ | `path-not-found` | **`ENOENT` / "no such file or directory"** | Wrong cwd; path relative vs absolute; file not generated yet | Print the *resolved absolute* path; check cwd; confirm a prior step actually wrote the file |
21
+ | `hang` | **Timeout / hang** | Blocking I/O; deadlock; awaiting a condition that never holds | What is it waiting on? Add a log right before the blocking call; bound the wait; check for a missing `await`/`return` |
22
+ | `out-of-memory` | **`OOM` / killed (137) / heap out of memory** | Unbounded collection; loading all rows; leak in a loop | What grows per iteration? Stream/paginate instead of loading all; check `--max-old-space-size` only after finding the growth |
23
+ | `permission-denied` | **`EACCES` / permission denied** | Wrong file mode; running as wrong user; read-only mount | `ls -l` the target; check the process user; is the path a read-only volume? |
24
+ | `order-dependent-test` | **Flaky test (passes alone, fails in suite)** | Shared state; order dependence; real clock/random; unawaited async | Run the test in isolation vs in suite; look for shared fixtures, global state, `Date.now()`/random, missing `await` |
25
+ | `local-ci-drift` | **Works locally, fails in CI** | Env/config drift; missing service; absent secret; path/case sensitivity | Diff env (`printenv`); is the service/secret present in CI? Linux is case-sensitive — check filename casing |
26
+ | `race` | **Intermittent / "sometimes"** | Race; timing; network; non-deterministic order | Reproduce with condition-based waiting, not fixed sleeps (`systematic-debugging` § Condition-based waiting); log timestamps |
27
+ | `stale-capability-claim` | **Budget exhausted plus repeated attempts at a tool that is not available** | A capability the session claimed for itself instead of resolving — the council, a hook slot, a subagent primitive, an MCP server assumed present | Ask the live verb, not the tree: `agent-config hooks:status` for slot bindings, `agent-config routing:doctor` for per-field capability **provenance** (`registry` / `live-probe` / `default`), `agent-config council:status` for council availability. A `false` from `default` records that nobody answered, not that the host cannot |
28
+
29
+ ### Naming convention for IDs
30
+
31
+ An id is a short kebab handle so a signature can be **cited by name** — the
32
+ first column was prose, so nothing could reference a row.
33
+
34
+ One rule governs new ids: **where a row's signature is a stable string the
35
+ tooling already prints, the id is that string verbatim** rather than a kebab
36
+ synonym. `skill_linter.ts` emits a closed set of `Issue` codes —
37
+ `missing_section`, `missing_conditional_section`, `invalid_execution_handler` —
38
+ and a row about one of those is looked up by the code the reader just saw in the
39
+ output. No current row is of that class; the convention is stated for the next
40
+ one, so the table does not accumulate two names for the same failure.
41
+
42
+ ## Discrimination drills
43
+
44
+ A row's "first check" is only worth following if the documented signature is what
45
+ actually appears. Each drill breaks the named layer and asserts the documented
46
+ symptom — run it once when you doubt a row, or when adding one. They are text a
47
+ human runs; nothing here is a CI gate.
48
+
49
+ | ID | Drill — break this, expect that |
50
+ |---|---|
51
+ | `tool-loop` | Ask for a fact that is genuinely absent from the tree (a config key nothing defines). Expect repeated searches with shrinking variation and no edit — that shape, not an error message, is the signature. |
52
+ | `rate-limited` | Fire the provider's own rate limit with a tight loop against a cheap endpoint. Expect `429` **plus** `Retry-After`; a `429` with no such header is a different failure (a gateway, not the API). |
53
+ | `connection-refused` | Stop the service and call it (`docker compose stop <svc>`). Expect `ECONNREFUSED` immediately. If it hangs instead, the host resolves but nothing listens — that is `hang`, not this row. |
54
+ | `path-not-found` | Run a path-taking script from a different cwd. Expect `ENOENT` naming a path that is *almost* right — the near-miss is the tell that the path is relative, not missing. |
55
+ | `hang` | `await` a promise nothing resolves. Expect no output and no exit, distinguishable from `race` by being 100% reproducible. |
56
+ | `out-of-memory` | Accumulate rows in an array inside a loop over a large fixture. Expect the heap message and exit 137 — and note that the reported line is where allocation failed, not where the growth is. |
57
+ | `permission-denied` | `chmod 000` a fixture and read it. Expect `EACCES`, not `ENOENT` — confusing the two sends you looking for a missing file that is right there. |
58
+ | `order-dependent-test` | Add a module-level mutable to two tests in one file. Expect green alone, red in suite. Reversing the file order should move the failure — if it does not, the cause is shared *external* state, not order. |
59
+ | `local-ci-drift` | Rename a fixture's casing (`Foo.ts` → `foo.ts`) and import the old name. Expect green on macOS, red on Linux CI. The generalisation: anything the local filesystem is lenient about. |
60
+ | `race` | Replace a condition-based wait with a fixed `sleep` shorter than the operation. Expect intermittent failure whose rate moves with machine load — load-sensitivity is what separates this from `order-dependent-test`. |
61
+ | `stale-capability-claim` | Assert a capability without asking for it, then compare against the live verb. `agent-config routing:doctor` prints provenance per field; a field whose provenance is `default` was never established by anything — which is exactly the state a confident self-claim is indistinguishable from. |
62
+
63
+ ## How to use
64
+
65
+ 1. Match the symptom to a signature above.
66
+ 2. Run the **first check** — it is the highest-probability isolation step, not a fix.
67
+ 3. If it confirms the cause → fix + add a regression test. If not → fall back to
68
+ the full `systematic-debugging` loop from Phase 1.
69
+
70
+ No signature matches → this table earned nothing; debug from first principles.
@@ -0,0 +1,233 @@
1
+ # False Green — the ways a passing result can be wrong here
2
+
3
+ > Eleven failure modes, each with the detection command that distinguishes "found nothing" from "looked at nothing". Every one is drawn from this repository's own history, not from a generic checklist.
4
+
5
+ _Origin: `road-to-skill-ecosystem-gate-integrity` Phase 3. The recurring shape is not that a gate reports a wrong finding — it is that a gate reports **no** finding for a reason unrelated to the property it guards, and no output distinguishes the two cases._
6
+
7
+ ## The catalogue
8
+
9
+ ### 1. Dead scan root
10
+
11
+ The gate walks a directory that moved or was deleted. Zero units, zero findings,
12
+ exit 0, green checkmark. Fourteen gates in this tree were in this state
13
+ simultaneously after a container move; their own output said `0 file(s) scanned`
14
+ and nothing asserted on the number.
15
+
16
+ ```bash
17
+ ./scripts-run src/scripts/<gate> | grep -E '^scanned: ' # 0, or absent entirely
18
+ ./scripts-run src/scripts/sweep_dead_scan_roots
19
+ ```
20
+
21
+ **Structural fix:** `assertScanned` from `_lib/scan_scope.ts`. A gate that read
22
+ nothing has not passed.
23
+
24
+ ### 2. Planned-but-never-judged targets
25
+
26
+ The root is alive and the corpus is real, but the loop `continue`s past most of
27
+ it on unwritten conditions. The published count says "enumerated", the reader
28
+ hears "checked". `lint_framework_leakage` published 438 while judging 368.
29
+
30
+ ```bash
31
+ ./scripts-run src/scripts/<gate> | grep 'ledger:' # scanned=N planned=M — compare N and M
32
+ ```
33
+
34
+ **Structural fix:** `_lib/gate_ledger.ts`. Every planned target reaches exactly
35
+ one terminal outcome, and the skip codes are counted per reason.
36
+
37
+ ### 3. Allowlist growth
38
+
39
+ The gate is honest, the corpus is real, and the finding was suppressed. Count-
40
+ based ratchets cannot see swap-one-out-add-one-in: remove a real entry, add a
41
+ fresh suppression, the number is identical and the estate moved backwards.
42
+
43
+ ```bash
44
+ ./scripts-run src/scripts/check_suppression_hygiene # entry SETS vs the base ref
45
+ git diff origin/main -- 'src/scripts/*allowlist*.json' 'src/config/*baselines*.json'
46
+ ```
47
+
48
+ **Structural fix:** `_lib/ratchet_base_ref.ts` — compare entry sets against
49
+ `git show <baseRef>:<path>`, the one reading of the baseline the change under
50
+ review cannot rewrite.
51
+
52
+ ### 4. Ratchet-entry deletion
53
+
54
+ Subtler than growth: deleting a baseline entry whose `count` is 0 is **weaker**
55
+ than leaving it, because the absence of an entry means "unbaselined" and an
56
+ unbaselined gate's `ok` flips to `actual === 0` with no recorded intent. Harden
57
+ first, then delete, and pin the absence.
58
+
59
+ ```bash
60
+ git diff origin/main -- src/config/gate-violation-baselines.json | grep '^-'
61
+ ```
62
+
63
+ ### 5. Threshold re-anchoring
64
+
65
+ The gate still runs, the corpus is real, and the bar moved. A lowered floor and
66
+ a genuine improvement look identical in the exit code.
67
+
68
+ ```bash
69
+ git diff origin/main -- src/config/gate-coverage.yml | grep -E '^[-+].*min_scanned'
70
+ git diff origin/main -- 'src/config/*budget*.json'
71
+ ```
72
+
73
+ **Discriminator:** a legitimate ratchet lowers *severity* while keeping *reach*;
74
+ threshold-lowering reduces reach. Ask which one the diff does.
75
+
76
+ ### 6. Suppression sweep
77
+
78
+ Not one entry — twenty. Allowlist growth past ~20 entries in a session is the
79
+ signal that the linter (or the content) is wrong, not that the list is short by
80
+ twenty. The tool-call guard blocks past that count; the honest response is to
81
+ fix the gate's shape.
82
+
83
+ ```bash
84
+ ./scripts-run src/scripts/check_suppression_hygiene | grep 'entry(ies)'
85
+ ```
86
+
87
+ ### 7. Crashed gate read as passing gate
88
+
89
+ A gate that throws is not a gate that passed, but an aggregator that only
90
+ inspects exit codes cannot tell an exception from a clean run when the harness
91
+ swallows it. Three of this repository's recorded traps are estate invalidation
92
+ misreported as a per-gate red, or the reverse.
93
+
94
+ ```bash
95
+ ./scripts-run src/scripts/<gate>; echo "EXIT=$?" # capture BEFORE any $( )
96
+ ```
97
+
98
+ **Structural fix:** capture `EXIT=$?` on the line immediately after the command,
99
+ never after a command substitution; and fail closed when a registered gate
100
+ reports a null or missing verdict.
101
+
102
+ ### 8. A derived page reporting an unmeasured dimension
103
+
104
+ The generator has no data for a category and renders a `0`, or worse a computed
105
+ share, which reads as a measurement. The always-budget report printed `60.1%`
106
+ for a dimension it counted **zero** artefacts in.
107
+
108
+ ```bash
109
+ ./scripts-run src/scripts/check_derived_page_truthfulness # where present
110
+ grep -rn '0%\|0 of 0' docs/*.md
111
+ ```
112
+
113
+ **Structural fix:** an unmeasured category renders as absent or explicitly
114
+ "not measured" — never as a zero and never as a share.
115
+
116
+ ### 9. Equality without validity
117
+
118
+ Two things are compared and found equal — because neither exists. `diff a b`
119
+ over two absent files returns equal; two empty lists both serialize to `[]`; an
120
+ empty rendered template equals an absent target file. The gate reports
121
+ "in sync" having compared nothing.
122
+
123
+ ```bash
124
+ ./scripts-run src/scripts/<gate> # then delete ONE side and re-run
125
+ ```
126
+
127
+ **Structural fix:** assert both sides exist and are well-formed BEFORE
128
+ comparing. Two absences are the absence of a comparison, not the presence of a
129
+ match. The estate-wide audit is below.
130
+
131
+ ### 10. Hook-bypass override
132
+
133
+ The gate never ran because the hook that runs it was disabled for that
134
+ invocation. `git commit --no-verify` (and its short `-n` form) skips every
135
+ pre-commit hook; `core.hooksPath` repointed at an empty directory skips them
136
+ permanently and silently. Both produce a commit that looks exactly like a
137
+ commit whose hooks passed. The same shape reaches the runtime hook layer: a
138
+ concern bound in the manifest is still inert on a host that does not honour a
139
+ deny, so "the guard is registered" is not "the guard fired".
140
+
141
+ <!-- example-fence-allow: git-no-verify -- the fence teaches how to DETECT the core.hooksPath bypass; the forbidden form has to appear for the diagnostic to be readable, and every line here is a read-only query -->
142
+ ```bash
143
+ git config --get core.hooksPath # empty = repo default, good
144
+ ./scripts-run src/scripts/hooks/block_no_verify --help # the tool-call guard
145
+ agent-config hooks:status # per-host bindings, not the manifest
146
+ ```
147
+
148
+ **Structural fix:** the bypass is blocked at tool-call time by
149
+ `block-no-verify` on the one host that honours a deny, and the authoritative
150
+ gate is remote CI, which no local override can skip. Never read a local green
151
+ as evidence when the hook path was overridden — re-run in CI, or run the gate
152
+ directly rather than through the hook.
153
+
154
+ ### 11. Cached-green reuse
155
+
156
+ The green belongs to a different input than the one being judged. Three real
157
+ shapes here. A gate that reads `dist/agent-src/` passes against a **stale
158
+ projection** while the `src/` change it was meant to judge is not in the tree it
159
+ scanned — the recorded trap is a worktree whose stale `dist` faked generator
160
+ drift, and its mirror, a golden capture reading `dist` where the assertion was
161
+ about `src`. A count ratchet sits inside its limit for so long that "within
162
+ budget" stops meaning anything, which is why a baseline carries an expiry at
163
+ all. And the conversational form: trusting a verification run earlier in the
164
+ same session, after the tree has moved underneath it.
165
+
166
+ ```bash
167
+ bash src/scripts/condense.sh --changed # dist != rewrite(src) => the scan root is stale
168
+ ./scripts-run src/scripts/check_condensation --summary # byte-exactness dist vs rewrite(src)
169
+ ```
170
+
171
+ **Structural fix:** regenerate before judging — this repository's `sync` task
172
+ then its `generate-tools` task, in that order — and treat a baseline unchanged past
173
+ `STALE_AFTER_DAYS` (56, `_lib/gate_baseline.ts:39`) as suppression rather than
174
+ as headroom. A completion claim rests on a run made **after** the last edit, not
175
+ on the freshest run you happen to remember.
176
+
177
+ ## The audited sync/parity gates
178
+
179
+ Comparison-shaped gates carry entry #9's failure mode by default: `diff a b`
180
+ where neither side exists returns **equal**. Audited 2026-08-05 across
181
+ `src/scripts/` — **27 comparison gates, 19 guarded, 8 vulnerable, 0 undecided.**
182
+
183
+ A gate is GUARDED when it asserts both sides exist and are well-formed *before*
184
+ comparing — in this tree, almost always via `assertScanned` /
185
+ `assertWatchlistResolves` from `_lib/scan_scope.ts`.
186
+
187
+ ### Guarded (19)
188
+
189
+ `check_release_surface_equality` · `check_trunk_drift` · `lint_glama_drift` ·
190
+ `check_ci_strict_superset` · `check_condensation` · `check_artefact_checksums` ·
191
+ `check_bridge_derivation` · `check_discovery_determinism` ·
192
+ `check_cli_registry_budget_sync` · `check_template_pin_drift` ·
193
+ `check_gitignore_freshness` · `check_token_optimizer_freshness` ·
194
+ `lint_eval_freshness` · `lint_behavioural_eval_freshness` ·
195
+ `check_release_trunk_sync` · `sync_gitattributes` · `sync_gitignore` ·
196
+ `iron_law_sha` · `check_test_coverage_diff`
197
+
198
+ Two carry caveats worth knowing: `check_template_pin_drift` has an
199
+ `--allow-empty` opt-in that is a deliberate empty-side pass, and
200
+ `check_test_coverage_diff` is guarded but warn-only, so its guard is currently
201
+ inert.
202
+
203
+ ### Vulnerable (8) — shrink-only from here
204
+
205
+ | Gate | The both-absent / both-empty path |
206
+ |---|---|
207
+ | ~~`verify_physical_move`~~ | **FIXED in this change.** `_diff_manifest(null, null)` returned `[]`, and an empty issue list means clean. |
208
+ | `check_ci_local_parity` | a missing workflow dir reads as `''` and a missing taskfile is skipped; two empty corpora ⇒ no delta ⇒ exit 0 |
209
+ | `mcp_parity_smoke` | two empty lists both serialize to `[]`; prints "0 entries match" and returns 0 |
210
+ | `probe_projection_fidelity` | a fixture that loses its `entries:` key yields 0 checks and `fail=0` |
211
+ | `sync_agent_settings` | empty template + absent target ⇒ `'' === ''` ⇒ "already in sync" under `--check` |
212
+ | `sync_github_metadata` | two empty topic lists ⇒ no drift ⇒ exit 0 **even under `--strict`** |
213
+ | `check_kernel_prefix_stability` | deleting the committed snapshot returns `'warmup'` ⇒ exit 0 |
214
+ | `bench_drift_check` | fewer than 2 reports ⇒ "no drift gate yet" ⇒ exit 0 |
215
+
216
+ The seven open rows are recorded rather than swept: fixing release, sync, and
217
+ bench gates in one change would be a large diff across surfaces this change does
218
+ not otherwise touch, which is the unreviewable-batch failure the authoring
219
+ guideline warns about. The fixed row shows the pattern — assert both sides
220
+ exist, and treat two absences as the absence of a comparison.
221
+
222
+ ## The ease tripwire
223
+
224
+ A verification that was **far easier than expected** is a signal to check the
225
+ path, not a signal of success. Every entry above felt like a pass at the moment
226
+ it happened. When a gate you expected to fight goes green on the first run, run
227
+ one of the detection commands before believing it.
228
+
229
+ ## See also
230
+
231
+ - [`gate-authoring.md`](gate-authoring.md) — the authoring path that prevents these at the source.
232
+ - `docs/contracts/ci-green-floor.md` § CI delta — what a local pass does and does not cover.
233
+ - `src/scripts/_lib/gate_ledger.ts`, `_lib/scan_scope.ts`, `_lib/ratchet_base_ref.ts` — the three structural fixes above.
@@ -0,0 +1,192 @@
1
+ # First-Principles Thinking
2
+
3
+ Reference guideline for Wing-1 deep-thinking work — strip away
4
+ assumptions and conventions to reach fundamental truths, then rebuild
5
+ understanding from the ground up. Distinct from `inversion-thinking`
6
+ (which negates the goal) — first principles **dissolve** the goal into
7
+ verified primitives and reconstruct it without inherited convention.
8
+ Adopted under the **Reference-Guideline Sunset Policy** and
9
+ cross-referenced from:
10
+
11
+ - [`deep-reading-analyst`](../../skills/deep-reading-analyst/SKILL.md)
12
+ — L3 Deep analysis depth.
13
+ - [`mental-models`](mental-models.md) — Munger's lattice; first
14
+ principles is the foundational physics-style lens.
15
+ - [`improve-before-implement`](../../rules/improve-before-implement.md)
16
+ — challenge the framing of a request before coding it.
17
+ - [`inversion-thinking`](inversion-thinking.md) — pair: first
18
+ principles rebuilds; inversion stress-tests the rebuild.
19
+
20
+ > **Core principle:** "What is definitely, provably true?" — strip
21
+ > the inherited and rebuild from primitives.
22
+
23
+ ## Three-Step Process
24
+
25
+ ### Step 1: Identify assumptions
26
+
27
+ **Ask:** *"What do we assume to be true about this?"*
28
+
29
+ List all implicit and explicit assumptions in the content:
30
+
31
+ - Unstated premises.
32
+ - Inherited wisdom (*"everyone knows…"*).
33
+ - Industry conventions.
34
+ - Historical precedents treated as universal laws.
35
+
36
+ **Example from business:**
37
+
38
+ - Assumption: *"We need a physical store to sell products."*
39
+ - Question: is this fundamentally true or historically convenient?
40
+
41
+ ### Step 2: Break down to fundamentals
42
+
43
+ **Ask:** *"What is definitely, provably true?"*
44
+
45
+ Reduce to indisputable facts:
46
+
47
+ - Physical laws (if applicable).
48
+ - Mathematical truths.
49
+ - Core human needs / behaviors.
50
+ - Cause-effect relationships you can verify.
51
+
52
+ **Sorting Framework:**
53
+
54
+ ```
55
+ Claim → Ask: "How do I know this is true?"
56
+ ↓
57
+ ├─ "It just is" → Probably an assumption, dig deeper
58
+ ├─ "That's how it's always done" → Convention, not fundamental
59
+ ├─ "X happens, then Y happens" → Potential fundamental (verify causation)
60
+ └─ "Mathematically/physically must be true" → Fundamental
61
+ ```
62
+
63
+ ### Step 3: Rebuild from scratch
64
+
65
+ **Ask:** *"Starting from fundamentals only, what logically follows?"*
66
+
67
+ Reconstruct without importing old assumptions:
68
+
69
+ 1. Begin with verified fundamentals.
70
+ 2. Each step must logically follow from previous.
71
+ 3. Note where you make new assumptions (be explicit).
72
+ 4. Compare new construction to original concept.
73
+
74
+ ## Application Template
75
+
76
+ ```markdown
77
+ ## Original Concept / Argument
78
+ [What the author claims]
79
+
80
+ ## Hidden Assumptions
81
+ - Assumption 1: [Something taken as given]
82
+ - Assumption 2: [...]
83
+
84
+ ## Verified Fundamentals
85
+ - Fundamental 1: [Provably true core fact]
86
+ - Fundamental 2: [...]
87
+
88
+ ## Rebuilt Understanding
89
+ Starting from fundamentals only:
90
+ Step 1: [First logical derivation]
91
+ Step 2: [Second logical derivation]
92
+ ...
93
+ Conclusion: [What actually follows]
94
+
95
+ ## Comparison
96
+ Original vs. rebuilt:
97
+ - What survived: [Fundamentally sound ideas]
98
+ - What doesn't hold: [Based on questionable assumptions]
99
+ - New insights: [What rebuilding revealed]
100
+ ```
101
+
102
+
103
+ ## Common First Principles by Domain
104
+
105
+ ### Business / economics
106
+
107
+ - People act in self-interest (with caveats).
108
+ - Supply and demand affect price.
109
+ - Value = willingness to pay.
110
+ - Scarcity creates value.
111
+
112
+ ### Psychology / human behavior
113
+
114
+ - Humans seek pleasure, avoid pain.
115
+ - Social status matters to humans.
116
+ - Cognitive biases exist (not "people are rational").
117
+ - Habits form through repetition.
118
+
119
+ ### Technology
120
+
121
+ - Information can be copied at near-zero cost.
122
+ - Network effects: value ∝ n² (Metcalfe's law).
123
+ - Moore's law (transistor density doubles ~every 2 years).
124
+ - Computation has energy cost.
125
+
126
+ ### Physics / reality
127
+
128
+ - Energy is conserved.
129
+ - Entropy increases.
130
+ - Speed of light is constant.
131
+ - Cause precedes effect.
132
+
133
+ ## Red Flags: Pseudo-First-Principles
134
+
135
+ Watch for claims disguised as fundamentals:
136
+
137
+ - *"People always prefer X"* (overgeneralization).
138
+ - *"This is just human nature"* (often cultural).
139
+ - *"Economics proves…"* (many schools of economics).
140
+ - *"Science says…"* (which study? replicated?).
141
+
142
+ **Test:** can you point to specific evidence / mechanism, or is it
143
+ folk wisdom?
144
+
145
+ ## Powerful Questions
146
+
147
+ - *"Why is this true?"* (repeat 5 times — "5 Whys").
148
+ - *"What must be true for this to work?"*
149
+ - *"If I couldn't do it this way, what's another path?"*
150
+ - *"What would an alien with no context think?"*
151
+ - *"What if the opposite were true?"*
152
+
153
+ ## Worked Example — *"Need for College Education"*
154
+
155
+ **Assumptions:**
156
+
157
+ - Need degree to get good job.
158
+ - Learning requires formal institution.
159
+ - 18–22 is the right age.
160
+ - Four years is optimal duration.
161
+
162
+ **Fundamentals:**
163
+
164
+ - Employers want skilled workers.
165
+ - Skills can be demonstrated.
166
+ - Learning requires time + practice.
167
+ - Knowledge can be transmitted.
168
+
169
+ **Rebuilt:**
170
+
171
+ - → Employers want proof of skill.
172
+ - → Proof can be: degree OR portfolio OR test OR track record.
173
+ - → Therefore, degree is one option, not necessity.
174
+ - → Insight: focus on skill + proof, not credential alone.
175
+
176
+ ## Practical Use in Reading
177
+
178
+ When analyzing content:
179
+
180
+ 1. **Identify claims** that seem absolute.
181
+ 2. **Challenge foundations:** *"Does this HAVE to be true?"*
182
+ 3. **Verify causation:** *"Does A truly cause B, or just correlate?"*
183
+ 4. **Rebuild the argument** from indisputable facts only.
184
+ 5. **Compare** what survives vs. what was assumption.
185
+
186
+ This exposes weak arguments and strengthens valid ones.
187
+
188
+ ---
189
+
190
+ ## ADOPT citation
191
+
192
+ Adapted from an external reference.
@@ -0,0 +1,66 @@
1
+ # Framework Neutrality — Patterns
2
+
3
+ > Forbidden-pattern table, cross-stack documentation allowance, and carve-out pointer shape for the `framework-neutrality-in-generic-skills` rule
4
+
5
+ _Origin: migrated from `src/rules/framework-neutrality-in-generic-skills.md` per the P4 pattern of `road-to-kernel-and-router.md`. The Iron Law, scope, and exemption list stay in the rule; this file carries the pattern reference._
6
+
7
+ ## Forbidden patterns in generic artifacts
8
+
9
+ | Pattern | Why it leaks | Fix |
10
+ |---|---|---|
11
+ | `FormRequest` as a mandate | Laravel-only validation class | Say "request-validation primitive (FormRequest in Laravel, zod in Next.js, pydantic in FastAPI)" or move to `laravel-validation` carve-out |
12
+ | `php artisan …` as a canonical command | Laravel CLI | Generalize to "the framework's CLI" or move to `artisan-commands` carve-out |
13
+ | `PHPStan` as the only example | PHP-only static analyser | List peers (`mypy` for Python, `tsc` for TypeScript) or move to `quality-tools` carve-out |
14
+ | `composer.json` mentioned alone | PHP package manifest | Add `package.json` / `pyproject.toml` peers, or move to a PHP-scoped carve-out |
15
+ | `Eloquent` / `Model::…` | Laravel ORM | Generalize to "the project's ORM/data layer" or move to `eloquent` carve-out |
16
+ | `Pest` as the only test runner | PHP/Laravel test framework | List peers (`pytest`, `vitest`, `jest`) or move to `pest-testing` carve-out |
17
+ | `Blade` / `Livewire` / `Flux` as default UI | Laravel view stack | Generalize to "the project's UI layer" or move to `blade-ui` / `livewire` / `flux` carve-outs |
18
+ | `vendor/bin/<tool>` as a canonical path | PHP/Composer-specific binary path | Say "the project's quality CLI" or carve-out it |
19
+ | `Rector` as the only refactor tool | PHP-only refactorer | List peers (`ts-morph`, `libcst`) or carve-out it |
20
+ | "every controller" / "all controllers" | Assumes MVC PHP framework | Generalize to "every request handler" / "every endpoint" |
21
+
22
+ ## Allowed: cross-stack documentation
23
+
24
+ Multi-stack tables or detection maps with **at least two ecosystems
25
+ side-by-side** are documentation, not leakage. The linter's
26
+ auto-detect heuristic skips a hit when its ±2-line window contains
27
+ patterns from a different ecosystem family (`php_family` vs
28
+ `js_family` vs `python_family`).
29
+
30
+ Example (allowed):
31
+
32
+ ```
33
+ - PHP/Composer project → `composer.json` present
34
+ - Node project → `package.json` present
35
+ - Python project → `pyproject.toml` present
36
+ ```
37
+
38
+ ## Allowed: carve-out pointers
39
+
40
+ A generic artifact may end a section with a one-line handoff to its
41
+ framework-specific peers. Canonical shape:
42
+
43
+ ```
44
+ → Laravel-specific: see [laravel-validation](../../skills/laravel-validation/SKILL.md)
45
+ → Next.js-specific: see [nextjs-patterns](../../skills/nextjs-patterns/SKILL.md)
46
+ ```
47
+
48
+ The pointer is a link, not a procedure — the generic artifact never
49
+ inlines stack-specific code.
50
+
51
+ ## Enforcement
52
+
53
+ `scripts/lint_framework_leakage.ts` runs in the package CI pipeline.
54
+ Exit codes:
55
+
56
+ - `0` — no hits, or every hit is auto-detected as cross-stack, or
57
+ every hit is allowlisted in
58
+ `scripts/lint_framework_leakage_allowlist.json` with a `reason`.
59
+ - `1` — at least one hit in a generic artifact (non-carve-out) that
60
+ is neither cross-stack nor allowlisted.
61
+
62
+ ## See also
63
+
64
+ - `framework-neutrality-in-generic-skills` (rule) — Iron Law, scope, exemption list.
65
+ - `roadmap-ci-steps-policy` — sibling Tier-2a rule that drove this pattern.
66
+ - `skill-quality` — every skill must remain executable; carve-outs must still pass skill-quality.