123 lines
5.9 KiB
JSON
123 lines
5.9 KiB
JSON
{
|
||
"task_id": "GEN2-024",
|
||
"task_revision": 1,
|
||
"architecture_revision": "ARCH-GEN2-000",
|
||
"base_repo_revision": "gen2-integration",
|
||
"risk_tier": "E",
|
||
"intent": "Не смешивать владельца, членов семьи, гостей, голосовые источники и shared/private memory.",
|
||
"requirement_ids": [
|
||
"REQ-GEN2-024-GOAL",
|
||
"REQ-GEN2-024-BOUNDARY",
|
||
"REQ-GEN2-024-GATE"
|
||
],
|
||
"allowed_change_scope": {
|
||
"modules": [
|
||
"identity",
|
||
"world",
|
||
"epistemics",
|
||
"interaction"
|
||
],
|
||
"paths": [
|
||
"modules/identity/**",
|
||
"contracts/identity/**",
|
||
"modules/world/**",
|
||
"contracts/world/**",
|
||
"modules/epistemics/**",
|
||
"contracts/epistemics/**",
|
||
"modules/interaction/**",
|
||
"contracts/interaction/**",
|
||
"adapters/postgres/identity_repository.go",
|
||
"adapters/postgres/world_repository.go",
|
||
"adapters/postgres/epistemics_repository.go",
|
||
"adapters/postgres/interaction_repository.go",
|
||
"database/migrations/*.sql",
|
||
"tests/**",
|
||
"dev/ACTIVE_TASK.json",
|
||
"dev/tasks/GEN2-024-multi-person-realms-identity-boundaries-and-contextual-source-trust.json"
|
||
]
|
||
},
|
||
"forbidden_change_scope": {
|
||
"paths": [
|
||
"security/**",
|
||
"go.mod",
|
||
"go.sum",
|
||
"architecture/**",
|
||
".gitea/workflows/**",
|
||
"deploy/**",
|
||
"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": 1
|
||
},
|
||
"contracts": {
|
||
"consume": [
|
||
"contracts.identity@v1",
|
||
"contracts.world@gen2",
|
||
"contracts.epistemics@gen2",
|
||
"contracts.interaction@v1"
|
||
],
|
||
"may_change": [
|
||
"Only contracts explicitly within GEN2-024 allowed_change_scope; preserve Gen2 owner boundaries and backward compatibility unless this packet says cutover."
|
||
]
|
||
},
|
||
"semantic_owner": "Identity + World + Epistemics, separate responsibilities. 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": [
|
||
"Identity authenticates principals; World resolves referents; Epistemics evaluates source reliability",
|
||
"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: Identity authenticates principals; World resolves referents; Epistemics evaluates source reliability"
|
||
],
|
||
"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": [
|
||
"Database changes must be additive next-numbered migrations only until an explicitly approved retirement task; never edit historical V1 migrations 001-045.",
|
||
"At most one canonical writer is active for each semantic state; backfill/shadow reads do not create a second canonical writer.",
|
||
"The positive new_database_owner_roles delta in this packet is a devctl-v1 database-surface compatibility gate; it does not authorize cross-owner SQL/FK/JOIN or an extra owner unless explicitly stated by this task."
|
||
],
|
||
"failure_retry_restart": [
|
||
"Rollback rule: single-owner mode remains possible; new realm metadata additive",
|
||
"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-023."
|
||
],
|
||
"acceptance_scenarios": [
|
||
"GEN2-024-SCN-01: PrincipalDataRealm/owner/shared scopes",
|
||
"GEN2-024-SCN-02: utterance/source attribution with confidence",
|
||
"GEN2-024-SCN-03: World person referents do not equal authenticated Principal automatically",
|
||
"GEN2-024-SCN-04: SourceReliabilityAssessment = source × domain × freshness × history",
|
||
"GEN2-024-SCN-05: identity ambiguity remains explicit",
|
||
"GEN2-024-SCN-06: future speaker-recognition result enters as Observation, not authentication truth",
|
||
"GEN2-024-SCN-07: Context Compiler respects realm/scope isolation",
|
||
"GEN2-024-EXIT: Домовой может знать семейный контекст, не превращая услышанное имя/голос в полномочия владельца."
|
||
],
|
||
"required_tests": [
|
||
"FAST: go test ./modules/identity/... ./modules/world/... ./modules/epistemics/... ./modules/interaction/... ./adapters/postgres",
|
||
"FAST: go vet ./modules/identity/... ./modules/world/... ./modules/epistemics/... ./modules/interaction/... ./adapters/postgres",
|
||
"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"
|
||
]
|
||
}
|