@adia-ai/adia-ui-forge 0.1.3 → 0.8.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 (259) hide show
  1. package/.claude-plugin/plugin.json +3 -6
  2. package/CHANGELOG.md +27 -34
  3. package/README.md +35 -40
  4. package/agents/a2ui-engineer.md +22 -53
  5. package/agents/component-author.md +29 -0
  6. package/agents/framework-verifier.md +26 -0
  7. package/agents/release-engineer.md +21 -81
  8. package/agents/routing-corpus.json +293 -64
  9. package/bin/demo-postwrite-pattern-gate +94 -0
  10. package/bin/forge-lint +17 -2
  11. package/bin/sidecar-prewrite-guard +104 -0
  12. package/commands/deploy.md +9 -0
  13. package/commands/dogfood.md +10 -0
  14. package/commands/gen-review.md +9 -0
  15. package/commands/release.md +10 -0
  16. package/hooks/hooks.json +15 -0
  17. package/package.json +3 -6
  18. package/references/contracts/a2ui-mcp-surface.md +35 -0
  19. package/references/contracts/migration-guide-format.md +34 -0
  20. package/references/shared/content-trust.md +19 -74
  21. package/skills/adia-a2ui/SKILL.md +99 -0
  22. package/skills/{adia-ui-a2ui → adia-a2ui}/evals/routing-corpus.json +10 -10
  23. package/skills/adia-a2ui/references/anti-patterns.md +27 -0
  24. package/skills/adia-a2ui/references/chunk-authoring.md +71 -0
  25. package/skills/adia-a2ui/references/corpus-discipline.md +68 -0
  26. package/skills/adia-a2ui/references/eval-diagnostics.md +86 -0
  27. package/skills/adia-a2ui/references/format-extension-decisions.md +66 -0
  28. package/skills/adia-a2ui/references/leverage-rules.md +52 -0
  29. package/skills/adia-a2ui/references/mcp-pipeline-ops.md +83 -0
  30. package/skills/adia-a2ui/references/mcp-tool-reference.md +59 -0
  31. package/skills/adia-a2ui/references/pipeline-overview.md +115 -0
  32. package/skills/adia-a2ui/references/semantic-fail-lifting.md +74 -0
  33. package/skills/adia-a2ui/references/strategy-engines.md +109 -0
  34. package/skills/adia-a2ui/references/zettel-calibration.md +104 -0
  35. package/skills/adia-author/SKILL.md +112 -0
  36. package/skills/adia-author/evals/routing-corpus.json +222 -0
  37. package/skills/{adia-ui-authoring → adia-author}/references/anti-patterns.md +33 -4
  38. package/skills/{adia-ui-authoring → adia-author}/references/authoring-cycle.md +9 -11
  39. package/skills/adia-author/references/canonical-pattern-index.md +243 -0
  40. package/skills/{adia-ui-authoring → adia-author}/references/code-style.md +19 -21
  41. package/skills/adia-author/references/common-gotchas.md +129 -0
  42. package/skills/adia-author/references/composite-demo-protocol.md +271 -0
  43. package/skills/{adia-ui-authoring → adia-author}/references/css-patterns.md +19 -6
  44. package/skills/{adia-ui-authoring → adia-author}/references/lifecycle-patterns.md +1 -0
  45. package/skills/{adia-ui-authoring → adia-author}/references/llm-bridge.md +3 -5
  46. package/skills/{adia-ui-authoring → adia-author}/references/module-promotion.md +20 -38
  47. package/skills/{adia-ui-authoring → adia-author}/references/primitive-audit.md +2 -4
  48. package/skills/{adia-ui-authoring → adia-author}/references/shell-patterns.md +12 -18
  49. package/skills/{adia-ui-authoring → adia-author}/references/token-contract.md +5 -7
  50. package/skills/{adia-ui-authoring → adia-author}/references/worked-example.md +3 -3
  51. package/skills/{adia-ui-authoring → adia-author}/references/yaml-contract.md +3 -3
  52. package/skills/{adia-ui-authoring → adia-author}/scripts/build-canonical-pattern-index.mjs +3 -3
  53. package/skills/adia-deploy/SKILL.md +128 -0
  54. package/skills/{adia-ui-ops → adia-deploy}/references/deploy-playbooks.md +47 -30
  55. package/skills/adia-dogfood/SKILL.md +124 -0
  56. package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
  57. package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
  58. package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
  59. package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
  60. package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
  61. package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
  62. package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
  63. package/skills/adia-gen-review/SKILL.md +127 -0
  64. package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
  65. package/skills/adia-gen-review/references/loop-protocol.md +216 -0
  66. package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
  67. package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
  68. package/skills/adia-gen-review/references/rubric-score.md +214 -0
  69. package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
  70. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
  71. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
  72. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
  73. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
  74. package/skills/adia-llm-internals/SKILL.md +77 -0
  75. package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
  76. package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
  77. package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
  78. package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
  79. package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
  80. package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
  81. package/skills/adia-release/SKILL.md +72 -0
  82. package/skills/adia-release/references/changelog-discipline.md +119 -0
  83. package/skills/adia-release/references/cut-procedure.md +247 -0
  84. package/skills/adia-release/references/gates-catalog.md +222 -0
  85. package/skills/adia-release/references/independent-package-release.md +52 -0
  86. package/skills/adia-release/references/migration-guide-authoring.md +86 -0
  87. package/skills/adia-release/references/notes-authoring.md +90 -0
  88. package/skills/adia-release/references/recovery-paths.md +106 -0
  89. package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +27 -2
  90. package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +4 -1
  91. package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +1 -1
  92. package/skills/{adia-ui-release → adia-release}/scripts/package-paths.mjs +6 -0
  93. package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +1 -1
  94. package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +13 -21
  95. package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +5 -1
  96. package/skills/adia-site-docs/SKILL.md +68 -0
  97. package/skills/adia-site-docs/evals/audit-report.md +30 -0
  98. package/skills/adia-site-docs/evals/routing-corpus.json +176 -0
  99. package/skills/adia-site-docs/intent.md +72 -0
  100. package/agents/README.md +0 -209
  101. package/agents/author.md +0 -56
  102. package/agents/repo-steward.md +0 -56
  103. package/agents/spec-architect.md +0 -53
  104. package/agents/tech-lead.md +0 -57
  105. package/agents/verifier.md +0 -55
  106. package/bin/lib/audit-axes.mjs +0 -555
  107. package/bin/lib/dry-run-irreversible.mjs +0 -236
  108. package/bin/lib/run-skill-evals.mjs +0 -487
  109. package/bin/lib/teach-router.mjs +0 -250
  110. package/commands/adia-forge-a2ui.md +0 -10
  111. package/commands/adia-forge-author.md +0 -10
  112. package/commands/adia-forge-dogfood.md +0 -8
  113. package/commands/adia-forge-llm.md +0 -8
  114. package/commands/adia-forge-orient.md +0 -10
  115. package/commands/adia-forge-release.md +0 -8
  116. package/commands/adia-forge-review.md +0 -10
  117. package/references/shared/pev-rationale.md +0 -64
  118. package/references/shared/skill-conventions.md +0 -133
  119. package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
  120. package/skills/adia-ui-a2ui/SKILL.md +0 -243
  121. package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
  122. package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
  123. package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
  124. package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
  125. package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
  126. package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
  127. package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
  128. package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
  129. package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
  130. package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
  131. package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
  132. package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
  133. package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
  134. package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
  135. package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
  136. package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
  137. package/skills/adia-ui-a2ui/skill.json +0 -38
  138. package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
  139. package/skills/adia-ui-authoring/SKILL.md +0 -256
  140. package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
  141. package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
  142. package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
  143. package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
  144. package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
  145. package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
  146. package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
  147. package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
  148. package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
  149. package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
  150. package/skills/adia-ui-authoring/skill.json +0 -45
  151. package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
  152. package/skills/adia-ui-dogfood/README.md +0 -62
  153. package/skills/adia-ui-dogfood/SKILL.md +0 -866
  154. package/skills/adia-ui-dogfood/skill.json +0 -40
  155. package/skills/adia-ui-forge/SKILL.md +0 -88
  156. package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
  157. package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
  158. package/skills/adia-ui-gen-review/SKILL.md +0 -266
  159. package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
  160. package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
  161. package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
  162. package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
  163. package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
  164. package/skills/adia-ui-gen-review/skill.json +0 -23
  165. package/skills/adia-ui-llm/CHANGELOG.md +0 -25
  166. package/skills/adia-ui-llm/SKILL.md +0 -165
  167. package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
  168. package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
  169. package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
  170. package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
  171. package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
  172. package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
  173. package/skills/adia-ui-llm/skill.json +0 -33
  174. package/skills/adia-ui-ops/CHANGELOG.md +0 -291
  175. package/skills/adia-ui-ops/SKILL.md +0 -401
  176. package/skills/adia-ui-ops/references/INDEX.md +0 -158
  177. package/skills/adia-ui-ops/references/audit-cadence.md +0 -263
  178. package/skills/adia-ui-ops/references/audit-patterns/archive-link-sweep.md +0 -96
  179. package/skills/adia-ui-ops/references/audit-patterns/audit-history-ledger.md +0 -162
  180. package/skills/adia-ui-ops/references/audit-patterns/browser-bundle-node-imports.md +0 -154
  181. package/skills/adia-ui-ops/references/audit-patterns/changelog-unreleased-bloat.md +0 -75
  182. package/skills/adia-ui-ops/references/audit-patterns/coverage-gaps.md +0 -187
  183. package/skills/adia-ui-ops/references/audit-patterns/entry-file-coverage.md +0 -122
  184. package/skills/adia-ui-ops/references/audit-patterns/format-hygiene.md +0 -217
  185. package/skills/adia-ui-ops/references/audit-patterns/lockstep-versioning.md +0 -113
  186. package/skills/adia-ui-ops/references/audit-patterns/memory-fragmentation.md +0 -180
  187. package/skills/adia-ui-ops/references/audit-patterns/orphan-detection.md +0 -202
  188. package/skills/adia-ui-ops/references/audit-patterns/pointer-validation.md +0 -180
  189. package/skills/adia-ui-ops/references/audit-patterns/redundancy-detection.md +0 -210
  190. package/skills/adia-ui-ops/references/audit-patterns/spec-dating-sweep.md +0 -91
  191. package/skills/adia-ui-ops/references/audit-patterns/stale-content.md +0 -182
  192. package/skills/adia-ui-ops/references/audit-patterns/staleness-tooling.md +0 -156
  193. package/skills/adia-ui-ops/references/audit-patterns/token-waste-detection.md +0 -196
  194. package/skills/adia-ui-ops/references/doc-types/adr-pattern.md +0 -210
  195. package/skills/adia-ui-ops/references/doc-types/architecture-md.md +0 -190
  196. package/skills/adia-ui-ops/references/doc-types/changelog.md +0 -183
  197. package/skills/adia-ui-ops/references/doc-types/decisions-log.md +0 -146
  198. package/skills/adia-ui-ops/references/doc-types/plan-roadmap.md +0 -182
  199. package/skills/adia-ui-ops/references/doc-types/postmortem-pattern.md +0 -206
  200. package/skills/adia-ui-ops/references/genres/prose-and-writing.md +0 -149
  201. package/skills/adia-ui-ops/references/guidance/context-budget.md +0 -137
  202. package/skills/adia-ui-ops/references/guidance/llm-doc-writing.md +0 -116
  203. package/skills/adia-ui-ops/references/guidance/reliability-dial.md +0 -186
  204. package/skills/adia-ui-ops/references/recipes/adr-introduction.md +0 -211
  205. package/skills/adia-ui-ops/references/recipes/audit-existing-repo.md +0 -234
  206. package/skills/adia-ui-ops/references/recipes/cold-start-harvest.md +0 -263
  207. package/skills/adia-ui-ops/references/recipes/concurrent-learnings-merge.md +0 -158
  208. package/skills/adia-ui-ops/references/recipes/continuous-learning-loop.md +0 -169
  209. package/skills/adia-ui-ops/references/recipes/external-reference-verification.md +0 -158
  210. package/skills/adia-ui-ops/references/recipes/findings-index-readout.md +0 -126
  211. package/skills/adia-ui-ops/references/recipes/greenfield-setup.md +0 -252
  212. package/skills/adia-ui-ops/references/recipes/harvest-repo-brain.md +0 -169
  213. package/skills/adia-ui-ops/references/recipes/import-repo-brain-harvest.md +0 -153
  214. package/skills/adia-ui-ops/references/recipes/memory-organization.md +0 -182
  215. package/skills/adia-ui-ops/references/recipes/recommend-then-validate.md +0 -199
  216. package/skills/adia-ui-ops/references/recipes/self-healing-hooks.md +0 -366
  217. package/skills/adia-ui-ops/references/recipes/skill-stewardship-loop.md +0 -113
  218. package/skills/adia-ui-ops/references/standards/agents-md-spec.md +0 -138
  219. package/skills/adia-ui-ops/references/standards/claude-md-convention.md +0 -123
  220. package/skills/adia-ui-ops/references/standards/cross-tool-matrix.md +0 -85
  221. package/skills/adia-ui-ops/references/standards/readme-conventions.md +0 -232
  222. package/skills/adia-ui-ops/references/teach-protocol.md +0 -215
  223. package/skills/adia-ui-ops/scripts/audit-ops-roster.mjs +0 -104
  224. package/skills/adia-ui-ops/skill.json +0 -65
  225. package/skills/adia-ui-release/CHANGELOG.md +0 -66
  226. package/skills/adia-ui-release/SKILL.md +0 -323
  227. package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
  228. package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
  229. package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
  230. package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
  231. package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
  232. package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
  233. package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
  234. package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
  235. package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
  236. package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
  237. package/skills/adia-ui-release/evals/evals.json +0 -164
  238. package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
  239. package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
  240. package/skills/adia-ui-release/references/exe-deploy.md +0 -149
  241. package/skills/adia-ui-release/references/gates-catalog.md +0 -778
  242. package/skills/adia-ui-release/references/independent-package-release.md +0 -129
  243. package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
  244. package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
  245. package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
  246. package/skills/adia-ui-release/references/notes-authoring.md +0 -212
  247. package/skills/adia-ui-release/references/recovery-paths.md +0 -262
  248. package/skills/adia-ui-release/references/rollup-notes.md +0 -208
  249. package/skills/adia-ui-release/references/teach-protocol.md +0 -468
  250. package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
  251. package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -200
  252. package/skills/adia-ui-release/skill.json +0 -77
  253. package/skills/dogfood-sweep/CHANGELOG.md +0 -37
  254. package/skills/dogfood-sweep/README.md +0 -105
  255. package/skills/dogfood-sweep/SKILL.md +0 -1000
  256. package/skills/dogfood-sweep/analyze.mjs +0 -600
  257. package/skills/dogfood-sweep/skill.json +0 -31
  258. /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
  259. /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
@@ -1,146 +0,0 @@
1
- ---
2
- date: 2026-04-27
3
- coverage: canonical
4
- peers:
5
- - adr-pattern.md
6
- - architecture-md.md
7
- - plan-roadmap.md
8
- primary_sources:
9
- - https://learn.microsoft.com/en-us/azure/well-architected/architect-role/architecture-decision-record — Microsoft Azure Well-Architected Framework on ADR / decision log
10
- - https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/welcome.html — AWS Prescriptive Guidance, "ADRs"
11
- - https://adr.github.io — ADR organization (canonical hub)
12
- - https://github.com/joelparkerhenderson/architecture-decision-record — Joel Parker Henderson catalog (most-cited examples library)
13
- - https://github.com/npryce/adr-tools — adr-tools, including `adr generate toc`
14
- - https://github.com/adr/adr-log — adr-log Markdown index generator
15
- status: research-verified
16
- ---
17
-
18
- # Decision log — what it actually is
19
-
20
- > **The canonical "decision log" is the index of all ADRs in `.brain/adrs/`. It is *not* a separate folder.** This is the load-bearing nuance most teams get wrong.
21
-
22
- ## The canonical meaning (cite-able)
23
-
24
- Microsoft Azure Well-Architected Framework, AWS Prescriptive Guidance, and adr.github.io all converge on the same definition:
25
-
26
- > "An Architectural Decision Record (ADR) captures a single AD and its rationale; **the collection of ADRs constitutes the decision log.**"
27
- > — Microsoft Azure WAF, *Architecture decision record*
28
-
29
- > "A collection of ADRs creates a decision log that captures the architectural decisions for a project."
30
- > — AWS Prescriptive Guidance, *Architectural decision records*
31
-
32
- So when a repo has `.brain/adrs/0001-…md` … `0042-…md` and a `.brain/adrs/README.md` listing them, **that is the decision log**. There is no second folder needed.
33
-
34
- This skill delivers **Promise 5 (continuously-learning)** by ensuring the decision log is *navigable* — an ADR folder without an index is a scrapyard.
35
-
36
- ## The two shapes the audit detects
37
-
38
- The repo-fixer audit must accept both shapes and not flag either as wrong. Just note which one is in play.
39
-
40
- | Shape | What's on disk | When appropriate |
41
- |---|---|---|
42
- | **Canonical (single-folder)** | `.brain/adrs/` containing all decisions; `.brain/adrs/README.md` is the log index | Default. Fits 90% of teams. |
43
- | **Split (two-folder)** | `.brain/adrs/` for big architecture decisions; `.brain/decisions/` for lighter day-to-day picks (tooling swaps, library choices, formatting conventions) | Larger orgs where ADR review is heavyweight and would gate routine choices |
44
-
45
- The split is **a team convention, not industry standard**. Some teams find it useful: ADRs gate architecture, `.brain/decisions/` lets engineers move on a tooling swap without scheduling an architecture review. Other teams find it confusing — two homes invites drift over which decision goes where.
46
-
47
- The audit's recommendation order:
48
-
49
- 1. If only `.brain/adrs/` exists → recommend keeping it canonical; ensure `README.md` index is present and current.
50
- 2. If only `.brain/decisions/` exists → recommend renaming to `.brain/adrs/` for tool/community alignment (ADR tooling expects `.brain/adrs/`).
51
- 3. If both exist → recommend documenting the split rule in `AGENTS.md`'s "Where to find things" section so the agent knows which folder to write to.
52
-
53
- ## Generating the index
54
-
55
- Three options, ordered by maintenance burden (lowest first):
56
-
57
- ### Option 1 — `adr-log` (auto-generate)
58
-
59
- [`adr-log`](https://github.com/adr/adr-log) reads a folder of ADRs and writes a Markdown table of contents into a delimited region of `README.md`:
60
-
61
- ```bash
62
- npm i -g adr-log
63
- adr-log -d .brain/adrs -i .brain/adrs/README.md
64
- ```
65
-
66
- Wrap the index in begin/end markers so subsequent runs only update that region:
67
-
68
- ```markdown
69
- # Architecture Decision Records
70
-
71
- <!-- adrlog -->
72
- - [ADR-0001](0001-record-architecture-decisions.md) — Record architecture decisions
73
- - [ADR-0002](0002-use-postgres-not-mysql.md) — Use Postgres, not MySQL
74
- <!-- adrlogstop -->
75
- ```
76
-
77
- Add to a pre-commit hook or CI workflow so the index never drifts from filenames. See `../recipes/self-healing-hooks.md`.
78
-
79
- ### Option 2 — `adr-tools generate toc`
80
-
81
- [`adr-tools`](https://github.com/npryce/adr-tools) ships a similar generator. Lightly maintained as of April 2026 — works, but no recent releases.
82
-
83
- ```bash
84
- adr generate toc > .brain/adrs/README.md
85
- ```
86
-
87
- ### Option 3 — Hand-written index
88
-
89
- For small repos (<20 ADRs) the index is one line per ADR. Maintain by hand:
90
-
91
- ```markdown
92
- # Architecture Decision Records
93
-
94
- | # | Title | Status | Date |
95
- |---|---|---|---|
96
- | [0001](0001-record-architecture-decisions.md) | Record architecture decisions | Accepted | 2024-01-12 |
97
- | [0002](0002-use-postgres-not-mysql.md) | Use Postgres, not MySQL | Accepted | 2024-03-04 |
98
- | [0003](0003-rest-not-graphql.md) | REST, not GraphQL | Superseded by 0017 | 2024-03-19 |
99
- | [0017](0017-graphql-for-public-api.md) | GraphQL for public API | Accepted | 2025-11-08 |
100
- ```
101
-
102
- The hand-written form **adds the Status column**, which the auto-generated forms typically omit. Worth it for a navigable log.
103
-
104
- ## How AGENTS.md links the decision log
105
-
106
- In the `Where to find things` section:
107
-
108
- ```markdown
109
- - **Architecture Decision Records:** `.brain/adrs/` — see `.brain/adrs/README.md` for the indexed log; newest-first
110
- - **Lightweight decisions** (if your team uses the split): `.brain/decisions/`
111
- ```
112
-
113
- In the `Memory primitives` section:
114
-
115
- ```markdown
116
- - **Before making architectural decisions**, consult the decision log at `.brain/adrs/README.md`. If your proposed change conflicts with an `Accepted` ADR, write a new ADR superseding it; don't silently override.
117
- ```
118
-
119
- ## Audit checks for the decision log
120
-
121
- 1. **`.brain/adrs/` exists** (or `.brain/architecture/decisions/` — accepted alias).
122
- 2. **An index file exists** at `.brain/adrs/README.md` listing all ADRs.
123
- 3. **The index is current** — every `NNNN-*.md` filename in the folder appears in the index. No orphans, no broken links.
124
- 4. **The index sort order is meaningful** (chronological or by status group, not random).
125
- 5. **AGENTS.md points at the index file**, not just the folder. Folder-only pointers force the agent to `ls` and guess.
126
- 6. **If `.brain/decisions/` also exists**, AGENTS.md documents the split rule.
127
-
128
- The "index is current" check is the high-value one — it catches drift after a teammate adds an ADR but forgets to update the index.
129
-
130
- ## Common anti-patterns
131
-
132
- - **No index** — folder of 40 ADRs, no `README.md`. The decision log exists but isn't navigable.
133
- - **Stale index** — index lists 18 ADRs; folder has 26. Catch with the audit + auto-generation.
134
- - **Two parallel logs that drift** — `.brain/adrs/` and `.brain/decisions/` both have ADRs about Postgres. Pick a rule and document it.
135
- - **Decision log as a single Markdown file** — `.brain/decisions.md` with all decisions in one document. Editing one decision rewrites file history; no per-decision audit trail. Strongly recommended against.
136
- - **Folder named `.brain/architecture-decisions/`** — works, but `.brain/adrs/` is what tooling expects. Prefer `.brain/adrs/`.
137
- - **Numbering reset on folder split** — if you split into `.brain/adrs/` and `.brain/decisions/`, do NOT restart numbering at 0001 in the second folder. Keep the global sequence so cross-references work.
138
-
139
- ## Cross-references
140
-
141
- - ADR pattern (canonical): `adr-pattern.md`
142
- - Architecture overview (current state, not decisions): `architecture-md.md`
143
- - Plan / roadmap (forward-looking, not decisions): `plan-roadmap.md`
144
- - Self-healing index generation: `../recipes/self-healing-hooks.md`
145
- - Memory organization: `../recipes/memory-organization.md`
146
- - AGENTS.md memory primitives section: `../standards/agents-md-spec.md`
@@ -1,182 +0,0 @@
1
- ---
2
- date: 2026-04-27
3
- coverage: canonical
4
- peers:
5
- - decisions-log.md
6
- - changelog.md
7
- - architecture-md.md
8
- primary_sources:
9
- - https://keepachangelog.com/en/1.1.0/ — Keep a Changelog 1.1.0 (date-stamp convention)
10
- - https://linear.app/docs/markdown-export — Linear Markdown export (issues / projects)
11
- - https://help.shortcut.com/hc/en-us/articles/360057451511 — Shortcut Markdown / API export
12
- - https://docs.basecamp.com/article/29-export-your-account — Basecamp project export
13
- - https://docs.github.com/en/issues/planning-and-tracking-with-projects — GitHub Projects (issue-tracker plan source)
14
- - https://www.atlassian.com/agile/project-management/program-roadmaps — Atlassian on roadmaps vs plans
15
- status: research-verified
16
- ---
17
-
18
- # PLAN.md and ROADMAP.md — active work vs forward-looking
19
-
20
- > **PLAN.md is *now* — what's in flight this week or sprint. ROADMAP.md is *next* — what's coming this quarter or year.** They are two different documents with different update cadences and different audiences. Conflating them is the most common failure mode.
21
-
22
- This pattern delivers **Promise 1 (less-wasteful)** and **Promise 3 (less-prone-to-staleness)**: when the boundary between active and forward-looking is clear, neither doc rots into a TODO graveyard.
23
-
24
- ## The split
25
-
26
- | | `.brain/PLAN.md` | `.brain/ROADMAP.md` |
27
- |---|---|---|
28
- | **Horizon** | This week / sprint / current iteration | This quarter / half / year |
29
- | **Granularity** | Specific tasks, owners, due dates | Themes, milestones, target months |
30
- | **Cadence** | Updated weekly or per-sprint | Updated quarterly |
31
- | **Audience** | The team doing the work; LLM agents picking up tasks | Stakeholders, leadership, contributors deciding whether to invest |
32
- | **Status verbs** | "in progress", "blocked", "in review", "done" | "planned", "in progress", "shipped", "deferred" |
33
- | **Source of truth** | Often a mirror/export of the issue tracker | Hand-maintained by leads/PMs |
34
-
35
- If a team has only one of the two, **`PLAN.md` is the higher-value one for LLM agents** — the agent needs to know what to pick up, not what's coming in Q3. Skip `ROADMAP.md` until there is one to publish.
36
-
37
- ## PLAN.md — shape and conventions
38
-
39
- ### Minimal template
40
-
41
- ```markdown
42
- ---
43
- updated: 2026-04-27
44
- horizon: 2026-W17 (Apr 21 – Apr 27)
45
- ---
46
-
47
- # Plan — Week of 2026-04-21
48
-
49
- ## In progress
50
-
51
- - **[#412] Migrate auth to Auth.js v5** — @alice — due 2026-04-28
52
- - **[#418] Replace Redis with Postgres LISTEN/NOTIFY** — @bob — due 2026-05-02
53
- - Blocked on ADR-0042 review
54
-
55
- ## Up next (this week)
56
-
57
- - [#421] Cron worker → BullMQ — unassigned
58
- - [#423] Strip dead `lib/legacy/` — @carol
59
-
60
- ## Done this week
61
-
62
- - [x] [#405] Bump TypeScript 5.7 → 5.8 (@alice, merged 2026-04-23)
63
- - [x] [#408] Drop Node 20 from CI matrix (@bob, merged 2026-04-25)
64
-
65
- ## Archive
66
-
67
- See `.brain/archive/plan-2026-W16.md`.
68
- ```
69
-
70
- ### Conventions
71
-
72
- - **Date the doc**: Keep-a-Changelog-style `updated: YYYY-MM-DD` in YAML frontmatter, plus an English `Week of …` line in the H1. Without a date stamp the agent can't tell whether the plan is current. ([keepachangelog.com](https://keepachangelog.com/en/1.1.0/) date-stamp convention.)
73
- - **Issue numbers**: link to the tracker so the plan is a *view*, not a parallel source of truth.
74
- - **Owners**: an unowned item drifts. If no one will own it this week, push it to the roadmap.
75
- - **Due dates**: explicit ISO dates beat "next week" — relative dates rot.
76
- - **Archive completed work weekly**: copy the "Done" section to `.brain/archive/plan-YYYY-Www.md` and clear it from `PLAN.md`. The archive is a free changelog.
77
-
78
- ### The TODO-graveyard anti-pattern
79
-
80
- The most common failure: items accumulate, nothing leaves. After a year `PLAN.md` is 800 lines, half of it is "Up next" from 8 months ago, the agent doesn't know which items are real.
81
-
82
- Mitigations:
83
-
84
- 1. **Time-box "Up next"** to the current iteration. Items that don't make it move to `ROADMAP.md` or get closed.
85
- 2. **Archive on a fixed cadence** (every Friday, end-of-sprint).
86
- 3. **Run a staleness audit**: any line item with a due date >30 days in the past, or unedited for >60 days, is flagged. See `../audit-patterns/staleness-tooling.md`.
87
-
88
- ## ROADMAP.md — shape and conventions
89
-
90
- ### Minimal template
91
-
92
- ```markdown
93
- ---
94
- updated: 2026-04-15
95
- horizon: 2026-Q2 / Q3
96
- ---
97
-
98
- # Roadmap
99
-
100
- ## Now (Q2 2026)
101
-
102
- - **Multi-tenant scoping** — required for enterprise GA. Owner: @alice. Target: 2026-05.
103
- - **Webhook delivery v2** — exponential backoff, replay tooling. Owner: @bob. Target: 2026-06.
104
-
105
- ## Next (Q3 2026)
106
-
107
- - **Self-serve billing portal** — Stripe Customer Portal integration.
108
- - **OpenTelemetry instrumentation** — replace ad-hoc logging.
109
-
110
- ## Later (2026-H2 and beyond)
111
-
112
- - Federated SSO
113
- - Audit-log export to customer S3
114
-
115
- ## Recently shipped
116
-
117
- - 2026-Q1 — SAML SSO (Enterprise tier)
118
- - 2025-Q4 — Async webhook delivery v1
119
- ```
120
-
121
- ### Conventions
122
-
123
- - **Now / Next / Later** is the standard public-roadmap shape ([ProductPlan](https://www.productplan.com/learn/now-next-later-roadmap/) popularized this; widely adopted). Keeps things vague enough to ship.
124
- - **No daily-task granularity.** If an item belongs in a sprint, it belongs in `PLAN.md`.
125
- - **Recently shipped** doubles as a release-notes pointer — link to `CHANGELOG.md`.
126
- - **Quarterly review** ritual: at end of quarter, move "Now" → "Recently shipped", promote "Next" → "Now", review "Later".
127
-
128
- ## Issue-tracker exports — when the plan IS the export
129
-
130
- Many teams treat the issue tracker as truth and `PLAN.md` as a generated view. This works well — and the agent gets a Markdown view it can read without API access.
131
-
132
- | Tool | Export mechanism | Notes |
133
- |---|---|---|
134
- | **Linear** | [Markdown export](https://linear.app/docs/markdown-export) per issue or project; API for bulk | Project view exports clean Markdown with status grouping |
135
- | **Shortcut (formerly Clubhouse)** | [API + Markdown rendering in CLI](https://help.shortcut.com/hc/en-us/articles/360057451511) | Iteration views map to weekly plans |
136
- | **GitHub Projects** | [GraphQL API](https://docs.github.com/en/graphql/reference/objects#projectv2); community scripts dump views to Markdown | Native to GitHub — no separate auth |
137
- | **Jira** | REST API; `jira-cli`, `gojira` | Heavier setup; usually only worth it for Jira-mandated orgs |
138
- | **Basecamp** | [Account export](https://docs.basecamp.com/article/29-export-your-account) | Coarser; better for archive than weekly plan |
139
-
140
- The pattern: a CI job (or pre-commit hook) regenerates `.brain/PLAN.md` from the tracker on a cron schedule, commits the diff. Now the agent reads a current plan without an API token.
141
-
142
- ## How AGENTS.md links them
143
-
144
- In the `Where to find things` section:
145
-
146
- ```markdown
147
- - **Active plan:** `.brain/PLAN.md` — what's in flight this week
148
- - **Roadmap:** `.brain/ROADMAP.md` — quarterly horizon
149
- ```
150
-
151
- In the `Memory primitives` section:
152
-
153
- ```markdown
154
- - **When picking up work**, start at `.brain/PLAN.md`. Items there are scoped for the current iteration.
155
- - **For longer-horizon questions** ("are we going to support X?"), check `.brain/ROADMAP.md` before proposing new work.
156
- ```
157
-
158
- ## Audit checks
159
-
160
- 1. **Date stamps present** — `updated:` frontmatter or visible date in H1. A `PLAN.md` without a date is unverifiable.
161
- 2. **PLAN.md updated within the last 14 days** (sprint cadence). Older = staleness flag.
162
- 3. **ROADMAP.md updated within the last 90 days** (quarterly cadence). Older = staleness flag.
163
- 4. **No items in PLAN.md with due dates >30 days past** (TODO graveyard).
164
- 5. **`.brain/PLAN.md` and `.brain/ROADMAP.md` are referenced from AGENTS.md.**
165
- 6. **Archive folder exists** if the team is using weekly archival (`.brain/archive/plan-YYYY-Www.md`).
166
-
167
- ## Common anti-patterns
168
-
169
- - **One file called `TODO.md`** at repo root, mixing this-week and someday. Split it into PLAN.md + ROADMAP.md or kill it.
170
- - **No date on either doc** — agent can't tell if the plan is from last sprint or last year.
171
- - **PLAN.md as immortal backlog** — items added, never removed. Time-box and archive.
172
- - **ROADMAP.md with weekly-task granularity** — wrong horizon. Push detail to PLAN.md.
173
- - **PLAN.md and the issue tracker disagree** — pick one as truth (usually the tracker) and generate the other.
174
- - **Roadmap contains commitments without owners or target months** — it's a wishlist, not a roadmap.
175
-
176
- ## Cross-references
177
-
178
- - Decision log (decisions, not plans): `decisions-log.md`
179
- - Changelog (shipped, not planned): `changelog.md`
180
- - Self-healing PLAN.md regeneration: `../recipes/self-healing-hooks.md`
181
- - Staleness detection: `../audit-patterns/staleness-tooling.md`
182
- - AGENTS.md "Where to find things" section: `../standards/agents-md-spec.md`
@@ -1,206 +0,0 @@
1
- ---
2
- date: 2026-04-27
3
- coverage: extended
4
- peers:
5
- - adr-pattern.md
6
- - decisions-log.md
7
- primary_sources:
8
- - https://sre.google/workbook/postmortem-culture/ — Google SRE postmortem culture
9
- - https://sre.google/sre-book/example-postmortem/ — Google SRE example postmortem
10
- - https://www.atlassian.com/incident-management/postmortem/templates — Atlassian postmortem templates
11
- - https://github.com/dastergon/postmortem-templates — most-cited template catalog
12
- status: research-verified
13
- ---
14
-
15
- # Post-mortem pattern
16
-
17
- > **Storage convention.** This skill recommends `.brain/postmortems/` (most common) or `.brain/incidents/` (also common). Avoid `.brain/traces/` — "traces" risks being read as observability traces (OpenTelemetry / Jaeger), which is a different concept.
18
-
19
- ## What a post-mortem is
20
-
21
- A **dated write-up of an incident**: what happened, what the impact was, what caused it, what we did, what we learned. Filed after the incident is resolved; serves as **memory** so the same failure doesn't repeat.
22
-
23
- The load-bearing principle is **blameless**: post-mortems describe systems failures, not personal failures. People did what felt reasonable given the information they had. The post-mortem looks for systemic improvements — process, tooling, alerting, documentation — not someone to blame.
24
-
25
- Source: [Google SRE — Postmortem Culture: Learning from Failure](https://sre.google/workbook/postmortem-culture/).
26
-
27
- ## Two canonical templates
28
-
29
- ### Google SRE postmortem (the gold standard)
30
-
31
- Sections (per Google's [example postmortem](https://sre.google/sre-book/example-postmortem/)):
32
-
33
- - **Summary** — one paragraph
34
- - **Impact** — users affected, duration, severity
35
- - **Root causes** — the underlying *why* (often plural)
36
- - **Trigger** — the proximate event that fired the latent bug
37
- - **Resolution** — what stopped the bleeding
38
- - **Detection** — how we noticed (monitoring? user report? both?)
39
- - **Action items** — concrete follow-ups, with owners + due dates
40
- - **Lessons learned** — what went well / what went poorly / where we got lucky
41
- - **Timeline** — chronological log with timestamps
42
-
43
- Stored internally at Google as Google Docs, not Markdown — but the structure ports directly to Markdown.
44
-
45
- ### Atlassian postmortem template
46
-
47
- Sections (per [Atlassian](https://www.atlassian.com/incident-management/postmortem/templates)):
48
-
49
- - **Summary**
50
- - **Leadup** — what was happening before
51
- - **Fault** — the specific failure
52
- - **Impact**
53
- - **Detection**
54
- - **Response**
55
- - **Recovery**
56
- - **Five Whys** — recursive root-cause drill
57
- - **Action items**
58
-
59
- Atlassian's split between *Detection / Response / Recovery* maps cleanly to incident-management process steps; the skill recommends this structure for teams with formal IM tooling.
60
-
61
- ## Filename + storage
62
-
63
- Recommended:
64
-
65
- ```
66
- .brain/postmortems/
67
- ├── 2026-04-12-checkout-outage.md
68
- ├── 2026-03-08-payment-double-charge.md
69
- ├── 2026-01-22-search-degradation.md
70
- └── README.md # index, sorted newest-first
71
- ```
72
-
73
- Filename pattern: `YYYY-MM-DD-short-incident-name.md`. The date prefix sorts chronologically.
74
-
75
- `.brain/incidents/` is an accepted alias. `.brain/post-mortems/` (with hyphen) also works. Pick one and stick with it.
76
-
77
- ## File template (Google SRE flavor)
78
-
79
- ```markdown
80
- ---
81
- date: 2026-04-12
82
- status: resolved
83
- severity: SEV-2
84
- duration: 47 minutes
85
- ---
86
-
87
- # Checkout outage — 2026-04-12
88
-
89
- ## Summary
90
-
91
- For 47 minutes on April 12 starting at 14:23 UTC, the checkout endpoint
92
- returned 500s for ~30% of requests due to a database connection-pool
93
- exhaustion triggered by a bot scrape.
94
-
95
- ## Impact
96
-
97
- - ~12,000 affected users
98
- - ~$40K in dropped revenue
99
- - SEV-2 declared at 14:31 UTC
100
-
101
- ## Root causes
102
-
103
- 1. Connection pool sized for normal load only; no headroom.
104
- 2. Bot scrape was not detected by rate-limiter (User-Agent allow-listed
105
- in legacy config from 2024).
106
- 3. No alert on connection-pool saturation; alert fired only on response-
107
- latency p95.
108
-
109
- ## Trigger
110
-
111
- GoogleBot-impersonating scrape from AS12345, 14:21 UTC, 800 req/s.
112
-
113
- ## Resolution
114
-
115
- - Killed scrape via WAF rule (14:55 UTC).
116
- - Connection pool drained naturally over 90s.
117
-
118
- ## Detection
119
-
120
- User report at 14:27 UTC. Internal alert fired 14:29 UTC.
121
-
122
- ## Action items
123
-
124
- - [ ] (Alice, due 2026-04-19) Add connection-pool-saturation alert.
125
- - [ ] (Bob, due 2026-04-26) Review WAF allow-list; remove stale entries.
126
- - [ ] (Charlie, due 2026-05-03) Right-size connection pool with headroom.
127
-
128
- ## Lessons learned
129
-
130
- ### What went well
131
- - Time-to-resolution was 32 minutes once root cause identified.
132
- - WAF tooling was usable without a vendor escalation.
133
-
134
- ### What went poorly
135
- - 4 minutes between user report and our alert firing.
136
- - WAF allow-list hadn't been reviewed in 18 months.
137
-
138
- ### Where we got lucky
139
- - Scrape happened at 14:23 UTC (low-traffic window). At peak we'd have
140
- exhausted the pool faster.
141
-
142
- ## Timeline (UTC)
143
-
144
- - 14:21 — bot scrape begins
145
- - 14:23 — first checkout 500
146
- - 14:27 — user report in #incidents
147
- - 14:29 — internal latency alert fires
148
- - 14:31 — SEV-2 declared
149
- - 14:48 — root cause identified (DB connection pool)
150
- - 14:55 — scrape blocked at WAF
151
- - 15:10 — incident resolved
152
- ```
153
-
154
- ## How AGENTS.md should reference post-mortems
155
-
156
- In the `Where to find things` section:
157
-
158
- ```markdown
159
- - **Post-mortems:** `.brain/postmortems/` — newest-first; read when investigating recurring issues
160
- ```
161
-
162
- In the `Memory primitives` section:
163
-
164
- ```markdown
165
- - **When debugging a production issue**, search `.brain/postmortems/` for prior occurrences. Many "new" bugs are repeats of fixed-and-forgotten issues.
166
- ```
167
-
168
- ## Audit checks for post-mortems
169
-
170
- 1. **Folder exists** at `.brain/postmortems/` (or `.brain/incidents/` — accepted alias).
171
- 2. **Filename pattern is consistent** (`YYYY-MM-DD-name.md`).
172
- 3. **Each post-mortem has a `status:` field** (resolved / ongoing / blocked) and `date:`.
173
- 4. **An index file (`README.md`) exists** in the folder, sorted newest-first.
174
- 5. **`.brain/postmortems/` is referenced from AGENTS.md**.
175
-
176
- The audit should NOT flag a missing `.brain/postmortems/` folder for projects that haven't had production incidents — heuristic: search commit log for `revert`, `incident`, `outage`, `hotfix` to estimate whether the project should have post-mortems.
177
-
178
- ## Trigger rules — when to write a post-mortem
179
-
180
- A post-mortem is *not* required for every bug. The skill recommends writing one when **any one** of:
181
-
182
- 1. **A `release(.*hotfix` commit lands within 24h of a non-hotfix `release(` commit.** This is the canonical trigger — the hotfix exists *because* something escaped the prior release. The mechanism that allowed the escape needs writing down.
183
- 2. **A consumer-facing bug spent more than 1h in `latest` on npm** (or equivalent — the user-visible default channel for the package). The lag-to-detection is the unit of regret; capture how it happened and shorten the next loop.
184
- 3. **An audit emits a `severity: high` finding affecting anything outside `[Unreleased]`.** OPEN findings on shipped artifacts are incidents-in-waiting; if they trace to a published version, write the post-mortem.
185
- 4. **A trip-wire (CI gate, pre-commit hook) failed silently and the failure mode was discovered post-hoc.** "The check that should have caught this didn't" is exactly the class of process lesson post-mortems exist to capture.
186
- 5. **A user-reported runtime error against a tagged release.** External-detected runtime failures are the cleanest signal that internal verification missed.
187
-
188
- The point isn't ceremony — it's that the *mechanism* of failure is captured *once*, in plain text, so the next session inherits the diagnosis instead of re-walking it. A post-mortem that says "we'll be more careful" is failing the test; one that says "we'll add `<specific trip-wire>`" passes.
189
-
190
- **Mapping to `ops-repo` artifacts.** When a post-mortem identifies a structural fix (new trip-wire, new convention, new generator), record the finding-to-fix pairing in `.brain/findings/INDEX.md` under `## Graduations`. The post-mortem is the narrative; the graduations table is the structured index. See [`../recipes/findings-index-readout.md`](../recipes/findings-index-readout.md).
191
-
192
- ## Common anti-patterns
193
-
194
- - **Folder named `.brain/traces/`** — confused with observability traces.
195
- - **No date prefix on filename** — files don't sort chronologically.
196
- - **Post-mortem is a finger-pointing exercise** — violates blameless principle. Convert to systems-language.
197
- - **Action items without owners or due dates** — they don't get done.
198
- - **No timeline section** — losing the "what happened when" loses the chance to improve detection.
199
- - **Not linked from AGENTS.md** — agent doesn't know to check.
200
-
201
- ## Cross-references
202
-
203
- - ADR pattern (architecture decisions, separate concept): `adr-pattern.md`
204
- - Decision log (collection of ADRs): `decisions-log.md`
205
- - AGENTS.md "Memory primitives" section: `../standards/agents-md-spec.md`
206
- - Memory-organization recipe: `../recipes/memory-organization.md`