Vapora/.ontology/gate.ncl

65 lines
3 KiB
Text
Raw Permalink Normal View History

let d = import "defaults/gate.ncl" in
{
membranes = [
d.make_membrane {
id = "budget-enforcement-gate",
name = "Budget Enforcement Gate",
description = "Controls whether an LLM request is allowed to proceed. Enforced by BudgetEnforcer middleware in every LLM call path.",
permeability = 'Medium,
accepts = ['EcosystemRelevance],
protects = ["per-role monthly budget limits", "fallback chain integrity"],
opening_condition = {
max_tension_dimensions = 1,
pending_transitions = 0,
core_stable = true,
description = "Request is allowed when current role spend is below the near-threshold limit.",
},
closing_condition = "Role budget reaches near-threshold (80%) — gate moves to degraded mode, requests route to cheaper provider. At exceeded (100%), gate closes and requests are rejected.",
max_duration = 'Indefinite,
protocol = 'Absorb,
active = true,
},
d.make_membrane {
id = "agent-capability-gate",
name = "Agent Capability Gate",
description = "Controls whether a task signal type is accepted by the agent dispatcher. Checked before dispatch in create_agent_task reflection mode.",
permeability = 'Medium,
accepts = ['EcosystemRelevance, 'DepthDemonstrated],
protects = ["agent workload boundaries", "capability contract per role"],
opening_condition = {
max_tension_dimensions = 2,
pending_transitions = 1,
core_stable = true,
description = "Signal type is in the agent's declared capability set and the agent is not at max load.",
},
closing_condition = "Agent load exceeds threshold or signal type not in capability set.",
max_duration = 'Indefinite,
protocol = 'Challenge,
active = true,
},
d.make_membrane {
id = "external-release-gate",
name = "External Release Gate",
description = "Controls when vapora is ready for external consumers beyond the current ecosystem. Not active until ecosystem-level stability is reached.",
permeability = 'Low,
accepts = ['EcosystemRelevance, 'OpportunityAlignment, 'DepthDemonstrated],
protects = ["API stability contract", "A2A protocol versioning"],
opening_condition = {
max_tension_dimensions = 2,
pending_transitions = 2,
core_stable = true,
description = "All integration tests passing in CI with live services; at least 2 external consumers onboarded; A2A protocol versioned.",
},
closing_condition = "Axiom-level breaking change introduced without ADR; integration tests regress.",
max_duration = 'Indefinite,
protocol = 'Observe,
active = false,
},
],
}