88 lines
3.8 KiB
Text
88 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,
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
|
||
|
|
],
|
||
|
|
}
|