Files
Assistant/dev/tasks/DEV-000065-assistant-presence-attention-human-surface.json
m 5d4e064a94
CI / test (push) Successful in 16s
CI / test (pull_request) Successful in 15s
DEV-000065 assistant presence attention surface
2026-08-17 16:23:16 +03:00

153 lines
5.7 KiB
JSON

{
"task_id": "DEV-000065",
"task_revision": 1,
"architecture_revision": "ADR-0014",
"base_repo_revision": "6e73318e49991b40a5ed750c604792cbd95bd325",
"risk_tier": "E",
"intent": "Add assistant presence through Continuity-owned due reminder processing, typed Attention foundation, governed outbound notification delivery, and a human-facing Assistant surface with Chat, Today/Attention, and History while preserving the Operator Console.",
"requirement_ids": [
"ADR-0014",
"ADR-0005",
"INV-AUTH-001",
"INV-OWN-001",
"INV-CONT-001",
"INV-EPI-001",
"Capability availability is not Authority",
"Durable future obligations survive runtime restart"
],
"allowed_change_scope": {
"modules": [
"continuity",
"commit",
"capability",
"interaction"
],
"paths": [
"architecture/adrs/ADR-0014-assistant-presence-attention-human-surface.md",
"architecture/architecture-registry.yaml",
"architecture/architecture-registry.json",
"contracts/continuity/**",
"contracts/commit/**",
"contracts/capability/**",
"modules/continuity/**",
"modules/commit/**",
"adapters/postgres/**",
"database/bootstrap/**",
"database/migrations/**",
"cmd/continuity-runtime/**",
"cmd/commit-runtime/**",
"cmd/core-runtime/**",
"cmd/creator-web/**",
"tests/owner_acl/**",
"tests/cognitive_advisory/**",
"docs/PROJECT_STATUS.md",
"dev/ACTIVE_TASK.json",
"dev/tasks/DEV-000065-assistant-presence-attention-human-surface.json"
]
},
"forbidden_change_scope": {
"paths": [
"architecture/ARCHITECTURE_CONSTITUTION.md",
"security/**",
"ci/**",
".gitea/**"
]
},
"allowed_architecture_delta": {
"new_cross_module_dependencies": 1,
"new_canonical_owners": 0,
"new_privileges": 0,
"new_third_party_dependencies": 0,
"new_provider_adapters": 0
},
"contracts": {
"consume": [
"Continuity ProspectiveItem",
"Commit prospective notification operation",
"Capability notification binding",
"Interaction ChatMessage",
"Authority Creator grant",
"CredentialRef Secret Resolver foundation"
],
"may_change": [
"contracts/continuity@v1",
"contracts/commit@v1"
]
},
"semantic_owner": "continuity",
"canonical_state": [
"ProspectiveItem",
"AttentionItem"
],
"state_transitions": [
"ProspectiveItem ARMED -> TRIGGERED -> REVALIDATING -> DELIVERED for due reminder processing",
"AttentionItem PENDING -> DELIVERING -> DELIVERED for human contact outcome",
"No ACTIVE cognitive binding promotion",
"No OpenAI activation"
],
"side_effects_and_privileges": [
"Continuity runtime polls canonical prospective state and does not own external mutation",
"Commit runtime remains the only outbound notification executor boundary",
"Notification delivery uses existing CapabilityBinding and idempotent receiver protocol",
"Human Assistant UI reads canonical runtime APIs and hides internal identifiers by default",
"Docker-test remains prohibited"
],
"persistence_and_migrations": [
"continuity owner-local attention_items table",
"no cross-owner FK",
"no cross-owner SQL join dependency",
"Commit authorized action and attempt persistence remains Commit-owned",
"Notification receipt persistence remains receiver-owned delivery evidence"
],
"failure_retry_restart": [
"Due detection reads ARMED rows from canonical PostgreSQL state",
"CAS/unique source constraints prevent duplicate AttentionItem creation",
"Successful delivery moves AttentionItem to DELIVERED and prevents repeated delivery",
"Unavailable LLM does not block deterministic reminder firing",
"Unavailable notification delivery records non-success without inventing completion"
],
"assumptions": [
"DEV-000064 is production baseline",
"Continuity is canonical owner of future obligations and attention state for this generation",
"Commit and existing notification receiver remain the outbound mutation path",
"The first human notification channel is the existing production receiver/Windows display path",
"CPU CANARY may remain available but reminder firing is deterministic and LLM-free"
],
"acceptance_scenarios": [
"Reminder becomes due",
"Due reminder produces governed AttentionItem",
"Attention can produce notification through Commit",
"Delivery outcome is persisted",
"No duplicate delivery after success",
"Runtime restart does not lose an ARMED reminder",
"Cancelled/suppressed reminder is not delivered",
"LLM unavailable does not prevent deterministic reminder delivery",
"No cognitive model is required merely to fire a known reminder",
"CapabilityGap is rendered human-readable",
"Human UI requires no internal IDs",
"Operator Console remains available",
"Authority boundaries remain unchanged",
"Owner ACL passes",
"LLM-free audit passes",
"Production live delayed reminder delivers once",
"Today/Attention surface is built from canonical state"
],
"required_tests": [
"go test ./...",
"go vet ./...",
"go run ./cmd/devctl preflight -active dev/ACTIVE_TASK.json",
"go run ./cmd/devctl check-architecture",
"go run ./cmd/devctl check-diff -active dev/ACTIVE_TASK.json",
"tests/cognitive_advisory/cognitive_worker_env_policy_test.ps1",
"tests/owner_acl/verify.ps1 -DockerContext docker-prod -PostgresContainer assistant-postgres-1",
"production live delayed reminder acceptance",
"production /chat and /healthz verification"
],
"terminal_gap_states": [
"BLOCKED_BY_ARCHITECTURE_GAP",
"BLOCKED_BY_SPEC_GAP",
"BLOCKED_BY_MISSING_CAPABILITY",
"BLOCKED_BY_CONFLICT"
]
}