# .ontology/gate.ncl — Project: {{ project_name }}
# Membranes are gates that control when a project is ready to cross a boundary.
# Start with active = false. Activate only when the condition is real and enforced.
#
# To use typed construction helpers, add ontology/defaults/ from the ontoref
# checkout and: let d = import "ontology/defaults/gate.ncl" in
#
# Fields (membrane):
#   id                — unique kebab-case identifier
#   name              — human-readable label
#   description       — what this gate protects
#   permeability      — 'High | 'Medium | 'Low | 'Closed
#   accepts           — list of signal types: 'EcosystemRelevance | 'Adoption | 'Stability
#   protects          — list of strings: what this gate guards
#   opening_condition — record: { max_tension_dimensions, pending_transitions, core_stable, description }
#   closing_condition — string: what causes the gate to close again
#   max_duration      — 'Weeks | 'Months | 'Years | 'Indefinite
#   protocol          — 'Observe | 'Absorb | 'Challenge | 'Reject
#   active            — bool (false = defined but not enforced)

{
  membranes = [

    {
      id                = "{{ project_name }}-readiness-gate",
      name              = "{{ project_name }} Readiness Gate",
      description       = "Controls when {{ project_name }} is ready for external use.",
      permeability      = 'Low,
      accepts           = ['EcosystemRelevance],
      protects          = ["Replace with: what this gate protects"],
      opening_condition = {
        max_tension_dimensions = 2,
        pending_transitions    = 3,
        core_stable            = true,
        description            = "Replace with: measurable condition to open this gate.",
      },
      closing_condition = "Replace with: what causes the gate to close again.",
      max_duration      = 'Indefinite,
      protocol          = 'Observe,
      active            = false,
    },

  ],
}
