geneseed 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/CHANGELOG.md +217 -5
  2. package/DESIGN.md +149 -1326
  3. package/QUICKSTART.md +1 -1
  4. package/README.md +30 -22
  5. package/SETUP.md +98 -24
  6. package/SHIPPED.md +6 -5
  7. package/adapters/bob/README.md +3 -3
  8. package/adapters/claude-code/README.md +6 -4
  9. package/adapters/claude-code/skills/geneseed/SKILL.md +10 -6
  10. package/adapters/copilot/README.md +5 -4
  11. package/adapters/opencode/GLOBAL-HARNESS-SPEC.md +11 -6
  12. package/adapters/opencode/HOW-OPENCODE-LOADS.md +1 -1
  13. package/adapters/opencode/README.md +15 -9
  14. package/adapters/opencode/agents/orchestrator.md +1 -1
  15. package/adapters/opencode/opencode.json +0 -9
  16. package/adapters/opencode/plugins/geneseed-context.js +7 -7
  17. package/adapters/opencode/plugins/geneseed-guard.js +6 -6
  18. package/adapters/opencode/workflows/dispatch.js +1 -1
  19. package/bin/geneseed.mjs +74 -8
  20. package/docs/declined.md +53 -2
  21. package/docs/design-history.md +1290 -0
  22. package/docs/extending.md +672 -0
  23. package/docs/limits.md +141 -82
  24. package/docs/token-footprint.md +15 -4
  25. package/docs/web/agents.md +1 -1
  26. package/docs/web/authoring.md +1 -1
  27. package/docs/web/claude-hooks.md +2 -2
  28. package/docs/web/collaboration.md +3 -3
  29. package/docs/web/first-session.md +2 -2
  30. package/docs/web/footprint.md +14 -7
  31. package/docs/web/foreman-mode.md +2 -2
  32. package/docs/web/harnesses.md +5 -3
  33. package/docs/web/install-quick.md +1 -1
  34. package/docs/web/model.md +3 -3
  35. package/docs/web/plugin-context.md +2 -2
  36. package/docs/web/plugin-guard.md +3 -3
  37. package/docs/web/plugin-ponytail.md +1 -1
  38. package/docs/web/rules.md +23 -3
  39. package/docs/web/setup-choices.md +20 -7
  40. package/docs/web/themes-author.md +13 -1
  41. package/docs/web-ui.md +36 -12
  42. package/geneseed +0 -0
  43. package/harness.config.json +1 -1
  44. package/js/catalog.mjs +29 -4
  45. package/js/checkout.mjs +24 -1
  46. package/js/cli-table.json +9 -7
  47. package/js/diff.mjs +8 -3
  48. package/js/doctor.mjs +374 -26
  49. package/js/emit.mjs +48 -11
  50. package/js/generate.mjs +39 -5
  51. package/js/hooks.mjs +8 -7
  52. package/js/installs.mjs +101 -4
  53. package/js/inventory.mjs +150 -20
  54. package/js/lib/fs.mjs +6 -2
  55. package/js/mcp.mjs +3 -15
  56. package/js/migrate.mjs +10 -4
  57. package/js/render.mjs +116 -11
  58. package/js/settings.mjs +297 -28
  59. package/js/setup.mjs +95 -5
  60. package/js/status.mjs +45 -4
  61. package/js/themes.mjs +1 -1
  62. package/js/tui.mjs +46 -3
  63. package/js/uninstall.mjs +30 -11
  64. package/js/web/actions.mjs +76 -9
  65. package/js/web/api.mjs +95 -16
  66. package/js/web/docs.mjs +33 -5
  67. package/js/web/jobs.mjs +12 -3
  68. package/js/web/server.mjs +59 -2
  69. package/package.json +1 -1
  70. package/src/AGENT.md.tmpl +75 -65
  71. package/src/agents/_template.md +4 -4
  72. package/src/agents/advocate.md +4 -4
  73. package/src/agents/architect.md +2 -2
  74. package/src/agents/developer.md +5 -5
  75. package/src/agents/docs.md +2 -2
  76. package/src/agents/empiricist.md +3 -3
  77. package/src/agents/explorer.md +3 -3
  78. package/src/agents/framer.md +3 -3
  79. package/src/agents/historian.md +3 -3
  80. package/src/agents/operator.md +3 -3
  81. package/src/agents/pragmatist.md +3 -3
  82. package/src/agents/reviewer.md +2 -2
  83. package/src/agents/security.md +2 -2
  84. package/src/agents/skeptic.md +4 -4
  85. package/src/agents/steward.md +3 -3
  86. package/src/agents/tester.md +2 -2
  87. package/src/agents/user-advocate.md +3 -3
  88. package/src/agents/visionary.md +3 -3
  89. package/src/doctrines/README.md +41 -0
  90. package/src/doctrines/craft.md +51 -0
  91. package/src/doctrines/ops.md +61 -0
  92. package/src/doctrines/process.md +87 -0
  93. package/src/doctrines/rigor.md +52 -0
  94. package/src/laws/universal.md +17 -301
  95. package/src/memory/README.md +2 -2
  96. package/src/modes/README.md +2 -2
  97. package/src/modes/foreman.md +1 -1
  98. package/src/notebook/README.md +2 -2
  99. package/src/ontology/universal.md +89 -0
  100. package/src/postures/README.md +3 -3
  101. package/src/postures/artisan.md +3 -3
  102. package/src/postures/assistant.md +1 -1
  103. package/src/postures/expert.md +1 -1
  104. package/src/postures/mentor.md +1 -1
  105. package/src/postures/peer.md +2 -2
  106. package/src/skills/_template.md +2 -2
  107. package/src/skills/brainstorm.md +2 -2
  108. package/src/skills/clarify.md +2 -2
  109. package/src/skills/codebase-design.md +1 -1
  110. package/src/skills/commit.md +5 -5
  111. package/src/skills/council.md +4 -4
  112. package/src/skills/crash-course.md +1 -1
  113. package/src/skills/daydream/SKILL.md +1 -1
  114. package/src/skills/debug.md +2 -2
  115. package/src/skills/decode.md +1 -1
  116. package/src/skills/develop.md +6 -6
  117. package/src/skills/document-project.md +4 -4
  118. package/src/skills/domain-modeling.md +1 -1
  119. package/src/skills/drill.md +1 -1
  120. package/src/skills/feynman.md +1 -1
  121. package/src/skills/forge-mcp.md +3 -3
  122. package/src/skills/fresh-eyes.md +4 -4
  123. package/src/skills/frontend-design.md +1 -1
  124. package/src/skills/gap-detector.md +1 -1
  125. package/src/skills/geneseed-code-review.md +1 -1
  126. package/src/skills/geneseed.md +4 -4
  127. package/src/skills/git-archaeology.md +1 -1
  128. package/src/skills/git-rescue.md +3 -3
  129. package/src/skills/handoff.md +4 -4
  130. package/src/skills/herdr.md +1 -1
  131. package/src/skills/ingest.md +3 -3
  132. package/src/skills/learning-path.md +1 -1
  133. package/src/skills/migrate.md +5 -5
  134. package/src/skills/opencode-theme.md +1 -1
  135. package/src/skills/parallel-agents.md +2 -2
  136. package/src/skills/pipeline.md +2 -2
  137. package/src/skills/plan.md +2 -2
  138. package/src/skills/ponytail.md +1 -1
  139. package/src/skills/profile.md +1 -1
  140. package/src/skills/prose.md +2 -2
  141. package/src/skills/prototype.md +2 -2
  142. package/src/skills/refactor.md +2 -2
  143. package/src/skills/release.md +4 -4
  144. package/src/skills/repo-map.md +5 -5
  145. package/src/skills/research.md +6 -6
  146. package/src/skills/review-response.md +3 -3
  147. package/src/skills/roast-me.md +1 -1
  148. package/src/skills/rule.md +5 -5
  149. package/src/skills/ship.md +3 -3
  150. package/src/skills/tdd.md +2 -2
  151. package/src/skills/tickets.md +1 -1
  152. package/src/skills/wayfinder.md +1 -1
  153. package/src/skills/wiki.md +4 -4
  154. package/src/skills/workflow.md +2 -2
  155. package/themes/README.md +17 -7
  156. package/themes/_TEMPLATE.json +37 -33
  157. package/themes/biker.json +37 -33
  158. package/themes/commentator.json +37 -33
  159. package/themes/cyberpunk.json +37 -33
  160. package/themes/gamer.json +37 -33
  161. package/themes/imperial.json +37 -33
  162. package/themes/joker.json +37 -33
  163. package/themes/marvin.json +37 -33
  164. package/themes/mean.json +37 -33
  165. package/themes/military.json +37 -33
  166. package/themes/neutral.json +37 -33
  167. package/themes/pirate.json +37 -33
  168. package/themes/sports.json +37 -33
  169. package/themes/verstappen.json +37 -33
  170. package/themes/wizard.json +37 -33
  171. package/web/dist/assets/{About-DX1-VTBP.js → About-C0Mk0igT.js} +1 -1
  172. package/web/dist/assets/{Activity-Dp9NaXOn.js → Activity-C4aJJVXz.js} +1 -1
  173. package/web/dist/assets/{ActivityDetail-HpOBtrXS.js → ActivityDetail-DaQ85za0.js} +1 -1
  174. package/web/dist/assets/{Diff-Ct4G3Se8.js → Diff-B3tlO2Yj.js} +1 -1
  175. package/web/dist/assets/{Doctor-DGjkZFuA.js → Doctor-BNC-5Dmo.js} +1 -1
  176. package/web/dist/assets/{Graph-b8o-S6kv.js → Graph-us0T6ZcV.js} +1 -1
  177. package/web/dist/assets/Harnesses-DAMgyfM_.js +1 -0
  178. package/web/dist/assets/Laws-rOxegJ75.js +1 -0
  179. package/web/dist/assets/{Library-BEZscyaQ.js → Library-KmwrHA1J.js} +1 -1
  180. package/web/dist/assets/{Markdown-k_LSLBGq.js → Markdown-0eQOVGSF.js} +1 -1
  181. package/web/dist/assets/{Profile-DydukTxP.js → Profile-ZU7WV6Xl.js} +1 -1
  182. package/web/dist/assets/{Rules-CIRG4Ldt.js → Rules-CtDoPhhf.js} +1 -1
  183. package/web/dist/assets/{Skills-Buoi1IBr.js → Skills-BhoOxdkD.js} +1 -1
  184. package/web/dist/assets/{StatusBadge-CE_AJttl.js → StatusBadge-CGvYVCwa.js} +1 -1
  185. package/web/dist/assets/{Themes-CI4o3gJC.js → Themes-Dr7OOkD7.js} +1 -1
  186. package/web/dist/assets/{activity-BCW7e6Cy.js → activity-B8aq3qtl.js} +1 -1
  187. package/web/dist/assets/index-2wqPDxuN.css +1 -0
  188. package/web/dist/assets/{index-B1PIx7RM.js → index-AhMzkdbI.js} +1 -1
  189. package/web/dist/assets/index-CRftEtBX.js +12 -0
  190. package/web/dist/assets/{index-Ck2iCdaC.js → index-D0lPN_qW.js} +1 -1
  191. package/web/dist/index.html +2 -2
  192. package/web/src/pages/Laws.jsx +282 -88
  193. package/web/dist/assets/Harnesses-gr3-aHBF.js +0 -1
  194. package/web/dist/assets/Laws-DTwF5tTC.js +0 -1
  195. package/web/dist/assets/index-BnTQUSUz.js +0 -12
  196. package/web/dist/assets/index-DUCsDv7z.css +0 -1
@@ -51,7 +51,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
51
51
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
52
52
  done-when) and apply it with the user's assent ({{LAW}} II).
53
53
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
54
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
54
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
55
55
  fresh read of the repo would not re-derive it. Update an existing memory over
56
56
  adding one; when in doubt, leave it out.
57
57
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -14,7 +14,7 @@ person wrote it, not a model.
14
14
  3. Active voice, human subject. Don't let inanimate things perform human actions
15
15
  ("the test wants…", "the code believes…").
16
16
  4. Be concrete: swap vague abstractions and intensifiers for the specific fact,
17
- number, or name. Drop adverbs propping up a weak verb ({{LAW}} XV — every word
17
+ number, or name. Drop adverbs propping up a weak verb ({{DOCTRINE}} process 3 — every word
18
18
  earns its place).
19
19
  5. Vary rhythm: don't run three same-length sentences back to back, and break the
20
20
  reflex "X, Y, and Z" triad when it shows up in every paragraph.
@@ -35,7 +35,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
35
35
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
36
36
  done-when) and apply it with the user's assent ({{LAW}} II).
37
37
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
38
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
38
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
39
39
  fresh read of the repo would not re-derive it. Update an existing memory over
40
40
  adding one; when in doubt, leave it out.
41
41
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -16,7 +16,7 @@ real implementation.
16
16
  2. Throwaway from day one, and marked as such: place it near the code it
17
17
  prototypes for, but name it so a casual reader sees it is not production.
18
18
  No persistence (state lives in memory), no tests, no error handling beyond
19
- what makes it runnable, no abstractions ({{LAW}} XXV).
19
+ what makes it runnable, no abstractions ({{DOCTRINE}} craft 6).
20
20
  3. One command to run, using the project's existing task runner — the user
21
21
  must be able to start it without thinking.
22
22
  4. Surface the full relevant state after every action or variant switch, so
@@ -37,7 +37,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
37
37
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
38
38
  done-when) and apply it with the user's assent ({{LAW}} II).
39
39
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
40
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
40
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
41
41
  fresh read of the repo would not re-derive it. Update an existing memory over
42
42
  adding one; when in doubt, leave it out.
43
43
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -11,7 +11,7 @@
11
11
  4. Re-run the same tests: behaviour must be identical. If they go red, revert and reduce the step.
12
12
  5. Commit the refactor on its own with the [commit {{SKILL}}](commit.md), separate from behavioural changes, so it's easy to review and revert.
13
13
 
14
- **Opportunistic cleanup (the Boy Scout rule, bounded).** While touching code for another task you may leave it cleaner — clearer names, dead-code removal, a small extraction — but only: (1) in files the task already modifies, (2) low-risk, and (3) in a *separate* commit from the behavioural change ({{LAW}} XXV keeps the task's own diff minimal). **Never refactor untested legacy code without first adding a characterisation test** (or asking). When one fix reveals another, resist the rabbit hole — leave a note rather than chase it, and know when to call it done.
14
+ **Opportunistic cleanup (the Boy Scout rule, bounded).** While touching code for another task you may leave it cleaner — clearer names, dead-code removal, a small extraction — but only: (1) in files the task already modifies, (2) low-risk, and (3) in a *separate* commit from the behavioural change ({{DOCTRINE}} craft 6 keeps the task's own diff minimal). **Never refactor untested legacy code without first adding a characterisation test** (or asking). When one fix reveals another, resist the rabbit hole — leave a note rather than chase it, and know when to call it done.
15
15
 
16
16
  **Measure before optimising.** Do not change code for performance until a profile has identified the real bottleneck with evidence ({{LAW}} III); default to the clear, simple implementation and let data, not instinct, justify the clever one.
17
17
 
@@ -25,7 +25,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
25
25
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
26
26
  done-when) and apply it with the user's assent ({{LAW}} II).
27
27
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
28
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
28
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
29
29
  fresh read of the repo would not re-derive it. Update an existing memory over
30
30
  adding one; when in doubt, leave it out.
31
31
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -11,16 +11,16 @@
11
11
  **Never ship a breaking change under a non-major bump** — honest versions are a
12
12
  promise to downstream consumers, and a quiet break is a broken one.
13
13
  2. Update the version wherever it is declared (manifest, package metadata, a VERSION
14
- constant) — find *every* occurrence so they cannot drift (universal {{LAW}} XII).
14
+ constant) — find *every* occurrence so they cannot drift ({{DOCTRINE}} craft 4).
15
15
  3. Update the changelog: a dated section for the new version summarising the
16
16
  user-visible changes, grouped (added / changed / fixed), derived from the commits
17
17
  since the last tag.
18
18
  4. Commit the version bump and changelog as one focused commit, through the
19
19
  [commit {{SKILL}}](commit.md) — summary and exact message presented for
20
- acceptance (universal {{LAW}} II, {{LAW}} XX).
20
+ acceptance (universal {{LAW}} II, {{DOCTRINE}} process 5).
21
21
  5. Tag the release (annotated, matching the version). Tagging and publishing are
22
22
  **outward-facing** (universal {{LAW}} IV), and the push itself needs explicit
23
- per-push acceptance — a release lands on a shared branch, where {{LAW}} XX
23
+ per-push acceptance — a release lands on a shared branch, where {{DOCTRINE}} process 5
24
24
  applies with extra care and grants no standing consent.
25
25
  6. With that acceptance, push the commit and the tag together; trigger or verify
26
26
  the publish/release pipeline.
@@ -36,7 +36,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
36
36
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
37
37
  done-when) and apply it with the user's assent ({{LAW}} II).
38
38
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
39
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
39
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
40
40
  fresh read of the repo would not re-derive it. Update an existing memory over
41
41
  adding one; when in doubt, leave it out.
42
42
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -6,17 +6,17 @@
6
6
 
7
7
  ## Procedure
8
8
  1. If `ARCHITECTURE.md` exists, read it first — it is the cheapest orientation
9
- (universal {{LAW}} XV).
9
+ ({{DOCTRINE}} process 3).
10
10
  2. Locate the project's own documentation — a `docs/`, `doc/`, `documentation/`,
11
11
  or `wiki/` folder at the root, or the top-level README. Note where it lives and
12
12
  what it covers, and record that in the map. Read the pages relevant to the work
13
- at hand before changing the code they describe (universal {{LAW}} XVII) — the
14
- relevant pages, not the whole tree ({{LAW}} XV).
13
+ at hand before changing the code they describe ({{DOCTRINE}} process 4) — the
14
+ relevant pages, not the whole tree ({{DOCTRINE}} process 3).
15
15
  3. If `ARCHITECTURE.md` is absent or stale, build or refresh it: entry points, the
16
16
  key directories and what each holds, how to build / test / run, external
17
17
  services, and the one or two non-obvious conventions a newcomer must know.
18
18
  4. Keep it short — a map, not documentation. Link out for detail.
19
- 5. Update it in the same change whenever structure shifts (universal {{LAW}} XI).
19
+ 5. Update it in the same change whenever structure shifts ({{DOCTRINE}} craft 3).
20
20
 
21
21
  ## Done when
22
22
  - `ARCHITECTURE.md` reflects the current structure, and a fresh agent could orient
@@ -29,7 +29,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
29
29
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
30
30
  done-when) and apply it with the user's assent ({{LAW}} II).
31
31
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
32
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
32
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
33
33
  fresh read of the repo would not re-derive it. Update an existing memory over
34
34
  adding one; when in doubt, leave it out.
35
35
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -6,18 +6,18 @@
6
6
  not in this repository or your own knowledge — facts to gather and verify from the
7
7
  open web.
8
8
 
9
- **Requires:** a host web-search or web-fetch capability ({{LAW}} XIX) — without one,
10
- stop and report it ({{LAW}} VII); never substitute recall for verified research.
9
+ **Requires:** a host web-search or web-fetch capability ({{DOCTRINE}} ops 1) — without one,
10
+ stop and report it ({{LAW}} V); never substitute recall for verified research.
11
11
 
12
12
  ## Procedure
13
13
  1. State the question and what a complete answer must contain. Break a broad question
14
14
  into specific sub-questions.
15
15
  2. Search the web — use the host's web-search tool or a connected search provider
16
- ({{LAW}} XIX). Query from several angles; one search is not research. If the host
17
- exposes no web capability at all, stop and report that ({{LAW}} VII) — never
16
+ ({{DOCTRINE}} ops 1). Query from several angles; one search is not research. If the host
17
+ exposes no web capability at all, stop and report that ({{LAW}} V) — never
18
18
  substitute your own knowledge for verified research.
19
19
  3. Open the most promising sources and extract only the relevant slice, not the whole
20
- page ({{LAW}} XV). Prefer primary and recent sources.
20
+ page ({{DOCTRINE}} process 3). Prefer primary and recent sources.
21
21
  4. Cross-check every material claim against at least two independent sources. Treat a
22
22
  single-source or unsourced claim as unverified, and say so ({{LAW}} III).
23
23
  5. Note recency — flag anything that may be out of date, and prefer the most current
@@ -35,7 +35,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
35
35
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
36
36
  done-when) and apply it with the user's assent ({{LAW}} II).
37
37
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
38
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
38
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
39
39
  fresh read of the repo would not re-derive it. Update an existing memory over
40
40
  adding one; when in doubt, leave it out.
41
41
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -10,11 +10,11 @@ are about to act on it.
10
10
  2. Classify each comment: correct, partially correct, wrong, or unclear.
11
11
  3. For anything you judge wrong or unclear, verify it against the code or a test before
12
12
  responding — do not comply blindly and do not dismiss blindly ({{LAW}} III,
13
- {{LAW}} VIII).
13
+ {{ONTOLOGY}}: {{ONT_CONDUCT}}).
14
14
  4. Respond to each comment: the change you will make and why, or a reasoned decline
15
15
  with evidence.
16
16
  5. Apply the accepted changes — one intent per commit ({{LAW}} II), each through the
17
- [commit {{SKILL}}](commit.md) so {{LAW}} XX's per-commit consent holds — then
17
+ [commit {{SKILL}}](commit.md) so {{DOCTRINE}} process 5's per-commit consent holds — then
18
18
  re-run the checks ({{LAW}} III).
19
19
  6. Surface anything the review missed that you noticed while addressing it.
20
20
 
@@ -29,7 +29,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
29
29
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
30
30
  done-when) and apply it with the user's assent ({{LAW}} II).
31
31
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
32
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
32
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
33
33
  fresh read of the repo would not re-derive it. Update an existing memory over
34
34
  adding one; when in doubt, leave it out.
35
35
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -21,7 +21,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
21
21
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
22
22
  done-when) and apply it with the user's assent ({{LAW}} II).
23
23
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
24
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
24
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
25
25
  fresh read of the repo would not re-derive it. Update an existing memory over
26
26
  adding one; when in doubt, leave it out.
27
27
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -7,7 +7,7 @@ their own ("always…", "never…", "from now on…", "make that a rule") or a d
7
7
  fact ("remember that…", "note that…", "keep in mind…"). Also fires when a
8
8
  `feedback` {{MEMORY}} lesson keeps recurring and deserves promotion, or when
9
9
  `user-rules.md` needs review — a trial rule past its date, a stale rule, a bloated
10
- set. Nothing reaches `user-rules.md` or {{MEMORY}} except through here ({{LAW}} VI).
10
+ set. Nothing reaches `user-rules.md` or {{MEMORY}} except through here ({{DOCTRINE}} process 1).
11
11
 
12
12
  ## Procedure
13
13
 
@@ -50,8 +50,8 @@ re-derived. Then take exactly one branch.
50
50
  4. **Legality.** A user rule may *tighten* a {{LAW}}, never repeal or weaken one.
51
51
  If the rule conflicts — "push without asking", "skip the tests" — refuse, cite
52
52
  the {{LAW}} it would repeal, and offer the nearest compliant version. Never write
53
- rules into the {{LAWS}} file itself: it is regenerated on every update and the
54
- edit would be silently lost.
53
+ rules into the {{ONTOLOGY}}, {{LAWS}}, or {{DOCTRINES}} files themselves: they are
54
+ regenerated on every update and the edit would be silently lost.
55
55
  5. **Destination.** Scope decides the file: a rule that holds across all the user's
56
56
  work goes to the *global* install's `user-rules.md`, a rule bound to this
57
57
  codebase to the project's. Read the target first ({{LAW}} III — the real current
@@ -84,7 +84,7 @@ adoption.
84
84
  `force`, its `type` and its `MEMORY.md` line — or a rule stands in the right
85
85
  `user-rules.md`, having survived reformulation, its own counter-example and the
86
86
  {{LAWS}}, consented to explicitly, with any promoted source memory archived. The
87
- {{LAWS}} file is untouched either way.
87
+ {{ONTOLOGY}}, {{LAWS}} and {{DOCTRINES}} files are untouched either way.
88
88
 
89
89
  ## Self-improvement
90
90
 
@@ -93,7 +93,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
93
93
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
94
94
  done-when) and apply it with the user's assent ({{LAW}} II).
95
95
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
96
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
96
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
97
97
  fresh read of the repo would not re-derive it. Update an existing memory over
98
98
  adding one; when in doubt, leave it out.
99
99
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -14,7 +14,7 @@ request or merge the branch.
14
14
  2. Confirm the branch carries only this change's commits and is rebased/updated on
15
15
  the base branch; resolve any divergence before opening.
16
16
  3. Push the branch only with the user's explicit, per-push acceptance — on every
17
- branch, feature branches included ({{LAW}} XX); present the change summary + commit
17
+ branch, feature branches included ({{DOCTRINE}} process 5); present the change summary + commit
18
18
  message and wait, and never treat an earlier approval as consent for this push.
19
19
  Opening a PR or merging is **outward-facing** — get explicit confirmation first too,
20
20
  unless already authorized (universal {{LAW}} IV).
@@ -28,7 +28,7 @@ request or merge the branch.
28
28
  be a way back (universal {{LAW}} IV); dispatch the
29
29
  [operator {{AGENT}}](../{{DIR_AGENTS}}/operator.md) when the runtime surface is
30
30
  non-trivial.
31
- 6. Make sure documentation shipped with the code (universal {{LAW}} XI) — a change
31
+ 6. Make sure documentation shipped with the code ({{DOCTRINE}} craft 3) — a change
32
32
  that alters behaviour without its docs is incomplete, not ready to ship.
33
33
 
34
34
  ## Done when
@@ -42,7 +42,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
42
42
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
43
43
  done-when) and apply it with the user's assent ({{LAW}} II).
44
44
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
45
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
45
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
46
46
  fresh read of the repo would not re-derive it. Update an existing memory over
47
47
  adding one; when in doubt, leave it out.
48
48
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
package/src/skills/tdd.md CHANGED
@@ -10,7 +10,7 @@
10
10
  Testing effort belongs on critical paths and complex logic, not every edge.
11
11
  2. Write one failing test that pins the next small slice of behaviour; be specific about the expected output. For a bug, the test reproduces it.
12
12
  3. Run it and watch it fail for the RIGHT reason — a test that passes immediately proves nothing.
13
- 4. Write the minimum code to make it pass; add nothing the test doesn't demand ({{LAW}} XXV).
13
+ 4. Write the minimum code to make it pass; add nothing the test doesn't demand ({{DOCTRINE}} craft 6).
14
14
  5. With the suite green, tidy up via the [refactor {{SKILL}}](refactor.md) — the tests are your safety net.
15
15
  6. Repeat one slice at a time, committing each green cycle with the [commit {{SKILL}}](commit.md).
16
16
 
@@ -24,7 +24,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
24
24
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
25
25
  done-when) and apply it with the user's assent ({{LAW}} II).
26
26
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
27
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
27
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
28
28
  fresh read of the repo would not re-derive it. Update an existing memory over
29
29
  adding one; when in doubt, leave it out.
30
30
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -37,7 +37,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
37
37
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
38
38
  done-when) and apply it with the user's assent ({{LAW}} II).
39
39
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
40
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
40
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
41
41
  fresh read of the repo would not re-derive it. Update an existing memory over
42
42
  adding one; when in doubt, leave it out.
43
43
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -42,7 +42,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
42
42
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
43
43
  done-when) and apply it with the user's assent ({{LAW}} II).
44
44
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
45
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
45
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
46
46
  fresh read of the repo would not re-derive it. Update an existing memory over
47
47
  adding one; when in doubt, leave it out.
48
48
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -3,7 +3,7 @@
3
3
  > {{DESC_WIKI}}
4
4
 
5
5
  **Trigger:** a task needs knowledge the user keeps in their machine-wide
6
- knowledge base (declared in `wiki.jsonc`, AGENT.md §7), or the work has produced
6
+ knowledge base (declared in `wiki.jsonc`, AGENT.md §8), or the work has produced
7
7
  a durable, cross-project fact worth writing back into it.
8
8
 
9
9
  ## Procedure
@@ -15,7 +15,7 @@ machine. Each declared wiki gives you its root `path`, its `entries`, a
15
15
 
16
16
  **Consult** (reading):
17
17
  1. Start from the wiki's `entries` — the eager ones are already in context;
18
- open lazy ones only when the task needs them (universal {{LAW}} XV).
18
+ open lazy ones only when the task needs them ({{DOCTRINE}} process 3).
19
19
  2. Navigate by the wiki's own structure: follow wikilinks (`[[Note Name]]`)
20
20
  and index notes outward from the entry points rather than globbing the
21
21
  whole vault. A targeted filename/heading search is fine; reading the tree
@@ -31,7 +31,7 @@ machine. Each declared wiki gives you its root `path`, its `entries`, a
31
31
  2. Quality bar: durable, reusable, cross-project knowledge — not session
32
32
  detail, not task state, and **never secrets** (universal {{LAW}} I).
33
33
  Knowledge that matters only to you belongs in {{MEMORY}}, not the wiki.
34
- 3. Search before creating (universal {{LAW}} XII): if a note on the topic
34
+ 3. Search before creating ({{DOCTRINE}} craft 4): if a note on the topic
35
35
  exists, extend or correct it instead of writing a duplicate.
36
36
  4. Write the note as a citizen of the graph: wikilinks to the notes it
37
37
  relates to (an orphan note is a lost note), frontmatter where the house
@@ -61,7 +61,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
61
61
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
62
62
  done-when) and apply it with the user's assent ({{LAW}} II).
63
63
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
64
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
64
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
65
65
  fresh read of the repo would not re-derive it. Update an existing memory over
66
66
  adding one; when in doubt, leave it out.
67
67
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
@@ -19,7 +19,7 @@ Saved workflows live in the host's workflows directory — on OpenCode that is `
19
19
  - **dispatch** — decompose a multi-domain goal, route each subtask to its owning capability {{AGENT}}, converge the results (the live-orchestrator shape; model-driven fallback: [parallel-agents](parallel-agents.md)).
20
20
  3. Run it: `workflow({ name, args })`. Pass the task-specific inputs (target paths, the motion, the question) as `args` — the script reads them.
21
21
  4. Read the returned summary. The full structured result and a phase-by-phase trace are written to the run's progress file; point the user at it if they want the detail.
22
- 5. Act on the result yourself — the workflow gathers and verifies, but committing, pushing, or merging stays with you ({{LAW}} XX).
22
+ 5. Act on the result yourself — the workflow gathers and verifies, but committing, pushing, or merging stays with you ({{DOCTRINE}} process 5).
23
23
 
24
24
  ## Done when
25
25
  - The right saved workflow ran to completion, its result was read, and you have carried its conclusion forward — or, where no `workflow` tool exists, the equivalent model-driven {{SKILL}} was used instead.
@@ -31,7 +31,7 @@ Close each run with one beat of reflection on the {{SKILL}} itself:
31
31
  is a flaw in this file. Propose the exact edit (trigger, procedure, or
32
32
  done-when) and apply it with the user's assent ({{LAW}} II).
33
33
  - A lesson that is *not* a flaw in this file goes to {{MEMORY}} only if it
34
- clears {{LAW}} VI's bar: it would change how a future session behaves, and a
34
+ clears {{DOCTRINE}} process 1's bar: it would change how a future session behaves, and a
35
35
  fresh read of the repo would not re-derive it. Update an existing memory over
36
36
  adding one; when in doubt, leave it out.
37
37
  - No friction, nothing learned — move on; this loop earns no ceremony. Most
package/themes/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  Each theme is a single JSON file of **voice tokens** — it controls only *how the
4
4
  agent speaks* and *how the prose in the docs reads*. It never moves a folder, a
5
- link, or a law number: structure is theme-independent (see [DESIGN.md](../DESIGN.md)).
5
+ link, a Rule numeral, an Ontology section name, or a doctrine pack slug:
6
+ structure is theme-independent (see [DESIGN.md](../DESIGN.md)).
6
7
 
7
8
  Fourteen themes ship. `neutral` is the canonical baseline (plain professional
8
9
  English); the others range from `imperial` (Warhammer 40k) to community voices.
@@ -52,10 +53,16 @@ English); the others range from `imperial` (Warhammer 40k) to community voices.
52
53
  ## What the token classes mean
53
54
 
54
55
  - **Voice** — `VOICE`, `ACCENT`, `BANNER`, `TAGLINE`, `LOADED_SIGIL`,
55
- `BENEDICTION`, the epigraphs (`EPI_*`), section intros (`INTRO_*`), law titles
56
- (`LEX_*`), capability descriptions (`DESC_*`), and `ROAST_PERSONA`.
57
- - **Themed nouns** — `LAW(S)`, `AGENT(S)`, `SKILL(S)`, `MEMORY`, `NOTEBOOK`,
58
- `VAULT`, `WIKI`. These read in your voice but must stay nouns the prose can use.
56
+ `BENEDICTION`, the epigraphs (`EPI_*`, including `EPI_ONTOLOGY` and
57
+ `EPI_DOCTRINES`), section intros (`INTRO_*`), the nine Rule titles (`LEX_*`),
58
+ the twenty-three doctrine rule titles (`DOC_<PACK>_<N>`), the four pack names
59
+ (`PACK_CRAFT`, `PACK_RIGOR`, `PACK_OPS`, `PACK_PROCESS`), capability
60
+ descriptions (`DESC_*`), and `ROAST_PERSONA`.
61
+ - **Themed nouns** — `ONTOLOGY`, `LAW(S)`, `DOCTRINE(S)`, `AGENT(S)`, `SKILL(S)`,
62
+ `MEMORY`, `NOTEBOOK`, `VAULT`, `WIKI`. These read in your voice but must stay
63
+ nouns the prose can use. ⚠ `LAW` and `DOCTRINE` must each be a **single word** —
64
+ both heading parsers match the tier noun with `\S+`, so a value with a space
65
+ makes that whole tier parse to nothing. `doctor` refuses it.
59
66
  - **Agent colours** — `AGENT_COLORS`, a flat `{agent_name: slot}` object (not a
60
67
  string) mapping each capability agent to an OpenCode *named theme slot*
61
68
  (`primary`/`secondary`/`accent`/`success`/`warning`/`error`/`info`), plus a
@@ -65,5 +72,8 @@ English); the others range from `imperial` (Warhammer 40k) to community voices.
65
72
  build time and falls back to `secondary`, with a warning, rather than ever
66
73
  reaching emitted frontmatter.
67
74
 
68
- Folder names, file paths, and law *numbers* are **never** themed — they live in
69
- the `STRUCTURE` map in the generator, laid over every render, so tooling never breaks.
75
+ Folder names, file paths, Rule *numerals*, the four Ontology section names
76
+ (Telos, Evidence, Decisions, Conduct) and the pack *slugs* used in citations
77
+ (`craft`, `rigor`, `ops`, `process`) are **never** themed — they live in the
78
+ `STRUCTURE` map in the generator, laid over every render, so tooling never breaks.
79
+ `PACK_*` themes how a pack is *named* in prose, never how it is *addressed*.
@@ -3,7 +3,9 @@
3
3
  "VOICE": "<one sentence telling the agent how to speak in this theme — tone and vocabulary only, not structure. An aggressive or comedic persona MUST end with a self-consistent line, written in the persona's own voice, establishing that the tone never compromises correctness or completeness — every finding, caveat, and step is still delivered in full>",
4
4
  "TAGLINE": "<one-line tagline shown under the AGENT.md title, in this theme's voice>",
5
5
  "LOADED_SIGIL": "<the readiness line the agent must emit before its first reply — keep it short and unmistakable>",
6
+ "EPI_ONTOLOGY": "<epigraph above the Ontology section, themed>",
6
7
  "EPI_LAWS": "<epigraph above the Laws section, themed>",
8
+ "EPI_DOCTRINES": "<epigraph above the Doctrines section, themed>",
7
9
  "PACT": "<noun for the mutual user–agent contract, e.g. Pact>",
8
10
  "EPI_PACT": "<epigraph above the Pact section, themed>",
9
11
  "EPI_AGENTS": "<epigraph above the Agents section, themed>",
@@ -77,47 +79,49 @@
77
79
  "LEX_II": "<themed title for Law II (One Intent, One Act)>",
78
80
  "LEX_III": "<themed title for Law III (Verify Before Asserting)>",
79
81
  "LEX_IV": "<themed title for Law IV (Deletion Is Deliberate)>",
80
- "LEX_V": "<themed title for Law V (Automate Repetition)>",
81
- "LEX_VI": "<themed title for Law VI (Persist Insight)>",
82
- "LEX_VII": "<themed title for Law VII (Surface Failures)>",
83
- "LEX_VIII": "<themed title for Law VIII (Substantive Exchange)>",
84
- "LEX_IX": "<themed title for Law IX (Follow the User's Tongue)>",
85
- "LEX_X": "<themed title for Law X (English Configuration)>",
86
- "LEX_XI": "<themed title for Law XI (Documentation in Step)>",
87
- "LEX_XII": "<themed title for Law XII (Search Before Creating)>",
88
- "LEX_XIII": "<themed title for Law XIII (Respect Conventions)>",
89
- "LEX_XIV": "<themed title for Law XIV (Plan Before Acting)>",
90
- "LEX_XV": "<themed title for Law XV (Context Economy)>",
91
- "LEX_XVI": "<themed title for Law XVI (Know the Workspace)>",
92
- "LEX_XVII": "<themed title for Law XVII (Read the Docs First)>",
93
- "LEX_XVIII": "<themed title for Law XVIII (Load the Project Context)>",
94
- "LEX_XIX": "<themed title for Law XIX (Tool Discovery)>",
95
- "LEX_XX": "<themed title for Law XX (Consent Before Push)>",
96
- "LEX_XXI": "<themed title for Law XXI (Commands Must Return)>",
97
- "LEX_XXII": "<themed title for Law XXII (Data, Not Orders)>",
98
- "LEX_XXIII": "<themed title for Law XXIII (Least Privilege)>",
99
- "LEX_XXIV": "<themed title for Law XXIV (Cure the Cause)>",
100
- "LEX_XXV": "<themed title for Law XXV (Smallest Viable Diff)>",
101
- "LEX_XXVI": "<themed title for Law XXVI (Idempotent by Default)>",
102
- "LEX_XXVII": "<themed title for Law XXVII (Honest Tests)>",
103
- "LEX_XXVIII": "<themed title for Law XXVIII (Bound the Loop)>",
104
- "LEX_XXIX": "<themed title for Law XXIX (Calibrated Honesty)>",
105
- "LEX_XXX": "<themed title for Law XXX (Correctness Over Agreement)>",
106
- "LEX_XXXI": "<themed title for Law XXXI (Surface the Trade-offs)>",
107
- "LEX_XXXII": "<themed title for Law XXXII (Edit the Source, Not the Surface)>",
108
- "LEX_XXXIII": "<themed title for Law XXXIII (Complete the Teardown)>",
109
- "LEX_XXXIV": "<themed title for Law XXXIV (Record the Probe, Not the Snapshot)>",
110
- "LEX_XXXV": "<themed title for Law XXXV (Cover and Verify)>",
111
- "LEX_XXXVI": "<themed title for Law XXXVI (External Gate)>",
112
- "LEX_XXXVII": "<themed title for Law XXXVII (Restart Is Not Reload)>",
82
+ "LEX_V": "<themed title for Law V (Surface Failures)>",
83
+ "LEX_VI": "<themed title for Law VI (Data, Not Orders)>",
84
+ "LEX_VII": "<themed title for Law VII (Least Privilege)>",
85
+ "LEX_VIII": "<themed title for Law VIII (Cure the Cause)>",
86
+ "LEX_IX": "<themed title for Law IX (External Gate)>",
87
+ "PACK_CRAFT": "<display name of the craft doctrine pack — how code is written>",
88
+ "PACK_RIGOR": "<display name of the rigor doctrine pack — how work is proven>",
89
+ "PACK_OPS": "<display name of the ops doctrine pack — how the machine is driven>",
90
+ "PACK_PROCESS": "<display name of the process doctrine pack — how a session runs>",
91
+ "DOC_CRAFT_1": "<themed title for craft doctrine 1 (Automate Repetition)>",
92
+ "DOC_CRAFT_2": "<themed title for craft doctrine 2 (English Configuration)>",
93
+ "DOC_CRAFT_3": "<themed title for craft doctrine 3 (Documentation in Step)>",
94
+ "DOC_CRAFT_4": "<themed title for craft doctrine 4 (Search Before Creating)>",
95
+ "DOC_CRAFT_5": "<themed title for craft doctrine 5 (Respect Conventions)>",
96
+ "DOC_CRAFT_6": "<themed title for craft doctrine 6 (Smallest Viable Diff)>",
97
+ "DOC_RIGOR_1": "<themed title for rigor doctrine 1 (Idempotent by Default)>",
98
+ "DOC_RIGOR_2": "<themed title for rigor doctrine 2 (Honest Tests)>",
99
+ "DOC_RIGOR_3": "<themed title for rigor doctrine 3 (Cover and Verify)>",
100
+ "DOC_RIGOR_4": "<themed title for rigor doctrine 4 (Prove the Gate)>",
101
+ "DOC_OPS_1": "<themed title for ops doctrine 1 (Tool Discovery)>",
102
+ "DOC_OPS_2": "<themed title for ops doctrine 2 (Commands Must Return)>",
103
+ "DOC_OPS_3": "<themed title for ops doctrine 3 (Edit the Source, Not the Surface)>",
104
+ "DOC_OPS_4": "<themed title for ops doctrine 4 (Complete the Teardown)>",
105
+ "DOC_OPS_5": "<themed title for ops doctrine 5 (Record the Probe, Not the Snapshot)>",
106
+ "DOC_OPS_6": "<themed title for ops doctrine 6 (Restart Is Not Reload)>",
107
+ "DOC_PROCESS_1": "<themed title for process doctrine 1 (Persist Insight)>",
108
+ "DOC_PROCESS_2": "<themed title for process doctrine 2 (Plan Before Acting)>",
109
+ "DOC_PROCESS_3": "<themed title for process doctrine 3 (Context Economy)>",
110
+ "DOC_PROCESS_4": "<themed title for process doctrine 4 (Read the Docs First)>",
111
+ "DOC_PROCESS_5": "<themed title for process doctrine 5 (Consent Before Push)>",
112
+ "DOC_PROCESS_6": "<themed title for process doctrine 6 (Bound the Loop)>",
113
+ "DOC_PROCESS_7": "<themed title for process doctrine 7 (Codes That Persist)>",
113
114
  "INTRO_DOC": "<themed intro: this file is the entry point an AI agent reads in this repo>",
114
115
  "INTRO_AGENTS": "<themed intro to the Agents section — delegate focused work to a specialist>",
115
116
  "INTRO_SKILLS": "<themed intro to the Skills section — run the written procedure before improvising>",
116
117
  "INTRO_WORKSPACE": "<themed intro to the Workspace section — the install dir is shared>",
117
118
  "INTRO_SCRIPTS": "<themed intro to the Scripts section — everything above works on self-discipline alone>",
118
119
  "BANNER": "<multi-line ASCII banner shown at the top of AGENT.md; use \\n for line breaks>",
120
+ "ONTOLOGY": "<noun for the always-on worldview tier, e.g. Ontology — a bare noun with no leading article, since it is read inline mid-sentence>",
119
121
  "LAW": "<singular noun for a rule in this theme, e.g. Rule / Dictate / Law>",
120
122
  "LAWS": "<plural of LAW>",
123
+ "DOCTRINE": "<SINGLE-WORD singular noun for one optional doctrine rule, e.g. Doctrine — a space in this value breaks the heading parser silently>",
124
+ "DOCTRINES": "<plural of DOCTRINE — the tier/section noun>",
121
125
  "AGENT": "<singular noun for an agent in this theme, e.g. Agent / Adept>",
122
126
  "AGENTS": "<plural of AGENT>",
123
127
  "SKILL": "<singular noun for a skill in this theme, e.g. Skill / Rite>",