{ "task_id": "DEV-000094", "task_revision": 1, "architecture_revision": "ADR-0018", "base_repo_revision": "39f9081", "risk_tier": "E", "intent": "Preserve the centrally derived informational intent from Interaction through Core and the local cognitive gateway, so local conversation and provider-recovery responses are selected by meaning rather than duplicated raw-text checks.", "requirement_ids": ["ADR-0018", "FD-001", "FD-009", "FD-015", "INV-EPI-001", "Local conversation remains useful during provider loss", "Semantic intent is not reparsed by each runtime"], "allowed_change_scope": { "modules": ["interaction", "core-runtime", "creator-web", "cognitive-worker", "development-governance"], "paths": [ "contracts/interaction/types.go", "contracts/cognitive/types.go", "modules/interaction/domain/chat.go", "modules/interaction/domain/chat_test.go", "modules/interaction/domain/semantics.go", "cmd/core-runtime/main.go", "cmd/core-runtime/main_test.go", "cmd/core-runtime/cognitive_interpretation.go", "cmd/creator-web/server.go", "cmd/creator-web/chat_test.go", "cmd/cognitive-worker/gateway.go", "cmd/cognitive-worker/gateway_registry_test.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000094-semantic-local-recovery-routing.json" ] }, "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**"]}, "allowed_architecture_delta": {"new_cross_module_dependencies": 1, "new_canonical_owners": 0, "new_privileges": 0, "new_third_party_dependencies": 0, "new_database_owner_roles": 0}, "contracts": {"consume": ["ADR-0018 Exploration profile", "existing Creator chat and gateway contracts"], "may_change": ["interaction ChatMessageResponse informational intent field", "cognitive TaskMeaning informational intent field"]}, "semantic_owner": "interaction for informational intent; Cognitive Gateway only consumes the typed value for an ephemeral local answer", "canonical_state": ["existing Interaction utterance interpretation only"], "state_transitions": ["utterance -> one informational intent classification", "typed intent -> Core read-only answer or local advisory response", "provider loss -> recovery-oriented local response without an external action"], "side_effects_and_privileges": ["No external mutation", "No new privilege", "No provider invocation outside the Cognitive Gateway", "No credential or secret rendering"], "persistence_and_migrations": ["No schema migration; informational intent is an ephemeral response field derived from existing utterance semantics"], "failure_retry_restart": ["Gateway loss preserves Core's typed read-only replies", "local provider loss returns a typed built-in response", "no automatic external-provider retry is introduced"], "assumptions": ["A bounded deterministic classifier is allowed as the Interaction-owned fallback when richer cognition is absent", "the first delivery only provides read-only conversation and recovery guidance; it does not create a Work task or action proposal automatically", "docker-test remains prohibited"], "acceptance_scenarios": ["Model inventory, capability inventory and cognitive-channel/recovery questions receive a single typed classification", "Core no longer reparses those informational requests from raw text", "Creator passes the typed intent to the local gateway", "gateway built-in advisory does not branch on raw message keywords", "ordinary local fallback remains meaningful when a local provider fails"], "required_tests": ["go test ./modules/interaction/domain", "go test ./cmd/core-runtime", "go test ./cmd/creator-web", "go test ./cmd/cognitive-worker", "go test ./...", "go vet ./...", "devctl preflight", "devctl check-diff", "git diff --check"], "terminal_gap_states": ["BLOCKED_BY_ARCHITECTURE_GAP", "BLOCKED_BY_SPEC_GAP", "BLOCKED_BY_CONFLICT"] }