# .ontoref/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 ─────────────────────────────────────────────────────────────
    # For Library repos (frameworks): catalog each exposed capability here.
    # Consumer projects reference these via manifest cross-reference layers.
    # For consumer projects (Service/DevWorkspace): use 'Project level instead.

  ],

  edges = [

    # Example:
    # {
    #   from   = "{{ project_name }}-primary-constraint",
    #   to     = "{{ project_name }}-first-tension",
    #   kind   = 'Resolves,
    #   weight = 'High,
    #   note   = "Why this edge exists.",
    # },

  ],
}
