{ "task_id": "GEN2-025", "task_revision": 1, "architecture_revision": "ARCH-GEN2-000", "base_repo_revision": "gen2-integration", "risk_tier": "E", "intent": "Закрепить единый путь для text/audio/image/video/device observations, чтобы будущие микрофоны/камеры не потребовали нового ядра.", "requirement_ids": [ "REQ-GEN2-025-GOAL", "REQ-GEN2-025-BOUNDARY", "REQ-GEN2-025-GATE" ], "allowed_change_scope": { "modules": [ "interaction", "capability", "artifact", "world" ], "paths": [ "modules/interaction/**", "contracts/interaction/**", "modules/capability/**", "contracts/capability/**", "modules/artifact/**", "contracts/artifact/**", "modules/world/**", "contracts/world/**", "adapters/multimodal/**", "cmd/creator-web/**", "tests/**", "dev/ACTIVE_TASK.json", "dev/tasks/GEN2-025-multimodal-and-ambient-ingress-readiness-without-implementing-the-whole-.json" ] }, "forbidden_change_scope": { "paths": [ "security/**", "go.mod", "go.sum", "architecture/**", ".gitea/workflows/**", "deploy/**", "database/**", "adapters/models/**" ] }, "allowed_architecture_delta": { "new_cross_module_dependencies": 0, "new_canonical_owners": 0, "new_privileges": 0, "new_third_party_dependencies": 0, "new_database_owner_roles": 0 }, "contracts": { "consume": [ "contracts.interaction@v1", "contracts.capability@gen2", "contracts.artifact@v1", "contracts.world@gen2" ], "may_change": [ "Only contracts explicitly within GEN2-025 allowed_change_scope; preserve Gen2 owner boundaries and backward compatibility unless this packet says cutover." ] }, "semantic_owner": "Interaction ingress + Artifact + Capability + World refs. Follow GEN2 target architecture: owner boundaries are authoritative; Memory remains a read/retrieval fabric, World is not truth owner, SELF is not a God orchestrator.", "canonical_state": [ "Interaction/Artifact/Epistemics existing responsibilities", "No task may create a second canonical owner for an already-owned mutable semantic concept." ], "state_transitions": [ "current state -> additive/shadow Gen2 path -> evidence comparison -> controlled cutover -> compatibility retention; writer rule: Interaction/Artifact/Epistemics existing responsibilities" ], "side_effects_and_privileges": [ "No external mutation may bypass existing Authority -> Commit -> Executor boundaries.", "Do not weaken architecture/security/test guardrails to make the task pass." ], "persistence_and_migrations": [ "No database schema change is authorized by this packet unless a revised task explicitly grants database/migration scope." ], "failure_retry_restart": [ "Rollback rule: existing chat/file routes remain compatible", "Retries/restarts must not create duplicate external side effects or a second canonical writer.", "Durable state required by this task must survive process restart; process-local memory is never the only source of truth." ], "assumptions": [ "Program milestone: M5; test profile: FAST.", "Task branch starts from local gen2-integration; base_repo_revision=gen2-integration must resolve to the untouched integration base while the task branch is active.", "Codex reads DOMOVOY_CONSTITUTION.md, GEN2_TARGET_ARCHITECTURE.md, GEN2_CANONICAL_DATA_MODEL.md, GEN2_MIGRATION_MAP.md, GEN2_MASTER_PLAN.md and GEN2_EXECUTION_CONTRACT.md before non-trivial edits.", "Do not expand scope silently. If a required change falls outside allowed paths or changes ownership, return a typed gap and request a task revision.", "Depends on: GEN2-024." ], "acceptance_scenarios": [ "GEN2-025-SCN-01: normalise ingress envelope: modality/source/device/location/principal attribution/evidence refs", "GEN2-025-SCN-02: raw large media -> Artifact, derived transcript/vision result -> Observation", "GEN2-025-SCN-03: device/location are World refs", "GEN2-025-SCN-04: speech/OCR/vision results include provenance/model/version/confidence", "GEN2-025-SCN-05: future ambient streams can feed bounded observations/episodes without bypassing Interaction/Epistemics", "GEN2-025-SCN-06: output device choice остаётся будущим capability, не hardcoded in core", "GEN2-025-EXIT: будущая команда «покажи камеру улицы на телевизоре здесь» вписывается через World/Focus/Capability/Authority без смены core model." ], "required_tests": [ "FAST: go test ./modules/interaction/... ./modules/capability/... ./modules/artifact/... ./modules/world/... ./adapters/multimodal/... ./cmd/creator-web/...", "FAST: go vet ./modules/interaction/... ./modules/capability/... ./modules/artifact/... ./modules/world/... ./adapters/multimodal/... ./cmd/creator-web/...", "FAST governance: go run ./cmd/devctl preflight -active dev/ACTIVE_TASK.json", "FAST scope: go run ./cmd/devctl check-diff -active dev/ACTIVE_TASK.json", "FAST independent: go run ./cmd/devctl/independent", "FAST whitespace: git diff --check gen2-integration --" ], "terminal_gap_states": [ "BLOCKED_BY_SPEC_GAP", "BLOCKED_BY_ARCHITECTURE_GAP", "BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_CONFLICT", "REQUIRES_MIGRATION_DECISION" ] }