@erclx/canon 5.30.0 → 5.32.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 (343) hide show
  1. package/README.md +1 -1
  2. package/claude/.claude-plugin/plugin.json +1 -1
  3. package/claude/skills/api-design/references/adopted.md +1 -1
  4. package/claude/skills/auto-ship/REQUIREMENT.md +4 -16
  5. package/claude/skills/auto-ship/SKILL.md +13 -58
  6. package/claude/skills/auto-ship/references/draft-mark.md +2 -2
  7. package/claude/skills/auto-ship/references/failure-recovery.md +1 -5
  8. package/claude/skills/auto-ship/references/tier-failures.md +1 -1
  9. package/claude/skills/auto-ship/references/ui-checklist.md +2 -2
  10. package/claude/skills/auto-ship/references/verb-absent.md +3 -27
  11. package/claude/skills/backlog-triage/SKILL.md +1 -1
  12. package/claude/skills/build-in-slices/REQUIREMENT.md +1 -1
  13. package/claude/skills/build-in-slices/references/adopted.md +1 -1
  14. package/claude/skills/canon-cli/REQUIREMENT.md +4 -6
  15. package/claude/skills/canon-cli/SKILL.md +2 -2
  16. package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
  17. package/claude/skills/canon-feedback/SKILL.md +10 -13
  18. package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
  19. package/claude/skills/canon-feedback-triage/SKILL.md +50 -29
  20. package/claude/skills/canvas/REQUIREMENT.md +3 -4
  21. package/claude/skills/canvas/SKILL.md +5 -5
  22. package/{standards → claude/skills/canvas/references}/canvas.md +12 -1
  23. package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
  24. package/claude/skills/context-fold/REQUIREMENT.md +8 -20
  25. package/claude/skills/context-fold/SKILL.md +21 -45
  26. package/claude/skills/context-fold/references/classify.md +7 -8
  27. package/claude/skills/context-fold/references/completion-report.md +2 -6
  28. package/claude/skills/context-fold/references/context-refresh.md +5 -15
  29. package/claude/skills/context-fold/references/promoted-pages.md +3 -3
  30. package/claude/skills/context-fold/references/receipt-sweep.md +6 -17
  31. package/claude/skills/context-fold/references/unusable-baseline.md +4 -6
  32. package/claude/skills/create-rule/REQUIREMENT.md +0 -1
  33. package/claude/skills/create-skill/REQUIREMENT.md +6 -4
  34. package/claude/skills/create-skill/SKILL.md +9 -8
  35. package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
  36. package/claude/skills/decision-escalate/REQUIREMENT.md +1 -1
  37. package/claude/skills/decision-escalate/SKILL.md +1 -1
  38. package/claude/skills/design-taste/REQUIREMENT.md +0 -2
  39. package/claude/skills/design-taste/SKILL.md +2 -4
  40. package/claude/skills/design-taste/references/vocabulary.md +1 -1
  41. package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
  42. package/claude/skills/docs-sync/SKILL.md +1 -1
  43. package/claude/skills/document-health/REQUIREMENT.md +2 -2
  44. package/claude/skills/document-health/SKILL.md +4 -5
  45. package/claude/skills/document-health/references/axes.md +4 -6
  46. package/claude/skills/draft-and-pick/REQUIREMENT.md +16 -14
  47. package/claude/skills/draft-and-pick/SKILL.md +40 -32
  48. package/claude/skills/draft-and-pick/references/live-arms.md +9 -9
  49. package/claude/skills/draft-doc/REQUIREMENT.md +5 -5
  50. package/claude/skills/draft-doc/SKILL.md +10 -11
  51. package/claude/skills/draft-doc/references/requirements.md +61 -0
  52. package/claude/skills/draft-doc/references/wiki-kind.md +53 -0
  53. package/claude/skills/draft-doc/references/wiki.md +50 -30
  54. package/claude/skills/draft-figure/REQUIREMENT.md +2 -2
  55. package/claude/skills/draft-figure/SKILL.md +5 -5
  56. package/claude/skills/draft-figure/references/architecture-set.md +4 -4
  57. package/claude/skills/draft-figure/references/hand-drawn.md +1 -1
  58. package/claude/skills/draft-figure/references/mermaid-path.md +55 -0
  59. package/claude/skills/draft-figure/references/mermaid.md +43 -34
  60. package/claude/skills/draft-identity/REQUIREMENT.md +1 -1
  61. package/claude/skills/draft-identity/SKILL.md +9 -7
  62. package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
  63. package/claude/skills/draft-ready/SKILL.md +6 -6
  64. package/claude/skills/draft-ready/references/assembly.md +1 -1
  65. package/{standards → claude/skills/draft-ready/references}/ready.md +13 -5
  66. package/claude/skills/git-issue/SKILL.md +1 -1
  67. package/claude/skills/git-issue/references/issue.md +3 -3
  68. package/claude/skills/git-pr/SKILL.md +1 -1
  69. package/claude/skills/git-ship/REQUIREMENT.md +0 -2
  70. package/claude/skills/git-ship/SKILL.md +16 -24
  71. package/claude/skills/git-stage/SKILL.md +1 -1
  72. package/claude/skills/markdown-craft/REQUIREMENT.md +23 -0
  73. package/claude/skills/markdown-craft/SKILL.md +17 -0
  74. package/{standards → claude/skills/markdown-craft/references}/markdown.md +14 -7
  75. package/claude/skills/plan-feature/REQUIREMENT.md +2 -1
  76. package/claude/skills/plan-feature/SKILL.md +14 -8
  77. package/{standards → claude/skills/plan-feature/references}/plan.md +33 -21
  78. package/claude/skills/plan-groundwork/SKILL.md +5 -6
  79. package/{standards → claude/skills/plan-groundwork/references}/groundwork.md +17 -4
  80. package/claude/skills/plan-intake/SKILL.md +2 -3
  81. package/{standards → claude/skills/plan-intake/references}/intake.md +17 -2
  82. package/claude/skills/plan-intake-answer/REQUIREMENT.md +1 -1
  83. package/claude/skills/plan-intake-answer/SKILL.md +1 -1
  84. package/claude/skills/review-address/SKILL.md +2 -2
  85. package/claude/skills/review-address/references/post-review-findings.md +1 -1
  86. package/claude/skills/review-craft/REQUIREMENT.md +3 -3
  87. package/claude/skills/review-craft/SKILL.md +2 -2
  88. package/claude/skills/review-craft/references/ui.md +4 -4
  89. package/claude/skills/review-pr/REQUIREMENT.md +1 -1
  90. package/claude/skills/review-pr/SKILL.md +5 -7
  91. package/claude/skills/review-pr/references/post.md +2 -2
  92. package/claude/skills/review-ui/REQUIREMENT.md +0 -1
  93. package/claude/skills/review-ui/SKILL.md +1 -1
  94. package/claude/skills/review-ui/references/post.md +1 -1
  95. package/claude/skills/role-orchestrator/REQUIREMENT.md +0 -3
  96. package/claude/skills/role-orchestrator/SKILL.md +8 -8
  97. package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +4 -3
  98. package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +7 -10
  99. package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
  100. package/claude/skills/role-orchestrator/references/orchestrator-refill.md +0 -3
  101. package/claude/skills/role-orchestrator/references/orchestrator-resume.md +1 -1
  102. package/claude/skills/role-planner/SKILL.md +2 -2
  103. package/claude/skills/role-reviewer/SKILL.md +1 -1
  104. package/claude/skills/role-worker/SKILL.md +2 -2
  105. package/claude/skills/session-compact/REQUIREMENT.md +1 -4
  106. package/claude/skills/session-compact/SKILL.md +3 -13
  107. package/claude/skills/session-compact/references/handoff-note.md +2 -2
  108. package/claude/skills/session-map/REQUIREMENT.md +1 -9
  109. package/claude/skills/session-map/SKILL.md +8 -16
  110. package/{standards → claude/skills/session-map/references}/session.md +17 -11
  111. package/claude/skills/session-relay/REQUIREMENT.md +1 -1
  112. package/claude/skills/session-resume/REQUIREMENT.md +4 -6
  113. package/claude/skills/session-resume/SKILL.md +3 -9
  114. package/claude/skills/session-worktree/SKILL.md +1 -1
  115. package/claude/skills/session-worktree/references/main-root-writes.md +2 -2
  116. package/claude/skills/systematic-debugging/REQUIREMENT.md +0 -1
  117. package/claude/skills/target-check/REQUIREMENT.md +3 -3
  118. package/claude/skills/target-check/SKILL.md +1 -1
  119. package/claude/skills/target-check/references/domains.md +1 -1
  120. package/claude/skills/target-setup/REQUIREMENT.md +4 -4
  121. package/claude/skills/target-setup/SKILL.md +3 -3
  122. package/claude/skills/target-setup/references/detect.md +1 -1
  123. package/claude/skills/target-setup/references/indexes.md +1 -1
  124. package/claude/skills/task-board/SKILL.md +4 -4
  125. package/claude/skills/task-board/references/archive.md +1 -1
  126. package/{standards → claude/skills/task-board/references}/board.md +9 -0
  127. package/claude/skills/task-board/references/decline.md +1 -1
  128. package/{standards → claude/skills/task-board/references}/tasks.md +13 -8
  129. package/claude/skills/teach-workspace/SKILL.md +1 -1
  130. package/claude/skills/teach-workspace/references/revisit.md +1 -1
  131. package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
  132. package/claude/skills/test-first/REQUIREMENT.md +1 -1
  133. package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
  134. package/claude/skills/ux-audit/SKILL.md +2 -3
  135. package/claude/skills/write-human/REQUIREMENT.md +0 -1
  136. package/claude/skills/write-human/SKILL.md +2 -2
  137. package/docs/agents/audits.md +1 -1
  138. package/docs/agents/canvas.md +1 -1
  139. package/docs/agents/commands.md +6 -10
  140. package/docs/agents/context-audit-checks.md +10 -24
  141. package/docs/agents/context-audit.md +7 -15
  142. package/docs/agents/context-classify.md +5 -5
  143. package/docs/agents/counts.md +5 -5
  144. package/docs/agents/drift-surfaces.md +2 -2
  145. package/docs/agents/index.md +3 -4
  146. package/docs/agents/install-and-sync.md +6 -6
  147. package/docs/agents/intake.md +1 -1
  148. package/docs/agents/markdown-audit.md +1 -1
  149. package/docs/agents/records-stale.md +5 -5
  150. package/docs/agents/records-validate.md +1 -1
  151. package/docs/agents/records.md +2 -2
  152. package/docs/agents/restated.md +1 -1
  153. package/docs/agents/routing.md +1 -1
  154. package/docs/agents/rule-citations.md +1 -1
  155. package/docs/agents/skills-audit.md +2 -2
  156. package/docs/agents/state-scoped-risk.md +2 -2
  157. package/docs/agents/superseded.md +2 -2
  158. package/docs/agents/tasks-plans.md +2 -2
  159. package/docs/agents/tasks-validate.md +1 -1
  160. package/docs/agents/tasks.md +1 -1
  161. package/docs/agents/teach.md +1 -1
  162. package/docs/agents/test-order.md +1 -1
  163. package/docs/agents/upstream.md +94 -0
  164. package/docs/target/migrations.md +24 -0
  165. package/docs/target/projects.md +5 -7
  166. package/docs/target/scenarios.md +2 -2
  167. package/docs/target/sync.md +3 -3
  168. package/docs/workflow/ai-workflow.md +7 -38
  169. package/docs/workflow/index.md +1 -1
  170. package/docs/workflow/operating-model.md +8 -8
  171. package/docs/workflow/parallel-features.md +7 -7
  172. package/docs/workflow/skill-map-on-request.md +13 -16
  173. package/docs/workflow/skill-map.md +20 -32
  174. package/docs/workflow/visual-design-workflow.md +11 -14
  175. package/governance/renames.toml +0 -23
  176. package/governance/rules/canon/605-worktrees.md +1 -1
  177. package/governance/rules/{standards → canon}/plan.md +5 -5
  178. package/governance/rules/canon/tasks.md +18 -0
  179. package/governance/rules/writing/markdown.md +23 -0
  180. package/governance/stacks/base.toml +1 -1
  181. package/package.json +1 -1
  182. package/scripts/core/install-check.sh +2 -2
  183. package/scripts/core/regen-web-previews.ts +1 -1
  184. package/src/audits/catalog.ts +5 -97
  185. package/src/claude/cases/authoring.ts +5 -18
  186. package/src/claude/cases/misc.ts +0 -17
  187. package/src/claude/cases/setup.ts +3 -20
  188. package/src/claude/cases/workflow.ts +0 -33
  189. package/src/claude/seeds.ts +1 -7
  190. package/src/claude/skills-audit.ts +1 -1
  191. package/src/claude/skills-reach.ts +1 -1
  192. package/src/cli/help.ts +3 -4
  193. package/src/cli.ts +2 -4
  194. package/src/commands/claude.ts +9 -15
  195. package/src/commands/context.ts +18 -280
  196. package/src/commands/feedback.ts +22 -91
  197. package/src/commands/gov.ts +2 -2
  198. package/src/commands/records.ts +24 -6
  199. package/src/commands/sync.ts +5 -3
  200. package/src/commands/upstream.ts +430 -0
  201. package/src/context/audit.ts +6 -15
  202. package/src/context/classify/extract.ts +6 -13
  203. package/src/context/classify/patterns.ts +2 -41
  204. package/src/context/classify/prompts.ts +2 -6
  205. package/src/context/classify/run.ts +3 -3
  206. package/src/context/folders.ts +7 -12
  207. package/src/context/gate.ts +11 -91
  208. package/src/context/requirements.ts +13 -4
  209. package/src/counts/scan.ts +3 -3
  210. package/src/design/components.ts +2 -2
  211. package/src/feedback/body.ts +0 -12
  212. package/src/gate/measures.ts +6 -57
  213. package/src/gate/stages.ts +0 -1
  214. package/src/gov/citations.ts +9 -3
  215. package/src/gov/restated.ts +3 -3
  216. package/src/markdown/structure.ts +3 -3
  217. package/src/migrate/record-layout.ts +3 -3
  218. package/src/records/backup.ts +1 -0
  219. package/src/records/ordinal.ts +1 -1
  220. package/src/records/prune.ts +2 -1
  221. package/src/records/stale-canonical.ts +2 -2
  222. package/src/records/validate.ts +55 -0
  223. package/src/roots/record.ts +2 -1
  224. package/src/sandbox/scenario.ts +115 -11
  225. package/src/shipped/references.ts +3 -3
  226. package/src/standards/read.ts +52 -1
  227. package/src/sync/seeds-report.ts +1 -1
  228. package/src/tasks/answers.ts +14 -1
  229. package/src/tasks/reach.ts +2 -2
  230. package/src/tasks/stack.ts +176 -0
  231. package/src/tasks/validate.ts +1 -1
  232. package/src/teach/workspace.ts +1 -1
  233. package/src/upstream/catalog.ts +112 -0
  234. package/src/upstream/cursor.ts +120 -0
  235. package/src/upstream/digest.ts +75 -0
  236. package/src/upstream/due.ts +128 -0
  237. package/src/upstream/releases.ts +170 -0
  238. package/standards/context.md +3 -5
  239. package/standards/design.md +2 -3
  240. package/standards/index.md +0 -23
  241. package/standards/publish.md +1 -1
  242. package/standards/rule.md +1 -1
  243. package/standards/skill.md +1 -1
  244. package/tooling/base/reference.md +1 -1
  245. package/tooling/claude/reference.md +6 -20
  246. package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +1 -1
  247. package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
  248. package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
  249. package/tooling/claude/seeds/CLAUDE.md +1 -3
  250. package/tooling/claude/seeds/canon/REQUIREMENTS.md +2 -9
  251. package/tooling/web/configs/e2e/screenshot.ts +0 -1
  252. package/claude/skills/auto-ship/references/review-findings.md +0 -20
  253. package/claude/skills/bash-cli-script/REQUIREMENT.md +0 -43
  254. package/claude/skills/bash-cli-script/SKILL.md +0 -53
  255. package/claude/skills/bash-cli-script/references/template.md +0 -19
  256. package/claude/skills/canon-operator/REQUIREMENT.md +0 -62
  257. package/claude/skills/canon-operator/SKILL.md +0 -113
  258. package/claude/skills/canon-rollout/REQUIREMENT.md +0 -59
  259. package/claude/skills/canon-rollout/SKILL.md +0 -140
  260. package/claude/skills/canon-rollout/references/failure-recovery.md +0 -20
  261. package/claude/skills/context-fold/references/anchor-sweep.md +0 -58
  262. package/claude/skills/context-fold/references/wireframe-sweep.md +0 -45
  263. package/claude/skills/create-standard/REQUIREMENT.md +0 -33
  264. package/claude/skills/create-standard/SKILL.md +0 -31
  265. package/claude/skills/design-extract/REQUIREMENT.md +0 -42
  266. package/claude/skills/design-extract/SKILL.md +0 -108
  267. package/claude/skills/draft-and-pick/references/frame.html +0 -118
  268. package/claude/skills/draft-doc/references/wireframes.md +0 -48
  269. package/claude/skills/index-lookup/REQUIREMENT.md +0 -35
  270. package/claude/skills/index-lookup/SKILL.md +0 -44
  271. package/claude/skills/markdown-propose/REQUIREMENT.md +0 -47
  272. package/claude/skills/markdown-propose/SKILL.md +0 -122
  273. package/claude/skills/markdown-propose/references/format.md +0 -118
  274. package/claude/skills/memory-capture/REQUIREMENT.md +0 -50
  275. package/claude/skills/memory-capture/SKILL.md +0 -117
  276. package/claude/skills/memory-review/REQUIREMENT.md +0 -52
  277. package/claude/skills/memory-review/SKILL.md +0 -129
  278. package/claude/skills/memory-review/references/later-phases.md +0 -118
  279. package/claude/skills/memory-review/references/receipt-format.md +0 -64
  280. package/claude/skills/project-commands/REQUIREMENT.md +0 -42
  281. package/claude/skills/project-commands/SKILL.md +0 -87
  282. package/claude/skills/repo-metadata/REQUIREMENT.md +0 -37
  283. package/claude/skills/repo-metadata/SKILL.md +0 -54
  284. package/claude/skills/restate-plainly/REQUIREMENT.md +0 -41
  285. package/claude/skills/restate-plainly/SKILL.md +0 -41
  286. package/claude/skills/review-branch/REQUIREMENT.md +0 -40
  287. package/claude/skills/review-branch/SKILL.md +0 -137
  288. package/claude/skills/seed-sync/REQUIREMENT.md +0 -45
  289. package/claude/skills/seed-sync/SKILL.md +0 -158
  290. package/claude/skills/sketch-design/REQUIREMENT.md +0 -38
  291. package/claude/skills/sketch-design/SKILL.md +0 -94
  292. package/claude/skills/ux-walkthrough/REQUIREMENT.md +0 -56
  293. package/claude/skills/ux-walkthrough/SKILL.md +0 -53
  294. package/claude/skills/ux-walkthrough/references/builds.md +0 -15
  295. package/claude/skills/ux-walkthrough/references/candidate-pages.md +0 -11
  296. package/claude/skills/ux-walkthrough/references/measuring.md +0 -22
  297. package/claude/skills/ux-walkthrough/references/record.md +0 -36
  298. package/claude/skills/ux-walkthrough/references/relay.md +0 -25
  299. package/docs/agents/architecture-record.md +0 -36
  300. package/docs/agents/review-classification.md +0 -76
  301. package/governance/rules/canon/601-indexes.md +0 -9
  302. package/governance/rules/canon/603-memory.md +0 -11
  303. package/governance/rules/claude/565-behavior.md +0 -27
  304. package/governance/rules/claude/567-planning.md +0 -16
  305. package/governance/rules/claude/575-hooks.md +0 -16
  306. package/governance/rules/claude/576-settings.md +0 -13
  307. package/governance/rules/claude/592-claude-md.md +0 -19
  308. package/governance/rules/lang/120-bash.md +0 -18
  309. package/governance/rules/standards/architecture.md +0 -13
  310. package/governance/rules/standards/groundwork.md +0 -13
  311. package/governance/rules/standards/intake.md +0 -12
  312. package/governance/rules/standards/markdown.md +0 -16
  313. package/governance/rules/standards/memory.md +0 -12
  314. package/governance/rules/standards/ready.md +0 -13
  315. package/governance/rules/standards/requirements.md +0 -12
  316. package/governance/rules/standards/session.md +0 -13
  317. package/governance/rules/standards/tasks.md +0 -15
  318. package/governance/rules/standards/teach.md +0 -14
  319. package/governance/rules/standards/wiki.md +0 -13
  320. package/governance/rules/standards/wireframes.md +0 -13
  321. package/governance/rules/writing/800-prose.md +0 -15
  322. package/src/autoship/classify.ts +0 -75
  323. package/src/autoship/paths.ts +0 -50
  324. package/src/commands/autoship.ts +0 -129
  325. package/src/commands/repo.ts +0 -393
  326. package/src/context/architecture.ts +0 -654
  327. package/src/context/wireframe-states.ts +0 -238
  328. package/src/repo/metadata.ts +0 -206
  329. package/standards/architecture.md +0 -127
  330. package/standards/memory.md +0 -158
  331. package/standards/mermaid.md +0 -64
  332. package/standards/requirements.md +0 -79
  333. package/standards/wiki.md +0 -77
  334. package/standards/wireframes.md +0 -143
  335. package/tooling/claude/seeds/.claude/memory/index.md +0 -8
  336. package/tooling/claude/seeds/canon/ARCHITECTURE.md +0 -23
  337. package/tooling/claude/seeds/canon/wireframes/index.md +0 -8
  338. /package/{standards → claude/skills/create-skill/references}/skill-practice.md +0 -0
  339. /package/{standards → claude/skills/create-skill/references}/skill-requirement.md +0 -0
  340. /package/{standards → claude/skills/plan-feature/references}/plan-lifecycle.md +0 -0
  341. /package/{standards → claude/skills/plan-groundwork/references}/groundwork-spikes.md +0 -0
  342. /package/{standards → claude/skills/task-board/references}/tasks-decline.md +0 -0
  343. /package/{standards → claude/skills/teach-workspace/references}/glossary.md +0 -0
@@ -1,158 +0,0 @@
1
- ---
2
- title: Memory reference
3
- description: Filename and type prefix, frontmatter, the body shape per type, links between entries, and the lifecycle from write to retire
4
- paths:
5
- - '.canon/memory/**'
6
- ---
7
-
8
- # Memory reference
9
-
10
- Applies to a memory entry at `.canon/memory/<type>-<slug>.md`. One file holds one rule or one fact, written at the end of the session that produced it and read by a session that holds none of it. Which surface owns a given fact is settled before an entry is written at all, and that routing is project policy rather than a shape rule.
11
-
12
- The folder is gitignored, and backed wherever a records remote is configured: `canon records push` and `canon records pull` protect it against the machine being lost there, refuse with `no-remote` where it is not, and protect nothing against an entry deleted before anyone has pushed. That is why the retire step below is a move rather than a cleanup: a retired entry stays readable regardless of push timing, where a deleted one is gone the moment nothing has captured it yet.
13
-
14
- ## Scope
15
-
16
- Governs a memory entry under `.canon/memory/<type>-<slug>.md`: the filename and its type prefix, the frontmatter, the body shape each type carries, links between entries, and the lifecycle from the first write to retirement.
17
-
18
- Does not govern:
19
-
20
- - The per-domain entry a domain fact is routed to instead of memory: `context.md`
21
- - The feature plan a session executes, and its answer contract: `plan.md`
22
- - The task file tracking what is being built: `tasks.md`
23
- - Voice, rhythm, and sentence construction: the `write-human` skill
24
- - Headings, punctuation, word choice, and file references: `markdown.md`
25
- - Which facts a project captures at all, and where the folder sits, which are project policy
26
-
27
- ## What a working entry looks like
28
-
29
- An entry works when a session holding none of the conversation that produced it can act on the rule from the file alone:
30
-
31
- - What is the rule or the fact, stated in one line?
32
- - What happened in a session to earn it, so a later reader can tell whether it still holds?
33
- - When does it fire next, and what does the reader do at that moment?
34
- - Does another surface already own this, which would make the entry a duplicate of something sessions trust more?
35
-
36
- An entry failing these is non-conforming even when it satisfies every shape rule below.
37
-
38
- ## Types
39
-
40
- Four types, and the type decides both the filename prefix and the body shape.
41
-
42
- | Type | Holds | Fires on |
43
- | ----------- | -------------------------------------------------------------------- | ------------------------------------------- |
44
- | `feedback` | a correction or a confirmed approach governing how the agent works | explicit correction, or the same slip twice |
45
- | `project` | a decision, constraint, or measured fact not derivable from the code | first disclosure |
46
- | `user` | role, expertise, responsibilities, or working preferences | first disclosure |
47
- | `reference` | a pointer to an external system, repository, or channel | first disclosure |
48
-
49
- Hold a feedback entry to the higher bar. A first-occurrence slip is noise, and a folder that records every one of them buries the rules that were paid for.
50
-
51
- Write no entry for a fact another surface already owns. A fact about a domain belongs in that domain's entry, where sessions working the domain already read it, and the same fact in memory sits in a folder nothing opens. Memory keeps the residue, which is whatever the ownership test leaves rather than any one type.
52
-
53
- ## Filename
54
-
55
- - Name the file `<type>-<slug>.md`, with `<type>` one of the four above and `<slug>` kebab-case naming the rule rather than the incident.
56
- - Write one rule per file. Two rules under one slug cannot be retired or promoted separately, and one of them always outlives the other.
57
- - Keep the prefix and the `category` field the same fact in two spellings. A prefix outside the four types reads as a fifth type to anything grouping the folder, and it silently belongs to none.
58
-
59
- ## Frontmatter
60
-
61
- Every entry carries the three required fields, and a reviewed entry carries a fourth.
62
-
63
- ```yaml
64
- ---
65
- title: A scope glob wide enough for a correct run can be wide enough for every wrong one
66
- description: Omit a declaration key whose only passing value admits the whole tree
67
- category: Project
68
- reviewed: 2026-09-26
69
- ---
70
- ```
71
-
72
- - `title` (required): the rule stated as a line a reader can act on, in sentence case.
73
- - `description` (required): one line naming what the entry settles, so a reader scanning the catalog decides whether to open it.
74
- - `category` (required): the type in sentence case, which is what groups the catalog.
75
- - `reviewed` (optional): the `YYYY-MM-DD` date a review last read the entry and kept it. A review writes it and capture never does, so an entry without the field has never been reviewed. A rewrite of the entry carries the field through untouched, since dropping it sends a kept entry back to the front of the queue.
76
-
77
- Never write the filename stem as the `title`. The stem is a slug, and an entry titled with it reads as an unwritten file in every catalog that renders the field.
78
-
79
- Quote a `description` opening with a backtick or a colon. An unquoted one fails to parse and takes the whole folder's catalog with it.
80
-
81
- ## Body
82
-
83
- A `feedback` or `project` body carries three parts in this order. Blank lines between them are optional and the three parts are not.
84
-
85
- - The rule or the fact, stated in one or two sentences as something to do rather than something that happened.
86
- - A `**Why:**` line naming the session signal that earned it. This is what a later reader tests the rule against when the tree has moved.
87
- - A `**How to apply:**` line naming the next moment the rule fires and what to do then.
88
-
89
- A `user` or `reference` body is a single sentence and carries neither marker. There is no rule to apply and no signal to date, so the two lines would be filler.
90
-
91
- Capture the pattern rather than the recovery. What was tried, what failed, and who noticed belong to the session that is ending, and a body carrying them is a story where the next reader needs an instruction.
92
-
93
- ## Links
94
-
95
- Link a related entry as `[[name]]`, where `name` is the target's filename stem without the extension. Link freely: an entry sits flat at the top level and the links are the only structure among them. `review/` and `archive/` hold receipts and retirements rather than entries, so neither takes a link.
96
-
97
- - Place links inside the body part they support, not in a list of their own at the end.
98
- - A link naming an entry nobody has written yet is legal, and it marks a rule worth writing rather than a defect.
99
- - A bracketed token inside a code span is not a link. Backticked syntax from another language routinely reads as one.
100
-
101
- ## Lifecycle
102
-
103
- - Check the folder for an entry on the same topic before writing a new one, and update that entry in place when one exists. Two entries on one rule disagree the moment either is edited.
104
- - Rewrite an entry the tree has moved under rather than appending a second passage narrating the change. A reader cannot tell which of two claims is current.
105
- - Never delete an entry. Retire one by moving it to an archive under its own name, because a bulk judgment made before the next push has no undo behind it, and moving keeps the record where deleting would not.
106
- - Treat the folder as a holding pen rather than a destination. An entry whose rule belongs on a durable surface is promoted there and retired here, and the rest is what the pen is for.
107
-
108
- The catalog is generated from sibling frontmatter rather than authored. Never hand-edit it, since the next regeneration discards whatever was added by hand.
109
-
110
- ## Reading
111
-
112
- Nothing loads the pen into every session, and that is the design. An entry reaches a reader through one of three paths:
113
-
114
- - A review reads the pen in batches, taking entries in the order `canon records stale memory` reports: due entries first, those citing a path the tree no longer holds ahead of the rest, then the longest unreviewed.
115
- - A resuming session reads the entries matching the task it picks up.
116
- - Capture reads the catalog to find an existing entry on the same topic before writing a new one.
117
-
118
- An entry none of the three reaches is one the pen holds for a review to promote or retire.
119
-
120
- ## Collecting a review receipt
121
-
122
- A review of the pen writes a receipt recording what it proposed per entry and what was decided. The receipt is collected once every item on it has resolved, and it is held while any item is still pending, since a pending item is decision state the next round reads back.
123
-
124
- Fold the declines before the receipt goes. A promoted entry survives in its target and in git and a retired one survives in the archive, so the one thing a receipt uniquely holds is the record that a rule was considered and turned down.
125
-
126
- - Fold into the entry the item was about, and only into that entry. A decline whose proposed target was another surface still lands here.
127
- - Fold a `feedback` or `project` entry alone. The decline belongs in the `**Why:**` line, which is what a later reader tests the rule against.
128
- - Fold nothing into a `user` or `reference` entry. Its body is one sentence carrying neither marker, and such an entry is declined for having no in-repo target, which its type already states. Writing that on the entry restates the type and breaks the body shape.
129
- - Record the decline by rewriting the entry, never by appending to it, per the lifecycle rule above.
130
-
131
- Which surface runs the collection is project policy. More than one may, so a collector finding no receipt has been beaten to it rather than misconfigured.
132
-
133
- ## Anti-patterns
134
-
135
- - **The domain fact filed as memory.** It reads as a capture and lands in the one folder no session opens while working that domain.
136
- - **The incident narrative.** A body recounting what went wrong states no rule, so the next reader has to infer one and infers a different one.
137
- - **The entry titled with its own slug.** Every catalog rendering the field shows a filename where the rule should be.
138
- - **The duplicate written beside the original.** Two entries on one topic drift, and nothing says which is current.
139
- - **The first-occurrence capture.** A folder recording every slip buries the rules that repeated.
140
- - **The entry deleted on retire.** The folder has no history, so the judgment that discarded it cannot be reviewed or reversed.
141
-
142
- ## Template
143
-
144
- ```markdown
145
- ---
146
- title: <the rule, stated as a line a reader can act on>
147
- description: <one line naming what the entry settles>
148
- category: <Feedback|Project|User|Reference>
149
- ---
150
-
151
- <the rule or fact, in one or two sentences, as something to do>
152
-
153
- **Why:** <the session signal that earned it, with the measurement where one exists>
154
-
155
- **How to apply:** <the next moment it fires, and what to do then> See [[related-entry]].
156
- ```
157
-
158
- A `user` or `reference` entry carries the same frontmatter and a single sentence in place of the three parts.
@@ -1,64 +0,0 @@
1
- ---
2
- title: Mermaid reference
3
- description: Direction and layout, node and edge budgets, accessibility fields, label punctuation, and render verification for a Mermaid diagram
4
- ---
5
-
6
- # Mermaid reference
7
-
8
- Applies to every Mermaid fence, wherever it is written. A fence sits inside a document some other standard shapes, so this file reaches the drawing and stops at the fence markers.
9
-
10
- ## Scope
11
-
12
- Governs the Mermaid attribute wherever a fence is written, naming no path because an attribute standard governs a drawing rather than a document type: direction and layout, node and edge budgets, the accessibility fields, how punctuation reaches a label, and how a rendered diagram is verified. It carries no template, since a fence has no document shape of its own and sits inside one another standard sets.
13
-
14
- Does not govern:
15
-
16
- - Which architecture view a figure draws and what question it answers: the `draft-figure` skill's architecture set
17
- - Language, word choice, punctuation, and formatting in the prose around a fence: `markdown.md`
18
- - Voice, rhythm, and sentence construction in that prose: the `write-human` skill
19
- - The mechanism behind any component a diagram draws: `context.md`
20
-
21
- ## What a working diagram looks like
22
-
23
- A diagram works when a reviewer holding the rendered image, and nothing else, answers yes four times:
24
-
25
- - Did the declared direction hold?
26
- - Is every row of siblings free of a sequential reading the system does not have?
27
- - Is every convergence free of a crossing edge bundle?
28
- - Is it taller than wide, outside a sequence diagram?
29
-
30
- A diagram failing these is non-conforming even when it satisfies every shape rule below. The rules are the means. These four questions are the test.
31
-
32
- ## Layout
33
-
34
- - Declare `flowchart TB` by default. Mermaid ignores a subgraph's direction whenever that subgraph links outward, and an architecture diagram links across its subgraphs as the normal case, so top-bottom is a declaration rather than a guarantee.
35
- - Restructure a diagram that renders diagonal or left-to-right. Repeating the direction keyword does not fix it.
36
- - Render a context, component, or pipeline diagram taller than wide. A `sequenceDiagram` is wide by construction and is exempt.
37
- - Do not let independent nodes render in a row. A row of siblings reads as a sequential chain and asserts a pipeline the system does not have.
38
- - Do not converge many edges on one node from one side. A crossing bundle is unreadable whatever it encodes.
39
- - Keep node labels short. Three or four words max. Detail goes in the paragraph below the diagram.
40
- - Use `<br/>` for a second short line on a node when the label is two ideas, never for a sentence.
41
- - Subgraphs are for grouping unrelated lanes such as offline versus online or browser versus server. Do not subgraph a single linear flow.
42
-
43
- ## Budgets
44
-
45
- - Hold a diagram to roughly 5 to 10 nodes. Split it past 15.
46
- - Watch edge count harder than node count. It binds first, and a diagram whose edges outnumber its nodes is already too dense to read.
47
- - Treat a diagram that cannot be described in one sentence as two diagrams.
48
- - Warn rather than refuse on a budget, and name the split that would fix it. These numbers come from published Mermaid practice rather than from a measurement against a corpus, so a hard refusal on them will be wrong sometimes and unarguable when it is.
49
-
50
- ## Labels
51
-
52
- - Apply the punctuation bans in `markdown.md` to node and subgraph labels. A label is not prose, so a check scoped to prose does not reach it, and reading the labels before shipping is the only gate they have.
53
- - Treat the prose around a fence and the text inside it as two surfaces. The paragraphs are prose and follow `markdown.md` and the `write-human` skill. The fenced block is not, which is why a check scoped to prose is the wrong thing to rely on for what sits inside it.
54
-
55
- ## Accessibility
56
-
57
- - Give every diagram `accTitle` and `accDescr`. `accTitle` names what the diagram answers. `accDescr` states the structure in one sentence for a reader who cannot see the render.
58
-
59
- ## Verification
60
-
61
- - Judge a diagram from its rendered image, not from its source. Direction, sibling rows, and edge bundles are visible only in the output.
62
- - Render to PNG. An SVG export reads back as markup with no recoverable spatial meaning.
63
- - Apply the four questions above as a reviewer, against the same render the author judged.
64
- - State which verification was skipped when no renderer is available. A diagram written without a render is still shippable, and one reported as verified without a render is not.
@@ -1,79 +0,0 @@
1
- ---
2
- title: Requirements reference
3
- description: Shape and content rules for canon/REQUIREMENTS.md
4
- paths:
5
- - 'canon/REQUIREMENTS.md'
6
- ---
7
-
8
- # Requirements reference
9
-
10
- Applies to `canon/REQUIREMENTS.md`. Describes what the product does and why, not how it works. Update when scope changes, goals shift, or a non-goal is promoted to a feature.
11
-
12
- ## Scope
13
-
14
- Governs the product-scope document at `canon/REQUIREMENTS.md`: problem, goals, non-goals, MVP features, distribution, and constraints.
15
-
16
- Does not govern:
17
-
18
- - Rationale for a technical choice: `architecture.md`
19
- - Execution order across the work the scope generates: `board.md`
20
- - Per-domain structure and narrative: `context.md`
21
-
22
- ## What goes in
23
-
24
- - The problem being solved and for whom
25
- - User-facing goals stated as outcomes, not implementation
26
- - Explicit non-goals that prevent feature creep. Mark deferred items "(deferred)" so they read as paused, not excluded. A non-goal resting on how an outside tool, an installer, or the model behaves may close with one `Revisit when <finding>.` sentence, and a non-goal resting on scope alone takes none.
27
- - MVP features as a numbered list: feature name and one-line description
28
- - Hard constraints that shape every decision
29
-
30
- ## What does not go in
31
-
32
- - Implementation details, API names, or internal component references
33
- - Anything that describes how a feature is built rather than what it does
34
- - Measured results, such as scores, benchmark figures, or token counts. They move on every run and this file changes least. Name where the results live instead.
35
- - Content another canonical doc owns, such as the stack list, which the stack-and-runtime slot of `canon/ARCHITECTURE.md` holds, or the rules of this standard itself
36
-
37
- ## Sections
38
-
39
- Use `## Problem`, `## Goals`, `## Non-goals`, `## MVP features`, and `## Constraints`. Add `## Distribution` when the rule below applies. Add `## Worldview` when the project holds beliefs that shape every decision, and keep a belief there only when it changes a decision, since a padded worldview turns into a second goals list. Add `## Premise` when the project exists to answer a question, stated as the question and what would count as an answer, never as the answer measured so far. Drop a section rather than pad it with filler.
40
-
41
- ## Length
42
-
43
- This file loads into every session, so its weight is paid before any work starts. Cap it by stating the clause `This record holds at most <n> words.` in the record itself, where a checker reads it and counts every word below the frontmatter. The cap is the record's own, so a record stating none is measured and never gated. The template and the seed a new project installs state it at 600, and a project loosens it by editing the number in its own record. At the cap, cut a goal or a constraint that no longer changes a decision before adding one.
44
-
45
- ## Lifecycle
46
-
47
- Once every entry in the MVP list, or in a later scope section, has shipped, delete the section. Git keeps the old text, and the document states the project as it stands. Do not annotate an entry as shipped and leave it in place. While any entry is unshipped, do not renumber the list or append to it.
48
-
49
- The record may carry an optional `reviewed: YYYY-MM-DD` frontmatter field naming the day someone last read it whole for identity drift. Whoever finishes that review sets it as the review's last edit, and `canon records stale canonical` reads it to count the releases shipped since. A record with no field reads as never reviewed.
50
-
51
- Later scope arrives as a new section rather than as an extension of the MVP list. Name the section for what it delivers and state its entries as outcomes, the same way the goals are stated. Nothing sequences either list into versions. Work reaches the board as discrete tasks under `tasks.md`, and `board.md` orders them by readiness, so a section here states what is wanted and never when it lands.
52
-
53
- ## Distribution
54
-
55
- Include `## Distribution` only when the project ships to consumers outside its own repository. An internal service or a monorepo application has nothing to put in it, and a section every project is told to fill is one most projects pad. Place it after `## MVP features`.
56
-
57
- State each entry as an outcome the consumer reaches, never as the mechanism that delivers it. A registry name, a manifest format, a version scheme, or a release tool is implementation and belongs in `canon/ARCHITECTURE.md`. Distribution pulls harder toward mechanism than any other section, which is why the rule is repeated here.
58
-
59
- ## Template
60
-
61
- ```markdown
62
- # Requirements
63
-
64
- This record holds at most 600 words.
65
-
66
- ## Problem
67
-
68
- ## Goals
69
-
70
- ## Non-goals
71
-
72
- ## MVP features
73
-
74
- 1. Feature: description
75
-
76
- <!-- ## Distribution: include only when shipping outside the repository -->
77
-
78
- ## Constraints
79
- ```
package/standards/wiki.md DELETED
@@ -1,77 +0,0 @@
1
- ---
2
- title: Wiki reference
3
- description: Folder split, frontmatter, naming convention, and sourcing for a wiki reference page
4
- paths:
5
- - 'wiki/**/*.md'
6
- rule:
7
- - 'Read it before drafting a page. Do not work the placement criterion or the naming convention from memory.'
8
- ---
9
-
10
- # Wiki reference
11
-
12
- Applies to each authored page under `wiki/`. Skip for `index.md` at any depth, which is a hand-maintained catalog rather than a reference page, and carries `subtitle` rather than `description`.
13
-
14
- ## Scope
15
-
16
- Governs each authored page under `wiki/`: which folder it belongs in, its frontmatter, its filename, and how it cites the subject it documents.
17
-
18
- Does not govern:
19
-
20
- - Voice, rhythm, sentence construction, and information density: the `write-human` skill
21
- - Headings, punctuation, word choice, and file references: `markdown.md`
22
-
23
- ## What a working wiki page looks like
24
-
25
- A page works when a reader who has never opened it settles two things without asking anyone:
26
-
27
- - Which folder holds it, decided from the subject alone rather than from where it happened to get written
28
- - Where the content came from, so a claim can be checked against its owner rather than against this repository
29
-
30
- A page failing either is non-conforming even when it satisfies every shape rule below.
31
-
32
- ## Placement
33
-
34
- - Write a page here only when its subject is owned outside this repository. Route anything about how this repository works to `docs/`, `canon/context/`, or a skill body instead.
35
- - File the page under `wiki/claude/`. A subject Anthropic does not own, whether a third-party tool or a vendor-neutral concept, is out of scope for this folder split. Route it to `docs/` or a skill body instead of adding a second wiki folder for it.
36
-
37
- ## Frontmatter
38
-
39
- - `title` (required): sentence case, naming the subject
40
- - `description` (required): one line naming what the page covers
41
-
42
- ## Naming
43
-
44
- - Name a page by its kebab subject alone. The vendor folder it sits in already names the vendor, so a prefix repeats the folder.
45
- - The `codebase-layout` skill carries the same rule for every folder in a project, beyond the wiki.
46
-
47
- ## Sourcing
48
-
49
- - Close the intro paragraph with a `Source:` sentence naming the owner. Link the canonical page where one exists, and name the owner alone where the subject has no single URL.
50
- - Link a docs page in its fetchable form, `https://code.claude.com/docs/en/<page>.md`, so a session reads the live text rather than a copy.
51
- - Fetch current information through the `claude-code-guide` agent when the subject is Claude Code. Do not work from training knowledge.
52
- - Propose an addition or correction and wait for confirmation. Do not write to a wiki file unasked.
53
-
54
- ## Shape
55
-
56
- - Keep a page thin: the `Source:` sentence, an orientation paragraph, and lesson sections. The source owns the reference detail and a paraphrase of it falls behind within days.
57
- - Apply the lesson test per section: keep a fact about the subject only when the source page does not state it. Such a fact is a gotcha this project hit, a constraint it relies on, or how it uses the feature.
58
- - Read the current source before keeping or cutting a section. A fact kept from memory is the drift this shape exists to prevent.
59
- - Send a session that wants reference detail to the source and fetch it live. The page answers orientation and lessons only.
60
- - Leave a page with no lessons as the source link and the orientation paragraph. A catalog routes a reader by page, so the stub stays.
61
-
62
- ## Template
63
-
64
- ```markdown
65
- ---
66
- title: <Subject>
67
- description: <one line naming what this page covers>
68
- ---
69
-
70
- # <Subject>
71
-
72
- <What the subject is and why it matters, in a short orientation.> Source: <owner, with a link to the canonical page where one exists>.
73
-
74
- ## <Lesson>
75
-
76
- <A fact the source page does not state.>
77
- ```
@@ -1,143 +0,0 @@
1
- ---
2
- title: Wireframe reference
3
- description: Shape and content rules for canon/wireframes/<surface>.md files
4
- paths:
5
- - 'canon/wireframes/**'
6
- rule:
7
- - 'Read it before adding or revising a surface.'
8
- ---
9
-
10
- # Wireframe reference
11
-
12
- Applies to per-surface entries under `canon/wireframes/`. Skip for `index.md`, which is regenerated by `canon indexes regen`.
13
-
14
- A wireframe file captures the spatial layout and interaction intent of one UI surface. It is not an implementation log. The check for any single line: would it still be true if the surface were rebuilt in a different framework? If not, it belongs in `canon/context/`.
15
-
16
- ## Scope
17
-
18
- Governs per-surface wireframe entries under `canon/wireframes/`: layout, variants, on-screen copy, and interaction intent.
19
-
20
- Does not govern:
21
-
22
- - Tokens, typography, spacing, and the rest of the visual system: `design.md`
23
- - The mechanism behind a surface: `context.md`
24
- - Voice, rhythm, and sentence construction in wireframe prose: the `write-human` skill
25
- - Punctuation, formatting, and word choice in wireframe prose: `markdown.md`
26
-
27
- ## What a working wireframe looks like
28
-
29
- A wireframe works when someone can rebuild the surface from it without opening the components:
30
-
31
- - What regions are on screen, by name, and where does each sit relative to the others?
32
- - Which states can a visitor reach, what triggers each, and where is its captured evidence?
33
- - What does its structural copy say, word for word, and where does its long-form content come from?
34
- - What was deliberately left off the surface?
35
-
36
- A wireframe that fails these is non-conforming regardless of whether it satisfies every section rule below. The sections are the means. These four questions are the test.
37
-
38
- ## Transcription wireframes
39
-
40
- A wireframe regenerated from an already-built surface's own render code may carry what the sections below forbid: the source file and function, the class or token names driving each region, and pixel-exact geometry. Open the file by naming that source: the render function, the stylesheet rule, or the built file the block was read off. The citation is what separates a transcription wireframe from one that merely broke the rules below, since a role label with nothing behind it is unchecked and a class name traced to a real file and line is not.
41
-
42
- A drafted-ahead wireframe states intent in role terms because nothing exists yet to check it against. A regenerated one is checkable against the code it mirrors, and a role label standing in for the real class name would throw that check away. The two documents answer different questions, so one set of rules cannot govern both.
43
-
44
- Route detail the source citation does not already carry to `canon/context/` as usual: algorithms, event-handler code, workarounds, and rejected approaches stay out of the wireframe regardless of which mode it is written in.
45
-
46
- ## Frontmatter
47
-
48
- - `title` (required): sentence case, names the surface (`Header`, `Section nav`, `Footer`).
49
- - `description` (required): one line on when and where the surface appears.
50
-
51
- Both fields feed `canon/wireframes/index.md` when regenerated.
52
-
53
- ## Regions
54
-
55
- - Name every region the surface holds, in a bullet list ordered as a reader scans the page, each with where it sits relative to the others: `- Act pane: right of the answer from 1024 up, an overlay below 1024`. These names are the vocabulary plans, picks, and tests use, and the placement is what a list without a sketch would otherwise lose. Pixel sizes stay in `canon/DESIGN.md`.
56
- - Draw an ASCII block inside a `plaintext` fence only for a layout that is not built yet. Label regions with `←` annotations, show a region's role rather than its styling, and keep the proportions honest.
57
- - Remove the fence in the change that first captures evidence for the layout. The capture is the exact picture, and a sketch kept beside it drifts from it. A wireframe carrying both a sketch and an evidence folder for the same layout is non-conforming.
58
- - Give a layout that changes across a breakpoint its own entry under the list, named by what triggers it (`At 1024 and wider`), not by an arbitrary label. A wider gutter alone is not a new layout.
59
- - Keep one surface per file, indexed by `index.md`.
60
-
61
- ## States
62
-
63
- - List every state a visitor can reach in one table: the state name, what reaches it, what it shows in words, and its evidence folder.
64
- - Name a state in plain kebab case (`answered`, `refused`) and name its evidence folder the same way, with no ordinal prefix. The table carries the reading order, so a state added in the middle renames nothing.
65
- - Keep the table and the evidence folders one-to-one. A state with no capture yet reads `not captured` in its evidence cell, which is the one exception, and it stays visible until the capture lands.
66
- - Add an H3 below the table only for a state that needs more than its row: what differs from the regions in words, and its own copy or behavior.
67
-
68
- ## Copy
69
-
70
- - Carry short structural text verbatim, in the ASCII block or a short list below it: labels, headings, empty-state strings, and nav or footer copy. The wireframe is the source of truth for this text.
71
- - Cite the source file for long-form or article-body content instead of duplicating it. A lede sentence or a body paragraph pulled into an ASCII figure drifts the moment its source changes, and nothing checks a fenced block against prose elsewhere. A citation elsewhere in the file does not excuse the block itself from still carrying the duplicate. Trim the block once the citation exists.
72
- - Mark copy that is dynamic or templated so a reader does not treat a placeholder as final text.
73
-
74
- ## Behavior
75
-
76
- - Describe interaction intent: what the visitor does and what changes on screen.
77
- - State the rule, not the mechanism. `The rail tracks the active section as the visitor scrolls` is intent. The scroll handler, throttle, and observer margins are not.
78
- - Keep it to a short list. A Behavior section longer than the regions and states is a sign implementation detail has leaked in.
79
-
80
- ## Not on this surface
81
-
82
- - State what was deliberately left off, one bullet per exclusion, as a present-tense rule: `- No navigation rail`. This is the section that stops a draft from proposing what was already ruled out.
83
- - Keep the reason to a clause where one is needed. Cut the rounds that ruled it out.
84
-
85
- ## What moves out
86
-
87
- - Which candidate beat which, and when: nowhere. Cut it, since git keeps the old text
88
- - Measurements such as contrast ratios and timings: `canon/DESIGN.md` for tokens and floors, the surface's context entry for the rest
89
-
90
- ## What moves to canon/context/
91
-
92
- This section does not govern a transcription wireframe's citation of its own source. See `## Transcription wireframes`. Implementation detail that answers how the surface is built belongs in a `canon/context/` entry, not the wireframe:
93
-
94
- - Algorithms, event-handler code, and lifecycle ordering
95
- - Framework component names, props, and CSS class or token names
96
- - Pixel-exact spacing, timing constants, and observer thresholds
97
- - Workarounds and rejected approaches
98
-
99
- Reference the context entry from the wireframe by path when a reader needs the mechanism. The wireframe stays answerable on its own for layout and intent.
100
-
101
- ## Maintenance
102
-
103
- - When a surface's layout or interaction changes, update its wireframe file in the same PR. A wireframe showing a defunct layout is worse than none.
104
- - When a state is added, removed, or renamed, update its row and its evidence folder in the same PR.
105
- - The Behavior and Copy prose around an ASCII block is prose and follows `markdown.md` and the `write-human` skill. The fenced block itself is not, so a check scoped to prose is the wrong thing to rely on for what sits inside it.
106
-
107
- ## Template
108
-
109
- ```markdown
110
- ---
111
- title: <Surface name>
112
- description: <when and where the surface appears>
113
- ---
114
-
115
- # <Surface name>
116
-
117
- <One paragraph: what the surface is for and what it covers.>
118
-
119
- ## Regions
120
-
121
- - <Region>: <what it holds>, <where it sits relative to the others>
122
- - <Region>: <what it holds>, <where it sits relative to the others>
123
-
124
- ## States
125
-
126
- | State | Reached when | Shows | Evidence |
127
- | ------- | ------------ | ---------- | -------------------------- |
128
- | <state> | <trigger> | <in words> | `<evidence-root>/<state>/` |
129
-
130
- ## Copy
131
-
132
- - <on-screen text, word for word>
133
- - <text the surface templates>: <marked so a reader does not read it as final>
134
- - <long-form content>: cited at <its source file>, not duplicated here
135
-
136
- ## Behavior
137
-
138
- - <what the visitor does, and what changes on screen>
139
-
140
- ## Not on this surface
141
-
142
- - <what was deliberately left out, as a present-tense rule>
143
- ```
@@ -1,8 +0,0 @@
1
- ---
2
- title: Memory
3
- subtitle: Session facts with no owning surface, grouped by kind. Feedback is the working set.
4
- ---
5
-
6
- # Memory
7
-
8
- Session facts with no owning surface, grouped by kind. Feedback is the working set.
@@ -1,23 +0,0 @@
1
- # Architecture
2
-
3
- Authoring guidance: the architecture standard.
4
-
5
- ## Overview
6
-
7
- This record holds at most 12 decisions, at most 150 words a decision, and at most 6 risk bullets.
8
-
9
- ## Key technical decisions
10
-
11
- ### Stack and runtime
12
-
13
- What was chosen, the alternative that lost, and why.
14
-
15
- ### Delivery
16
-
17
- ### Enforced boundaries
18
-
19
- ### Layout
20
-
21
- ### Build principles
22
-
23
- ## Risks / open questions
@@ -1,8 +0,0 @@
1
- ---
2
- title: Wireframes
3
- subtitle: Per-surface regions and states loaded on demand
4
- ---
5
-
6
- # Wireframes
7
-
8
- Per-surface regions and states loaded on demand