Vapora/.ontology/state.ncl
Jesús Pérez 75e5ebd9a2
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
chore: ontology sync + 4 NCL ADRs + landing page update
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
2026-04-07 21:06:48 +01:00

87 lines
3.8 KiB
Text

let d = import "defaults/state.ncl" in
{
dimensions = [
d.make_dimension {
id = "production-readiness",
name = "Production Readiness",
description = "Overall production readiness of the vapora platform across all 23 crates.",
current_state = "production-ready",
desired_state = "stable-ecosystem",
horizon = 'Months,
states = [],
transitions = [
{
from = "production-ready",
to = "stable-ecosystem",
condition = "At least 2 external consumer projects onboarded, ecosystem NATS topology active, kogral knowledge graph integrated.",
catalyst = "Agent hot-reload + stable identity complete (learning loss on restart eliminated); capability packages provide zero-config onboarding; A2A protocol ready for external consumers.",
blocker = "No external consumers yet. A2A integration tests still require SurrealDB + NATS in CI (#[ignore]). BudgetManager/LLMRouter not hot-reloadable (process restart required for config changes to those subsystems).",
horizon = 'Months,
},
],
},
d.make_dimension {
id = "test-coverage",
name = "Test Coverage",
description = "Workspace test coverage and quality across 17 crates.",
current_state = "full-pass",
desired_state = "integration-verified",
horizon = 'Months,
states = [],
transitions = [
{
from = "full-pass",
to = "integration-verified",
condition = "Integration tests for vapora-a2a passing against live SurrealDB + NATS (currently marked #[ignore]).",
catalyst = "CI environment with SurrealDB and NATS services configured.",
blocker = "External service dependencies not available in current CI.",
horizon = 'Months,
},
],
},
d.make_dimension {
id = "frontend-maturity",
name = "Frontend Maturity",
description = "Maturity of the Leptos WASM frontend (Kanban board, agent management UI).",
current_state = "functional",
desired_state = "polished",
horizon = 'Months,
states = [],
transitions = [
{
from = "functional",
to = "polished",
condition = "Real-time WebSocket updates fully integrated in UI, agent status live-updating, cost dashboard rendered.",
catalyst = "Backend WebSocket endpoint stable; UnoCSS build pipeline finalized.",
blocker = "Leptos CSR-only restriction limits SSR-based optimizations.",
horizon = 'Months,
},
],
},
d.make_dimension {
id = "ontoref-integration",
name = "Ontoref Integration Depth",
description = "How deeply vapora is integrated with the ontoref protocol.",
current_state = "onboarded",
desired_state = "drift-monitored",
horizon = 'Months,
states = [],
transitions = [
{
from = "onboarded",
to = "drift-monitored",
condition = "Ontoref daemon running, ontology sync active, drift detection passing on CI.",
catalyst = "vapora-ontology and vapora-reflection crates added — ontology is now machine-consumable from Rust (VaporaOntology::load, reload). api-catalog.json exists and is referenced by ontoref. Nickel contracts in nickel/ cover agents, budgets, channels, llm-router, vapora core, workflows.",
blocker = "ONTOREF_DAEMON_URL not configured in vapora CI. ontoref sync diff --docs check not wired to pre-commit or CI. vapora-ontology and vapora-reflection have no tests yet.",
horizon = 'Months,
},
],
},
],
}