arscontexta 0.6.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 (418) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/.claude-plugin/plugin.json +22 -0
  3. package/README.md +683 -0
  4. package/agents/knowledge-guide.md +49 -0
  5. package/bin/cli.mjs +66 -0
  6. package/generators/agents-md.md +240 -0
  7. package/generators/claude-md.md +379 -0
  8. package/generators/features/atomic-notes.md +124 -0
  9. package/generators/features/ethical-guardrails.md +58 -0
  10. package/generators/features/graph-analysis.md +188 -0
  11. package/generators/features/helper-functions.md +92 -0
  12. package/generators/features/maintenance.md +164 -0
  13. package/generators/features/methodology-knowledge.md +70 -0
  14. package/generators/features/mocs.md +144 -0
  15. package/generators/features/multi-domain.md +61 -0
  16. package/generators/features/personality.md +71 -0
  17. package/generators/features/processing-pipeline.md +428 -0
  18. package/generators/features/schema.md +149 -0
  19. package/generators/features/self-evolution.md +229 -0
  20. package/generators/features/self-space.md +78 -0
  21. package/generators/features/semantic-search.md +99 -0
  22. package/generators/features/session-rhythm.md +85 -0
  23. package/generators/features/templates.md +85 -0
  24. package/generators/features/wiki-links.md +88 -0
  25. package/generators/soul-md.md +121 -0
  26. package/hooks/hooks.json +45 -0
  27. package/hooks/scripts/auto-commit.sh +44 -0
  28. package/hooks/scripts/session-capture.sh +35 -0
  29. package/hooks/scripts/session-orient.sh +86 -0
  30. package/hooks/scripts/write-validate.sh +42 -0
  31. package/methodology/AI shifts knowledge systems from externalizing memory to externalizing attention.md +59 -0
  32. package/methodology/BM25 retrieval fails on full-length descriptions because query term dilution reduces match scores.md +39 -0
  33. package/methodology/IBIS framework maps claim-based architecture to structured argumentation.md +58 -0
  34. package/methodology/LLM attention degrades as context fills.md +49 -0
  35. package/methodology/MOC construction forces synthesis that automated generation from metadata cannot replicate.md +49 -0
  36. package/methodology/MOC maintenance investment compounds because orientation savings multiply across every future session.md +41 -0
  37. package/methodology/MOCs are attention management devices not just organizational tools.md +51 -0
  38. package/methodology/PKM failure follows a predictable cycle.md +50 -0
  39. package/methodology/ThreadMode to DocumentMode transformation is the core value creation step.md +52 -0
  40. package/methodology/WIP limits force processing over accumulation.md +53 -0
  41. package/methodology/Zeigarnik effect validates capture-first philosophy because open loops drain attention.md +42 -0
  42. package/methodology/academic research uses structured extraction with cross-source synthesis.md +566 -0
  43. package/methodology/adapt the four-phase processing pipeline to domain-specific throughput needs.md +197 -0
  44. package/methodology/agent notes externalize navigation intuition that search cannot discover and traversal cannot reconstruct.md +48 -0
  45. package/methodology/agent self-memory should be architecturally separate from user knowledge systems.md +48 -0
  46. package/methodology/agent session boundaries create natural automation checkpoints that human-operated systems lack.md +56 -0
  47. package/methodology/agent-cognition.md +107 -0
  48. package/methodology/agents are simultaneously methodology executors and subjects creating a unique trust asymmetry.md +66 -0
  49. package/methodology/aspect-oriented programming solved the same cross-cutting concern problem that hooks solve.md +39 -0
  50. package/methodology/associative ontologies beat hierarchical taxonomies because heterarchy adapts while hierarchy brittles.md +53 -0
  51. package/methodology/attention residue may have a minimum granularity that cannot be subdivided.md +46 -0
  52. package/methodology/auto-commit hooks eliminate prospective memory failures by converting remember-to-act into guaranteed execution.md +47 -0
  53. package/methodology/automated detection is always safe because it only reads state while automated remediation risks content corruption.md +42 -0
  54. package/methodology/automation should be retired when its false positive rate exceeds its true positive rate or it catches zero issues.md +56 -0
  55. package/methodology/backlinks implicitly define notes by revealing usage context.md +35 -0
  56. package/methodology/backward maintenance asks what would be different if written today.md +62 -0
  57. package/methodology/balance onboarding enforcement and questions to prevent premature complexity.md +229 -0
  58. package/methodology/basic level categorization determines optimal MOC granularity.md +51 -0
  59. package/methodology/batching by context similarity reduces switching costs in agent processing.md +43 -0
  60. package/methodology/behavioral anti-patterns matter more than tool selection.md +42 -0
  61. package/methodology/betweenness centrality identifies bridge notes connecting disparate knowledge domains.md +57 -0
  62. package/methodology/blueprints that teach construction outperform downloads that provide pre-built code for platform-dependent modules.md +42 -0
  63. package/methodology/bootstrapping principle enables self-improving systems.md +62 -0
  64. package/methodology/build automatic memory through cognitive offloading and session handoffs.md +285 -0
  65. package/methodology/capture the reaction to content not just the content itself.md +41 -0
  66. package/methodology/claims must be specific enough to be wrong.md +36 -0
  67. package/methodology/closure rituals create clean breaks that prevent attention residue bleed.md +44 -0
  68. package/methodology/cognitive offloading is the architectural foundation for vault design.md +46 -0
  69. package/methodology/cognitive outsourcing risk in agent-operated systems.md +55 -0
  70. package/methodology/coherence maintains consistency despite inconsistent inputs.md +96 -0
  71. package/methodology/coherent architecture emerges from wiki links spreading activation and small-world topology.md +48 -0
  72. package/methodology/community detection algorithms can inform when MOCs should split or merge.md +52 -0
  73. package/methodology/complete navigation requires four complementary types that no single mechanism provides.md +43 -0
  74. package/methodology/complex systems evolve from simple working systems.md +59 -0
  75. package/methodology/composable knowledge architecture builds systems from independent toggleable modules not monolithic templates.md +61 -0
  76. package/methodology/compose multi-domain systems through separate templates and shared graph.md +372 -0
  77. package/methodology/concept-orientation beats source-orientation for cross-domain connections.md +51 -0
  78. package/methodology/confidence thresholds gate automated action between the mechanical and judgment zones.md +50 -0
  79. package/methodology/configuration dimensions interact so choices in one create pressure on others.md +58 -0
  80. package/methodology/configuration paralysis emerges when derivation surfaces too many decisions.md +44 -0
  81. package/methodology/context files function as agent operating systems through self-referential self-extension.md +46 -0
  82. package/methodology/context phrase clarity determines how deep a navigation hierarchy can scale.md +46 -0
  83. package/methodology/continuous small-batch processing eliminates review dread.md +48 -0
  84. package/methodology/controlled disorder engineers serendipity through semantic rather than topical linking.md +51 -0
  85. package/methodology/creative writing uses worldbuilding consistency with character tracking.md +672 -0
  86. package/methodology/cross-links between MOC territories indicate creative leaps and integration depth.md +43 -0
  87. package/methodology/dangling links reveal which notes want to exist.md +62 -0
  88. package/methodology/data exit velocity measures how quickly content escapes vendor lock-in.md +74 -0
  89. package/methodology/decontextualization risk means atomicity may strip meaning that cannot be recovered.md +48 -0
  90. package/methodology/dense interlinked research claims enable derivation while sparse references only enable templating.md +47 -0
  91. package/methodology/dependency resolution through topological sort makes module composition transparent and verifiable.md +56 -0
  92. package/methodology/derivation generates knowledge systems from composable research claims not template customization.md +63 -0
  93. package/methodology/derivation-engine.md +27 -0
  94. package/methodology/derived systems follow a seed-evolve-reseed lifecycle.md +56 -0
  95. package/methodology/description quality for humans diverges from description quality for keyword search.md +73 -0
  96. package/methodology/descriptions are retrieval filters not summaries.md +112 -0
  97. package/methodology/design MOCs as attention management devices with lifecycle governance.md +318 -0
  98. package/methodology/design-dimensions.md +66 -0
  99. package/methodology/digital mutability enables note evolution that physical permanence forbids.md +54 -0
  100. package/methodology/discovery-retrieval.md +48 -0
  101. package/methodology/distinctiveness scoring treats description quality as measurable.md +69 -0
  102. package/methodology/does agent processing recover what fast capture loses.md +43 -0
  103. package/methodology/domain-compositions.md +37 -0
  104. package/methodology/dual-coding with visual elements could enhance agent traversal.md +55 -0
  105. package/methodology/each module must be describable in one sentence under 200 characters or it does too many things.md +45 -0
  106. package/methodology/each new note compounds value by creating traversal paths.md +55 -0
  107. package/methodology/eight configuration dimensions parameterize the space of possible knowledge systems.md +56 -0
  108. package/methodology/elaborative encoding is the quality gate for new notes.md +55 -0
  109. package/methodology/enforce schema with graduated strictness across capture processing and query zones.md +221 -0
  110. package/methodology/enforcing atomicity can create paralysis when ideas resist decomposition.md +43 -0
  111. package/methodology/engineering uses technical decision tracking with architectural memory.md +766 -0
  112. package/methodology/every knowledge domain shares a four-phase processing skeleton that diverges only in the process step.md +53 -0
  113. package/methodology/evolution observations provide actionable signals for system adaptation.md +67 -0
  114. package/methodology/external memory shapes cognition more than base model.md +60 -0
  115. package/methodology/faceted classification treats notes as multi-dimensional objects rather than folder contents.md +65 -0
  116. package/methodology/failure-modes.md +27 -0
  117. package/methodology/false universalism applies same processing logic regardless of domain.md +49 -0
  118. package/methodology/federated wiki pattern enables multi-agent divergence as feature not bug.md +59 -0
  119. package/methodology/flat files break at retrieval scale.md +75 -0
  120. package/methodology/forced engagement produces weak connections.md +48 -0
  121. package/methodology/four abstraction layers separate platform-agnostic from platform-dependent knowledge system features.md +47 -0
  122. package/methodology/fresh context per task preserves quality better than chaining phases.md +44 -0
  123. package/methodology/friction reveals architecture.md +63 -0
  124. package/methodology/friction-driven module adoption prevents configuration debt by adding complexity only at pain points.md +48 -0
  125. package/methodology/gardening cycle implements tend prune fertilize operations.md +41 -0
  126. package/methodology/generation effect gate blocks processing without transformation.md +40 -0
  127. package/methodology/goal-driven memory orchestration enables autonomous domain learning through directed compute allocation.md +41 -0
  128. package/methodology/good descriptions layer heuristic then mechanism then implication.md +57 -0
  129. package/methodology/graph-structure.md +65 -0
  130. package/methodology/guided notes might outperform post-hoc structuring for high-volume capture.md +37 -0
  131. package/methodology/health wellness uses symptom-trigger correlation with multi-dimensional tracking.md +819 -0
  132. package/methodology/hook composition creates emergent methodology from independent single-concern components.md +47 -0
  133. package/methodology/hook enforcement guarantees quality while instruction enforcement merely suggests it.md +51 -0
  134. package/methodology/hook-driven learning loops create self-improving methodology through observation accumulation.md +62 -0
  135. package/methodology/hooks are the agent habit system that replaces the missing basal ganglia.md +40 -0
  136. package/methodology/hooks cannot replace genuine cognitive engagement yet more automation is always tempting.md +87 -0
  137. package/methodology/hooks enable context window efficiency by delegating deterministic checks to external processes.md +47 -0
  138. package/methodology/idempotent maintenance operations are safe to automate because running them twice produces the same result as running them once.md +44 -0
  139. package/methodology/implement condition-based maintenance triggers for derived systems.md +255 -0
  140. package/methodology/implicit dependencies create distributed monoliths that fail silently across configurations.md +58 -0
  141. package/methodology/implicit knowledge emerges from traversal.md +55 -0
  142. package/methodology/incremental formalization happens through repeated touching of old notes.md +60 -0
  143. package/methodology/incremental reading enables cross-source connection finding.md +39 -0
  144. package/methodology/index.md +32 -0
  145. package/methodology/inline links carry richer relationship data than metadata fields.md +91 -0
  146. package/methodology/insight accretion differs from productivity in knowledge systems.md +41 -0
  147. package/methodology/intermediate packets enable assembly over creation.md +52 -0
  148. package/methodology/intermediate representation pattern enables reliable vault operations beyond regex.md +62 -0
  149. package/methodology/justification chains enable forward backward and evolution reasoning about configuration decisions.md +46 -0
  150. package/methodology/knowledge system architecture is parameterized by platform capabilities not fixed by methodology.md +51 -0
  151. package/methodology/knowledge systems become communication partners through complexity and memory humans cannot sustain.md +47 -0
  152. package/methodology/knowledge systems share universal operations and structural components across all methodology traditions.md +46 -0
  153. package/methodology/legal case management uses precedent chains with regulatory change propagation.md +892 -0
  154. package/methodology/live index via periodic regeneration keeps discovery current.md +58 -0
  155. package/methodology/local-first file formats are inherently agent-native.md +69 -0
  156. package/methodology/logic column pattern separates reasoning from procedure.md +35 -0
  157. package/methodology/maintenance operations are more universal than creative pipelines because structural health is domain-invariant.md +47 -0
  158. package/methodology/maintenance scheduling frequency should match consequence speed not detection capability.md +50 -0
  159. package/methodology/maintenance targeting should prioritize mechanism and theory notes.md +26 -0
  160. package/methodology/maintenance-patterns.md +72 -0
  161. package/methodology/markdown plus YAML plus ripgrep implements a queryable graph database without infrastructure.md +55 -0
  162. package/methodology/maturity field enables agent context prioritization.md +33 -0
  163. package/methodology/memory-architecture.md +27 -0
  164. package/methodology/metacognitive confidence can diverge from retrieval capability.md +42 -0
  165. package/methodology/metadata reduces entropy enabling precision over recall.md +91 -0
  166. package/methodology/methodology development should follow the trajectory from documentation to skill to hook as understanding hardens.md +80 -0
  167. package/methodology/methodology traditions are named points in a shared configuration space not competing paradigms.md +64 -0
  168. package/methodology/mnemonic medium embeds verification into navigation.md +46 -0
  169. package/methodology/module communication through shared YAML fields creates loose coupling without direct dependencies.md +44 -0
  170. package/methodology/module deactivation must account for structural artifacts that survive the toggle.md +49 -0
  171. package/methodology/multi-domain systems compose through separate templates and shared graph.md +61 -0
  172. package/methodology/multi-domain-composition.md +27 -0
  173. package/methodology/narrow folksonomy optimizes for single-operator retrieval unlike broad consensus tagging.md +53 -0
  174. package/methodology/navigation infrastructure passes through distinct scaling regimes that require qualitative strategy shifts.md +48 -0
  175. package/methodology/navigational vertigo emerges in pure association systems without local hierarchy.md +54 -0
  176. package/methodology/note titles should function as APIs enabling sentence transclusion.md +51 -0
  177. package/methodology/note-design.md +57 -0
  178. package/methodology/notes are skills /342/200/224 curated knowledge injected when relevant.md" +62 -0
  179. package/methodology/notes function as cognitive anchors that stabilize attention during complex tasks.md +41 -0
  180. package/methodology/novel domains derive by mapping knowledge type to closest reference domain then adapting.md +50 -0
  181. package/methodology/nudge theory explains graduated hook enforcement as choice architecture for agents.md +59 -0
  182. package/methodology/observation and tension logs function as dead-letter queues for failed automation.md +51 -0
  183. package/methodology/operational memory and knowledge memory serve different functions in agent architecture.md +48 -0
  184. package/methodology/operational wisdom requires contextual observation.md +52 -0
  185. package/methodology/orchestrated vault creation transforms arscontexta from tool to autonomous knowledge factory.md +40 -0
  186. package/methodology/organic emergence versus active curation creates a fundamental vault governance tension.md +68 -0
  187. package/methodology/orphan notes are seeds not failures.md +38 -0
  188. package/methodology/over-automation corrupts quality when hooks encode judgment rather than verification.md +62 -0
  189. package/methodology/people relationships uses Dunbar-layered graphs with interaction tracking.md +659 -0
  190. package/methodology/personal assistant uses life area management with review automation.md +610 -0
  191. package/methodology/platform adapter translation is semantic not mechanical because hook event meanings differ.md +40 -0
  192. package/methodology/platform capability tiers determine which knowledge system features can be implemented.md +48 -0
  193. package/methodology/platform fragmentation means identical conceptual operations require different implementations across agent environments.md +44 -0
  194. package/methodology/premature complexity is the most common derivation failure mode.md +45 -0
  195. package/methodology/prevent domain-specific failure modes through the vulnerability matrix.md +336 -0
  196. package/methodology/processing effort should follow retrieval demand.md +57 -0
  197. package/methodology/processing-workflows.md +75 -0
  198. package/methodology/product management uses feedback pipelines with experiment tracking.md +789 -0
  199. package/methodology/productivity porn risk in meta-system building.md +30 -0
  200. package/methodology/programmable notes could enable property-triggered workflows.md +64 -0
  201. package/methodology/progressive disclosure means reading right not reading less.md +69 -0
  202. package/methodology/progressive schema validates only what active modules require not the full system schema.md +49 -0
  203. package/methodology/project management uses decision tracking with stakeholder context.md +776 -0
  204. package/methodology/propositional link semantics transform wiki links from associative to reasoned.md +87 -0
  205. package/methodology/prospective memory requires externalization.md +53 -0
  206. package/methodology/provenance tracks where beliefs come from.md +62 -0
  207. package/methodology/queries evolve during search so agents should checkpoint.md +35 -0
  208. package/methodology/question-answer metadata enables inverted search patterns.md +39 -0
  209. package/methodology/random note resurfacing prevents write-only memory.md +33 -0
  210. package/methodology/reconciliation loops that compare desired state to actual state enable drift correction without continuous monitoring.md +59 -0
  211. package/methodology/reflection synthesizes existing notes into new insight.md +100 -0
  212. package/methodology/retrieval utility should drive design over capture completeness.md +69 -0
  213. package/methodology/retrieval verification loop tests description quality at scale.md +81 -0
  214. package/methodology/role field makes graph structure explicit.md +94 -0
  215. package/methodology/scaffolding enables divergence that fine-tuning cannot.md +67 -0
  216. package/methodology/schema enforcement via validation agents enables soft consistency.md +60 -0
  217. package/methodology/schema evolution follows observe-then-formalize not design-then-enforce.md +65 -0
  218. package/methodology/schema field names are the only domain specific element in the universal note pattern.md +46 -0
  219. package/methodology/schema fields should use domain-native vocabulary not abstract terminology.md +47 -0
  220. package/methodology/schema templates reduce cognitive overhead at capture time.md +55 -0
  221. package/methodology/schema validation hooks externalize inhibitory control that degrades under cognitive load.md +48 -0
  222. package/methodology/schema-enforcement.md +27 -0
  223. package/methodology/self-extension requires context files to contain platform operations knowledge not just methodology.md +47 -0
  224. package/methodology/sense-making vs storage does compression lose essential nuance.md +73 -0
  225. package/methodology/session boundary hooks implement cognitive bookends for orientation and reflection.md +60 -0
  226. package/methodology/session handoff creates continuity without persistent memory.md +43 -0
  227. package/methodology/session outputs are packets for future selves.md +43 -0
  228. package/methodology/session transcript mining enables experiential validation that structural tests cannot provide.md +38 -0
  229. package/methodology/skill context budgets constrain knowledge system complexity on agent platforms.md +52 -0
  230. package/methodology/skills encode methodology so manual execution bypasses quality gates.md +50 -0
  231. package/methodology/small-world topology requires hubs and dense local links.md +99 -0
  232. package/methodology/source attribution enables tracing claims to foundations.md +38 -0
  233. package/methodology/spaced repetition scheduling could optimize vault maintenance.md +44 -0
  234. package/methodology/spreading activation models how agents should traverse.md +79 -0
  235. package/methodology/stale navigation actively misleads because agents trust curated maps completely.md +43 -0
  236. package/methodology/stigmergy coordinates agents through environmental traces without direct communication.md +62 -0
  237. package/methodology/storage versus thinking distinction determines which tool patterns apply.md +56 -0
  238. package/methodology/structure enables navigation without reading everything.md +52 -0
  239. package/methodology/structure without processing provides no value.md +56 -0
  240. package/methodology/student learning uses prerequisite graphs with spaced retrieval.md +770 -0
  241. package/methodology/summary coherence tests composability before filing.md +37 -0
  242. package/methodology/tag rot applies to wiki links because titles serve as both identifier and display text.md +50 -0
  243. package/methodology/temporal media must convert to spatial text for agent traversal.md +43 -0
  244. package/methodology/temporal processing priority creates age-based inbox urgency.md +45 -0
  245. package/methodology/temporal separation of capture and processing preserves context freshness.md +39 -0
  246. package/methodology/ten universal primitives form the kernel of every viable agent knowledge system.md +162 -0
  247. package/methodology/testing effect could enable agent knowledge verification.md +38 -0
  248. package/methodology/the AgentSkills standard embodies progressive disclosure at the skill level.md +40 -0
  249. package/methodology/the derivation engine improves recursively as deployed systems generate observations.md +49 -0
  250. package/methodology/the determinism boundary separates hook methodology from skill methodology.md +46 -0
  251. package/methodology/the fix-versus-report decision depends on determinism reversibility and accumulated trust.md +45 -0
  252. package/methodology/the generation effect requires active transformation not just storage.md +57 -0
  253. package/methodology/the no wrong patches guarantee ensures any valid module combination produces a valid system.md +58 -0
  254. package/methodology/the system is the argument.md +46 -0
  255. package/methodology/the vault constitutes identity for agents.md +86 -0
  256. package/methodology/the vault methodology transfers because it encodes cognitive science not domain specifics.md +47 -0
  257. package/methodology/therapy journal uses warm personality with pattern detection for emotional processing.md +584 -0
  258. package/methodology/three capture schools converge through agent-mediated synthesis.md +55 -0
  259. package/methodology/three concurrent maintenance loops operate at different timescales to catch different classes of problems.md +56 -0
  260. package/methodology/throughput matters more than accumulation.md +58 -0
  261. package/methodology/title as claim enables traversal as reasoning.md +50 -0
  262. package/methodology/topological organization beats temporal for knowledge work.md +52 -0
  263. package/methodology/trading uses conviction tracking with thesis-outcome correlation.md +699 -0
  264. package/methodology/trails transform ephemeral navigation into persistent artifacts.md +39 -0
  265. package/methodology/transform universal vocabulary to domain-native language through six levels.md +259 -0
  266. package/methodology/type field enables structured queries without folder hierarchies.md +53 -0
  267. package/methodology/use-case presets dissolve the tension between composability and simplicity.md +44 -0
  268. package/methodology/vault conventions may impose hidden rigidity on thinking.md +44 -0
  269. package/methodology/verbatim risk applies to agents too.md +31 -0
  270. package/methodology/vibe notetaking is the emerging industry consensus for AI-native self-organization.md +56 -0
  271. package/methodology/vivid memories need verification.md +45 -0
  272. package/methodology/vocabulary-transformation.md +27 -0
  273. package/methodology/voice capture is the highest-bandwidth channel for agent-delegated knowledge systems.md +45 -0
  274. package/methodology/wiki links are the digital evolution of analog indexing.md +73 -0
  275. package/methodology/wiki links as social contract transforms agents into stewards of incomplete references.md +52 -0
  276. package/methodology/wiki links create navigation paths that shape retrieval.md +63 -0
  277. package/methodology/wiki links implement GraphRAG without the infrastructure.md +101 -0
  278. package/methodology/writing for audience blocks authentic creation.md +22 -0
  279. package/methodology/you operate a system that takes notes.md +79 -0
  280. package/openclaw/SKILL.md +110 -0
  281. package/package.json +45 -0
  282. package/platforms/README.md +51 -0
  283. package/platforms/claude-code/generator.md +61 -0
  284. package/platforms/claude-code/hooks/README.md +186 -0
  285. package/platforms/claude-code/hooks/auto-commit.sh.template +38 -0
  286. package/platforms/claude-code/hooks/session-capture.sh.template +72 -0
  287. package/platforms/claude-code/hooks/session-orient.sh.template +189 -0
  288. package/platforms/claude-code/hooks/write-validate.sh.template +106 -0
  289. package/platforms/openclaw/generator.md +82 -0
  290. package/platforms/openclaw/hooks/README.md +89 -0
  291. package/platforms/openclaw/hooks/bootstrap.ts.template +224 -0
  292. package/platforms/openclaw/hooks/command-new.ts.template +165 -0
  293. package/platforms/openclaw/hooks/heartbeat.ts.template +214 -0
  294. package/platforms/shared/features/README.md +70 -0
  295. package/platforms/shared/skill-blocks/graph.md +145 -0
  296. package/platforms/shared/skill-blocks/learn.md +119 -0
  297. package/platforms/shared/skill-blocks/next.md +131 -0
  298. package/platforms/shared/skill-blocks/pipeline.md +326 -0
  299. package/platforms/shared/skill-blocks/ralph.md +616 -0
  300. package/platforms/shared/skill-blocks/reduce.md +1142 -0
  301. package/platforms/shared/skill-blocks/refactor.md +129 -0
  302. package/platforms/shared/skill-blocks/reflect.md +780 -0
  303. package/platforms/shared/skill-blocks/remember.md +524 -0
  304. package/platforms/shared/skill-blocks/rethink.md +574 -0
  305. package/platforms/shared/skill-blocks/reweave.md +680 -0
  306. package/platforms/shared/skill-blocks/seed.md +320 -0
  307. package/platforms/shared/skill-blocks/stats.md +145 -0
  308. package/platforms/shared/skill-blocks/tasks.md +171 -0
  309. package/platforms/shared/skill-blocks/validate.md +323 -0
  310. package/platforms/shared/skill-blocks/verify.md +562 -0
  311. package/platforms/shared/templates/README.md +35 -0
  312. package/presets/experimental/categories.yaml +1 -0
  313. package/presets/experimental/preset.yaml +38 -0
  314. package/presets/experimental/starter/README.md +7 -0
  315. package/presets/experimental/vocabulary.yaml +7 -0
  316. package/presets/personal/categories.yaml +7 -0
  317. package/presets/personal/preset.yaml +41 -0
  318. package/presets/personal/starter/goals.md +21 -0
  319. package/presets/personal/starter/index.md +17 -0
  320. package/presets/personal/starter/life-areas.md +21 -0
  321. package/presets/personal/starter/people.md +21 -0
  322. package/presets/personal/vocabulary.yaml +32 -0
  323. package/presets/research/categories.yaml +8 -0
  324. package/presets/research/preset.yaml +41 -0
  325. package/presets/research/starter/index.md +17 -0
  326. package/presets/research/starter/methods.md +21 -0
  327. package/presets/research/starter/open-questions.md +21 -0
  328. package/presets/research/vocabulary.yaml +33 -0
  329. package/reference/AUDIT-REPORT.md +238 -0
  330. package/reference/claim-map.md +172 -0
  331. package/reference/components.md +327 -0
  332. package/reference/conversation-patterns.md +542 -0
  333. package/reference/derivation-validation.md +649 -0
  334. package/reference/dimension-claim-map.md +134 -0
  335. package/reference/evolution-lifecycle.md +297 -0
  336. package/reference/failure-modes.md +235 -0
  337. package/reference/interaction-constraints.md +204 -0
  338. package/reference/kernel.yaml +242 -0
  339. package/reference/methodology.md +283 -0
  340. package/reference/open-questions.md +279 -0
  341. package/reference/personality-layer.md +302 -0
  342. package/reference/self-space.md +299 -0
  343. package/reference/semantic-vs-keyword.md +288 -0
  344. package/reference/session-lifecycle.md +298 -0
  345. package/reference/templates/base-note.md +16 -0
  346. package/reference/templates/companion-note.md +70 -0
  347. package/reference/templates/creative-note.md +16 -0
  348. package/reference/templates/learning-note.md +16 -0
  349. package/reference/templates/life-note.md +16 -0
  350. package/reference/templates/moc.md +26 -0
  351. package/reference/templates/relationship-note.md +17 -0
  352. package/reference/templates/research-note.md +19 -0
  353. package/reference/templates/session-log.md +24 -0
  354. package/reference/templates/therapy-note.md +16 -0
  355. package/reference/test-fixtures/edge-case-constraints.md +148 -0
  356. package/reference/test-fixtures/multi-domain.md +164 -0
  357. package/reference/test-fixtures/novel-domain-gaming.md +138 -0
  358. package/reference/test-fixtures/research-minimal.md +102 -0
  359. package/reference/test-fixtures/therapy-full.md +155 -0
  360. package/reference/testing-milestones.md +1087 -0
  361. package/reference/three-spaces.md +363 -0
  362. package/reference/tradition-presets.md +203 -0
  363. package/reference/use-case-presets.md +341 -0
  364. package/reference/validate-kernel.sh +432 -0
  365. package/reference/vocabulary-transforms.md +85 -0
  366. package/scripts/sync-thinking.sh +147 -0
  367. package/skill-sources/graph/SKILL.md +567 -0
  368. package/skill-sources/graph/skill.json +17 -0
  369. package/skill-sources/learn/SKILL.md +254 -0
  370. package/skill-sources/learn/skill.json +17 -0
  371. package/skill-sources/next/SKILL.md +407 -0
  372. package/skill-sources/next/skill.json +17 -0
  373. package/skill-sources/pipeline/SKILL.md +314 -0
  374. package/skill-sources/pipeline/skill.json +17 -0
  375. package/skill-sources/ralph/SKILL.md +604 -0
  376. package/skill-sources/ralph/skill.json +17 -0
  377. package/skill-sources/reduce/SKILL.md +1113 -0
  378. package/skill-sources/reduce/skill.json +17 -0
  379. package/skill-sources/refactor/SKILL.md +448 -0
  380. package/skill-sources/refactor/skill.json +17 -0
  381. package/skill-sources/reflect/SKILL.md +747 -0
  382. package/skill-sources/reflect/skill.json +17 -0
  383. package/skill-sources/remember/SKILL.md +534 -0
  384. package/skill-sources/remember/skill.json +17 -0
  385. package/skill-sources/rethink/SKILL.md +658 -0
  386. package/skill-sources/rethink/skill.json +17 -0
  387. package/skill-sources/reweave/SKILL.md +657 -0
  388. package/skill-sources/reweave/skill.json +17 -0
  389. package/skill-sources/seed/SKILL.md +303 -0
  390. package/skill-sources/seed/skill.json +17 -0
  391. package/skill-sources/stats/SKILL.md +371 -0
  392. package/skill-sources/stats/skill.json +17 -0
  393. package/skill-sources/tasks/SKILL.md +402 -0
  394. package/skill-sources/tasks/skill.json +17 -0
  395. package/skill-sources/validate/SKILL.md +310 -0
  396. package/skill-sources/validate/skill.json +17 -0
  397. package/skill-sources/verify/SKILL.md +532 -0
  398. package/skill-sources/verify/skill.json +17 -0
  399. package/skills/add-domain/SKILL.md +441 -0
  400. package/skills/add-domain/skill.json +17 -0
  401. package/skills/architect/SKILL.md +568 -0
  402. package/skills/architect/skill.json +17 -0
  403. package/skills/ask/SKILL.md +388 -0
  404. package/skills/ask/skill.json +17 -0
  405. package/skills/health/SKILL.md +760 -0
  406. package/skills/health/skill.json +17 -0
  407. package/skills/help/SKILL.md +348 -0
  408. package/skills/help/skill.json +17 -0
  409. package/skills/recommend/SKILL.md +553 -0
  410. package/skills/recommend/skill.json +17 -0
  411. package/skills/reseed/SKILL.md +385 -0
  412. package/skills/reseed/skill.json +17 -0
  413. package/skills/setup/SKILL.md +1688 -0
  414. package/skills/setup/skill.json +17 -0
  415. package/skills/tutorial/SKILL.md +496 -0
  416. package/skills/tutorial/skill.json +17 -0
  417. package/skills/upgrade/SKILL.md +395 -0
  418. package/skills/upgrade/skill.json +17 -0
@@ -0,0 +1,1087 @@
1
+ # Testing Milestones
2
+
3
+ Seven validation milestones for the Ars Contexta v1.6 plugin. Each milestone tests a distinct layer of the system: from kernel correctness through vocabulary transformation to cross-platform parity. Run them in order — later milestones depend on earlier ones passing.
4
+
5
+ ---
6
+
7
+ ## Milestone 1: Kernel Validation
8
+
9
+ **What it tests:** A freshly generated vault contains all 15 universal primitives from kernel.yaml. This is the foundational check — if the kernel is missing primitives, nothing built on top of it will function correctly.
10
+
11
+ **Prerequisites:**
12
+ - A generated vault from /setup (any domain, any preset)
13
+ - The vault must have at least 3 notes created (to exercise link and MOC checks)
14
+ - `validate-kernel.sh` accessible at `./reference/validate-kernel.sh`
15
+
16
+ **Pass criteria:** 15/15 checks pass (PASS status). WARN is acceptable for semantic search (primitive 8) if the platform does not support qmd and for self space (primitive 9) if disabled via configuration, but all other primitives must be PASS.
17
+
18
+ **Verification steps:**
19
+
20
+ ```bash
21
+ # Run kernel validation against the generated vault
22
+ ./reference/validate-kernel.sh /path/to/generated-vault
23
+
24
+ # Expected: 15 PASS lines, 0 FAIL lines
25
+ # Acceptable: 14 PASS + 1 WARN (semantic search when qmd not configured, or self space when disabled)
26
+ ```
27
+
28
+ **Expected output on success:**
29
+
30
+ ```
31
+ === Kernel Validation: /path/to/generated-vault ===
32
+
33
+ 1. Markdown files with YAML frontmatter
34
+ PASS N markdown files, all with YAML frontmatter
35
+ 2. Wiki links as graph edges
36
+ PASS N of N files contain wiki links
37
+ 3. MOC hierarchy for attention management
38
+ PASS N MOCs found
39
+ 4. Tree injection at session start
40
+ PASS Tree injection mechanism found
41
+ 5. Description field for progressive disclosure
42
+ PASS All N notes have description fields
43
+ 6. Topics footer linking notes to MOCs
44
+ PASS All N notes have topics
45
+ 7. Schema enforcement via validation
46
+ PASS Templates and validation mechanism found
47
+ 8. Semantic search capability
48
+ PASS Semantic search capability found
49
+ 9. Self space for agent persistent memory
50
+ PASS self/ with N files (identity, methodology, goals present)
51
+ 10. Session rhythm: orient, work, persist
52
+ PASS Session rhythm documented or automated
53
+ 10A. Unique addresses (wiki links as INVARIANT reference form)
54
+ PASS All internal references use wiki links, filenames are unique
55
+ 11. Discovery-first quality gate
56
+ PASS Discovery-first gate in context file and skills
57
+ 12. Operational learning loop
58
+ PASS Operational learning loop: observations, tensions, review trigger, rethink mechanism
59
+ 13. Task stack for work prioritization
60
+ PASS Task stack mechanism found (ops/tasks/ or equivalent)
61
+ 14. Methodology folder for vault self-knowledge
62
+ PASS ops/methodology/ exists with linked notes
63
+ 15. Session capture for automatic transcript persistence
64
+ PASS Session transcripts saved to ops/sessions/, mining tasks auto-created
65
+
66
+ === Kernel Validation Summary ===
67
+ PASS: 15
68
+ WARN: 0
69
+ FAIL: 0
70
+
71
+ All 15 primitives validated successfully.
72
+ ```
73
+
74
+ **Common failure modes and remediation:**
75
+
76
+ | Failure | Cause | Fix |
77
+ |---------|-------|-----|
78
+ | FAIL on primitive 1 (YAML frontmatter) | Template generation skipped frontmatter | Check `generators/features/templates.md` — ensure all templates output YAML blocks |
79
+ | FAIL on primitive 3 (MOC hierarchy) | Generated notes lack `type: moc` in frontmatter | Verify MOC template includes `type: moc` in YAML |
80
+ | FAIL on primitive 9 (self space) | self/ directory not created when enabled | Check that /setup creates self/identity.md, self/methodology.md, self/goals.md when self space is enabled |
81
+ | WARN on primitive 9 (self space) | self space disabled via configuration | Acceptable — self space is CONFIGURABLE, off by default for research presets, on for personal assistant |
82
+ | WARN on primitive 7 (schema enforcement) | Templates exist but no validation script generated | Ensure /setup creates a validate.sh or validate skill |
83
+ | WARN on primitive 11 (discovery-first) | Context file has discovery section but skills lack discovery checks | Add discovery-first check to generated skill templates |
84
+ | FAIL on primitive 12 (learning loop) | Missing ops/observations/ or ops/tensions/ directories | Ensure /setup creates both directories and documents condition-based triggers in context file |
85
+ | FAIL on primitive 13 (task stack) | Missing ops/tasks/ or task stack mechanism | Ensure /setup creates task stack infrastructure |
86
+ | FAIL on primitive 14 (methodology folder) | Missing ops/methodology/ directory | Ensure /setup creates ops/methodology/ with linked notes |
87
+ | FAIL on primitive 15 (session capture) | Missing ops/sessions/ or stop hook for transcript persistence | Ensure /setup creates ops/sessions/ and configures session capture hook |
88
+
89
+ ---
90
+
91
+ ## Milestone 2: Context File Composition
92
+
93
+ **What it tests:** The generated context file (CLAUDE.md for Claude Code, or SOUL.md + AGENTS.md for OpenClaw) contains all required sections with domain-appropriate content. No placeholder variables remain. No orphaned references to features that were not enabled.
94
+
95
+ **Prerequisites:**
96
+ - /setup completed for a specific domain (e.g., research)
97
+ - Generated context file exists at the vault root
98
+
99
+ **Pass criteria:**
100
+ 1. All required sections present (see checklist below)
101
+ 2. Zero `{DOMAIN:...}` placeholder tokens remaining
102
+ 3. Zero references to disabled feature blocks
103
+ 4. Vocabulary is domain-native throughout (no universal terms leaking)
104
+
105
+ **Verification steps:**
106
+
107
+ ```bash
108
+ VAULT="/path/to/generated-vault"
109
+ CTX="$VAULT/CLAUDE.md" # or AGENTS.md for OpenClaw
110
+
111
+ # 1. Check required sections exist
112
+ echo "=== Required Sections ==="
113
+ for section in \
114
+ "Session Rhythm" \
115
+ "Discovery-First" \
116
+ "Note Design" \
117
+ "Quality Standards" \
118
+ "Common Pitfalls" \
119
+ "System Evolution" \
120
+ "Constraints"; do
121
+ if grep -qi "$section" "$CTX"; then
122
+ echo " PASS: $section"
123
+ else
124
+ echo " FAIL: $section missing"
125
+ fi
126
+ done
127
+
128
+ # 2. Check for unresolved placeholders
129
+ echo ""
130
+ echo "=== Placeholder Check ==="
131
+ PLACEHOLDERS=$(grep -c '{DOMAIN:' "$CTX" 2>/dev/null || echo "0")
132
+ if [ "$PLACEHOLDERS" -eq 0 ]; then
133
+ echo " PASS: No unresolved {DOMAIN:} placeholders"
134
+ else
135
+ echo " FAIL: $PLACEHOLDERS unresolved placeholders found:"
136
+ grep '{DOMAIN:' "$CTX"
137
+ fi
138
+
139
+ # 3. Check for orphaned feature references
140
+ echo ""
141
+ echo "=== Orphaned Reference Check ==="
142
+ # Get the active blocks from the derivation manifest
143
+ if [ -f "$VAULT/ops/derivation-manifest.md" ]; then
144
+ # Check that referenced features were actually enabled
145
+ # Example: if semantic-search is NOT in active blocks, it should not appear in context
146
+ echo " Manual check: compare feature references against derivation-manifest.md"
147
+ else
148
+ echo " WARN: No derivation-manifest.md found — cannot verify feature alignment"
149
+ fi
150
+
151
+ # 4. Check vocabulary transformation completeness
152
+ echo ""
153
+ echo "=== Vocabulary Check (research domain example) ==="
154
+ # For a therapy domain, these terms should NOT appear:
155
+ # grep -c "claim\|reduce\|MOC\|extract" "$CTX" # should be 0
156
+ echo " (See Milestone 3 for full vocabulary validation)"
157
+ ```
158
+
159
+ **Expected output on success:**
160
+
161
+ ```
162
+ === Required Sections ===
163
+ PASS: Session Rhythm
164
+ PASS: Discovery-First
165
+ PASS: Note Design
166
+ PASS: Quality Standards
167
+ PASS: Common Pitfalls
168
+ PASS: System Evolution
169
+ PASS: Constraints
170
+
171
+ === Placeholder Check ===
172
+ PASS: No unresolved {DOMAIN:} placeholders
173
+
174
+ === Orphaned Reference Check ===
175
+ (all referenced features present in active blocks)
176
+
177
+ === Vocabulary Check ===
178
+ (deferred to Milestone 3)
179
+ ```
180
+
181
+ **Common failure modes and remediation:**
182
+
183
+ | Failure | Cause | Fix |
184
+ |---------|-------|-----|
185
+ | Missing "Common Pitfalls" section | Feature block conditional logic skipped it | Check `generators/features/ethical-guardrails.md` — pitfalls are always-on |
186
+ | Unresolved `{DOMAIN:rethink}` placeholder | Vocabulary transform missed skill names | Ensure skill name mapping from `vocabulary-transforms.md` is applied during generation |
187
+ | Orphaned semantic-search references in a convention-only system | Feature block included unconditionally | Add conditional gating: only emit semantic-search section when `search >= 0.5` |
188
+ | "Self-Extension Blueprints" section references unavailable features | Blueprint selection not filtered by configuration | Filter blueprints by current configuration — disabled features should not appear in blueprints |
189
+ | Missing "System Evolution" section | The section is generated by `self-evolution.md` feature block which is always-on but may have a generation bug | Verify the always-on feature blocks list includes `self-evolution` |
190
+
191
+ ---
192
+
193
+ ## Milestone 3: Vocabulary Transformation
194
+
195
+ **What it tests:** Zero research-domain terms appear in non-research domain output. The vocabulary transformation from `vocabulary-transforms.md` is applied completely and consistently across all generated files — context file, templates, skill names, folder names, and self/ files.
196
+
197
+ **Prerequisites:**
198
+ - /setup completed for a non-research domain (therapy is the canonical test case because it has the highest vocabulary contrast)
199
+ - All generated files in place
200
+
201
+ **Pass criteria:** Zero instances of research-specific terms ("claim", "reduce", "MOC", "extract", "thinking notes", "01_thinking") in generated files, excluding ops/ directory (which uses universal operational terms).
202
+
203
+ **Verification steps:**
204
+
205
+ ```bash
206
+ VAULT="/path/to/generated-vault"
207
+
208
+ echo "=== Vocabulary Transformation Validation ==="
209
+
210
+ # Define research terms that should NOT appear in non-research output
211
+ RESEARCH_TERMS="claim\|reduce\|MOC\|extract\|thinking notes\|01_thinking"
212
+
213
+ # Exclude ops/ (operational terms are universal) and the derivation files
214
+ HITS=$(grep -ri "$RESEARCH_TERMS" "$VAULT" \
215
+ --include="*.md" \
216
+ --include="*.yaml" \
217
+ --include="*.json" \
218
+ --include="*.sh" \
219
+ --exclude-dir=ops \
220
+ --exclude-dir=.git \
221
+ --exclude-dir=node_modules \
222
+ -l 2>/dev/null | wc -l | tr -d ' ')
223
+
224
+ if [ "$HITS" -eq 0 ]; then
225
+ echo " PASS: Zero research terms found in generated output"
226
+ else
227
+ echo " FAIL: $HITS files contain research-domain vocabulary:"
228
+ grep -ri "$RESEARCH_TERMS" "$VAULT" \
229
+ --include="*.md" \
230
+ --include="*.yaml" \
231
+ --include="*.json" \
232
+ --include="*.sh" \
233
+ --exclude-dir=ops \
234
+ --exclude-dir=.git \
235
+ --exclude-dir=node_modules \
236
+ -n 2>/dev/null
237
+ fi
238
+
239
+ # Check domain-native terms ARE present (therapy example)
240
+ echo ""
241
+ echo "=== Domain-Native Terms Present ==="
242
+ THERAPY_TERMS="reflection\|surface\|theme\|find patterns\|check resonance"
243
+ NATIVE_HITS=$(grep -ri "$THERAPY_TERMS" "$VAULT/CLAUDE.md" -c 2>/dev/null || echo "0")
244
+ if [ "$NATIVE_HITS" -gt 0 ]; then
245
+ echo " PASS: $NATIVE_HITS domain-native term usages found"
246
+ else
247
+ echo " FAIL: No domain-native vocabulary detected — transformation may not have run"
248
+ fi
249
+
250
+ # Check folder names match domain vocabulary
251
+ echo ""
252
+ echo "=== Folder Name Validation ==="
253
+ if [ -d "$VAULT/reflections" ]; then
254
+ echo " PASS: reflections/ directory exists (therapy domain)"
255
+ elif [ -d "$VAULT/notes" ]; then
256
+ echo " WARN: Generic notes/ directory — expected domain-specific name"
257
+ fi
258
+
259
+ # Check template names match domain vocabulary
260
+ echo ""
261
+ echo "=== Template Name Validation ==="
262
+ if [ -f "$VAULT/templates/reflection-note.md" ]; then
263
+ echo " PASS: reflection-note.md template exists (therapy domain)"
264
+ elif [ -f "$VAULT/templates/base-note.md" ]; then
265
+ echo " WARN: Generic base-note.md — expected domain-specific template name"
266
+ fi
267
+
268
+ # Check skill names match domain vocabulary
269
+ echo ""
270
+ echo "=== Skill Name Validation ==="
271
+ for skill_dir in "$VAULT/.claude/skills/"*/; do
272
+ skill_name=$(basename "$skill_dir")
273
+ case "$skill_name" in
274
+ surface|find-patterns|check-resonance|revisit)
275
+ echo " PASS: Therapy-native skill: $skill_name"
276
+ ;;
277
+ reduce|reflect|verify|reweave)
278
+ echo " FAIL: Research-native skill name leaked: $skill_name"
279
+ ;;
280
+ esac
281
+ done
282
+ ```
283
+
284
+ **Expected output on success (therapy domain):**
285
+
286
+ ```
287
+ === Vocabulary Transformation Validation ===
288
+ PASS: Zero research terms found in generated output
289
+
290
+ === Domain-Native Terms Present ===
291
+ PASS: 47 domain-native term usages found
292
+
293
+ === Folder Name Validation ===
294
+ PASS: reflections/ directory exists (therapy domain)
295
+
296
+ === Template Name Validation ===
297
+ PASS: reflection-note.md template exists (therapy domain)
298
+
299
+ === Skill Name Validation ===
300
+ PASS: Therapy-native skill: surface
301
+ PASS: Therapy-native skill: find-patterns
302
+ PASS: Therapy-native skill: check-resonance
303
+ PASS: Therapy-native skill: revisit
304
+ ```
305
+
306
+ **Common failure modes and remediation:**
307
+
308
+ | Failure | Cause | Fix |
309
+ |---------|-------|-----|
310
+ | "MOC" appears in generated CLAUDE.md | Vocabulary transform missed a reference in a feature block | Search all feature block templates in `generators/features/` for hardcoded "MOC" |
311
+ | "reduce" appears in a skill's SKILL.md | Skill name was transformed but internal instructions were not | Apply vocabulary transform to skill body text, not just skill directory name |
312
+ | Folder still named "notes/" instead of "reflections/" | Folder name mapping not applied during directory creation | Check /setup folder creation logic against `vocabulary-transforms.md` folder mapping |
313
+ | Template still named "base-note.md" | Template name mapping not applied | Check /setup template file creation against `vocabulary-transforms.md` template mapping |
314
+ | "extract" appears in self/methodology.md | Self/ file generation uses hardcoded research language | Ensure self/ file generators pull from vocabulary mapping |
315
+ | "claim" in session-orient.sh hook script | Hook scripts hardcode research terms | Parameterize hook scripts with vocabulary variables or generate domain-specific versions |
316
+
317
+ ---
318
+
319
+ ## Milestone 4: Processing Pipeline Smoke Test
320
+
321
+ **What it tests:** The full capture-to-connected-note lifecycle works end-to-end. A note enters the inbox, gets processed through the pipeline, and ends up as a properly connected note in the notes directory with MOC membership.
322
+
323
+ **Prerequisites:**
324
+ - Generated vault with processing skills and templates (all presets ship with full automation)
325
+ - At least 3 existing notes and 1 MOC in the vault (so connections can form)
326
+ - Agent session active with generated context file loaded
327
+
328
+ **Pass criteria:**
329
+ 1. Test note can be created in inbox with minimal friction
330
+ 2. Processing skill (/reduce or domain equivalent) extracts at least one insight
331
+ 3. Extracted note appears in the notes directory with valid schema
332
+ 4. Connection skill (/reflect or domain equivalent) links the note to at least one existing note
333
+ 5. The note appears in at least one MOC's Core Ideas section (or domain equivalent)
334
+
335
+ **Verification steps:**
336
+
337
+ ```bash
338
+ VAULT="/path/to/generated-vault"
339
+ NOTES_DIR="notes" # or domain-specific: reflections, concepts, etc.
340
+ INBOX_DIR="inbox" # or domain-specific: journal, encounters, etc.
341
+
342
+ # Step 1: Create a test note in inbox
343
+ cat > "$VAULT/$INBOX_DIR/test-pipeline-input.md" << 'EOF'
344
+ ---
345
+ description: Test input for pipeline validation
346
+ ---
347
+ # Test Pipeline Input
348
+
349
+ The most effective learning happens when new information is actively connected to
350
+ existing knowledge rather than stored in isolation. This principle applies to both
351
+ human and agent memory systems.
352
+
353
+ Connections create compound value: each new node increases the value of existing
354
+ nodes by creating new traversal paths.
355
+ EOF
356
+
357
+ echo "Step 1: Test note created in $INBOX_DIR/"
358
+
359
+ # Step 2: Run processing (manually invoke or use skill)
360
+ echo "Step 2: Invoke /reduce (or domain equivalent) on test-pipeline-input.md"
361
+ echo " [Agent processes the inbox note]"
362
+
363
+ # Step 3: Verify extracted note exists with valid schema
364
+ echo ""
365
+ echo "=== Step 3: Schema Validation ==="
366
+ # After processing, check for new note(s) in notes directory
367
+ NEW_NOTES=$(find "$VAULT/$NOTES_DIR" -name "*.md" -newer "$VAULT/$INBOX_DIR/test-pipeline-input.md" 2>/dev/null)
368
+ if [ -n "$NEW_NOTES" ]; then
369
+ echo " PASS: New note(s) created:"
370
+ echo "$NEW_NOTES"
371
+ # Validate schema on each new note
372
+ for note in $NEW_NOTES; do
373
+ if head -1 "$note" | grep -q "^---$"; then
374
+ echo " PASS: $note has YAML frontmatter"
375
+ else
376
+ echo " FAIL: $note missing YAML frontmatter"
377
+ fi
378
+ if grep -q "^description:" "$note"; then
379
+ echo " PASS: $note has description field"
380
+ else
381
+ echo " FAIL: $note missing description"
382
+ fi
383
+ if grep -q "^topics:" "$note"; then
384
+ echo " PASS: $note has topics field"
385
+ else
386
+ echo " FAIL: $note missing topics"
387
+ fi
388
+ done
389
+ else
390
+ echo " FAIL: No new notes found in $NOTES_DIR/"
391
+ fi
392
+
393
+ # Step 4: Verify connections exist
394
+ echo ""
395
+ echo "=== Step 4: Connection Validation ==="
396
+ for note in $NEW_NOTES; do
397
+ LINKS=$(grep -c '\[\[' "$note" 2>/dev/null || echo "0")
398
+ if [ "$LINKS" -gt 0 ]; then
399
+ echo " PASS: $note has $LINKS wiki link(s)"
400
+ else
401
+ echo " FAIL: $note has no wiki links — reflect phase may have failed"
402
+ fi
403
+ done
404
+
405
+ # Step 5: Verify MOC membership
406
+ echo ""
407
+ echo "=== Step 5: MOC Membership ==="
408
+ for note in $NEW_NOTES; do
409
+ TITLE=$(basename "$note" .md)
410
+ MOC_REFS=$(grep -rl "\[\[$TITLE\]\]" "$VAULT/$NOTES_DIR"/*.md 2>/dev/null | grep -v "$note")
411
+ if [ -n "$MOC_REFS" ]; then
412
+ echo " PASS: '$TITLE' referenced from:"
413
+ echo "$MOC_REFS"
414
+ else
415
+ echo " FAIL: '$TITLE' not referenced from any MOC"
416
+ fi
417
+ done
418
+
419
+ # Cleanup
420
+ rm -f "$VAULT/$INBOX_DIR/test-pipeline-input.md"
421
+ ```
422
+
423
+ **Expected output on success:**
424
+
425
+ ```
426
+ Step 1: Test note created in inbox/
427
+ Step 2: Invoke /reduce on test-pipeline-input.md
428
+
429
+ === Step 3: Schema Validation ===
430
+ PASS: New note(s) created:
431
+ /path/to/vault/notes/connections create compound value through new traversal paths.md
432
+ PASS: notes/connections... has YAML frontmatter
433
+ PASS: notes/connections... has description field
434
+ PASS: notes/connections... has topics field
435
+
436
+ === Step 4: Connection Validation ===
437
+ PASS: notes/connections... has 2 wiki link(s)
438
+
439
+ === Step 5: MOC Membership ===
440
+ PASS: 'connections create compound value...' referenced from:
441
+ /path/to/vault/notes/knowledge-work.md
442
+ ```
443
+
444
+ **Common failure modes and remediation:**
445
+
446
+ | Failure | Cause | Fix |
447
+ |---------|-------|-----|
448
+ | No new notes created after /reduce | Extraction skill did not recognize content as relevant to the domain | Check skill's extraction criteria — ensure it handles general knowledge input |
449
+ | Note created but missing topics field | Create phase did not include topics in template | Verify note template includes topics as required field |
450
+ | Note has no wiki links after /reflect | No existing notes matched semantically | Ensure the test vault has enough starter notes for connections to form |
451
+ | Note not referenced from any MOC | Reflect phase did not update MOC | Check reflect skill for MOC update logic |
452
+ | Schema validation errors | Template mismatch between generated template and note creation logic | Compare template `_schema` required fields against what /reduce outputs |
453
+
454
+ ---
455
+
456
+ ## Milestone 5: Session Persistence
457
+
458
+ **What it tests:** Agent state (particularly self/goals.md) survives a /clear command and is properly re-read on session re-orientation. This validates that the session-rhythm primitive (orient-work-persist) functions as a persistence mechanism.
459
+
460
+ **Prerequisites:**
461
+ - Generated Claude Code vault with session-start hook (session-orient.sh)
462
+ - self/ directory populated with identity.md, methodology.md, goals.md
463
+ - Active Claude Code session
464
+
465
+ **Pass criteria:**
466
+ 1. goals.md can be updated during a session
467
+ 2. After /clear, a new session orientation re-reads the updated goals.md
468
+ 3. The agent demonstrates awareness of the updated goals in the new session
469
+
470
+ **Verification steps:**
471
+
472
+ ```bash
473
+ VAULT="/path/to/generated-vault"
474
+
475
+ # Step 1: Record initial goals state
476
+ echo "=== Step 1: Initial Goals State ==="
477
+ cat "$VAULT/self/goals.md"
478
+ INITIAL_HASH=$(md5 -q "$VAULT/self/goals.md" 2>/dev/null || md5sum "$VAULT/self/goals.md" | cut -d' ' -f1)
479
+ echo " Hash: $INITIAL_HASH"
480
+
481
+ # Step 2: Update goals.md (simulate session work)
482
+ echo ""
483
+ echo "=== Step 2: Update Goals ==="
484
+ # Add a test goal
485
+ echo "" >> "$VAULT/self/goals.md"
486
+ echo "- [ ] TEST_GOAL: Validate session persistence mechanism" >> "$VAULT/self/goals.md"
487
+ UPDATED_HASH=$(md5 -q "$VAULT/self/goals.md" 2>/dev/null || md5sum "$VAULT/self/goals.md" | cut -d' ' -f1)
488
+ echo " Updated hash: $UPDATED_HASH"
489
+ if [ "$INITIAL_HASH" != "$UPDATED_HASH" ]; then
490
+ echo " PASS: goals.md was modified"
491
+ else
492
+ echo " FAIL: goals.md unchanged"
493
+ fi
494
+
495
+ # Step 3: Simulate /clear + re-orient
496
+ echo ""
497
+ echo "=== Step 3: Verify Persistence ==="
498
+ # The session-orient.sh hook should re-read self/
499
+ # After /clear, run the hook manually to verify
500
+ bash "$VAULT/.claude/hooks/scripts/session-orient.sh"
501
+
502
+ # Step 4: Verify goals.md still contains the update
503
+ echo ""
504
+ echo "=== Step 4: Goals Still Present ==="
505
+ if grep -q "TEST_GOAL" "$VAULT/self/goals.md"; then
506
+ echo " PASS: Test goal survived /clear"
507
+ else
508
+ echo " FAIL: Test goal lost after /clear"
509
+ fi
510
+
511
+ # Step 5: Verify orientation script points to self/
512
+ echo ""
513
+ echo "=== Step 5: Orient Script References Self ==="
514
+ if grep -q "self" "$VAULT/.claude/hooks/scripts/session-orient.sh" 2>/dev/null; then
515
+ echo " PASS: session-orient.sh references self/ directory"
516
+ else
517
+ echo " FAIL: session-orient.sh does not reference self/"
518
+ fi
519
+
520
+ # Cleanup: remove test goal
521
+ sed -i.bak '/TEST_GOAL/d' "$VAULT/self/goals.md"
522
+ rm -f "$VAULT/self/goals.md.bak"
523
+ ```
524
+
525
+ **Expected output on success:**
526
+
527
+ ```
528
+ === Step 1: Initial Goals State ===
529
+ [current goals content]
530
+ Hash: abc123...
531
+
532
+ === Step 2: Update Goals ===
533
+ Updated hash: def456...
534
+ PASS: goals.md was modified
535
+
536
+ === Step 3: Verify Persistence ===
537
+ ## Workspace Structure
538
+ [tree output]
539
+ ---
540
+ **Remember:** Read self/identity.md and self/goals.md to orient.
541
+
542
+ === Step 4: Goals Still Present ===
543
+ PASS: Test goal survived /clear
544
+
545
+ === Step 5: Orient Script References Self ===
546
+ PASS: session-orient.sh references self/ directory
547
+ ```
548
+
549
+ **Common failure modes and remediation:**
550
+
551
+ | Failure | Cause | Fix |
552
+ |---------|-------|-----|
553
+ | goals.md unchanged after write | File permissions or path error | Check that the generated vault has write permissions on self/ |
554
+ | Test goal lost after /clear | /clear deleted files (should only clear context, not files) | /clear is a context reset, not a file operation — if files are deleted, the hook or command is misconfigured |
555
+ | session-orient.sh does not reference self/ | Hook template does not include self/ orientation | Update `hooks/scripts/session-orient.sh` to check for self/ directory and remind agent to read it |
556
+ | Orient script does not run after /clear | Hook not configured for SessionStart event | Verify `.claude/settings.json` has SessionStart hook mapping session-orient.sh |
557
+ | Agent does not demonstrate awareness of updated goals | Context file does not instruct reading goals.md at orient | Add explicit "Read self/goals.md" instruction to Session Rhythm section |
558
+
559
+ ---
560
+
561
+ ## Milestone 5b: Session Capture
562
+
563
+ **What it tests:** The stop hook saves session transcripts to ops/sessions/ and auto-creates mining tasks for future processing. Session capture is Primitive 15 (INVARIANT) — it must function for all presets.
564
+
565
+ **Prerequisites:**
566
+ - Generated vault with stop hook configured for session capture
567
+ - ops/sessions/ directory exists
568
+ - Active agent session
569
+
570
+ **Pass criteria:**
571
+ 1. Session transcript is saved to ops/sessions/ with timestamp filename
572
+ 2. Mining task is auto-created for future processing of the transcript
573
+ 3. Session capture works regardless of whether self space is enabled or disabled
574
+
575
+ **Verification steps:**
576
+
577
+ ```bash
578
+ VAULT="/path/to/generated-vault"
579
+
580
+ # Step 1: Check ops/sessions/ exists
581
+ echo "=== Step 1: Session Directory ==="
582
+ if [ -d "$VAULT/ops/sessions" ]; then
583
+ echo " PASS: ops/sessions/ exists"
584
+ else
585
+ echo " FAIL: ops/sessions/ not found"
586
+ fi
587
+
588
+ # Step 2: Check stop hook is configured
589
+ echo ""
590
+ echo "=== Step 2: Stop Hook Configuration ==="
591
+ if [ -f "$VAULT/.claude/settings.json" ]; then
592
+ if grep -q '"Stop"' "$VAULT/.claude/settings.json"; then
593
+ echo " PASS: Stop hook configured in settings.json"
594
+ else
595
+ echo " FAIL: No Stop hook found in settings.json"
596
+ fi
597
+ else
598
+ echo " FAIL: .claude/settings.json not found"
599
+ fi
600
+
601
+ # Step 3: After a session, verify transcript was saved
602
+ echo ""
603
+ echo "=== Step 3: Transcript Persistence (post-session) ==="
604
+ SESSIONS=$(find "$VAULT/ops/sessions" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
605
+ if [ "$SESSIONS" -gt 0 ]; then
606
+ echo " PASS: $SESSIONS session transcript(s) found"
607
+ else
608
+ echo " WARN: No session transcripts found yet — run a session first"
609
+ fi
610
+ ```
611
+
612
+ **Common failure modes and remediation:**
613
+
614
+ | Failure | Cause | Fix |
615
+ |---------|-------|-----|
616
+ | ops/sessions/ missing | /setup did not create session directory | Add ops/sessions/ creation to /setup — session capture is INVARIANT |
617
+ | Stop hook not configured | Hook template missing session capture | Add session-capture to stop hook template for all presets |
618
+ | Transcript not saved | Stop hook script has permissions or path error | Check hook script writes to correct path with write permissions |
619
+ | Mining task not created | Auto-task creation logic missing from stop hook | Add task creation to stop hook — transcripts should be queued for mining |
620
+
621
+ ---
622
+
623
+ ## Milestone 5c: Condition-Based Maintenance
624
+
625
+ **What it tests:** Maintenance triggers fire based on vault state conditions, not time-based schedules. Condition-based maintenance replaces all time-based triggers in v1.6.
626
+
627
+ **Prerequisites:**
628
+ - Generated vault with condition-based hooks configured
629
+ - At least 10 notes created (to exercise threshold conditions)
630
+ - Session-start hook with condition evaluation
631
+
632
+ **Pass criteria:**
633
+ 1. No time-based triggers (weekly, monthly, quarterly) in the generated context file unless time genuinely is the right trigger (e.g., content staleness)
634
+ 2. Condition-based hooks evaluate vault state at session start
635
+ 3. Fired conditions surface as tasks on the task stack via /next
636
+ 4. Conditions do not stack during periods of inactivity
637
+
638
+ **Verification steps:**
639
+
640
+ ```bash
641
+ VAULT="/path/to/generated-vault"
642
+ CTX="$VAULT/CLAUDE.md"
643
+
644
+ # Step 1: Check for time-based trigger language
645
+ echo "=== Step 1: Time-Based Trigger Check ==="
646
+ TIME_TRIGGERS=$(grep -ci "weekly\|monthly\|quarterly\|every week\|every month\|once a week\|once a month" "$CTX" 2>/dev/null || echo "0")
647
+ if [ "$TIME_TRIGGERS" -eq 0 ]; then
648
+ echo " PASS: No time-based maintenance triggers found"
649
+ else
650
+ echo " WARN: $TIME_TRIGGERS time-based references found — verify they are genuinely time-appropriate"
651
+ grep -ni "weekly\|monthly\|quarterly\|every week\|every month" "$CTX"
652
+ fi
653
+
654
+ # Step 2: Check for condition-based trigger documentation
655
+ echo ""
656
+ echo "=== Step 2: Condition-Based Triggers ==="
657
+ CONDITION_REFS=$(grep -ci "condition\|threshold\|when.*exceed\|when.*detect" "$CTX" 2>/dev/null || echo "0")
658
+ if [ "$CONDITION_REFS" -gt 0 ]; then
659
+ echo " PASS: $CONDITION_REFS condition-based trigger references found"
660
+ else
661
+ echo " FAIL: No condition-based maintenance language detected"
662
+ fi
663
+
664
+ # Step 3: Check session-start hook evaluates conditions
665
+ echo ""
666
+ echo "=== Step 3: Session-Start Condition Evaluation ==="
667
+ if [ -f "$VAULT/.claude/hooks/scripts/session-orient.sh" ]; then
668
+ if grep -qi "condition\|threshold\|orphan\|stale\|pending" "$VAULT/.claude/hooks/scripts/session-orient.sh"; then
669
+ echo " PASS: Session-start hook evaluates vault state conditions"
670
+ else
671
+ echo " WARN: Session-start hook exists but may not evaluate conditions"
672
+ fi
673
+ else
674
+ echo " FAIL: session-orient.sh not found"
675
+ fi
676
+ ```
677
+
678
+ **Common failure modes and remediation:**
679
+
680
+ | Failure | Cause | Fix |
681
+ |---------|-------|-----|
682
+ | Time-based triggers in context file | Feature block template uses old time-based language | Update maintenance feature block to use condition-based triggers |
683
+ | No condition evaluation at session start | Hook template does not include state checks | Add vault state evaluation (orphans, stale nodes, pending observations) to session-start hook |
684
+ | Conditions stack during inactivity | Conditions fire even when vault has not changed | Add staleness check — if vault unchanged since last session, skip condition evaluation |
685
+ | /next does not show fired conditions | Task stack not updated by condition hooks | Ensure condition hooks write fired conditions to ops/tasks/ for /next to surface |
686
+
687
+ ---
688
+
689
+ ## Milestone 6: Preset Validation
690
+
691
+ **What it tests:** All 3 presets (Research, Personal Assistant, Experimental) produce valid, coherent configurations that pass kernel validation with domain-appropriate vocabulary.
692
+
693
+ **Prerequisites:**
694
+ - All 3 preset configurations available (Research, Personal Assistant, Experimental)
695
+ - /setup wizard functional
696
+ - validate-kernel.sh accessible
697
+
698
+ **Pass criteria:** For each preset:
699
+ 1. Kernel validation passes (15/15, or 14/15 with WARN for semantic search if qmd not configured, or self space if disabled)
700
+ 2. Vocabulary is domain-native (zero cross-domain term leakage)
701
+ 3. Interaction constraints are satisfied (no hard constraint violations)
702
+ 4. Active feature blocks match the preset's `active_blocks` list (17 blocks available)
703
+ 5. Personality dimensions are reflected in self/identity.md voice (when self space is enabled)
704
+
705
+ **Verification steps:**
706
+
707
+ ```bash
708
+ PRESETS=("research" "personal-assistant" "experimental")
709
+
710
+ for PRESET in "${PRESETS[@]}"; do
711
+ echo "========================================"
712
+ echo "=== Validating Preset: $PRESET ==="
713
+ echo "========================================"
714
+
715
+ # Assume /setup was run with this preset, output in /tmp/test-$PRESET
716
+ VAULT="/tmp/test-$PRESET"
717
+
718
+ # 1. Kernel validation
719
+ echo ""
720
+ echo "--- Kernel Validation ---"
721
+ ./reference/validate-kernel.sh "$VAULT"
722
+ echo ""
723
+
724
+ # 2. Vocabulary check (domain-specific terms)
725
+ echo "--- Vocabulary Check ---"
726
+ case "$PRESET" in
727
+ research)
728
+ # Research terms SHOULD appear
729
+ EXPECTED="claim\|reduce\|topic map"
730
+ FORBIDDEN="reflection\|surface\|encounter"
731
+ ;;
732
+ personal-assistant)
733
+ # Personal assistant terms SHOULD appear
734
+ EXPECTED="memory\|remember\|life area"
735
+ FORBIDDEN="claim\|reduce\|extract"
736
+ ;;
737
+ experimental)
738
+ # Experimental uses custom vocabulary from conversation
739
+ EXPECTED="note\|connect\|discover"
740
+ FORBIDDEN="" # No forbidden terms — experimental is custom
741
+ ;;
742
+ esac
743
+
744
+ EXPECTED_HITS=$(grep -ri "$EXPECTED" "$VAULT/CLAUDE.md" -c 2>/dev/null || echo "0")
745
+ FORBIDDEN_HITS=$(grep -ri "$FORBIDDEN" "$VAULT" \
746
+ --include="*.md" --exclude-dir=ops --exclude-dir=.git -c 2>/dev/null || echo "0")
747
+
748
+ if [ "$EXPECTED_HITS" -gt 0 ]; then
749
+ echo " PASS: Domain-native terms present ($EXPECTED_HITS hits)"
750
+ else
751
+ echo " FAIL: No domain-native terms found"
752
+ fi
753
+
754
+ if [ "$FORBIDDEN_HITS" -eq 0 ]; then
755
+ echo " PASS: No cross-domain term leakage"
756
+ else
757
+ echo " FAIL: $FORBIDDEN_HITS cross-domain terms found"
758
+ fi
759
+
760
+ # 3. Interaction constraint check
761
+ echo ""
762
+ echo "--- Interaction Constraints ---"
763
+ # Read dimensions from preset.yaml and check coherence
764
+ GRAN=$(grep 'granularity:' "presets/$PRESET/preset.yaml" | awk '{print $2}')
765
+ PROC=$(grep 'processing:' "presets/$PRESET/preset.yaml" | awk '{print $2}')
766
+ AUTO=$(grep 'automation:' "presets/$PRESET/preset.yaml" | awk '{print $2}')
767
+
768
+ # Hard constraint: atomic + light processing
769
+ if (( $(echo "$GRAN > 0.7" | bc -l) )) && (( $(echo "$PROC < 0.3" | bc -l) )); then
770
+ echo " FAIL: HARD CONSTRAINT — atomic granularity ($GRAN) with light processing ($PROC)"
771
+ else
772
+ echo " PASS: Granularity-processing coherence ($GRAN / $PROC)"
773
+ fi
774
+
775
+ # Hard constraint: heavy processing + manual automation
776
+ if (( $(echo "$PROC > 0.7" | bc -l) )) && (( $(echo "$AUTO < 0.2" | bc -l) )); then
777
+ echo " FAIL: HARD CONSTRAINT — heavy processing ($PROC) with manual automation ($AUTO)"
778
+ else
779
+ echo " PASS: Processing-automation coherence ($PROC / $AUTO)"
780
+ fi
781
+
782
+ # 4. Feature block alignment
783
+ echo ""
784
+ echo "--- Feature Block Alignment ---"
785
+ ACTIVE_BLOCKS=$(grep -A50 'active_blocks:' "presets/$PRESET/preset.yaml" | grep '^ *-' | sed 's/^ *- *//')
786
+ for block in $ACTIVE_BLOCKS; do
787
+ # Check that each active block produced output in the generated vault
788
+ case "$block" in
789
+ semantic-search)
790
+ if grep -qi "semantic\|vector\|embedding" "$VAULT/CLAUDE.md" 2>/dev/null; then
791
+ echo " PASS: $block — referenced in context file"
792
+ else
793
+ echo " WARN: $block — enabled but not referenced in context file"
794
+ fi
795
+ ;;
796
+ processing-pipeline)
797
+ if grep -qi "pipeline\|processing\|extract" "$VAULT/CLAUDE.md" 2>/dev/null; then
798
+ echo " PASS: $block — referenced in context file"
799
+ else
800
+ echo " WARN: $block — enabled but not referenced in context file"
801
+ fi
802
+ ;;
803
+ *)
804
+ echo " PASS: $block — (check manually)"
805
+ ;;
806
+ esac
807
+ done
808
+
809
+ # 5. Personality in identity.md
810
+ echo ""
811
+ echo "--- Personality Validation ---"
812
+ if [ -f "$VAULT/self/identity.md" ]; then
813
+ WARMTH=$(grep 'warmth:' "presets/$PRESET/preset.yaml" | awk '{print $2}')
814
+ if (( $(echo "$WARMTH > 0.5" | bc -l) )); then
815
+ # High warmth — identity should feel warm
816
+ if grep -qi "care\|support\|here for you\|partner\|companion" "$VAULT/self/identity.md"; then
817
+ echo " PASS: Warm personality reflected in identity.md"
818
+ else
819
+ echo " WARN: High warmth preset but identity.md lacks warm language"
820
+ fi
821
+ else
822
+ # Low warmth — identity should be analytical/neutral
823
+ if grep -qi "analy\|systematic\|rigorous\|precise" "$VAULT/self/identity.md"; then
824
+ echo " PASS: Analytical personality reflected in identity.md"
825
+ else
826
+ echo " WARN: Low warmth preset but identity.md lacks analytical language"
827
+ fi
828
+ fi
829
+ else
830
+ echo " FAIL: self/identity.md not found"
831
+ fi
832
+
833
+ echo ""
834
+ done
835
+ ```
836
+
837
+ **Expected output on success:**
838
+
839
+ Each preset should produce:
840
+ - Kernel: 15/15 PASS, or 14/15 PASS + 1 WARN (semantic search if qmd not configured, or self space if disabled)
841
+ - Vocabulary: domain-native terms present, zero cross-domain leakage
842
+ - Constraints: all coherence checks PASS
843
+ - Features: all active blocks (from 16 available) produce output in context file
844
+ - Personality: voice in identity.md matches warmth/formality dimensions (when self space is enabled)
845
+ - Session capture: ops/sessions/ exists and stop hook configured
846
+
847
+ **Common failure modes and remediation:**
848
+
849
+ | Failure | Cause | Fix |
850
+ |---------|-------|-----|
851
+ | Personal Assistant preset fails kernel on MOC hierarchy | Light-processing preset skipped MOC generation | Even light-processing systems need at least a hub MOC — enforce in /setup |
852
+ | Experimental preset leaks "claim" into context file | Feature block `atomic-notes.md` uses "claim" generically | Parameterize all feature blocks with vocabulary variables |
853
+ | Any preset missing ops/observations/ | Operational learning loop not generated | Learning loop is a kernel primitive — must be generated regardless of preset |
854
+ | Research personality says "I care about you" | Personality template not filtered by warmth dimension | Generate identity.md text conditionally based on personality.warmth value |
855
+ | Session capture missing from generated vault | Stop hook not configured or ops/sessions/ not created | Session capture is Primitive 15 (INVARIANT) — must be generated for all presets |
856
+ | Self space generated when disabled | Preset has self space OFF but self/ was created | Check self space optionality flag — research preset defaults to OFF |
857
+
858
+ ---
859
+
860
+ ## Milestone 7: Cross-Platform Parity
861
+
862
+ **What it tests:** Given the same input conversation, Claude Code and OpenClaw targets produce structurally equivalent outputs: same dimensions derived, same features enabled, same vocabulary applied. Zero platform-specific leakage (no `.claude/` references in OpenClaw output, no `SOUL.md` references in Claude Code output).
863
+
864
+ **Prerequisites:**
865
+ - Same derivation conversation input available for both platforms
866
+ - /setup functional for both Claude Code and OpenClaw targets
867
+ - Both outputs generated and available for comparison
868
+
869
+ **Pass criteria:**
870
+ 1. Same dimension values derived from identical input
871
+ 2. Same feature blocks enabled
872
+ 3. Same vocabulary mapping applied
873
+ 4. Same self/ structure (identity.md, methodology.md, goals.md)
874
+ 5. Same notes/ structure (same template schemas)
875
+ 6. Same ops/ structure (same operational directories)
876
+ 7. Zero cross-contamination: no `.claude/` in OpenClaw, no `SOUL.md`/`AGENTS.md`/`USER.md` in Claude Code
877
+
878
+ **Verification steps:**
879
+
880
+ ```bash
881
+ CC_VAULT="/tmp/test-claude-code"
882
+ OC_VAULT="/tmp/test-openclaw"
883
+
884
+ echo "=== Cross-Platform Parity Check ==="
885
+
886
+ # 1. Compare derivation dimensions
887
+ echo ""
888
+ echo "--- Dimension Parity ---"
889
+ if [ -f "$CC_VAULT/ops/derivation.md" ] && [ -f "$OC_VAULT/ops/derivation.md" ]; then
890
+ # Extract dimension lines and compare
891
+ CC_DIMS=$(grep -E "granularity|organization|linking|processing|session|maintenance|search|automation" "$CC_VAULT/ops/derivation.md" | sort)
892
+ OC_DIMS=$(grep -E "granularity|organization|linking|processing|session|maintenance|search|automation" "$OC_VAULT/ops/derivation.md" | sort)
893
+ if [ "$CC_DIMS" = "$OC_DIMS" ]; then
894
+ echo " PASS: Identical dimensions derived"
895
+ else
896
+ echo " FAIL: Dimension mismatch"
897
+ diff <(echo "$CC_DIMS") <(echo "$OC_DIMS")
898
+ fi
899
+ else
900
+ echo " WARN: derivation.md missing from one or both vaults"
901
+ fi
902
+
903
+ # 2. Compare feature blocks
904
+ echo ""
905
+ echo "--- Feature Block Parity ---"
906
+ if [ -f "$CC_VAULT/ops/derivation-manifest.md" ] && [ -f "$OC_VAULT/ops/derivation-manifest.md" ]; then
907
+ CC_FEATURES=$(grep -E "^\s*-\s+" "$CC_VAULT/ops/derivation-manifest.md" | sort)
908
+ OC_FEATURES=$(grep -E "^\s*-\s+" "$OC_VAULT/ops/derivation-manifest.md" | sort)
909
+ if [ "$CC_FEATURES" = "$OC_FEATURES" ]; then
910
+ echo " PASS: Identical feature blocks enabled"
911
+ else
912
+ echo " FAIL: Feature block mismatch"
913
+ diff <(echo "$CC_FEATURES") <(echo "$OC_FEATURES")
914
+ fi
915
+ fi
916
+
917
+ # 3. Compare self/ structure
918
+ echo ""
919
+ echo "--- Self/ Structure Parity ---"
920
+ CC_SELF=$(find "$CC_VAULT/self" -name "*.md" 2>/dev/null | xargs -I{} basename {} | sort)
921
+ OC_SELF=$(find "$OC_VAULT/self" -name "*.md" 2>/dev/null | xargs -I{} basename {} | sort)
922
+ if [ "$CC_SELF" = "$OC_SELF" ]; then
923
+ echo " PASS: Identical self/ structure"
924
+ else
925
+ echo " FAIL: self/ structure differs"
926
+ diff <(echo "$CC_SELF") <(echo "$OC_SELF")
927
+ fi
928
+
929
+ # 4. Compare notes/ template schemas
930
+ echo ""
931
+ echo "--- Template Schema Parity ---"
932
+ CC_TEMPLATES=$(find "$CC_VAULT/templates" -name "*.md" 2>/dev/null | xargs -I{} basename {} | sort)
933
+ OC_TEMPLATES=$(find "$OC_VAULT/templates" -name "*.md" 2>/dev/null | xargs -I{} basename {} | sort)
934
+ if [ "$CC_TEMPLATES" = "$OC_TEMPLATES" ]; then
935
+ echo " PASS: Identical template set"
936
+ else
937
+ echo " FAIL: Template set differs"
938
+ diff <(echo "$CC_TEMPLATES") <(echo "$OC_TEMPLATES")
939
+ fi
940
+
941
+ # 5. Compare ops/ structure
942
+ echo ""
943
+ echo "--- Ops/ Structure Parity ---"
944
+ CC_OPS=$(find "$CC_VAULT/ops" -type d 2>/dev/null | xargs -I{} basename {} | sort)
945
+ OC_OPS=$(find "$OC_VAULT/ops" -type d 2>/dev/null | xargs -I{} basename {} | sort)
946
+ if [ "$CC_OPS" = "$OC_OPS" ]; then
947
+ echo " PASS: Identical ops/ structure"
948
+ else
949
+ echo " FAIL: ops/ structure differs"
950
+ diff <(echo "$CC_OPS") <(echo "$OC_OPS")
951
+ fi
952
+
953
+ # 6. Cross-contamination check
954
+ echo ""
955
+ echo "--- Cross-Contamination Check ---"
956
+
957
+ # Claude Code should NOT have OpenClaw artifacts
958
+ CC_LEAK=$(grep -ri "SOUL\.md\|AGENTS\.md\|USER\.md\|MEMORY\.md\|openclaw\|OpenClaw" \
959
+ "$CC_VAULT" --include="*.md" --exclude-dir=.git -l 2>/dev/null | wc -l | tr -d ' ')
960
+ if [ "$CC_LEAK" -eq 0 ]; then
961
+ echo " PASS: No OpenClaw artifacts in Claude Code output"
962
+ else
963
+ echo " FAIL: $CC_LEAK files in Claude Code output reference OpenClaw"
964
+ grep -ri "SOUL\.md\|AGENTS\.md\|USER\.md\|MEMORY\.md" \
965
+ "$CC_VAULT" --include="*.md" --exclude-dir=.git -l 2>/dev/null
966
+ fi
967
+
968
+ # OpenClaw should NOT have Claude Code artifacts
969
+ OC_LEAK=$(grep -ri "CLAUDE\.md\|\.claude/\|claude.code\|Claude Code" \
970
+ "$OC_VAULT" --include="*.md" --exclude-dir=.git -l 2>/dev/null | wc -l | tr -d ' ')
971
+ if [ "$OC_LEAK" -eq 0 ]; then
972
+ echo " PASS: No Claude Code artifacts in OpenClaw output"
973
+ else
974
+ echo " FAIL: $OC_LEAK files in OpenClaw output reference Claude Code"
975
+ grep -ri "CLAUDE\.md\|\.claude/\|claude.code" \
976
+ "$OC_VAULT" --include="*.md" --exclude-dir=.git -l 2>/dev/null
977
+ fi
978
+
979
+ # 7. Platform-specific infrastructure is correct
980
+ echo ""
981
+ echo "--- Platform Infrastructure ---"
982
+ # Claude Code should have .claude/
983
+ if [ -d "$CC_VAULT/.claude" ]; then
984
+ echo " PASS: Claude Code vault has .claude/ directory"
985
+ else
986
+ echo " FAIL: Claude Code vault missing .claude/"
987
+ fi
988
+ # Claude Code should have CLAUDE.md
989
+ if [ -f "$CC_VAULT/CLAUDE.md" ]; then
990
+ echo " PASS: Claude Code vault has CLAUDE.md"
991
+ else
992
+ echo " FAIL: Claude Code vault missing CLAUDE.md"
993
+ fi
994
+
995
+ # OpenClaw should have SOUL.md + AGENTS.md
996
+ if [ -f "$OC_VAULT/SOUL.md" ] && [ -f "$OC_VAULT/AGENTS.md" ]; then
997
+ echo " PASS: OpenClaw vault has SOUL.md + AGENTS.md"
998
+ else
999
+ echo " FAIL: OpenClaw vault missing SOUL.md or AGENTS.md"
1000
+ fi
1001
+ # OpenClaw should have skills/
1002
+ if [ -d "$OC_VAULT/skills" ]; then
1003
+ echo " PASS: OpenClaw vault has skills/ directory"
1004
+ else
1005
+ echo " FAIL: OpenClaw vault missing skills/"
1006
+ fi
1007
+ ```
1008
+
1009
+ **Expected output on success:**
1010
+
1011
+ ```
1012
+ === Cross-Platform Parity Check ===
1013
+
1014
+ --- Dimension Parity ---
1015
+ PASS: Identical dimensions derived
1016
+
1017
+ --- Feature Block Parity ---
1018
+ PASS: Identical feature blocks enabled
1019
+
1020
+ --- Self/ Structure Parity ---
1021
+ PASS: Identical self/ structure
1022
+
1023
+ --- Template Schema Parity ---
1024
+ PASS: Identical template set
1025
+
1026
+ --- Ops/ Structure Parity ---
1027
+ PASS: Identical ops/ structure
1028
+
1029
+ --- Cross-Contamination Check ---
1030
+ PASS: No OpenClaw artifacts in Claude Code output
1031
+ PASS: No Claude Code artifacts in OpenClaw output
1032
+
1033
+ --- Platform Infrastructure ---
1034
+ PASS: Claude Code vault has .claude/ directory
1035
+ PASS: Claude Code vault has CLAUDE.md
1036
+ PASS: OpenClaw vault has SOUL.md + AGENTS.md
1037
+ PASS: OpenClaw vault has skills/ directory
1038
+ ```
1039
+
1040
+ **Common failure modes and remediation:**
1041
+
1042
+ | Failure | Cause | Fix |
1043
+ |---------|-------|-----|
1044
+ | Dimension mismatch between platforms | Platform-specific derivation logic alters dimension values | Derivation must be platform-independent — only infrastructure differs, not dimensions |
1045
+ | "CLAUDE.md" referenced in OpenClaw output | Generator uses hardcoded "CLAUDE.md" instead of platform-variable context filename | Parameterize context file references in all generators: `{CONTEXT_FILE}` resolved per platform |
1046
+ | ".claude/" referenced in OpenClaw output | Feature block for hooks uses Claude Code paths | Gate hook infrastructure with platform check: `.claude/hooks/` for CC, `skills/` for OC |
1047
+ | OpenClaw vault has `.claude/` directory | Platform branching not applied during directory creation | Check /setup platform switch — directory creation must branch on target platform |
1048
+ | Different template sets | One platform generates extra templates (e.g., session-log for one but not other) | Template generation should be platform-independent — same templates, different skill/hook wrappers |
1049
+ | self/ content differs | Identity.md mentions platform-specific infrastructure | self/ content should be platform-agnostic — reference "the system" not "CLAUDE.md" or "SOUL.md" |
1050
+
1051
+ ---
1052
+
1053
+ ## Running All Milestones
1054
+
1055
+ **Recommended execution order:**
1056
+
1057
+ ```bash
1058
+ # 1. Generate test vaults for each preset and platform
1059
+ # (assume /setup produces output in specified directories)
1060
+
1061
+ # 2. Run milestones in order
1062
+ echo "=== Milestone 1: Kernel ===" && ./reference/validate-kernel.sh /tmp/test-research
1063
+ echo "=== Milestone 2: Context ===" # (run section checks manually or via script above)
1064
+ echo "=== Milestone 3: Vocabulary ===" # (run against therapy vault)
1065
+ echo "=== Milestone 4: Pipeline ===" # (requires active agent session)
1066
+ echo "=== Milestone 5: Persistence ===" # (requires active Claude Code session)
1067
+ echo "=== Milestone 5b: Session Capture ===" # (verify stop hook and ops/sessions/)
1068
+ echo "=== Milestone 5c: Condition-Based ===" # (verify condition triggers, no time-based)
1069
+ echo "=== Milestone 6: Presets ===" # (run for all 3 presets)
1070
+ echo "=== Milestone 7: Parity ===" # (compare CC vs OC for same input)
1071
+ ```
1072
+
1073
+ **Milestone dependencies:**
1074
+
1075
+ ```
1076
+ M1 (Kernel) ← no dependencies
1077
+ M2 (Context) ← M1 (kernel must pass first)
1078
+ M3 (Vocabulary) ← M2 (context must exist)
1079
+ M4 (Pipeline) ← M1 + M2 (kernel + context)
1080
+ M5 (Persistence) ← M1 (kernel, specifically session-rhythm)
1081
+ M5b (Session Capture) ← M1 (kernel, specifically Primitive 15)
1082
+ M5c (Condition-Based) ← M1 + M2 (kernel + context)
1083
+ M6 (Presets) ← M1 + M2 + M3 (validates all three for each preset)
1084
+ M7 (Parity) ← M6 (both platforms must produce valid presets)
1085
+ ```
1086
+
1087
+ Milestones 1-3 can be automated as a CI check. Milestones 4-5c require an active agent session. Milestones 6-7 require generating multiple vaults and are best run as a manual test suite.