This commit is contained in:
@@ -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"]
|
||||
}
|
||||
Reference in New Issue
Block a user