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.
- package/.claude-plugin/marketplace.json +11 -0
- package/.claude-plugin/plugin.json +22 -0
- package/README.md +683 -0
- package/agents/knowledge-guide.md +49 -0
- package/bin/cli.mjs +66 -0
- package/generators/agents-md.md +240 -0
- package/generators/claude-md.md +379 -0
- package/generators/features/atomic-notes.md +124 -0
- package/generators/features/ethical-guardrails.md +58 -0
- package/generators/features/graph-analysis.md +188 -0
- package/generators/features/helper-functions.md +92 -0
- package/generators/features/maintenance.md +164 -0
- package/generators/features/methodology-knowledge.md +70 -0
- package/generators/features/mocs.md +144 -0
- package/generators/features/multi-domain.md +61 -0
- package/generators/features/personality.md +71 -0
- package/generators/features/processing-pipeline.md +428 -0
- package/generators/features/schema.md +149 -0
- package/generators/features/self-evolution.md +229 -0
- package/generators/features/self-space.md +78 -0
- package/generators/features/semantic-search.md +99 -0
- package/generators/features/session-rhythm.md +85 -0
- package/generators/features/templates.md +85 -0
- package/generators/features/wiki-links.md +88 -0
- package/generators/soul-md.md +121 -0
- package/hooks/hooks.json +45 -0
- package/hooks/scripts/auto-commit.sh +44 -0
- package/hooks/scripts/session-capture.sh +35 -0
- package/hooks/scripts/session-orient.sh +86 -0
- package/hooks/scripts/write-validate.sh +42 -0
- package/methodology/AI shifts knowledge systems from externalizing memory to externalizing attention.md +59 -0
- package/methodology/BM25 retrieval fails on full-length descriptions because query term dilution reduces match scores.md +39 -0
- package/methodology/IBIS framework maps claim-based architecture to structured argumentation.md +58 -0
- package/methodology/LLM attention degrades as context fills.md +49 -0
- package/methodology/MOC construction forces synthesis that automated generation from metadata cannot replicate.md +49 -0
- package/methodology/MOC maintenance investment compounds because orientation savings multiply across every future session.md +41 -0
- package/methodology/MOCs are attention management devices not just organizational tools.md +51 -0
- package/methodology/PKM failure follows a predictable cycle.md +50 -0
- package/methodology/ThreadMode to DocumentMode transformation is the core value creation step.md +52 -0
- package/methodology/WIP limits force processing over accumulation.md +53 -0
- package/methodology/Zeigarnik effect validates capture-first philosophy because open loops drain attention.md +42 -0
- package/methodology/academic research uses structured extraction with cross-source synthesis.md +566 -0
- package/methodology/adapt the four-phase processing pipeline to domain-specific throughput needs.md +197 -0
- package/methodology/agent notes externalize navigation intuition that search cannot discover and traversal cannot reconstruct.md +48 -0
- package/methodology/agent self-memory should be architecturally separate from user knowledge systems.md +48 -0
- package/methodology/agent session boundaries create natural automation checkpoints that human-operated systems lack.md +56 -0
- package/methodology/agent-cognition.md +107 -0
- package/methodology/agents are simultaneously methodology executors and subjects creating a unique trust asymmetry.md +66 -0
- package/methodology/aspect-oriented programming solved the same cross-cutting concern problem that hooks solve.md +39 -0
- package/methodology/associative ontologies beat hierarchical taxonomies because heterarchy adapts while hierarchy brittles.md +53 -0
- package/methodology/attention residue may have a minimum granularity that cannot be subdivided.md +46 -0
- package/methodology/auto-commit hooks eliminate prospective memory failures by converting remember-to-act into guaranteed execution.md +47 -0
- package/methodology/automated detection is always safe because it only reads state while automated remediation risks content corruption.md +42 -0
- package/methodology/automation should be retired when its false positive rate exceeds its true positive rate or it catches zero issues.md +56 -0
- package/methodology/backlinks implicitly define notes by revealing usage context.md +35 -0
- package/methodology/backward maintenance asks what would be different if written today.md +62 -0
- package/methodology/balance onboarding enforcement and questions to prevent premature complexity.md +229 -0
- package/methodology/basic level categorization determines optimal MOC granularity.md +51 -0
- package/methodology/batching by context similarity reduces switching costs in agent processing.md +43 -0
- package/methodology/behavioral anti-patterns matter more than tool selection.md +42 -0
- package/methodology/betweenness centrality identifies bridge notes connecting disparate knowledge domains.md +57 -0
- package/methodology/blueprints that teach construction outperform downloads that provide pre-built code for platform-dependent modules.md +42 -0
- package/methodology/bootstrapping principle enables self-improving systems.md +62 -0
- package/methodology/build automatic memory through cognitive offloading and session handoffs.md +285 -0
- package/methodology/capture the reaction to content not just the content itself.md +41 -0
- package/methodology/claims must be specific enough to be wrong.md +36 -0
- package/methodology/closure rituals create clean breaks that prevent attention residue bleed.md +44 -0
- package/methodology/cognitive offloading is the architectural foundation for vault design.md +46 -0
- package/methodology/cognitive outsourcing risk in agent-operated systems.md +55 -0
- package/methodology/coherence maintains consistency despite inconsistent inputs.md +96 -0
- package/methodology/coherent architecture emerges from wiki links spreading activation and small-world topology.md +48 -0
- package/methodology/community detection algorithms can inform when MOCs should split or merge.md +52 -0
- package/methodology/complete navigation requires four complementary types that no single mechanism provides.md +43 -0
- package/methodology/complex systems evolve from simple working systems.md +59 -0
- package/methodology/composable knowledge architecture builds systems from independent toggleable modules not monolithic templates.md +61 -0
- package/methodology/compose multi-domain systems through separate templates and shared graph.md +372 -0
- package/methodology/concept-orientation beats source-orientation for cross-domain connections.md +51 -0
- package/methodology/confidence thresholds gate automated action between the mechanical and judgment zones.md +50 -0
- package/methodology/configuration dimensions interact so choices in one create pressure on others.md +58 -0
- package/methodology/configuration paralysis emerges when derivation surfaces too many decisions.md +44 -0
- package/methodology/context files function as agent operating systems through self-referential self-extension.md +46 -0
- package/methodology/context phrase clarity determines how deep a navigation hierarchy can scale.md +46 -0
- package/methodology/continuous small-batch processing eliminates review dread.md +48 -0
- package/methodology/controlled disorder engineers serendipity through semantic rather than topical linking.md +51 -0
- package/methodology/creative writing uses worldbuilding consistency with character tracking.md +672 -0
- package/methodology/cross-links between MOC territories indicate creative leaps and integration depth.md +43 -0
- package/methodology/dangling links reveal which notes want to exist.md +62 -0
- package/methodology/data exit velocity measures how quickly content escapes vendor lock-in.md +74 -0
- package/methodology/decontextualization risk means atomicity may strip meaning that cannot be recovered.md +48 -0
- package/methodology/dense interlinked research claims enable derivation while sparse references only enable templating.md +47 -0
- package/methodology/dependency resolution through topological sort makes module composition transparent and verifiable.md +56 -0
- package/methodology/derivation generates knowledge systems from composable research claims not template customization.md +63 -0
- package/methodology/derivation-engine.md +27 -0
- package/methodology/derived systems follow a seed-evolve-reseed lifecycle.md +56 -0
- package/methodology/description quality for humans diverges from description quality for keyword search.md +73 -0
- package/methodology/descriptions are retrieval filters not summaries.md +112 -0
- package/methodology/design MOCs as attention management devices with lifecycle governance.md +318 -0
- package/methodology/design-dimensions.md +66 -0
- package/methodology/digital mutability enables note evolution that physical permanence forbids.md +54 -0
- package/methodology/discovery-retrieval.md +48 -0
- package/methodology/distinctiveness scoring treats description quality as measurable.md +69 -0
- package/methodology/does agent processing recover what fast capture loses.md +43 -0
- package/methodology/domain-compositions.md +37 -0
- package/methodology/dual-coding with visual elements could enhance agent traversal.md +55 -0
- package/methodology/each module must be describable in one sentence under 200 characters or it does too many things.md +45 -0
- package/methodology/each new note compounds value by creating traversal paths.md +55 -0
- package/methodology/eight configuration dimensions parameterize the space of possible knowledge systems.md +56 -0
- package/methodology/elaborative encoding is the quality gate for new notes.md +55 -0
- package/methodology/enforce schema with graduated strictness across capture processing and query zones.md +221 -0
- package/methodology/enforcing atomicity can create paralysis when ideas resist decomposition.md +43 -0
- package/methodology/engineering uses technical decision tracking with architectural memory.md +766 -0
- package/methodology/every knowledge domain shares a four-phase processing skeleton that diverges only in the process step.md +53 -0
- package/methodology/evolution observations provide actionable signals for system adaptation.md +67 -0
- package/methodology/external memory shapes cognition more than base model.md +60 -0
- package/methodology/faceted classification treats notes as multi-dimensional objects rather than folder contents.md +65 -0
- package/methodology/failure-modes.md +27 -0
- package/methodology/false universalism applies same processing logic regardless of domain.md +49 -0
- package/methodology/federated wiki pattern enables multi-agent divergence as feature not bug.md +59 -0
- package/methodology/flat files break at retrieval scale.md +75 -0
- package/methodology/forced engagement produces weak connections.md +48 -0
- package/methodology/four abstraction layers separate platform-agnostic from platform-dependent knowledge system features.md +47 -0
- package/methodology/fresh context per task preserves quality better than chaining phases.md +44 -0
- package/methodology/friction reveals architecture.md +63 -0
- package/methodology/friction-driven module adoption prevents configuration debt by adding complexity only at pain points.md +48 -0
- package/methodology/gardening cycle implements tend prune fertilize operations.md +41 -0
- package/methodology/generation effect gate blocks processing without transformation.md +40 -0
- package/methodology/goal-driven memory orchestration enables autonomous domain learning through directed compute allocation.md +41 -0
- package/methodology/good descriptions layer heuristic then mechanism then implication.md +57 -0
- package/methodology/graph-structure.md +65 -0
- package/methodology/guided notes might outperform post-hoc structuring for high-volume capture.md +37 -0
- package/methodology/health wellness uses symptom-trigger correlation with multi-dimensional tracking.md +819 -0
- package/methodology/hook composition creates emergent methodology from independent single-concern components.md +47 -0
- package/methodology/hook enforcement guarantees quality while instruction enforcement merely suggests it.md +51 -0
- package/methodology/hook-driven learning loops create self-improving methodology through observation accumulation.md +62 -0
- package/methodology/hooks are the agent habit system that replaces the missing basal ganglia.md +40 -0
- package/methodology/hooks cannot replace genuine cognitive engagement yet more automation is always tempting.md +87 -0
- package/methodology/hooks enable context window efficiency by delegating deterministic checks to external processes.md +47 -0
- package/methodology/idempotent maintenance operations are safe to automate because running them twice produces the same result as running them once.md +44 -0
- package/methodology/implement condition-based maintenance triggers for derived systems.md +255 -0
- package/methodology/implicit dependencies create distributed monoliths that fail silently across configurations.md +58 -0
- package/methodology/implicit knowledge emerges from traversal.md +55 -0
- package/methodology/incremental formalization happens through repeated touching of old notes.md +60 -0
- package/methodology/incremental reading enables cross-source connection finding.md +39 -0
- package/methodology/index.md +32 -0
- package/methodology/inline links carry richer relationship data than metadata fields.md +91 -0
- package/methodology/insight accretion differs from productivity in knowledge systems.md +41 -0
- package/methodology/intermediate packets enable assembly over creation.md +52 -0
- package/methodology/intermediate representation pattern enables reliable vault operations beyond regex.md +62 -0
- package/methodology/justification chains enable forward backward and evolution reasoning about configuration decisions.md +46 -0
- package/methodology/knowledge system architecture is parameterized by platform capabilities not fixed by methodology.md +51 -0
- package/methodology/knowledge systems become communication partners through complexity and memory humans cannot sustain.md +47 -0
- package/methodology/knowledge systems share universal operations and structural components across all methodology traditions.md +46 -0
- package/methodology/legal case management uses precedent chains with regulatory change propagation.md +892 -0
- package/methodology/live index via periodic regeneration keeps discovery current.md +58 -0
- package/methodology/local-first file formats are inherently agent-native.md +69 -0
- package/methodology/logic column pattern separates reasoning from procedure.md +35 -0
- package/methodology/maintenance operations are more universal than creative pipelines because structural health is domain-invariant.md +47 -0
- package/methodology/maintenance scheduling frequency should match consequence speed not detection capability.md +50 -0
- package/methodology/maintenance targeting should prioritize mechanism and theory notes.md +26 -0
- package/methodology/maintenance-patterns.md +72 -0
- package/methodology/markdown plus YAML plus ripgrep implements a queryable graph database without infrastructure.md +55 -0
- package/methodology/maturity field enables agent context prioritization.md +33 -0
- package/methodology/memory-architecture.md +27 -0
- package/methodology/metacognitive confidence can diverge from retrieval capability.md +42 -0
- package/methodology/metadata reduces entropy enabling precision over recall.md +91 -0
- package/methodology/methodology development should follow the trajectory from documentation to skill to hook as understanding hardens.md +80 -0
- package/methodology/methodology traditions are named points in a shared configuration space not competing paradigms.md +64 -0
- package/methodology/mnemonic medium embeds verification into navigation.md +46 -0
- package/methodology/module communication through shared YAML fields creates loose coupling without direct dependencies.md +44 -0
- package/methodology/module deactivation must account for structural artifacts that survive the toggle.md +49 -0
- package/methodology/multi-domain systems compose through separate templates and shared graph.md +61 -0
- package/methodology/multi-domain-composition.md +27 -0
- package/methodology/narrow folksonomy optimizes for single-operator retrieval unlike broad consensus tagging.md +53 -0
- package/methodology/navigation infrastructure passes through distinct scaling regimes that require qualitative strategy shifts.md +48 -0
- package/methodology/navigational vertigo emerges in pure association systems without local hierarchy.md +54 -0
- package/methodology/note titles should function as APIs enabling sentence transclusion.md +51 -0
- package/methodology/note-design.md +57 -0
- package/methodology/notes are skills /342/200/224 curated knowledge injected when relevant.md" +62 -0
- package/methodology/notes function as cognitive anchors that stabilize attention during complex tasks.md +41 -0
- package/methodology/novel domains derive by mapping knowledge type to closest reference domain then adapting.md +50 -0
- package/methodology/nudge theory explains graduated hook enforcement as choice architecture for agents.md +59 -0
- package/methodology/observation and tension logs function as dead-letter queues for failed automation.md +51 -0
- package/methodology/operational memory and knowledge memory serve different functions in agent architecture.md +48 -0
- package/methodology/operational wisdom requires contextual observation.md +52 -0
- package/methodology/orchestrated vault creation transforms arscontexta from tool to autonomous knowledge factory.md +40 -0
- package/methodology/organic emergence versus active curation creates a fundamental vault governance tension.md +68 -0
- package/methodology/orphan notes are seeds not failures.md +38 -0
- package/methodology/over-automation corrupts quality when hooks encode judgment rather than verification.md +62 -0
- package/methodology/people relationships uses Dunbar-layered graphs with interaction tracking.md +659 -0
- package/methodology/personal assistant uses life area management with review automation.md +610 -0
- package/methodology/platform adapter translation is semantic not mechanical because hook event meanings differ.md +40 -0
- package/methodology/platform capability tiers determine which knowledge system features can be implemented.md +48 -0
- package/methodology/platform fragmentation means identical conceptual operations require different implementations across agent environments.md +44 -0
- package/methodology/premature complexity is the most common derivation failure mode.md +45 -0
- package/methodology/prevent domain-specific failure modes through the vulnerability matrix.md +336 -0
- package/methodology/processing effort should follow retrieval demand.md +57 -0
- package/methodology/processing-workflows.md +75 -0
- package/methodology/product management uses feedback pipelines with experiment tracking.md +789 -0
- package/methodology/productivity porn risk in meta-system building.md +30 -0
- package/methodology/programmable notes could enable property-triggered workflows.md +64 -0
- package/methodology/progressive disclosure means reading right not reading less.md +69 -0
- package/methodology/progressive schema validates only what active modules require not the full system schema.md +49 -0
- package/methodology/project management uses decision tracking with stakeholder context.md +776 -0
- package/methodology/propositional link semantics transform wiki links from associative to reasoned.md +87 -0
- package/methodology/prospective memory requires externalization.md +53 -0
- package/methodology/provenance tracks where beliefs come from.md +62 -0
- package/methodology/queries evolve during search so agents should checkpoint.md +35 -0
- package/methodology/question-answer metadata enables inverted search patterns.md +39 -0
- package/methodology/random note resurfacing prevents write-only memory.md +33 -0
- package/methodology/reconciliation loops that compare desired state to actual state enable drift correction without continuous monitoring.md +59 -0
- package/methodology/reflection synthesizes existing notes into new insight.md +100 -0
- package/methodology/retrieval utility should drive design over capture completeness.md +69 -0
- package/methodology/retrieval verification loop tests description quality at scale.md +81 -0
- package/methodology/role field makes graph structure explicit.md +94 -0
- package/methodology/scaffolding enables divergence that fine-tuning cannot.md +67 -0
- package/methodology/schema enforcement via validation agents enables soft consistency.md +60 -0
- package/methodology/schema evolution follows observe-then-formalize not design-then-enforce.md +65 -0
- package/methodology/schema field names are the only domain specific element in the universal note pattern.md +46 -0
- package/methodology/schema fields should use domain-native vocabulary not abstract terminology.md +47 -0
- package/methodology/schema templates reduce cognitive overhead at capture time.md +55 -0
- package/methodology/schema validation hooks externalize inhibitory control that degrades under cognitive load.md +48 -0
- package/methodology/schema-enforcement.md +27 -0
- package/methodology/self-extension requires context files to contain platform operations knowledge not just methodology.md +47 -0
- package/methodology/sense-making vs storage does compression lose essential nuance.md +73 -0
- package/methodology/session boundary hooks implement cognitive bookends for orientation and reflection.md +60 -0
- package/methodology/session handoff creates continuity without persistent memory.md +43 -0
- package/methodology/session outputs are packets for future selves.md +43 -0
- package/methodology/session transcript mining enables experiential validation that structural tests cannot provide.md +38 -0
- package/methodology/skill context budgets constrain knowledge system complexity on agent platforms.md +52 -0
- package/methodology/skills encode methodology so manual execution bypasses quality gates.md +50 -0
- package/methodology/small-world topology requires hubs and dense local links.md +99 -0
- package/methodology/source attribution enables tracing claims to foundations.md +38 -0
- package/methodology/spaced repetition scheduling could optimize vault maintenance.md +44 -0
- package/methodology/spreading activation models how agents should traverse.md +79 -0
- package/methodology/stale navigation actively misleads because agents trust curated maps completely.md +43 -0
- package/methodology/stigmergy coordinates agents through environmental traces without direct communication.md +62 -0
- package/methodology/storage versus thinking distinction determines which tool patterns apply.md +56 -0
- package/methodology/structure enables navigation without reading everything.md +52 -0
- package/methodology/structure without processing provides no value.md +56 -0
- package/methodology/student learning uses prerequisite graphs with spaced retrieval.md +770 -0
- package/methodology/summary coherence tests composability before filing.md +37 -0
- package/methodology/tag rot applies to wiki links because titles serve as both identifier and display text.md +50 -0
- package/methodology/temporal media must convert to spatial text for agent traversal.md +43 -0
- package/methodology/temporal processing priority creates age-based inbox urgency.md +45 -0
- package/methodology/temporal separation of capture and processing preserves context freshness.md +39 -0
- package/methodology/ten universal primitives form the kernel of every viable agent knowledge system.md +162 -0
- package/methodology/testing effect could enable agent knowledge verification.md +38 -0
- package/methodology/the AgentSkills standard embodies progressive disclosure at the skill level.md +40 -0
- package/methodology/the derivation engine improves recursively as deployed systems generate observations.md +49 -0
- package/methodology/the determinism boundary separates hook methodology from skill methodology.md +46 -0
- package/methodology/the fix-versus-report decision depends on determinism reversibility and accumulated trust.md +45 -0
- package/methodology/the generation effect requires active transformation not just storage.md +57 -0
- package/methodology/the no wrong patches guarantee ensures any valid module combination produces a valid system.md +58 -0
- package/methodology/the system is the argument.md +46 -0
- package/methodology/the vault constitutes identity for agents.md +86 -0
- package/methodology/the vault methodology transfers because it encodes cognitive science not domain specifics.md +47 -0
- package/methodology/therapy journal uses warm personality with pattern detection for emotional processing.md +584 -0
- package/methodology/three capture schools converge through agent-mediated synthesis.md +55 -0
- package/methodology/three concurrent maintenance loops operate at different timescales to catch different classes of problems.md +56 -0
- package/methodology/throughput matters more than accumulation.md +58 -0
- package/methodology/title as claim enables traversal as reasoning.md +50 -0
- package/methodology/topological organization beats temporal for knowledge work.md +52 -0
- package/methodology/trading uses conviction tracking with thesis-outcome correlation.md +699 -0
- package/methodology/trails transform ephemeral navigation into persistent artifacts.md +39 -0
- package/methodology/transform universal vocabulary to domain-native language through six levels.md +259 -0
- package/methodology/type field enables structured queries without folder hierarchies.md +53 -0
- package/methodology/use-case presets dissolve the tension between composability and simplicity.md +44 -0
- package/methodology/vault conventions may impose hidden rigidity on thinking.md +44 -0
- package/methodology/verbatim risk applies to agents too.md +31 -0
- package/methodology/vibe notetaking is the emerging industry consensus for AI-native self-organization.md +56 -0
- package/methodology/vivid memories need verification.md +45 -0
- package/methodology/vocabulary-transformation.md +27 -0
- package/methodology/voice capture is the highest-bandwidth channel for agent-delegated knowledge systems.md +45 -0
- package/methodology/wiki links are the digital evolution of analog indexing.md +73 -0
- package/methodology/wiki links as social contract transforms agents into stewards of incomplete references.md +52 -0
- package/methodology/wiki links create navigation paths that shape retrieval.md +63 -0
- package/methodology/wiki links implement GraphRAG without the infrastructure.md +101 -0
- package/methodology/writing for audience blocks authentic creation.md +22 -0
- package/methodology/you operate a system that takes notes.md +79 -0
- package/openclaw/SKILL.md +110 -0
- package/package.json +45 -0
- package/platforms/README.md +51 -0
- package/platforms/claude-code/generator.md +61 -0
- package/platforms/claude-code/hooks/README.md +186 -0
- package/platforms/claude-code/hooks/auto-commit.sh.template +38 -0
- package/platforms/claude-code/hooks/session-capture.sh.template +72 -0
- package/platforms/claude-code/hooks/session-orient.sh.template +189 -0
- package/platforms/claude-code/hooks/write-validate.sh.template +106 -0
- package/platforms/openclaw/generator.md +82 -0
- package/platforms/openclaw/hooks/README.md +89 -0
- package/platforms/openclaw/hooks/bootstrap.ts.template +224 -0
- package/platforms/openclaw/hooks/command-new.ts.template +165 -0
- package/platforms/openclaw/hooks/heartbeat.ts.template +214 -0
- package/platforms/shared/features/README.md +70 -0
- package/platforms/shared/skill-blocks/graph.md +145 -0
- package/platforms/shared/skill-blocks/learn.md +119 -0
- package/platforms/shared/skill-blocks/next.md +131 -0
- package/platforms/shared/skill-blocks/pipeline.md +326 -0
- package/platforms/shared/skill-blocks/ralph.md +616 -0
- package/platforms/shared/skill-blocks/reduce.md +1142 -0
- package/platforms/shared/skill-blocks/refactor.md +129 -0
- package/platforms/shared/skill-blocks/reflect.md +780 -0
- package/platforms/shared/skill-blocks/remember.md +524 -0
- package/platforms/shared/skill-blocks/rethink.md +574 -0
- package/platforms/shared/skill-blocks/reweave.md +680 -0
- package/platforms/shared/skill-blocks/seed.md +320 -0
- package/platforms/shared/skill-blocks/stats.md +145 -0
- package/platforms/shared/skill-blocks/tasks.md +171 -0
- package/platforms/shared/skill-blocks/validate.md +323 -0
- package/platforms/shared/skill-blocks/verify.md +562 -0
- package/platforms/shared/templates/README.md +35 -0
- package/presets/experimental/categories.yaml +1 -0
- package/presets/experimental/preset.yaml +38 -0
- package/presets/experimental/starter/README.md +7 -0
- package/presets/experimental/vocabulary.yaml +7 -0
- package/presets/personal/categories.yaml +7 -0
- package/presets/personal/preset.yaml +41 -0
- package/presets/personal/starter/goals.md +21 -0
- package/presets/personal/starter/index.md +17 -0
- package/presets/personal/starter/life-areas.md +21 -0
- package/presets/personal/starter/people.md +21 -0
- package/presets/personal/vocabulary.yaml +32 -0
- package/presets/research/categories.yaml +8 -0
- package/presets/research/preset.yaml +41 -0
- package/presets/research/starter/index.md +17 -0
- package/presets/research/starter/methods.md +21 -0
- package/presets/research/starter/open-questions.md +21 -0
- package/presets/research/vocabulary.yaml +33 -0
- package/reference/AUDIT-REPORT.md +238 -0
- package/reference/claim-map.md +172 -0
- package/reference/components.md +327 -0
- package/reference/conversation-patterns.md +542 -0
- package/reference/derivation-validation.md +649 -0
- package/reference/dimension-claim-map.md +134 -0
- package/reference/evolution-lifecycle.md +297 -0
- package/reference/failure-modes.md +235 -0
- package/reference/interaction-constraints.md +204 -0
- package/reference/kernel.yaml +242 -0
- package/reference/methodology.md +283 -0
- package/reference/open-questions.md +279 -0
- package/reference/personality-layer.md +302 -0
- package/reference/self-space.md +299 -0
- package/reference/semantic-vs-keyword.md +288 -0
- package/reference/session-lifecycle.md +298 -0
- package/reference/templates/base-note.md +16 -0
- package/reference/templates/companion-note.md +70 -0
- package/reference/templates/creative-note.md +16 -0
- package/reference/templates/learning-note.md +16 -0
- package/reference/templates/life-note.md +16 -0
- package/reference/templates/moc.md +26 -0
- package/reference/templates/relationship-note.md +17 -0
- package/reference/templates/research-note.md +19 -0
- package/reference/templates/session-log.md +24 -0
- package/reference/templates/therapy-note.md +16 -0
- package/reference/test-fixtures/edge-case-constraints.md +148 -0
- package/reference/test-fixtures/multi-domain.md +164 -0
- package/reference/test-fixtures/novel-domain-gaming.md +138 -0
- package/reference/test-fixtures/research-minimal.md +102 -0
- package/reference/test-fixtures/therapy-full.md +155 -0
- package/reference/testing-milestones.md +1087 -0
- package/reference/three-spaces.md +363 -0
- package/reference/tradition-presets.md +203 -0
- package/reference/use-case-presets.md +341 -0
- package/reference/validate-kernel.sh +432 -0
- package/reference/vocabulary-transforms.md +85 -0
- package/scripts/sync-thinking.sh +147 -0
- package/skill-sources/graph/SKILL.md +567 -0
- package/skill-sources/graph/skill.json +17 -0
- package/skill-sources/learn/SKILL.md +254 -0
- package/skill-sources/learn/skill.json +17 -0
- package/skill-sources/next/SKILL.md +407 -0
- package/skill-sources/next/skill.json +17 -0
- package/skill-sources/pipeline/SKILL.md +314 -0
- package/skill-sources/pipeline/skill.json +17 -0
- package/skill-sources/ralph/SKILL.md +604 -0
- package/skill-sources/ralph/skill.json +17 -0
- package/skill-sources/reduce/SKILL.md +1113 -0
- package/skill-sources/reduce/skill.json +17 -0
- package/skill-sources/refactor/SKILL.md +448 -0
- package/skill-sources/refactor/skill.json +17 -0
- package/skill-sources/reflect/SKILL.md +747 -0
- package/skill-sources/reflect/skill.json +17 -0
- package/skill-sources/remember/SKILL.md +534 -0
- package/skill-sources/remember/skill.json +17 -0
- package/skill-sources/rethink/SKILL.md +658 -0
- package/skill-sources/rethink/skill.json +17 -0
- package/skill-sources/reweave/SKILL.md +657 -0
- package/skill-sources/reweave/skill.json +17 -0
- package/skill-sources/seed/SKILL.md +303 -0
- package/skill-sources/seed/skill.json +17 -0
- package/skill-sources/stats/SKILL.md +371 -0
- package/skill-sources/stats/skill.json +17 -0
- package/skill-sources/tasks/SKILL.md +402 -0
- package/skill-sources/tasks/skill.json +17 -0
- package/skill-sources/validate/SKILL.md +310 -0
- package/skill-sources/validate/skill.json +17 -0
- package/skill-sources/verify/SKILL.md +532 -0
- package/skill-sources/verify/skill.json +17 -0
- package/skills/add-domain/SKILL.md +441 -0
- package/skills/add-domain/skill.json +17 -0
- package/skills/architect/SKILL.md +568 -0
- package/skills/architect/skill.json +17 -0
- package/skills/ask/SKILL.md +388 -0
- package/skills/ask/skill.json +17 -0
- package/skills/health/SKILL.md +760 -0
- package/skills/health/skill.json +17 -0
- package/skills/help/SKILL.md +348 -0
- package/skills/help/skill.json +17 -0
- package/skills/recommend/SKILL.md +553 -0
- package/skills/recommend/skill.json +17 -0
- package/skills/reseed/SKILL.md +385 -0
- package/skills/reseed/skill.json +17 -0
- package/skills/setup/SKILL.md +1688 -0
- package/skills/setup/skill.json +17 -0
- package/skills/tutorial/SKILL.md +496 -0
- package/skills/tutorial/skill.json +17 -0
- package/skills/upgrade/SKILL.md +395 -0
- 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.
|