@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,70 @@
1
+ # Augment Portability
2
+
3
+ > Editing or creating files inside .augment/ directory — skills, rules, commands, templates, contexts must be project-agnostic
4
+
5
+ _Origin: migrated from `.agent-src.uncondensed/rules/augment-portability.md` per P4.2 of `road-to-kernel-and-router.md`._
6
+
7
+ # Package Portability
8
+
9
+ Everything that ships with the `event4u/agent-config` package MUST be
10
+ **project-agnostic**. That includes:
11
+
12
+ - Everything inside `.augment/` (skills, rules, commands, guidelines,
13
+ templates, contexts)
14
+ - The package repo's own root `AGENTS.md`
15
+ - The package repo's own `.github/copilot-instructions.md`
16
+
17
+ All three are either installed into consumer projects (`.augment/` via
18
+ `install.sh`) or read by AI tools when working on the package itself
19
+ (`AGENTS.md`, `copilot-instructions.md`). Leaking consumer-specific
20
+ content into any of them pollutes downstream projects or misleads agents.
21
+
22
+ ## Rules
23
+
24
+ - NEVER reference a specific consumer project, repo name, domain, or tech
25
+ stack directly. The package repo itself (`event4u/agent-config`) MAY be
26
+ named inside its own root `AGENTS.md` and `copilot-instructions.md` —
27
+ that is meta about the package, not a leak.
28
+ - NEVER hardcode consumer-project paths, class names, or conventions.
29
+ - Write content so it works as a **reusable package** across any project.
30
+ - Project-specific behavior belongs in the **consumer's** `.agent-settings.yml`,
31
+ `AGENTS.md`, or `agents/` — never in files shipped by this package.
32
+ - If a skill or rule needs project-specific input, read it from
33
+ `.agent-settings.yml` or accept it as a parameter.
34
+ - When reviewing or editing package files, always ask: "Would this still
35
+ make sense in a completely different project?"
36
+
37
+ ## Runtime invocations — no `task` commands
38
+
39
+ Skills, rules, commands, guidelines, personas, and context docs run in
40
+ **consumer projects**, which may not have Task installed. **Never**
41
+ reference a `task <something>` invocation inside any artefact file
42
+ under `.agent-src.uncondensed/{skills,rules,commands,guidelines,personas,contexts}/`
43
+ (and therefore also not in the condensed mirror under `dist/agent-src/`).
44
+ Use direct script invocations instead.
45
+
46
+ ## Consumer CLI — `./agent-config`
47
+
48
+ A subset of package scripts is exposed through a project-local CLI
49
+ wrapper `./agent-config` (written into the project root by the
50
+ installer, gitignored). Artefacts MUST prefer the CLI over raw
51
+ `./scripts-run src/scripts/…` paths for every command the CLI already covers.
52
+
53
+ ## Translation tables — see mechanics
54
+
55
+ The full `task`-to-script translation table, the `./agent-config`
56
+ CLI mapping, and the rationale (Task absence on consumers,
57
+ maintainer-vs-artefact split) are **in this file**.
58
+
59
+ > **Corrected 2026-08-26** (`road-to-contract-review-deadlines` 4.2): this
60
+ > paragraph used to point at a `rules-auto` mechanics file under the contexts
61
+ > tree, which exists nowhere in it. The pointer described a split that was never
62
+ > made; the material it names was already here.
63
+
64
+ ## Enforcement
65
+
66
+ `scripts/check_portability.ts` scans `.augment/`, `.agent-src.uncondensed/`,
67
+ and the package repo's root `AGENTS.md` + `.github/copilot-instructions.md`
68
+ for forbidden identifiers, for any `task <name>` invocation inside
69
+ artefact files, and for direct script invocations that bypass the
70
+ `./agent-config` CLI. It runs in CI and must pass before any PR.
@@ -0,0 +1,350 @@
1
+ # Code Clarity
2
+
3
+ > Cross-language coding-clarity conventions. Cited by language-specific
4
+ > guidelines (`php/general.md`, `php/php-coding-patterns.md`, …) so
5
+ > consumers in any stack get the same baseline.
6
+
7
+ Applies to PHP, JavaScript / TypeScript, Python, Go, Ruby, and any
8
+ other language the package guides. Language-specific files reference
9
+ this one — they don't duplicate it.
10
+
11
+ ## Don't assign single-use values to a variable
12
+
13
+ If a value is used **exactly once**, pass the expression directly.
14
+ Don't bind it to a temporary variable just to feed it into the next
15
+ call.
16
+
17
+ The named variable buys nothing — it adds a line, an identifier the
18
+ reader has to track, and a false signal that the value will be reused.
19
+
20
+ ```php
21
+ // ❌ Avoid — $db is referenced exactly once.
22
+ $db = db::getInstance();
23
+ $this->columnExists($db, 'table', 'column');
24
+
25
+ // ✅ Prefer — value flows directly to the call.
26
+ $this->columnExists(db::getInstance(), 'table', 'column');
27
+ ```
28
+
29
+ ```ts
30
+ // ❌ Avoid
31
+ const user = await getCurrentUser();
32
+ return renderProfile(user);
33
+
34
+ // ✅ Prefer
35
+ return renderProfile(await getCurrentUser());
36
+ ```
37
+
38
+ ```python
39
+ # ❌ Avoid
40
+ config = load_config()
41
+ return Worker(config)
42
+
43
+ # ✅ Prefer
44
+ return Worker(load_config())
45
+ ```
46
+
47
+ ## Carve-outs — keep the variable when
48
+
49
+ The rule is "single use, no extra meaning". Bind to a variable when
50
+ **any** of these hold:
51
+
52
+ | Carve-out | Why |
53
+ |---|---|
54
+ | **Used 2 or more times** | Inlining duplicates the expression — re-evaluation, repeated side effects, more diff churn. |
55
+ | **Expression has side effects** | A network call, a write, an `INSERT`, a counter bump must run exactly once and be visible to the reader as such. |
56
+ | **The name carries domain meaning** | `$activeMembership = …; allow($activeMembership)` — the identifier documents intent the call site can't. |
57
+ | **Inlining pushes past the line-length budget** | A 130-char single line is harder to read than two named lines. Match the project's formatter. |
58
+ | **Used inside a loop body** | Hoist the invariant out of the loop; keep the binding. |
59
+ | **Debugger / breakpoint affordance** | Stepping through a named value is materially easier than inspecting an expression mid-call. Prefer the variable in code paths under active investigation. |
60
+ | **Type-narrowing assertion** | `const x: Foo = maybeFoo!; …` where the binding pins the type for the type-checker. |
61
+
62
+ When in doubt — and the expression is short, side-effect-free, and
63
+ used once — inline it.
64
+
65
+ ## Why this matters
66
+
67
+ - **Smaller diffs — by removing indirection, never by compression.** Two lines
68
+ (`$x = ...; f($x)`) become one (`f(...)`) because the naming step carried no
69
+ information, not because one line is a goal in itself. **Simple is not the
70
+ same as short:** a flat form one line *longer* beats a dense clever one, and a
71
+ nested ternary or a long optional-call chain that shrinks the diff while
72
+ raising the cost of every future read is a regression here, not a win. The
73
+ shape axis in
74
+ [`agent-interaction-and-decision-quality` § 8b-shape](agent-infra/agent-interaction-and-decision-quality.md)
75
+ states the same distinction from the scope side.
76
+ - **Less cognitive load.** Readers don't track an identifier whose
77
+ whole purpose is "the next line".
78
+ - **Honest signals.** A named variable says "this value is reusable
79
+ or worth labeling". Single-use bindings break that contract and
80
+ train readers to ignore names.
81
+ - **Faster refactor.** Renaming the call site doesn't drag a now-stale
82
+ variable name with it.
83
+
84
+ ## Anti-patterns this rule rejects
85
+
86
+ - **"Variable for the debugger."** If the file is not under active
87
+ debugging, drop the binding. Don't ship debug scaffolding.
88
+ - **"Variable to align line lengths."** Use the formatter, not a
89
+ fake intermediate.
90
+ - **"Variable so I have somewhere to put the type."** Modern type
91
+ inference makes this redundant in PHP 8+, TS, Python 3.10+, Go,
92
+ Rust, etc. Annotate the parameter or return type instead.
93
+
94
+ ## Comment discipline — state a constraint, not a narration
95
+
96
+ A code comment earns its place only by stating a constraint the code
97
+ itself can't show — a non-obvious invariant, a workaround for a specific
98
+ bug, a hidden dependency. It never narrates:
99
+
100
+ - **Provenance** — "added for the X feature", "per ticket #123". That
101
+ belongs in the commit message or PR description, not the code; it rots
102
+ the moment the feature or ticket is forgotten.
103
+ - **What the next line does** — well-named identifiers already say it.
104
+ A comment repeating the code is noise the reader skips past.
105
+ - **Why the change is correct** — that's a message to the reviewer, not
106
+ to the next person reading the file after it's merged.
107
+
108
+ Test: would removing the comment leave a future reader confused about a
109
+ non-obvious constraint? If yes, keep it — tightened to the constraint
110
+ alone. If the comment only restates what identifiers already convey, or
111
+ explains the change's history rather than the code's behavior, cut it.
112
+
113
+ This is the canonical long-form behind the
114
+ [`code-comment-discipline`](../rules/code-comment-discipline.md)
115
+ rule (whose body is merged here per P4 of `road-to-kernel-and-router.md`).
116
+ External consensus in one line each: comments explain **why, never
117
+ what** (competent readers get the what from the code); Google's style
118
+ guides (C++/Go/Python/TS) ban stating the obvious — Go: prefer
119
+ self-describing names over redundant comments; Python: "never describe
120
+ the code"; modern PHP (framework-mainstream since PHP 8 typing) drops
121
+ docblocks that only restate native type hints; TSDoc/JSDoc type
122
+ annotations are redundant in typed TypeScript.
123
+
124
+ ### Banned comment classes
125
+
126
+ | Banned | Example | Instead |
127
+ |---|---|---|
128
+ | What-narration | `// increment the counter` above `counter++` | Nothing — the code says it |
129
+ | Signature-mirroring docblock | `@param string $name The name` on `string $name` | Nothing — the typehint says it |
130
+ | Redundant `@return` | `@return bool` on `): bool` | Nothing |
131
+ | Banner / section divider | `// ---------- Helpers ----------` | Structure the file; extract a class |
132
+ | Change-log comment | `// added for the export feature`, `// per ticket #123` | Commit message / PR description |
133
+ | Reviewer-directed justification | `// this is safe because my change …` | PR description |
134
+ | Redundant property docblock | `/** @var LoggerInterface */` on a typed property | Nothing — the property type says it |
135
+ | Type-restating JSDoc in typed TS | `/** @param {string} id */` on `id: string` | Nothing — TS carries the type |
136
+ | Obvious docstring | `"""Return the user."""` on `get_user()` | Nothing, or a real contract note |
137
+ | Commented-out code | dead code kept "for reference" | Delete — git history is the tombstone |
138
+
139
+ ### Carve-out — machine-relevant precision docblocks STAY
140
+
141
+ A docblock that carries type information the native type system cannot express is **not** redundant — static analyzers and IDEs consume it. Keep (and write) these:
142
+
143
+ - PHP generics / array shapes for PHPStan/Psalm: `@return Collection<int, Post>`, `@param array<string, User> $usersByEmail`, `@template T`, `@phpstan-type`.
144
+ - Union/shape refinements the language can't express natively.
145
+ - Tool-consumed markers: `@deprecated` (with the successor), `@internal`, `@throws` for checked flows the caller must handle.
146
+ - Python typing that only a docstring/stub can carry in the project's toolchain.
147
+
148
+ The line: the docblock must add information **beyond** the native signature. `@param array<int, Order> $orders` earns its place; `@param array $orders` does not.
149
+
150
+ ### Public-API carve-out — `code_style.docblocks`
151
+
152
+ Read `code_style.docblocks` from `.agent-settings.yml` (missing → `minimal`):
153
+
154
+ - `minimal` (default) — the full discipline above; exported/public symbols get no summary docblock unless one of the five legitimate jobs applies.
155
+ - `full` — the **exported public surface of a library package** (published API consumers see in their IDE) MAY carry a one-line summary docblock per symbol. The redundancy ban still holds in `full`: no `@param`/`@return` lines that mirror the signature, ever.
156
+
157
+ ### Per-language keep/drop tables
158
+
159
+ Docblocks earn their place only with **machine-relevant precision** the
160
+ native type system cannot carry, or genuine why-context. Per language:
161
+
162
+ #### PHP / PHPDoc
163
+
164
+ | Keep | Drop |
165
+ |---|---|
166
+ | `@return Collection<int, Post>` — generic the native type can't carry | `@return bool` on `): bool` |
167
+ | `@param array<string, User> $usersByEmail` — array shape for PHPStan/Psalm | `@param string $name The name.` on `string $name` |
168
+ | `@template T`, `@phpstan-type`, `@phpstan-assert` | `/** @var LoggerInterface */` on a natively-typed property |
169
+ | `@throws PaymentDeclined` where callers must handle it | `/** Constructor. */` |
170
+ | `@deprecated use X instead` — tool-consumed | Method summary that re-words the method name |
171
+
172
+ ```php
173
+ // ❌ Drop — five lines, zero information beyond the signature
174
+ /**
175
+ * Deactivate the user.
176
+ *
177
+ * @param User $user The user to deactivate.
178
+ * @return void
179
+ */
180
+ public function deactivate(User $user): void
181
+
182
+ // ✅ Keep — the docblock carries what PHP's type system cannot
183
+ /** @param array<int, OrderLine> $lines */
184
+ public function totalCents(array $lines): int
185
+ ```
186
+
187
+ #### TypeScript / JSDoc-TSDoc
188
+
189
+ | Keep | Drop |
190
+ |---|---|
191
+ | A why: `// half-up to match the invoice renderer; Intl default is half-even` | `@param {string} id` on `id: string` |
192
+ | `@deprecated` with the successor named | `@returns the formatted price` on `: string` |
193
+ | `@internal` when the build strips internals | Restating a type the compiler already enforces |
194
+ | Non-obvious unit/contract: `/** epoch millis, NOT seconds */` | `// call the API` above `await api.call()` |
195
+
196
+ ```ts
197
+ // ❌ Drop — TS carries every fact stated here
198
+ /**
199
+ * Formats the price.
200
+ * @param amount - the amount to format
201
+ * @returns the formatted string
202
+ */
203
+ export function formatPrice(amount: number): string
204
+
205
+ // ✅ Keep — constraint the signature can't show
206
+ // Rounds half-up to match the invoice PDF renderer; Intl default is half-even.
207
+ export function formatPrice(amount: number): string
208
+ ```
209
+
210
+ #### Python / docstrings
211
+
212
+ | Keep | Drop |
213
+ |---|---|
214
+ | Contract detail: raises, units, side effects a caller must know | `"""Return the user."""` on `get_user()` |
215
+ | Public-API docstring where the toolchain renders it (Sphinx/mkdocs) | Args section restating annotated params |
216
+ | Type info only expressible in a docstring in this project's toolchain | `# loop over items` above a comprehension |
217
+
218
+ ```python
219
+ # ❌ Drop
220
+ def get_user(user_id: int) -> User | None:
221
+ """Get the user by id and return it or None."""
222
+
223
+ # ✅ Keep — behavior the signature can't show
224
+ def get_user(user_id: int) -> User | None:
225
+ """Reads through the request-local cache; never hits the DB twice per request."""
226
+ ```
227
+
228
+ #### Go / doc comments
229
+
230
+ | Keep | Drop |
231
+ |---|---|
232
+ | Exported-symbol doc comment (`godoc` renders it) — one sentence, adds intent | Doc comment that re-words the function name |
233
+ | A why on non-obvious concurrency/ordering | `// increment i` |
234
+
235
+ Go is the one ecosystem where exported symbols conventionally carry a
236
+ doc comment — keep the convention, but the comment still must say
237
+ something the name doesn't.
238
+
239
+ ### Redundancy self-check (any language)
240
+
241
+ Before emitting a comment or docblock, all three must be true:
242
+
243
+ 1. It states something **beyond** the names and native types.
244
+ 2. It will still be true after the next refactor of the lines below it.
245
+ 3. It addresses the future reader of the file — not the reviewer of the diff.
246
+
247
+ One "no" → drop it. When in doubt: no comment.
248
+
249
+ Those three conditions are the code-comment instance of a wider test. The
250
+ generalised form — five questions covering comments, docblocks, labels, hints,
251
+ tooltips, placeholders, badges and empty states alike — is the Information Delta
252
+ Test in [`redundancy-taxonomy`](redundancy-taxonomy.md), together with the
253
+ representation classes that name what a redundant surface *is*. Reach for it
254
+ whenever the surface is not a code comment, and whenever a reduction would touch
255
+ the semantic channel: an accessibility name is required information, so it is a
256
+ hard guard and never a deletion candidate. The rule is not "less text" — it is
257
+ that if removing the text loses no information in any required channel, remove
258
+ it, and if the information is required, express it once, in the strongest native
259
+ form available.
260
+
261
+ The same document carries the **naming** half, which fires earlier than any of
262
+ this: before introducing a term for a concept, search for the term the tree
263
+ already uses. A second word for an existing concept costs a reader more than a
264
+ redundant sentence does — a redundant sentence is skipped, a second name makes
265
+ them check whether they are looking at one thing or two.
266
+
267
+ ### Additional worked examples
268
+
269
+ (The TypeScript `formatPrice` pair above is the canonical TS example; these
270
+ cover the remaining shapes.)
271
+
272
+ ```php
273
+ // ❌ Redundant — every line restates the signature
274
+ /**
275
+ * Get the user by id.
276
+ *
277
+ * @param int $id The user id.
278
+ * @return User|null The user or null.
279
+ */
280
+ public function getUserById(int $id): ?User
281
+
282
+ // ✅ Nothing to add — the signature is the documentation
283
+ public function getUserById(int $id): ?User
284
+ ```
285
+
286
+ ```php
287
+ // ✅ Docblock KEPT — the generic is machine-relevant (PHPStan), the native type can't carry it
288
+ /** @return Collection<int, Post> */
289
+ public function publishedPosts(): Collection
290
+ ```
291
+
292
+ ```python
293
+ # ❌ Narration
294
+ # loop over the items and sum the totals
295
+ total = sum(item.total for item in items)
296
+
297
+ # ✅ A why that survives
298
+ # Stripe amounts are integer cents; convert once at the boundary, never downstream.
299
+ total_cents = sum(item.total_cents for item in items)
300
+ ```
301
+
302
+ ### Scope boundary
303
+
304
+ The comment discipline governs **new and edited code only**. It is never a
305
+ license to strip comments from untouched code —
306
+ [`minimal-safe-diff`](../rules/minimal-safe-diff.md) wins on diff shape
307
+ ("no docstrings/comments on untouched code" cuts both ways: don't add, don't
308
+ remove). Sweeping a file's existing comments is a separate,
309
+ explicitly-requested cleanup task.
310
+
311
+ ### Fixtures
312
+
313
+ Behavioral baseline: `tests/code-comments/eval-fixtures.md`
314
+ (`ccd-php-class-generation`, `ccd-ts-module-generation`,
315
+ `ccd-untouched-preservation`, `ccd-explicit-teaching-override`); the decidable
316
+ criteria are proven by `tests/scripts/code_comment_fixtures.test.ts`.
317
+
318
+ ### Evidence belongs in the roadmap that asked for it
319
+
320
+ Measured 2026-09-02 in a consumer repository: **509 German comment lines** and
321
+ **21 report- or provenance-shaped comments** across **41 of 45** changed source
322
+ files, the worst a 101-line colour-analysis report inside a CSS file. The cause
323
+ was a roadmap requiring proof for every checked step: the run read that as
324
+ *evidence should be documented* and wrote the measurements into the source too,
325
+ where the roadmap already carried them.
326
+
327
+ The provenance of a value is not a WHY, and a roadmap cannot license a comment
328
+ the rule forbids.
329
+
330
+ Two enforcers carry this because neither rule could fire on a write:
331
+ `code-comment-discipline` matches prompt keywords, and `language-and-tone`'s
332
+ English-comment clause named a `.md`-only validator. `lint_code_comments`
333
+ refuses on the diff; the `comment-discipline` concern reports on the text as
334
+ written. Neither replaces the discipline.
335
+
336
+ ## See also
337
+
338
+ - Language-specific anchors that link to this guideline:
339
+ - PHP: `docs/guidelines/php/general.md` § Variables
340
+ - PHP: `docs/guidelines/php/php-coding-patterns.md` § Variables
341
+ - `code-comment-discipline` rule — the always-loaded enforcement surface
342
+ for the comment-discipline clause above.
343
+ - `minimal-safe-diff` rule — orthogonal but aligned: smallest change
344
+ that solves the stated problem; also owns "no comment additions or
345
+ removals on untouched code".
346
+ - `direct-answers` rule — same spirit at the prose level: shortest
347
+ version that fully answers the question.
348
+ - [`redundancy-taxonomy`](redundancy-taxonomy.md) — the shared classes,
349
+ verdicts and Information Delta Test this section instantiates for code
350
+ comments; also cited by the review and refactoring skills.
@@ -0,0 +1,189 @@
1
+ # Component-Oriented & Object-Oriented Development
2
+
3
+ > Cross-cutting development standard: **think in reusable units, and — in an
4
+ > object-oriented / class-based codebase — treat object-oriented design as a
5
+ > high-priority default where it reduces complexity.** Split by surface below
6
+ > (frontend / backend), each pointing to the stack-specific carve-outs rather
7
+ > than restating them. Framework-neutral by construction — React / Storybook /
8
+ > Laravel / Symfony specifics live in their own skills, never here.
9
+
10
+ ## Paradigm-appropriate first — detect, then apply
11
+
12
+ **Reuse is universal; OOP is paradigm-scoped.** Detect the codebase's paradigm
13
+ before applying the object-oriented half: class-based / OO code (PHP, Java, C#,
14
+ typical TS/React service layers) → this standard's OOP guidance is the
15
+ high-priority default. A **functional / pipeline / actor-model** codebase
16
+ (Elixir/Phoenix, Clojure, Haskell, Go-idiomatic, heavy FP-in-TS) → apply *that*
17
+ paradigm's principles (immutability, pure functions, pattern-matching,
18
+ composition of functions), and read the OOP bullets as "the same rigor, its
19
+ paradigm's shape." **Never impose classes on functional code to satisfy this
20
+ standard** — consistency with the codebase's chosen paradigm wins over OOP
21
+ advocacy, always.
22
+
23
+ ## The standard, in one breath
24
+
25
+ - **Reuse before you build** (every paradigm). Compose from units that already
26
+ exist — audit first, reuse the design system / shared abstractions, extract a
27
+ new unit only when the same shape repeats.
28
+ - **Object-oriented where it fits** (in an OO codebase). Encapsulation, single
29
+ responsibility, composition over inheritance, and behavior-rich objects are
30
+ the high-priority default *when they reduce complexity* — not a quota to hit,
31
+ and not imposed on a codebase that has chosen a different paradigm.
32
+
33
+ ## The load-bearing caveat — reuse/OOP is a tool, never a mandate to abstract
34
+
35
+ This standard **never** authorizes speculative abstraction. It is bounded by the
36
+ package's restraint posture and defers to it on every conflict:
37
+
38
+ - [`minimal-safe-diff`](../rules/minimal-safe-diff.md) (+ its
39
+ anti-over-engineering mechanics) — smallest change; no premature abstraction,
40
+ no speculative feature, no rewrite for taste.
41
+ - [`senior-engineering-discipline`](../rules/senior-engineering-discipline.md)
42
+ — reuse the *existing* abstraction; generalize, don't overfit; never invent an
43
+ API to look object-oriented.
44
+ - [`improve-before-implement`](../rules/improve-before-implement.md) —
45
+ "does it fit the existing architecture?" before adding structure.
46
+ - **When NOT to use a pattern** ([`php/patterns.md`](php/patterns.md) §) — KISS &
47
+ YAGNI trump pattern purity: no interface for a single implementation, no
48
+ pattern for a five-line function, no class where a function is clearer.
49
+
50
+ Rule of thumb: **two real repetitions (or a genuine second axis of change)
51
+ before you extract a code-level abstraction.** One occurrence is not a
52
+ component; one branch is not a Strategy. A reviewer should be able to name the
53
+ concrete duplication or the concrete change-axis the abstraction removes.
54
+ UI extractions carry deliberately higher, scoped bars (shell 3+ · stateful
55
+ component ~4 + real state) — the per-class canon is
56
+ [`abstraction-thresholds`](abstraction-thresholds.md); this file does not
57
+ restate it.
58
+
59
+ **Precedence (explicit): `minimal-safe-diff` / YAGNI always trump OOP
60
+ advocacy.** When "prefer OO shape" and "smallest change" conflict, the smallest
61
+ change wins — this standard adds a *consideration*, never a competing objective
62
+ that pressures preemptive abstraction. The review lens (below) may flag OO shape
63
+ only where the duplication or the growing branch is **already present in the
64
+ diff**, never as "this could grow later."
65
+
66
+ ## Frontend — think in reusable components
67
+
68
+ Component-first is the default mindset, not an afterthought: decompose a screen
69
+ into composable units, reuse the project's primitives, and extract shared shells
70
+ when they repeat. Depth and mechanics already live in dedicated skills — consult
71
+ them, don't duplicate:
72
+
73
+ - [`fe-design`](../skills/fe-design/SKILL.md) § Component Architecture —
74
+ the stack-agnostic "kind, not framework" taxonomy, granularity, and the
75
+ UI-shell bar (per [`abstraction-thresholds`](abstraction-thresholds.md)).
76
+ - [`ui-component-architect`](../skills/ui-component-architect/SKILL.md) —
77
+ how to *shape* a reusable component: composition over inheritance, slot
78
+ contracts, prop-API caps, controlled/uncontrolled, the stateful-component
79
+ bar (repeat **and** real state, per the same canon).
80
+ - [`existing-ui-audit`](../skills/existing-ui-audit/SKILL.md) — the
81
+ reuse-before-invent gate: inventory existing components/tokens/primitives
82
+ first (enforced by [`ui-audit-gate`](../rules/ui-audit-gate.md)).
83
+ - [`design-tokens`](../skills/design-tokens/SKILL.md) /
84
+ [`design-system-capture`](../skills/design-system-capture/SKILL.md) —
85
+ the shared token/design-system layer components draw from.
86
+
87
+ **Component workshop (Storybook et al.) — when the project is large enough.**
88
+ For a project with a real, growing shared-component library, isolating and
89
+ documenting each reusable component in a component workshop (Storybook or the
90
+ ecosystem equivalent) pays for itself — it makes components discoverable,
91
+ reviewable in isolation, and reused instead of re-invented. It is **not** worth
92
+ the setup for a small surface with a handful of one-off components. The
93
+ framework-specific setup is a carve-out, not a generic mandate — React /
94
+ Storybook specifics: [`react-shadcn-ui`](../skills/react-shadcn-ui/SKILL.md)
95
+ § Component workshop.
96
+
97
+ Framework carve-outs (never restated here): React →
98
+ [`react-shadcn-ui`](../skills/react-shadcn-ui/SKILL.md); Next.js
99
+ server/client component boundary →
100
+ [`nextjs-patterns`](../skills/nextjs-patterns/SKILL.md); Laravel FE →
101
+ [`blade-ui`](../skills/blade-ui/SKILL.md) /
102
+ [`livewire`](../skills/livewire/SKILL.md) /
103
+ [`flux`](../skills/flux/SKILL.md); styling →
104
+ [`tailwind-engineer`](../skills/tailwind-engineer/SKILL.md).
105
+
106
+ ## Backend — object-oriented where it reduces complexity
107
+
108
+ The structural half — thin handlers, business logic in services / use-cases,
109
+ behavior-rich domain models, validation at the boundary — is owned by
110
+ [`architecture`](../rules/architecture.md) and holds across paradigms. In
111
+ an **object-oriented / class-based** service layer, layer the OO principles below
112
+ on top of it, each applied only where it earns its place. In a **functional /
113
+ pipeline** codebase, apply that paradigm's equivalent (pure functions +
114
+ composition instead of behavior-rich objects; a dispatch map / pattern-match
115
+ instead of a Strategy class) — the goal (encapsulate change, one responsibility,
116
+ compose don't duplicate) is paradigm-independent; only its *shape* is OO here:
117
+
118
+ - **Encapsulation** — objects own their data + the behavior over it; no anemic
119
+ bags mutated from the outside.
120
+ - **Single responsibility** — one class, one reason to change; no god services.
121
+ - **Composition over inheritance** — inject collaborators; reach for a base
122
+ class only for genuine is-a substitutability, not code sharing.
123
+ - **Behavior-rich domain objects** — push rules into the model, keep services
124
+ orchestration-thin.
125
+ - **Patterns where they earn their place** — a Strategy when a branch on a
126
+ discriminator will grow (`if-else` chain → polymorphism); a Factory when
127
+ construction is non-trivial; DI on an abstraction when there is a *real*
128
+ second implementation. Not before.
129
+
130
+ Language / framework carve-outs (never restated here): PHP →
131
+ [`php-coding-patterns`](php/php-coding-patterns.md) +
132
+ [`patterns.md`](php/patterns.md) (+ `php/patterns/strategy.md`,
133
+ `php/patterns/dependency-injection.md`, `php/patterns/factory.md`,
134
+ `php/patterns/service-layer.md`)
135
+ + skills [`php-coder`](../skills/php-coder/SKILL.md) /
136
+ [`php-service`](../skills/php-service/SKILL.md); Laravel →
137
+ [`laravel`](../skills/laravel/SKILL.md); Symfony →
138
+ [`symfony-workflow`](../skills/symfony-workflow/SKILL.md); Next.js / TS →
139
+ [`nextjs-patterns`](../skills/nextjs-patterns/SKILL.md); cross-language
140
+ clean-code baseline → [`code-clarity`](code-clarity.md).
141
+
142
+ ## Enums over scattered literals
143
+
144
+ A field with two or more non-boolean states is an enum, not a bare string /
145
+ magic number — the small OO move that keeps a codebase greppable and safe to
146
+ change. Full rule + the defer-and-ask flow for pre-existing literals:
147
+ [`prefer-enums-over-literals`](../rules/prefer-enums-over-literals.md).
148
+
149
+ ## How this is reviewed
150
+
151
+ "Reuse existing components + object-oriented shape (where it reduces
152
+ complexity)" is a check on the code-quality review lens
153
+ ([`judge-code-quality`](../skills/judge-code-quality/SKILL.md)), so it
154
+ reaches `/review-changes`, `/judge`, the subagent judge modes, and team-mode's
155
+ fallback review frame. It fires **only where the duplication or the growing
156
+ branch is already present in the diff** — never "this could grow later" — and
157
+ in the **codebase's own paradigm** (it will not tell a functional service to
158
+ grow a class). It stays a human-judgment call that defers to the codebase's own
159
+ conventions — never a generic SOLID dogma imposed over a project that has chosen
160
+ differently.
161
+
162
+ ## Council review (2026-07-15)
163
+
164
+ Deep debate, 3 rounds, cross-vendor (`anthropic/claude-sonnet-4-5` +
165
+ `openai/gpt-4o`), $0.16. Split verdict; the load-bearing (anthropic) critique —
166
+ that an "OOP-supreme default" over-indexes on OOP for a multi-paradigm consumer
167
+ base and can conflict with `minimal-safe-diff` — was applied, bounded by this
168
+ standard's stated purpose (OOP *is* a deliberate high priority for the operator):
169
+
170
+ - **Paradigm-appropriate framing** — OOP is the high-priority default *within an
171
+ OO / class-based codebase*; detect and defer to a functional / pipeline /
172
+ actor paradigm; never impose classes on functional code (§ Paradigm-appropriate).
173
+ - **Explicit precedence** — `minimal-safe-diff` / YAGNI win on conflict; the
174
+ review lens flags only *already-present* duplication / complexity, never
175
+ preemptive (§ caveat, § How this is reviewed).
176
+
177
+ Divergence held: the frontend section stays (an intentional FE / backend
178
+ entry-point + carve-out index, per the operator's explicit "split by FE /
179
+ backend" ask) — against the anthropic "delete as redundant"; it is a cohesive
180
+ index of the existing FE surfaces, not a claim of novel guidance. The trace is
181
+ the 2026-07-15 session above, not a path: council output is gitignored and
182
+ auto-pruned, and this guideline is a stable artifact that must not carry a link
183
+ which rots (`no-roadmap-references`).
184
+
185
+ ## See also
186
+
187
+ - [`architecture`](../rules/architecture.md) — the structural home this layers onto.
188
+ - [`code-clarity`](code-clarity.md) — the cross-language clean-code baseline.
189
+ - [`minimal-safe-diff`](../rules/minimal-safe-diff.md) · [`senior-engineering-discipline`](../rules/senior-engineering-discipline.md) — the restraint anchors this standard is bounded by.