Vapora/.ontology/state.ncl

88 lines
3.8 KiB
Text
Raw Normal View History

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,
},
],
},
],
}