# .ontology/core.ncl — Project: {{ project_name }} # Fill in nodes that capture what is invariant and what is in tension. # # To use typed construction helpers, add ontology/defaults/ from the ontoref # checkout and: let d = import "ontology/defaults/core.ncl" in # # Fields (node): # id — unique kebab-case identifier # name — human-readable label # pole — 'Yang (active force) | 'Yin (receptive force) | 'Tension # level — 'Axiom | 'Practice | 'Tension | 'Spiral # description — what this node means for this project # invariant — true if this is non-negotiable (requires ADR to change) # artifact_paths — list of file paths that implement this node (optional) # # Fields (edge): # from, to — node IDs # kind — 'Implements | 'Resolves | 'Complements | 'Contradicts | # 'DependsOn | 'ValidatedBy | 'ManifestsIn # weight — 'High | 'Medium | 'Low # note — why this edge exists (optional) { nodes = [ # ── Axioms (invariant = true) ───────────────────────────────────────────── { id = "{{ project_name }}-primary-constraint", name = "Primary Constraint", pole = 'Yang, level = 'Axiom, description = "Replace with the non-negotiable constraint that defines what this project IS.", invariant = true, }, # ── Tensions ────────────────────────────────────────────────────────────── { id = "{{ project_name }}-first-tension", name = "First Tension", pole = 'Tension, level = 'Tension, description = "Describe the core structural tension this project must navigate.", invariant = false, }, # ── Practices — add confirmed patterns and active systems here ──────────── ], edges = [ # Example: # { # from = "{{ project_name }}-primary-constraint", # to = "{{ project_name }}-first-tension", # kind = 'Resolves, # weight = 'High, # note = "Why this edge exists.", # }, ], }