let d = import "../ontology/defaults/state.ncl" in

{
  dimensions = [

    d.make_dimension {
      id          = "protocol-maturity",
      name        = "Protocol Maturity",
      description = "Completeness of the ontoref protocol specification — schemas, ADRs, modes, Rust crates, daemon, and adoption tooling.",
      current_state = "adoption-tooling-complete",
      desired_state = "protocol-stable",
      horizon    = 'Months,
      states     = [],
      transitions = [
        d.make_transition {
          from      = "tooling-migrated",
          to        = "adoption-tooling-complete",
          condition = "adopt_ontoref mode, templates, daemon crate, landing page all present and validated.",
          catalyst  = "Daemon extracted from stratumiops; adoption templates created.",
          blocker   = "none",
          horizon   = 'Months,
        },
        d.make_transition {
          from      = "adoption-tooling-complete",
          to        = "protocol-stable",
          condition = "ADR-001 accepted, ontoref.dev published, at least two external projects consuming the protocol.",
          catalyst  = "First external adoption.",
          blocker   = "ontoref.dev not yet published; no external consumers yet. Entry point UX fixed (no-args usage message, bash set -u safety).",
          horizon   = 'Months,
        },
      ],
    },

    d.make_dimension {
      id          = "self-description-coverage",
      name        = "Self-Description Coverage",
      description = "How completely ontoref describes itself using its own protocol.",
      current_state = "modes-and-web-present",
      desired_state = "fully-self-described",
      horizon    = 'Weeks,
      states     = [],
      transitions = [
        d.make_transition {
          from      = ".ontology-bootstrapped",
          to        = "modes-and-web-present",
          condition = "adopt_ontoref mode, landing page, and all core.ncl nodes reflect current artifact set.",
          catalyst  = "Web presence and adoption tooling added in session 2026-03-12.",
          blocker   = "none",
          horizon   = 'Weeks,
        },
        d.make_transition {
          from      = "modes-and-web-present",
          to        = "fully-self-described",
          condition = "At least 3 ADRs accepted, reflection/backlog.ncl present, describe project returns complete picture.",
          catalyst  = "ADR-001 and ADR-002 authored using ontoref against itself in session 2026-03-12.",
          blocker   = "1 more ADR needed to reach 3. reflection/backlog.ncl not present.",
          horizon   = 'Weeks,
        },
      ],
    },

    d.make_dimension {
      id          = "ecosystem-integration",
      name        = "Ecosystem Integration",
      description = "Degree to which other ecosystem projects (stratumiops, syntaxis, vapora, kogral) consume the ontoref protocol.",
      current_state = "stratumiops-integrated",
      desired_state = "multi-project",
      horizon    = 'Months,
      coupled_with = ["protocol-maturity"],
      states     = [],
      transitions = [
        d.make_transition {
          from      = "source-only",
          to        = "stratumiops-integrated",
          condition = "stratumiops has .ontoref/config.ncl and scripts/ontoref wrapper functional; ADR-007 marked Superseded pointing to ontoref:adr-002.",
          catalyst  = "Ontoref extraction and stratumiops migration session 2026-03-12.",
          blocker   = "none",
          horizon   = 'Months,
        },
        d.make_transition {
          from      = "stratumiops-integrated",
          to        = "multi-project",
          condition = "At least one additional project (vapora, kogral, or syntaxis) has .ontoref/config.ncl and scripts/ontoref. Syntaxis parses ontoref Core type.",
          catalyst  = "Syntaxis integration spike or vapora/kogral onboarding.",
          blocker   = "Syntaxis syntaxis-ontology crate has ES→EN migration errors pending. vapora/kogral not yet initialized with .ontoref/.",
          horizon   = 'Months,
        },
      ],
    },

  ],
}
