{ "task_id": "DEV-000088", "task_revision": 1, "architecture_revision": "DEV-000073-baseline", "base_repo_revision": "cdc8eea1a747657ce0534b99ff35933ab3385877", "risk_tier": "B", "intent": "Expose self-describing build revision and runtime update time in the Domovoy chat without requiring a human status query.", "requirement_ids": ["Human can identify the running build", "Displayed update time reflects the running container", "No internal identifiers are exposed in the chat UI"], "allowed_change_scope": {"modules": ["creator-web", "deployment"], "paths": ["cmd/creator-web/server.go", "cmd/creator-web/chat_test.go", "cmd/creator-web/static/chat.html", "deploy/docker-compose.prod.yml", "dev/tasks/DEV-000088-runtime-build-status.json"]}, "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**"]}, "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 source revision build argument"], "may_change": []}, "semantic_owner": "creator-web", "canonical_state": [], "state_transitions": ["Container startup -> build metadata visible in chat"], "side_effects_and_privileges": ["No new privilege", "No user or provider secrets displayed"], "persistence_and_migrations": ["No persistence or migration"], "failure_retry_restart": ["Missing revision is displayed as development/unknown; startup time remains observable"], "assumptions": ["The production compose runner supplies ASSISTANT_SOURCE_REVISION for the running revision"], "acceptance_scenarios": ["Chat shows revision and update time without a manual question", "HTML contains no internal provider or session identifiers", "Tests remain deterministic outside production"], "required_tests": ["go test ./cmd/creator-web", "go test ./...", "go vet ./...", "git diff --check", "production page verification"], "terminal_gap_states": ["BLOCKED_BY_ARCHITECTURE_GAP", "BLOCKED_BY_SPEC_GAP", "BLOCKED_BY_CONFLICT"] }