Some checks failed
Documentation Lint & Validation / Markdown Linting (push) Has been cancelled
Documentation Lint & Validation / Validate mdBook Configuration (push) Has been cancelled
Documentation Lint & Validation / Content & Structure Validation (push) Has been cancelled
mdBook Build & Deploy / Build mdBook (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
Documentation Lint & Validation / Lint & Validation Summary (push) Has been cancelled
mdBook Build & Deploy / Documentation Quality Check (push) Has been cancelled
mdBook Build & Deploy / Deploy to GitHub Pages (push) Has been cancelled
mdBook Build & Deploy / Notification (push) Has been cancelled
on+re:
- core.ncl: 5 new Practice nodes (notification-channels,
vapora-capabilities, agent-hot-reload-stable-identity,
merkle-audit-trail, notification-channels) + 5 new edges;
knowledge-graph-execution-history updated with HNSW+BM25+RRF
- state.ncl: production-readiness blocker/catalyst updated (hot-reload
complete, BudgetManager/LLMRouter still require restart);
ontoref-integration catalyst updated (vapora-ontology/reflection
crates, api-catalog.json, nickel contracts)
ADRs (NCL):
- adr-013: KG hybrid search — HNSW+BM25+RRF, rejected in-process scan
- adr-014: capability packages — AgentDefinition→vapora-shared,
DashMap shard-before-await constraint
- adr-015: Merkle audit trail — SHA-256 hash chain, rejected HMAC
- adr-016: agent hot-reload — stable_id=role, learning_profiles survive
drain, BudgetManager excluded from reload scope
landing page:
- 2 new feature boxes: VCS-Agnostic Worktree (jj/git), Ontology Protocol
- KG box: 20→28 tests, HNSW+BM25+RRF description
- Agents box: 71→82 tests, hot-reload + stable_id
- tech stack: Rust 21→23 crates, added jj, Radicle, ontoref badges
- status badge: 620→691 tests
64 lines
3 KiB
Text
64 lines
3 KiB
Text
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,
|
|
},
|
|
|
|
],
|
|
}
|