feat: keep domovoy alive in lifeboat mode
CI / test (push) Failing after 15s

This commit is contained in:
m
2026-08-21 14:52:55 +03:00
parent 0a2599cfa6
commit 009314e930
9 changed files with 142 additions and 6 deletions
@@ -0,0 +1,64 @@
{
"task_id": "DEV-000083",
"task_revision": 1,
"architecture_revision": "DEV-000073-baseline",
"base_repo_revision": "0a2599cfa6255f1a98856d2fd09dc51a2119f525",
"risk_tier": "C",
"intent": "Keep Domovoy alive and conversational when the primary cognitive channel is unavailable by supporting an optional local Lifeboat provider and an honest deterministic degraded mode.",
"requirement_ids": [
"Primary cognitive settings remain confirmation-controlled while healthy",
"Unavailable primary cognition exposes a human-readable degraded mode instead of killing chat",
"An optional small local-only provider can serve as the Lifeboat through the existing Cognitive Gateway",
"The core can still accept and explain configuration requests when all model providers are unavailable"
],
"allowed_change_scope": {
"modules": ["cmd/core-runtime", "cmd/cognitive-worker", "cmd/creator-web", "deployment"],
"paths": [
"cmd/core-runtime/main.go",
"cmd/core-runtime/main_test.go",
"cmd/cognitive-worker/main.go",
"cmd/cognitive-worker/main_test.go",
"cmd/creator-web/static/assets/chat.js",
"cmd/creator-web/static/chat.html",
"cmd/creator-web/chat_test.go",
"deploy/docker-compose.prod.yml",
"deploy/docker-compose.dev.yml",
"dev/tasks/DEV-000083-domovoy-lifeboat-mode.json"
]
},
"forbidden_change_scope": {
"paths": ["architecture/**", "security/**", "database/**", "contracts/**", "adapters/**", "modules/**"]
},
"allowed_architecture_delta": {
"new_cross_module_dependencies": 0,
"new_canonical_owners": 0,
"new_privileges": 0,
"new_third_party_dependencies": 0,
"new_provider_adapters": 0,
"new_database_owner_roles": 0
},
"contracts": {
"consume": ["existing Cognitive Gateway and Capability Registry", "existing chat response fields", "existing cognitive health endpoint"],
"may_change": []
},
"semantic_owner": "capability-observation-consumer",
"canonical_state": [],
"state_transitions": [
"Healthy primary channel keeps normal configuration handoff and confirmation behavior",
"Unavailable primary channel renders Domovoy alive in local degraded mode",
"Optional Lifeboat provider participates only through the existing gateway resolution/failover path"
],
"side_effects_and_privileges": ["No new privilege", "No external egress", "No direct provider call from Core", "No configuration mutation from browser chat"],
"persistence_and_migrations": ["No migration", "Existing conversation and capability observations only"],
"failure_retry_restart": ["Provider absence falls back to the deterministic core reply", "Optional Lifeboat configuration is disabled when its URL is empty", "Restart reconstructs the provider registration from environment"],
"assumptions": ["The optional Lifeboat endpoint implements the existing OpenAI-compatible local adapter contract", "Capability discovery/promotion remains the existing authorized path", "No real test secrets are in scope for this task"],
"acceptance_scenarios": [
"Primary unavailable message says Domovoy remains alive and can help recover",
"Configuration request in degraded mode no longer falsely requires the primary model",
"Optional Lifeboat provider is registered only when LOCAL_LIFEBOAT_PROVIDER_URL is configured",
"Chat status distinguishes primary unavailable from Domovoy unavailable",
"Healthy mode keeps confirmation/console wording"
],
"required_tests": ["go test ./cmd/core-runtime", "go test ./cmd/cognitive-worker", "go test ./cmd/creator-web", "go test ./...", "go vet ./...", "devctl preflight", "devctl check-diff", "devctl check-architecture", "git diff --check", "node --check cmd/creator-web/static/assets/chat.js"],
"terminal_gap_states": ["BLOCKED_BY_ARCHITECTURE_GAP", "BLOCKED_BY_SPEC_GAP", "BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_CONFLICT"]
}