Vapora/config/budgets.ncl
Jesús Pérez c5f4caa2ab
feat(agents): stable identity + hot-reload for zero learning loss on config change
Introduce stable_id = role on AgentMetadata so learning profiles and KG
  execution records survive process restarts and hot-reloads. Previously
  every Uuid::new_v4() rotation orphaned accumulated expertise.

  - registry: add stable_id field (serde default, backward-compatible),
    stable_id_or_role() fallback helper, drain_role(), list_roles()
  - coordinator: profile lookup and KG writes use stable_id_or_role()
    instead of the ephemeral UUID; drain_role() drops Sender to close
    mpsc channels after in-flight messages drain; registry_arc() accessor
  - executor: agent_id written to KG now uses stable_id_or_role()
  - server: reload_agents() drain-and-respawn function; SIGHUP handler
    via while sighup.recv().await.is_some(); POST /reload endpoint;
    AppState extended with config_path, router, cap_registry
  - fix: SIGHUP recv() spin-loop guard (is_some())
  - fix: io_other_error clippy lint in vapora-agents, vapora-llm-router,
    vapora-workflow-engine (std::io::Error::other instead of Error::new)
  - docs: ADR-0040, CHANGELOG entry, README hot-reload section
2026-03-02 22:54:28 +00:00

45 lines
1 KiB
Text

let C = import "../nickel/budgets/contracts.ncl" in
{
budgets = {
architect | C.RoleBudget = {
role = "architect",
monthly_limit_cents = 50000,
weekly_limit_cents = 12500,
fallback_provider = "gemini",
alert_threshold = 0.8,
},
developer | C.RoleBudget = {
role = "developer",
monthly_limit_cents = 30000,
weekly_limit_cents = 7500,
fallback_provider = "ollama",
alert_threshold = 0.8,
},
reviewer | C.RoleBudget = {
role = "reviewer",
monthly_limit_cents = 20000,
weekly_limit_cents = 5000,
fallback_provider = "gemini",
alert_threshold = 0.8,
},
documenter | C.RoleBudget = {
role = "documenter",
monthly_limit_cents = 15000,
weekly_limit_cents = 3750,
fallback_provider = "ollama",
alert_threshold = 0.8,
},
tester | C.RoleBudget = {
role = "tester",
monthly_limit_cents = 25000,
weekly_limit_cents = 6250,
fallback_provider = "ollama",
alert_threshold = 0.8,
},
},
}