89 KiB
Домовой — GEN2 Master Plan для Codex
Статус: целевой исполняемый план Architecture Generation 2 Назначение: перевести существующий Assistant/Домовой V1 в Gen2 без потери уже реализованных возможностей, evidence, истории и операционных инвариантов. Главный принцип: сначала правильный эволюционирующий костяк, затем массовое наращивание capabilities.
0. Как пользоваться этим планом
Этот документ — не описание желаемых функций и не предложение переписать проект целиком. Он задаёт порядок реальных инженерных изменений, которые Codex должен выполнять последовательно.
Перед выполнением Gen2 Codex обязан читать и учитывать:
docs/DOMOVOY_CONSTITUTION.md— смысл и неизменные принципы Домового;architecture/GEN2_TARGET_ARCHITECTURE.md— целевые owners и зависимости;architecture/GEN2_CANONICAL_DATA_MODEL.md— canonical data, projections и lifecycle;development/GEN2_MIGRATION_MAP.md— V1 → Gen2 migration/cutover/rollback;- этот
development/GEN2_MASTER_PLAN.md— порядок выполнения; - действующий
AGENTS.mdи task packet конкретного шага.
Если эти документы ещё не находятся в репозитории, GEN2-000 обязан сначала внести их и принять через архитектурную процедуру.
Ни один отдельный task packet не имеет права локально переопределять конечную архитектуру Gen2.
1. Цель программы Gen2
Построить костяк Домового, который:
- не является оболочкой над одной LLM;
- понимает текущий Focus, Scope, цели и намерение владельца;
- имеет долговременную память, но передаёт модели только релевантную рабочую область;
- различает evidence, claim, belief, hypothesis, current/stale/historical knowledge;
- знает область применимости и скорость устаревания знания;
- не смешивает похожие данные разных людей, компаний, систем, баз и версий;
- помнит положительный и отрицательный опыт;
- превращает проверенные решения в Skill, а стабильные повторяемые Skills — в Reflex;
- способен вернуть Reflex обратно к reasoning при устаревании или расхождении;
- имеет evidence-backed SELF-модель: что умеет, где слаб, от чего зависит и чему научился;
- способен работать долго, checkpoint/resume и переживать restart;
- выбирает стоимость мышления: rule/reflex/skill/local model/strong model/research/team;
- может улучшать свои компоненты через proposal → sandbox → evaluation → canary → promotion/rollback;
- управляется преимущественно разговором, а не админками;
- сохраняет строгие границы Identity/Authority/Commit/Executor/Outcome;
- допускает очень широкие возможности, но оценивает последствия и предупреждает владельца;
- не выдумывает факты и не выдаёт гипотезу за истину;
- оставляет архитектурное место для будущих ambient audio/video, дома, устройств, PC/mobile hands, роботов и новых классов capabilities.
2. Что является ДНК и не должно потерять смысл
Даже если реализация позже будет полностью заменена, следующие инварианты сохраняются:
LLM != Assistant.Observation != Claim != Belief/verified knowledge.Memory != prompt/context.Identity != Authority.Capability != Authority.Proposed action != Authorized action != Commit != Execution receipt != verified world outcome.HTTP/tool success != фактический Outcome в мире.restart != потеря обязательства/задачи.retry != повторное необратимое действие.- Canonical owner каждого состояния ровно один.
- Никакого прямого cross-owner DB доступа как способа обойти контракт.
- Никакого внешнего mutation в обход Commit/Executor.
- Никакого provider/model call в обход cognitive boundary.
- Никакого process-local timer/queue как canonical future relevance.
- Truth, usefulness и user preference — разные оси.
- Creator изменения не является единственным Evaluator этого изменения.
- Старое evidence не переписывается новой моделью; новая интерпретация создаёт новую производную версию.
- World не становится владельцем истины.
- SELF не становится God-orchestrator.
- Configuration не превращается в бесконтрольный
key/valueилиmap[string]anyсклад. - Vector/embedding index не является canonical memory.
- Rollback не должен требовать удаления уже накопленного evidence.
3. Общие правила для Codex
3.1 Сначала исследовать существующее
Перед изменением bounded context Codex обязан:
- найти текущего semantic owner;
- найти canonical writer/read path;
- найти migrations и repository;
- найти существующие regression/invariant tests;
- проверить callers;
- определить V1 compatibility/rollback path.
Нельзя создавать новую сущность только потому, что Codex не нашёл существующую за первые минуты поиска.
3.2 Никакой второй архитектуры рядом
Запрещено создавать параллельные:
- Memory owner;
- Intent owner;
- Attention Manager;
- Scheduler owner;
- Authority;
- Commit path;
- Work Graph;
- Context Compiler owner;
- generic Event Bus;
- generic Settings service без принятого Configuration owner.
3.3 Один canonical writer
Во время migration:
- допустимы shadow projection;
- допустим dual-read;
- допустима запись V1 + rebuildable shadow, если shadow не canonical;
- не допускаются два canonical writer одного смысла.
Каждый cutover task обязан явно написать:
writer_before = ...
writer_after = ...
3.4 No destructive first
Сначала:
new schema/path
-> backfill
-> shadow/read comparison
-> cutover
-> observation
-> retirement
Удаление старой схемы или rollback path — отдельная поздняя задача.
3.5 Не делать большой рефакторинг «заодно»
Если задача — Focus V2, Codex не переписывает одновременно model routing, CSS Creator Web и Commit runtime.
Найденные соседние проблемы записываются в findings_not_changed.
3.6 BLOCKED лучше архитектурного обхода
Допустимые terminal states:
BLOCKED_BY_SPEC_GAP;BLOCKED_BY_ARCHITECTURE_GAP;BLOCKED_BY_MISSING_CAPABILITY;BLOCKED_BY_CONFLICT;REQUIRES_MIGRATION_DECISION.
Нельзя «как-нибудь заставить работать» нарушением owner boundary.
4. Git и поток разработки
4.1 PRE-GEN2 — обязательно сохранить всё текущее
До первой строки Gen2-кода Codex обязан:
- Выполнить
git statusво всех известных worktree/рабочих ветках проекта. - Инвентаризировать все незакоммиченные изменения.
- Ничего неизвестного не
reset, не discard, не overwrite. - Отделить secrets, generated build garbage и runtime data от реального исходного кода.
- Сделать preservation commit для всей актуальной незакоммиченной работы.
- Привести все текущие рабочие ветки проекта в коммитированное состояние.
- Выполнить только FAST baseline gate, используя уже имеющийся свежий CI evidence как часть доказательства.
- Слить все актуальные открытые изменения проекта в основной поток
mainуправляемыми merge. - Разрешить конфликты без потери функциональности и истории.
- Push
mainв canonical remote. - Зафиксировать SHA как
GEN2_BASE_COMMIT. - Создать immutable baseline tag, например
domovoy-pre-gen2-<date>. - Сохранить короткий baseline evidence report.
- Только после этого создать Gen2 integration branch/worktree.
Секреты, пароли, токены, build artifacts и случайный мусор в «закоммитить всё» не входят.
4.2 Поток Gen2
Рекомендуемый поток:
main (чистая реперная версия)
↓
gen2/integration
↓
gen2/GEN2-xxx-task
↓ FAST gate
merge -> gen2/integration
↓
MILESTONE gate
↓
merge milestone -> main
Таким образом Gen2 не живёт месяцами в одной огромной ветке, расходящейся с main.
Каждая milestone-версия в main должна оставаться:
- backward compatible, или
- скрыта за контролируемым cutover/feature switch, или
- иметь доказанный rollback.
5. Стратегия тестирования: цель — разработка, тесты — страховка
5.1 Основной принцип
Passing tests is not the goal of a task. Цель — реализованная архитектурная способность с достаточным доказательством, что критическое существующее поведение не сломано.
Нельзя превращать каждый task packet в многосуточный полный тестовый прогон.
5.2 FAST gate — обычный цикл
Запускается постоянно.
Содержит только:
- compile/test затронутых packages;
- 1–несколько regression tests именно изменяемого поведения;
- быстрый architecture/preflight check;
git diff --check;- при schema change — быстрый apply/rollback на isolated test DB, если это локально доступно и не требует тяжёлой инфраструктуры.
Не запускать автоматически весь household, multimodal, recovery и go test ./... после каждого небольшого изменения.
5.3 MILESTONE gate — после завершения органа
Запускается только после законченной архитектурной реперной точки.
Содержит:
- все tests изменённого owner;
- соседние contract/integration tests;
- ключевые V1 regression cases;
- migration/backfill/cutover evidence;
- relevant restart/recovery test;
- architecture checks.
5.4 FULL gate — редко
Полный тяжёлый прогон оправдан только:
- перед крупным merge архитектурной фазы;
- после критической schema migration;
- перед production canary/traffic switch;
- перед удалением V1 rollback path;
- перед объявлением Gen2 accepted/stable.
FULL включает весь доступный project suite, vet, architecture, recovery, household, multimodal и production smoke — но не повторяется между близкими задачами без нового риска.
5.5 STOP TEST EXPANSION
Если Codex видит, что:
- тестов пишется значительно больше, чем реализации;
- прогон тестов систематически доминирует над разработкой;
- добавляемые тесты не защищают новый существенный риск;
- один invariant уже надёжно защищён architecture test;
он обязан остановить расширение тестов и выбрать минимально достаточный evidence set.
Не тестировать тривиальные getters/mappings десятками вариантов.
5.6 Профили devctl
В раннем Gen2 желательно добавить единый интерфейс:
devctl test fast [area]
devctl test milestone <milestone>
devctl test full
Это не означает, что devctl обязан сам исполнять всю CI-инфраструктуру; он может быть orchestration/profile entry point.
6. Программа Milestones
| Milestone | Смысл | Основной результат | Gate |
|---|---|---|---|
| M0 | Frozen V1 baseline + governance | всё текущее сохранено, Gen2 принят архитектурно | FAST |
| M1 | Semantic substrate | ContextScope/Focus V2 + World referents + data primitives | MILESTONE |
| M2 | Memory/Knowledge foundation | scoped fresh positive+negative memory + Context Compiler V2 | MILESTONE |
| M3 | Evolvable behavior | Configuration + Skill/Reflex + SELF + intelligence evaluation | FULL |
| M4 | Durable autonomy | long work + perspectives + consequences + outcome + Lifeboat/evolution | MILESTONE + recovery |
| M5 | Integrated household Gen2 | conversational control, multi-person, multimodal/degraded, production canary | FULL |
| M6 | V1 retirement | legacy paths removed only after proof | FULL before irreversible retirement |
7. Architecture owners Gen2
| Owner | Canonical responsibility | Gen2 action |
|---|---|---|
| Identity | Principal/session identity | KEEP |
| Authority | grants + AuthorityScope | KEEP/CLARIFY |
| Interaction | human ingress, utterances, interpreted intent/corrections | KEEP/EXPAND |
| Situation | FocusFrame, FocusStack, ContextScope | REWORK |
| World | referents, typed vocabulary, aliases, identity resolution | ADD narrow owner |
| Epistemics | evidence, claims, belief assessments, freshness, experience, outcome verification | EXPAND |
| Work | goals, tasks, plans, jobs, investigations, perspectives, consequence assessment | EXPAND |
| Continuity | commitments, prospective relevance, attention, continuation | KEEP |
| Capability | capability health, implementations, Skill, Reflex, selection/evaluation | EXPAND |
| Configuration | typed/scoped/versioned setting definitions and assignments | ADD |
| SELF | evidence-backed competence/weakness/dependency/learning model | ADD |
| Commit | authorized mutation attempt, idempotency, execution receipt | KEEP strict |
| Artifact | durable raw content and lineage | KEEP/EXPAND |
| Cognitive workers | replaceable cognition/context execution | no canonical owner |
| Supervisor/Lifeboat | runtime release health/switch/rollback | runtime layer only |
8. Migration modes
Каждый task использует один явно выбранный режим:
IN_PLACE_EXTEND
Существующий owner и canonical writer остаются; схема расширяется совместимо.
SHADOW_PROJECTION
Новая модель строится из старой canonical истории, но не пишет canonical state.
CONTROLLED_CUTOVER
Создаётся новый canonical path, выполняются backfill/shadow/equivalence, затем writer переключается однократно и явно.
RETIRE_AFTER_PROOF
Старый путь становится read-only/fallback, проходит observation window и только потом удаляется отдельной задачей.
9. Task packet contract
Перед реализацией каждого GEN2-xxx должен существовать task packet со следующими полями:
task_id
revision
milestone
intent
architecture_generation = GEN2
current_owner
target_owner
allowed_paths
forbidden_paths
contracts_consumed
contracts_changed
schema_changes
writer_before
writer_after
migration_mode
backfill
compatibility
feature_switch
rollback
fast_gate
milestone_gate_if_any
full_gate_justification_if_any
dependencies
non_goals
exit_criteria
terminal_block_states
Никакой task не называется просто «сделай память Gen2» или «улучши архитектуру».
M0. Frozen baseline and Gen2 governance
PRE-GEN2-000 — Consolidate current development into main and freeze baseline
Owner: Repository/Governance
Migration mode: baseline
Primary paths: entire repository only as required to preserve/merge existing work; no Gen2 semantic implementation yet
Цель
Сохранить всю текущую работу перед архитектурной миграцией и получить однозначный GEN2_BASE_COMMIT.
Обязательная работа
- инвентаризировать worktrees/branches и dirty files;
- сделать preservation commits всех актуальных открытых изменений;
- исключить secrets/generated/runtime garbage;
- выполнить FAST baseline gate;
- слить актуальные ветки в main и разрешить конфликты без потери поведения;
- push main;
- записать GEN2_BASE_COMMIT и baseline tag;
- сохранить baseline report со списком merged branches и известных незакрытых findings.
Canonical writer
нет semantic writer change
Rollback
baseline tag + обычный git revert; ничего из старой работы не удалять
FAST gate
targeted compile/current changed packages + preflight/check-architecture + diff check; использовать свежий существующий CI evidence, не запускать FULL без причины
Exit criteria
main содержит всю актуальную открытую работу; working tree известен/чист; remote push выполнен; base SHA/tag записаны.
Non-goals
не начинать Gen2 schema/code; не переписывать историю git.
GEN2-000 — Adopt Gen2 constitution, architecture documents and governance mode
Owner: Architecture/Governance
Migration mode: architecture acceptance
Primary paths: architecture/**, development/**, docs/**, AGENTS.md, cmd/devctl/**, dev/**
Цель
Сделать Gen2 официальным архитектурным поколением, а не внешним пожеланием.
Обязательная работа
- внести DOMOVOY_CONSTITUTION, GEN2_TARGET_ARCHITECTURE, GEN2_CANONICAL_DATA_MODEL, GEN2_MIGRATION_MAP и GEN2_MASTER_PLAN в repo;
- принять ADR/architecture-generation decision, который разрешает новые owners World/Configuration/SELF и Gen2 migrations;
- обновить authority order архитектурных документов;
- закрыть/заморозить DEV-000295 как V1 baseline/audit evidence или явно supersede его Gen2 program;
- добавить Gen2 task validation в devctl;
- добавить FAST/MILESTONE/FULL test profiles или эквивалентную profile metadata без тяжёлого переписывания CI.
Canonical writer
нет runtime writer change
Rollback
revert architecture adoption до начала schema migration; baseline tag остаётся неизменным
FAST gate
devctl task validation + architecture registry parse + governance tests only
Exit criteria
Codex перед каждым Gen2 task обязан читать canonical Gen2 docs; ordinary V1 task больше не имеет права менять Gen2 architecture.
Non-goals
не реализовывать World/SELF/Configuration runtime в этом task.
GEN2-001 — Accept Gen2 owner registry and dependency rules
Owner: Architecture Registry
Migration mode: architecture acceptance
Primary paths: architecture/**, contracts/** doc stubs if needed, cmd/devctl/**
Цель
Формально закрепить owners, forbidden dependencies и migration law before tables.
Обязательная работа
- принять owner registry Gen2;
- развести AuthorityScope и ContextScope;
- зафиксировать World != truth owner, SELF != orchestrator, Memory != owner;
- зафиксировать single canonical writer, no cross-owner SQL/FK/JOIN by default;
- зафиксировать Supervisor как runtime layer, не semantic owner;
- добавить architecture checks для новых границ там, где это возможно дешёво.
Canonical writer
нет data writer change
Rollback
architecture revert возможен только до первого зависимого Gen2 task; далее через новый ADR
FAST gate
architecture registry/lint tests only
Exit criteria
все последующие task packets могут однозначно указать current_owner/target_owner.
Non-goals
не создавать generic Entity service или generic event bus.
M1. Semantic substrate: primitives, World and Focus
GEN2-002 — Introduce shared Gen2 data primitives without shared domain semantics
Owner: Platform/Contracts
Migration mode: IN_PLACE_EXTEND
Primary paths: platform/ids/**, contracts/** primitives, database/migrations/NNN_gen2_primitives.sql only if necessary
Цель
Дать Gen2 стабильные ID/revision/time/SemanticRef/PrincipalRealm/Sensitivity primitives без giant shared domain model.
Обязательная работа
- определить StableID/Revision primitives;
- определить SemanticRef как cross-owner reference без прямого DB ownership;
- определить time primitives и data realm/sensitivity primitives;
- реализовать typed value algebra там, где он действительно общий технический контракт;
- не переносить domain meaning в platform/common.
Canonical writer
существующие owners остаются writers
Rollback
additive primitives; old code не удалять
FAST gate
unit tests только primitives + compile direct consumers
Exit criteria
World/Focus/Epistemics/Configuration могут ссылаться на одинаковые технические refs без shared semantic owner.
Non-goals
не создавать map[string]any canonical payload и не менять существующие owner tables.
GEN2-003 — Add narrow World owner and typed vocabulary
Owner: World (new)
Migration mode: CONTROLLED_CUTOVER for referent registry only
Primary paths: modules/world/**, contracts/world/**, adapters/postgres/world_repository.go, database/migrations/NNN_gen2_world_*.sql, architecture registry as already authorized
Цель
Создать устойчивые referents/aliases/types/facet definitions/relation definitions, не присваивая World владение истиной значений.
Обязательная работа
- создать WorldObject stable identity;
- WorldObjectKindDefinition;
- WorldAlias;
- FacetDefinition и RelationDefinition с versioned typed schemas;
- identity-resolution candidate/decision structures;
- обеспечить split/merge lineage;
- начать с минимального набора объектов, необходимых для Focus/Scope migration.
Canonical writer
before: project/situation/ad-hoc identifiers; after: World canonical only for referent vocabulary, not facts
Rollback
V1 identifiers остаются compatibility refs; World tables additive; switch readers back без удаления World evidence
FAST gate
world domain/repository tests + typed schema validation + compile Situation consumers
Exit criteria
одинаковые имена разных компаний/баз могут иметь разные stable referents; World не хранит claim «какое значение истинно».
Non-goals
не строить graph DB; не переносить факты Epistemics в World.
GEN2-004 — Replace project-centric focus with ContextScope + FocusFrame + FocusStack
Owner: Situation
Migration mode: CONTROLLED_CUTOVER
Primary paths: modules/situation/**, contracts/situation/**, adapters/postgres/situation_repository.go, database/migrations/NNN_gen2_focus_*.sql, cmd/core-runtime relevant composition only, modules/interaction relevant focus handoff
Цель
Сделать Focus многомерным: person/org/system/database/repository/version/activity/goal/task/entities, а Project оставить лишь возможной гранью.
Обязательная работа
- добавить ContextScope RoleKey/ScopeValue/MatchPolicy;
- добавить FocusFrame stable ID + revision;
- добавить FocusTransition append-only ledger;
- добавить FocusStack/parent/suspended/resume semantics;
- реализовать explicit focus command и inferred focus как разные evidence paths;
- построить compatibility projection ActiveProjectFocus из FocusFrame;
- переключить core/context readers на Focus V2 постепенно.
Canonical writer
before: V1 situation/project focus; after: Situation FocusFrame/Transition; ActiveProjectFocus becomes projection/compatibility
Rollback
feature switch возвращает V1 read path; Gen2 transitions сохраняются
FAST gate
situation tests + explicit switch + company A/B isolation regression + core compile
Exit criteria
короткое отвлечение может push/pop focus; Company A/UNF и Company B/UNF не смешиваются по текущему scope.
Non-goals
не реализовывать memory retrieval здесь.
GEN2-005 — World identity resolution and version/environment bindings
Owner: World + Situation contracts, no truth ownership
Migration mode: IN_PLACE_EXTEND
Primary paths: modules/world/**, contracts/world/**, modules/situation/** only bindings, tests/** targeted
Цель
Заложить безопасное same_as?/merge/split и привязку Focus к конкретной версии/окружению.
Обязательная работа
- реализовать identity resolution candidate с confidence/evidence refs;
- не объединять автоматически неоднозначных людей/системы;
- добавить reversible merge/split lineage;
- добавить version/environment reference primitives, используемые позже Epistemics freshness.
Canonical writer
World writer только identity/referent resolution
Rollback
resolution decisions versioned/reversible; no destructive identity merge
FAST gate
entity ambiguity/merge/split tests + Focus binding tests
Exit criteria
«Иван Telegram» и «Иван CRM» могут быть связаны с уверенностью без необратимого склеивания; две УНФ не путаются.
Non-goals
не вводить source trust здесь.
M2. Memory/Knowledge foundation and Context Compiler
GEN2-006 — Normalize Epistemics evidence, propositions, claims and belief assessments
Owner: Epistemics
Migration mode: CONTROLLED_CUTOVER
Primary paths: modules/epistemics/**, contracts/epistemics/**, adapters/postgres/epistemics_repository.go, database/migrations/NNN_gen2_epistemics_*.sql, adapters/research/** only mapping
Цель
Убрать зависимость от denormalized truth_bundles как конечной модели истины и создать переоцениваемую канонику evidence/claim/belief.
Обязательная работа
- добавить Source/SourceSnapshot/SourceExcerpt;
- добавить immutable Observation;
- добавить Proposition/Claim;
- добавить versioned BeliefAssessment;
- backfill существующих truth/research данных с lineage;
- оставить truth_bundles read compatibility до позднего retirement;
- обеспечить возможность новой модели переоценить старый Claim без переписывания Observation.
Canonical writer
before: V1 truth bundle paths; after: normalized Epistemics for new Gen2 knowledge; old bundle writer disabled at cutover or made projection
Rollback
read switch назад на V1 bundle; normalized evidence не удалять
FAST gate
epistemics domain/repository + backfill sample + truth/unknown/contradiction regressions
Exit criteria
источник, наблюдение, утверждение и текущая оценка уверенности раздельны и traceable.
Non-goals
не создавать отдельную таблицу Knowledge как дубликат current beliefs.
GEN2-007 — General freshness, volatility, temporal applicability and revalidation
Owner: Epistemics
Migration mode: IN_PLACE_EXTEND
Primary paths: modules/epistemics/**, contracts/epistemics/**, database/migrations/NNN_gen2_freshness_*.sql, Work contract only freshness requirement refs
Цель
Сделать старение знания контекстным: прошлогодняя УНФ может быть stale для live-debug и полезной аналогией без live-доступа.
Обязательная работа
- добавить TemporalApplicability;
- VolatilitySpec/decay class;
- last_verified/observed metadata;
- VersionBinding;
- TaskFreshnessRequirement;
- вычисляемый FreshnessAssessment вместо permanent
staleflag; - active revalidation request/response contract;
- fallback semantics: memory-only solution должен быть явно маркирован как непроверенный текущими данными.
Canonical writer
Epistemics writes observation/verification metadata; freshness status computed
Rollback
metadata additive; old readers ignore it
FAST gate
freshness matrix tests: pi/no decay, live server/fast decay, UNF old version/live vs analogy
Exit criteria
один и тот же Claim получает разную пригодность в зависимости от task freshness/risk.
Non-goals
не удалять старые знания автоматически.
GEN2-008 — Promote Episode and Experience V2 including negative experience
Owner: Epistemics
Migration mode: IN_PLACE_EXTEND + SHADOW_PROJECTION for Episode
Primary paths: modules/epistemics/**, contracts/epistemics/**, adapters/postgres/epistemics_repository.go, database/migrations/NNN_gen2_experience_*.sql, Artifact refs
Цель
Сохранять не только «что сработало», но problem/attempt/why/result/why failed/conditions/evidence.
Обязательная работа
- расширить ExperienceRecord V1 без потери старых IDs/evidence;
- сделать success/failure first-class;
- добавить conditions/applicability/version bindings;
- создать Episode как derived/rebuildable episodic projection;
- связать user correction с ReflectionCandidate/Experience;
- добавить anti-pattern: failure under conditions != forever wrong.
Canonical writer
Epistemics remains canonical Experience writer; Episode projection derived
Rollback
старые Experience records остаются валидны; Episode projection rebuildable
FAST gate
positive/negative experience tests + same problem changed conditions regression
Exit criteria
retrieval позже может отдельно запросить «что уже пробовали и почему не сработало».
Non-goals
не превращать каждое сообщение в Skill автоматически.
GEN2-009 — Build Memory Retrieval Fabric as rebuildable projections
Owner: No canonical Memory owner; projection layer
Migration mode: SHADOW_PROJECTION
Primary paths: new retrieval package under appropriate cognitive/platform read-model boundary, adapters/postgres/search projection code, contracts/cognitive/**, no canonical owner tables except projection metadata
Цель
Дать многоканальный retrieval по canonical owners без единой memory_items каноники.
Обязательная работа
- создать RetrievalDocument projection с source SemanticRef;
- projection builders из Interaction/World/Epistemics/Work/Continuity/Capability/Configuration/SELF;
- жёсткий ContextScope/realm/version filter before similarity;
- lanes: semantic, entity/graph-like refs, temporal, goal/commitment, positive experience, negative experience, contradiction, skill;
- ranking signals: relevance, freshness, confidence, salience, scope distance, cost;
- hot/warm/cold/archive retrieval policy как operational storage concern, не truth;
- projection versioning/rebuild command.
Canonical writer
canonical writers unchanged; retrieval index only projection writer
Rollback
drop/rebuild projection and use V1 memory retrieval
FAST gate
scope isolation + negative lane + projection rebuild determinism tests
Exit criteria
vector index можно полностью перестроить без изменения canonical memory; cross-company leak blocked before embedding rank.
Non-goals
не выбирать финальный graph/vector DB как вечный canonical format.
GEN2-010 — Context Compiler V2 with budgets, coverage and iterative retrieval
Owner: Cognitive contract/read path, no canonical owner
Migration mode: REWORK
Primary paths: contracts/cognitive/**, cmd/cognitive-worker/**, cmd/core-runtime context assembly paths, retrieval read layer, tests/context_compiler/**
Цель
Формировать минимально достаточный model context под текущий Task/Focus/Model/Risk/Freshness и уметь дозапрашивать память во время reasoning.
Обязательная работа
- ContextCompileRequest: task/focus/scope/model/token budget/freshness/risk;
- candidate lanes + deterministic scope filtering;
- positive+negative experience balancing;
- contradiction pass;
- coverage check: не упущены ли critical commitments/known failures;
- ContextBundle с explicit token allocation;
- ContextAssemblyTrace: почему элемент включён/исключён;
- iterative memory search tool для model reasoning;
- маленькой локальной модели давать меньше и точнее, а не просто урезать хвост.
Canonical writer
none; read/compile only
Rollback
feature switch to Context Compiler V1; V2 trace/projections retained
FAST gate
context compiler unit + Company A/B + old negative experience + small-context budget scenarios
Exit criteria
локальная модель получает релевантный пакет без любимого цвета в 1C-debug; нужные прошлые грабли попадают в context.
Non-goals
не включать всю память «на всякий случай».
GEN2-011 — Cut PersonalMemory V1 to compatibility fallback
Owner: Interaction -> retrieval fabric reads multiple owners
Migration mode: CONTROLLED_CUTOVER
Primary paths: modules/interaction/** personal memory, adapters/postgres/interaction_repository.go, core context wiring, feature switches
Цель
Перестать использовать ad-hoc PersonalMemory ContextText как долгосрочную основу памяти, не теряя utterance history.
Обязательная работа
- оставить HumanUtterance append-only canonical history;
- построить Gen2 retrieval из этой истории;
- сравнить V1 PersonalMemory vs Gen2 context on representative cases;
- переключить primary read на Gen2;
- оставить PersonalMemory read fallback до M6;
- запретить новый semantic growth V1 PersonalMemory.
Canonical writer
utterance writer unchanged; PersonalMemory derived writer frozen; retrieval projection primary
Rollback
switch reads back to PersonalMemory; no canonical loss
FAST gate
name/preference continuity + scoped memory + correction retrieval
Exit criteria
PersonalMemory больше не определяет архитектуру новых features.
Non-goals
не удалять V1 таблицы/код в этом task.
M3. Evolvable behavior: Configuration, Skill, Reflex, SELF
GEN2-012 — Add typed, scoped, versioned Configuration owner and bootstrap boundary
Owner: Configuration (new)
Migration mode: CONTROLLED_CUTOVER by consumer
Primary paths: modules/configuration/**, contracts/configuration/**, adapters/postgres/configuration_repository.go, platform/secrets/**, database/migrations/NNN_gen2_configuration_*.sql, each consumer only when migrated
Цель
Убрать ordinary runtime settings из ENV и дать Skills/capabilities возможность объявлять новые typed scoped settings без глобальной schema rewrite.
Обязательная работа
- inventory всех ENV/config consumers;
- создать SettingDefinition stable identity + schema/version/owner/type/default/validation;
- SettingAssignment + ScopeSelector;
- deterministic inheritance/resolution;
- EffectiveConfiguration trace;
- SecretRef only for credentials;
- определить минимальный bootstrap, который может остаться вне Configuration;
- импортировать non-secret текущие значения;
- shadow compare old vs resolved configuration;
- cutover consumers по одному, Commit runtime последним из критических.
Canonical writer
before: ENV/files/ad-hoc DB; after: Configuration for migrated non-bootstrap settings
Rollback
per-consumer fallback to old read path; Configuration values retained
FAST gate
setting type/scope inheritance + secret-not-exposed tests + migrated consumer equivalence
Exit criteria
можно сказать «для Skill X в Company A значение Y», а Company B получает другое значение без новых ENV vars/columns.
Non-goals
не хранить token/password в обычном memory/config payload.
GEN2-013 — Migrate Skill V1 to Skill V2 with applicability, versioning and evidence
Owner: Capability
Migration mode: IN_PLACE_EXTEND/CONTROLLED_CUTOVER
Primary paths: modules/capability/**, contracts/capability/**, adapters/postgres/capability_repository.go, database/migrations/NNN_gen2_skill_*.sql, Work reflection handoff
Цель
Сделать Skill долговечным обучаемым способом решения, а не только профилем capability.
Обязательная работа
- сохранить stable Skill identity;
- ввести revisions;
- ApplicabilitySpec с Scope/version/conditions;
- связать positive/negative Experience evidence;
- validation/promotion evidence;
- known failure conditions;
- quality history;
- dependency refs;
- сохранить совместимость с существующими SkillProfile/ReflectionCandidate.
Canonical writer
Capability remains Skill canonical writer
Rollback
V1 skill view/projected compatibility; revisions additive
FAST gate
Skill lifecycle + applicability + known failure regressions
Exit criteria
успешное решение может стать Candidate/Validated/Active Skill и знает, где он применим.
Non-goals
не компилировать Skill в код автоматически здесь.
GEN2-014 — Add explicit Reflex lifecycle, shadow reasoning and revalidation
Owner: Capability
Migration mode: ADD + controlled routing
Primary paths: modules/capability/**, contracts/capability/**, adapters/postgres/capability_repository.go, database/migrations/NNN_gen2_reflex_*.sql, cognitive routing
Цель
Дать быстрый локальный путь для проверенных повторяемых задач без закостенения.
Обязательная работа
- Reflex stable ID/revisions;
- link Reflex -> originating Skill/evidence;
- applicability/dependencies;
- ShadowPolicy/RevalidationPolicy;
- fallback/escalation Reflex -> Skill -> reasoning;
- drift/stale detection;
- candidate/active/suspended/retired states;
- не считать один успешный run достаточным для promotion.
Canonical writer
Capability writes Reflex lifecycle; routing reads only ACTIVE applicable reflex
Rollback
disable reflex feature switch; route returns to Skill/model
FAST gate
reflex applied/declined/escalate + stale dependency + shadow mismatch tests
Exit criteria
частая стабильная задача может выполняться быстро локально и автоматически вернуться к reasoning при сомнении.
Non-goals
не разрешать Reflex обойти Authority/Commit.
GEN2-015 — Add evidence-backed SELF foundation and Learning Ledger
Owner: SELF (new)
Migration mode: ADD evidence-only first
Primary paths: modules/self/**, contracts/self/**, adapters/postgres/self_repository.go, database/migrations/NNN_gen2_self_*.sql, read contracts from Capability/Work/Epistemics/health
Цель
Домовой должен знать, что умеет, при каких условиях, где ошибается и что изменилось — без права самому объявить себя хорошим.
Обязательная работа
- CompetenceAssessment from outcomes/tests/task evaluations;
- WeaknessPattern;
- DependencyAssessment;
- ImprovementNeed;
- LearningLedgerEntry;
- SelfCompositionSnapshot;
- provenance каждого self-assessment;
- запрет arbitrary
competence=1.0от Skill; - первый режим SELF только observe/evaluate/propose.
Canonical writer
SELF writes derived evidence-backed self assessments only
Rollback
SELF can be disabled; no mutation path depends on it initially
FAST gate
assessment provenance + cannot self-certify + dependency degradation tests
Exit criteria
система отличает «я разучился» от «зависимость IFCM временно недоступна» и хранит собственные повторяемые weakness patterns.
Non-goals
SELF не планирует все user tasks и не получает direct mutation authority.
GEN2-016 — Intelligence strategy, resource/cost policy and Personal Benchmark
Owner: Capability + Work evaluation; SELF observes
Migration mode: EXTEND
Primary paths: modules/capability/**, modules/work/** evaluation, contracts/capability/**, contracts/work/**, SELF read models, cognitive-worker routing
Цель
Выбирать минимально достаточный интеллект и доказуемо сравнивать модели/skills на реальных задачах владельца.
Обязательная работа
- formalize path: rule/reflex/skill/small local/strong local/external/research/team;
- input signals: required quality, latency preference, cost budget, risk, freshness, cost of error;
- создать Personal Benchmark dataset refs из реальных approved task cases;
- определить Goal/Preference evaluation profile: owner intent → long-term goals → current task → contextual preferences;
- inferred preferences хранить как evidence-backed scoped hypotheses, а не вечные глобальные настройки;
- сохранять decision-regret evidence: мог ли Домовой с доступными тогда данными выбрать лучше;
- сохранять task-specific evaluation, user correction, latency/cost/retry evidence;
- не сводить качество к одной метрике и не оптимизироваться под согласие владельца;
- добавить exploration/shadow для low-risk paths;
- новая модель не получает automatic promotion только из-за public benchmark.
Canonical writer
Capability/Work existing evaluation writers extended; SELF reads assessments
Rollback
routing returns to V1 selection; evidence retained
FAST gate
selection scenarios low/high cost-of-error + local fallback + benchmark comparison unit
Exit criteria
простая задача не запускает команду из 20 агентов; сложная high-risk задача может эскалировать глубину reasoning.
Non-goals
не hardcode one global accuracy/speed weight.
M4. Durable autonomy and safe self-evolution
GEN2-017 — Extend Work into durable LongRunningWork / Investigation
Owner: Work
Migration mode: IN_PLACE_EXTEND
Primary paths: modules/work/**, contracts/work/**, adapters/postgres/work_repository.go, database/migrations/NNN_gen2_investigation_*.sql, cmd/work-graph-runtime/**, cmd/research-runtime/**
Цель
«Разбирайся хоть сутки» должно быть durable process с checkpoint, а не один длинный LLM request.
Обязательная работа
- LongRunningWork/Investigation state;
- objective, hypotheses, attempts, findings, blockers, next step;
- budget: time/cost/model/resource;
- checkpoint/resume/preempt semantics;
- model/provider replacement between attempts;
- stop condition «решение не найдено в бюджете» с сохранением проверенных вариантов;
- Continuity integration для wake/attention without second scheduler.
Canonical writer
Work canonical writer for long-running job state; Continuity only future relevance
Rollback
old Work Graph path remains for normal tasks; new jobs can be paused/read-only
FAST gate
checkpoint/restart/resume + budget exhaustion + model change tests
Exit criteria
долгая задача переживает restart и продолжает с next step, не повторяя уже проверенные попытки.
Non-goals
не держать unmanaged goroutine как durable job.
GEN2-018 — Add Perspective and dynamic specialist/team semantics on existing Work Graph
Owner: Work
Migration mode: IN_PLACE_EXTEND
Primary paths: modules/work/**, contracts/work/**, capability selection integration, no new agent owner
Цель
Домовой может смотреть на задачу как архитектор/программист/директор/дизайнер или собрать временную команду без roleplay и без постоянного staff.
Обязательная работа
- PerspectiveSpec = objectives/methods/knowledge profile/evaluation criteria;
- dynamic specialist assembly from Perspective + Focus + Skills + tools;
- work decomposition by independent subtasks;
- structured findings/evidence/risks/artifacts;
- critic/adversarial perspective optional;
- criteria when team is justified vs single reasoning path;
- не передавать каждому агенту весь глобальный context.
Canonical writer
Work graph remains owner; no separate Agent Memory owner
Rollback
disable perspective/team routing; tasks execute single path
FAST gate
single-vs-team route + structured synthesis + no cross-agent hearsay dependency
Exit criteria
«спроектируй систему» может вызвать несколько независимых перспектив; «исправь функцию» остаётся одной задачей.
Non-goals
не создавать 20 агентов по умолчанию.
GEN2-019 — Add Consequence/Risk assessment without artificial capability blacklist
Owner: Work assessment feeding Authority/Commit
Migration mode: ADD
Primary paths: modules/work/**, contracts/work/**, contracts/authority/** only inputs/refs if needed, no Authority rewrite
Цель
Оценивать последствия, обратимость, cost-of-error и mitigation до значимого действия, но не превращать систему в «нельзя».
Обязательная работа
- ConsequenceAssessment;
- risk dimensions: impact, reversibility, uncertainty, scope, recoverability;
- mitigation: backup/snapshot/dry-run/canary/extra confirmation;
- clarification policy based on uncertainty × cost_of_wrong_action × irreversibility;
- owner may explicitly accept high risk after warning;
- consequence result becomes input Authority/Commit, не replacement.
Canonical writer
Work writes assessment; Authority remains grant decision owner
Rollback
risk assessment advisory disable; strict existing Authority unchanged
FAST gate
low-risk no interruption; destructive ambiguous action requires explicit commit; accepted-risk path works
Exit criteria
Домовой предупреждает о последствиях и предлагает rollback plan, но не самовольно запрещает владельцу разрешённое действие.
Non-goals
не менять Identity/Authority core semantics.
GEN2-020 — Separate execution receipt from verified world outcome
Owner: Commit + Epistemics
Migration mode: IN_PLACE_EXTEND
Primary paths: modules/commit/** additive, contracts/commit/**, modules/epistemics/**, contracts/epistemics/**, adapters/postgres relevant owners, database/migrations/NNN_gen2_outcome_*.sql
Цель
Не считать «API 200» доказательством того, что пользовательская цель достигнута.
Обязательная работа
- ExecutionReceipt остаётся Commit-owned факт попытки;
- WorldOutcomeAssessment становится Epistemics-owned verification;
- связать expected effect / observation / evidence;
- поддержать UNKNOWN/PARTIAL/CONTRADICTED outcome;
- не выполнять destructive retry только потому, что verification отсутствует;
- Continuity может создать follow-up/attention при неизвестном Outcome.
Canonical writer
Commit writer unchanged for execution facts; Epistemics writes world assessment
Rollback
old Commit status still readable; new assessments additive
FAST gate
HTTP success but world fail; unknown outcome no duplicate retry; verified success scenario
Exit criteria
ответ «выполнено» возможен только когда семантика операции это позволяет; неизвестность честно отражается.
Non-goals
не переносить Commit state machine в Epistemics.
GEN2-021 — Add independent Supervisor/Lifeboat for release health and rollback
Owner: Runtime only
Migration mode: ADD
Primary paths: runtime/supervisor/** or equivalent, deploy/**, runtime/health/**, release metadata, no domain ownership
Цель
Самоизменение Домового не должно уметь уничтожить единственный механизм собственного отката.
Обязательная работа
- candidate release start;
- health/readiness contract;
- controlled traffic/switch;
- watchdog observation;
- automatic rollback to last known good;
- persist release/switch evidence outside candidate process dependency;
- emergency manual control path;
- не давать Supervisor доступ к semantic decisions пользователя.
Canonical writer
Supervisor writes runtime release state only
Rollback
Supervisor itself versioned conservatively; previous release remains bootable
FAST gate
candidate fail -> rollback; process crash -> recover last good; no semantic DB ownership test
Exit criteria
сломанный candidate Assistant не блокирует восстановление последней рабочей версии.
Non-goals
не делать Supervisor новым оркестратором задач.
GEN2-022 — Wire governed self-evolution loop using existing development gates
Owner: Work + SELF evidence + Supervisor promotion
Migration mode: EXTEND existing governed development
Primary paths: contracts/work/self_development.go, modules/work/** development gates, adapters/developmentexecutor/**, modules/self/**, capability skill/reflex, Supervisor integration
Цель
Замкнуть цикл weakness → proposal → candidate → evaluator → canary → promote/rollback без автономного обхода governance.
Обязательная работа
- SELF ImprovementNeed -> Work development candidate;
- expected improvement + must-not-worsen criteria;
- Creator != Evaluator enforced;
- historical replay/personal benchmark;
- sandbox/candidate build;
- shadow/canary where appropriate;
- Supervisor promotion/rollback;
- LearningLedger records accepted/rejected change and actual outcome;
- уровни change: knowledge, behavior, capability, core — с возрастающей строгостью.
Canonical writer
existing governed-development writer remains; SELF proposes/evaluates, Supervisor handles release state
Rollback
existing development gates remain; autonomous promotion feature switch off
FAST gate
self proposal cannot self-approve; failed benchmark rejected; candidate rollback path
Exit criteria
Домовой способен доказуемо улучшить компонент и объяснить историю изменения, но не тайно переписать core.
Non-goals
не разрешать fully autonomous core rewrite without owner-approved authority policy.
M5. Integrated household Gen2 and production canary
GEN2-023 — Make conversational control the primary configuration and operational UX
Owner: Interaction + Configuration/Work contracts
Migration mode: EXTEND UX, no owner bypass
Primary paths: modules/interaction/**, cmd/core-runtime relevant routes, cmd/creator-web/**, Configuration APIs, Work/Authority handoff
Цель
Пользователь говорит, чего хочет; Домовой меняет scoped configuration/starts work through normal semantics instead of forcing admin panels.
Обязательная работа
- intent patterns for setting/querying configuration;
- explain effective scope/value in natural language;
- one-time override vs durable preference distinction;
- conversation creates SettingAssignment only through Configuration contract;
- dangerous config/core changes route through Consequence + Authority/Commit;
- Creator Web admin screens остаются diagnostics/emergency, не primary UX.
Canonical writer
Configuration remains setting writer; Interaction writes user instruction/intent only
Rollback
admin/read APIs remain available; conversational mutations can be disabled
FAST gate
«для Company A Skill X используй Y» + scope confirmation + dangerous self-setting confirmation
Exit criteria
обычные настройки не требуют ручного редактирования ENV/admin UI.
Non-goals
не разрешать Interaction писать Configuration tables напрямую.
GEN2-024 — Multi-person realms, identity boundaries and contextual source trust
Owner: Identity + World + Epistemics, separate responsibilities
Migration mode: EXTEND
Primary paths: Identity contracts/domain, World identity resolution, Epistemics source reliability, Interaction source attribution, tests
Цель
Не смешивать владельца, членов семьи, гостей, голосовые источники и shared/private memory.
Обязательная работа
- PrincipalDataRealm/owner/shared scopes;
- utterance/source attribution with confidence;
- World person referents do not equal authenticated Principal automatically;
- SourceReliabilityAssessment = source × domain × freshness × history;
- identity ambiguity remains explicit;
- future speaker-recognition result enters as Observation, not authentication truth;
- Context Compiler respects realm/scope isolation.
Canonical writer
Identity authenticates principals; World resolves referents; Epistemics evaluates source reliability
Rollback
single-owner mode remains possible; new realm metadata additive
FAST gate
two Ivans, family/private scope, voice guess != authenticated principal, cross-realm retrieval denial
Exit criteria
Домовой может знать семейный контекст, не превращая услышанное имя/голос в полномочия владельца.
Non-goals
не реализовывать continuous home recording здесь.
GEN2-025 — Multimodal and ambient-ingress readiness without implementing the whole smart home
Owner: Interaction ingress + Artifact + Capability + World refs
Migration mode: EXTEND contracts
Primary paths: contracts/interaction/**, contracts/capability/multimodal.go, adapters/multimodal/**, Artifact refs, World device/location refs, Creator Web upload/voice paths
Цель
Закрепить единый путь для text/audio/image/video/device observations, чтобы будущие микрофоны/камеры не потребовали нового ядра.
Обязательная работа
- normalise ingress envelope: modality/source/device/location/principal attribution/evidence refs;
- raw large media -> Artifact, derived transcript/vision result -> Observation;
- device/location are World refs;
- speech/OCR/vision results include provenance/model/version/confidence;
- future ambient streams can feed bounded observations/episodes without bypassing Interaction/Epistemics;
- output device choice остаётся будущим capability, не hardcoded in core.
Canonical writer
Interaction/Artifact/Epistemics existing responsibilities
Rollback
existing chat/file routes remain compatible
FAST gate
speech/image/OCR route + provenance + degraded unavailable + no raw media stuffed into prompt
Exit criteria
будущая команда «покажи камеру улицы на телевизоре здесь» вписывается через World/Focus/Capability/Authority без смены core model.
Non-goals
не внедрять 24/7 audio/video ingestion в этом milestone.
GEN2-026 — Migrate household behavior to Gen2 context/memory/skills with local degraded paths
Owner: Existing owners, integration task
Migration mode: CONTROLLED_CUTOVER
Primary paths: cmd/core-runtime/**, cmd/cognitive-worker/**, modules/interaction/**, situation/capability/epistemics/work/continuity read paths, creator-web, multimodal adapters
Цель
Перевести реальные бытовые сценарии на Gen2 foundation и доказать, что технический протокол не просачивается пользователю.
Обязательная работа
- перенести SCN-HH-001..010 на Gen2 paths;
- name/preference continuity through scoped retrieval;
- current data uses freshness/revalidation;
- travel/places follows Focus/location and source evidence;
- multi-action uses Work;
- reminder uses Continuity;
- multimodal uses capability/degraded path;
- creative request avoids unnecessary web;
- partial/unavailable/contradictory results produce honest answer;
- short natural response;
- authority/unknown outcome regressions;
- local model/Lifeboat path continues useful operation when stronger model unavailable.
Canonical writer
no new canonical owner; integration switches reads/routes to Gen2
Rollback
per-subsystem switches to V1 compatibility remain until M6
FAST gate
only touched scenario subset while developing; milestone runs all household scenarios once
Exit criteria
обычный пользователь не замечает internal Gen2 protocols; baseline household behavior preserved/improved.
Non-goals
не делать feature work unrelated to migration findings.
GEN2-027 — Production canary and controlled Gen2 traffic transition
Owner: Operations/Supervisor
Migration mode: CONTROLLED_CUTOVER
Primary paths: deploy/**, runtime/supervisor/**, health/observability, feature-switch config, evidence docs
Цель
Перевести production на Gen2 по контролируемому canary, сохранив мгновенный rollback к последнему good release.
Обязательная работа
- build candidate from accepted milestone commit;
- deploy alongside or controlled replacement according to existing platform constraints;
- health + DB migration compatibility;
- bounded traffic/canary;
- compare errors/latency/unknown/recovery;
- household smoke;
- rollback drill;
- promote only после evidence;
- записать production composition snapshot в SELF/Learning Ledger where appropriate.
Canonical writer
runtime release state switches via Supervisor; semantic writers already cut over by prior tasks
Rollback
one-command/automatic revert to last-known-good release, schema remains backward compatible
FAST gate
deployment preflight only during iteration
Exit criteria
Gen2 handles production household traffic and rollback proven.
Non-goals
не удалять V1 tables/read paths immediately after first success.
M6. V1 retirement and Gen2 acceptance
GEN2-028 — Inventory V1 compatibility usage and prove retirement readiness
Owner: Migration/Governance
Migration mode: RETIRE_AFTER_PROOF preparation
Primary paths: entire repo read; code changes only instrumentation/compatibility markers/evidence, no destructive schema drop
Цель
Доказать, что legacy paths больше не являются активными writers/read dependencies.
Обязательная работа
- caller inventory;
- writer inventory;
- feature-switch telemetry;
- PersonalMemory fallback usage;
- ActiveProjectFocus compatibility usage;
- truth_bundles read usage;
- ordinary ENV fallback usage;
- V1 Skill view usage;
- rollback observation window evidence;
- сформировать explicit retirement list, каждый пункт с rollback consequence.
Canonical writer
no change
Rollback
not applicable; this task is proof only
FAST gate
static checks + targeted telemetry tests
Exit criteria
для каждого legacy path есть доказательство ACTIVE / SAFE_TO_RETIRE / KEEP_LONGER.
Non-goals
не удалять ничего только потому, что «похоже, уже не используется».
GEN2-029 — Retire proven V1 paths without deleting evidence
Owner: respective owners
Migration mode: RETIRE_AFTER_PROOF
Primary paths: only paths explicitly approved by GEN2-028 retirement list; database migrations for retirement markers/drop only where FULL gate approved
Цель
Удалить архитектурные костыли V1, которые мешают дальнейшему развитию, но сохранить raw/canonical historical evidence.
Обязательная работа
- retire PersonalMemory ContextText read path;
- retire project-only Focus source of truth;
- retire truth_bundles as active canonical path while retaining historical compatibility/export as needed;
- remove non-bootstrap ordinary ENV reads already migrated;
- retire implicit reflex substitutes superseded by explicit Reflex;
- remove dead feature switches only after observation;
- не удалять human utterances, observations, experiences, commits, outcomes, audit lineage.
Canonical writer
Gen2 writers already active; V1 writers permanently disabled/removed
Rollback
code rollback possible to pre-retirement tag only if schema remains readable; destructive DB deletion requires explicit backup/export and approval
FAST gate
targeted no-caller/no-writer tests while editing; FULL required before irreversible retirement
Exit criteria
нет двух архитектурных поколений в active runtime; historical evidence доступно.
Non-goals
не проводить массовую vacuum/delete ради чистоты.
GEN2-030 — Final Gen2 acceptance, documentation baseline and next-evolution queue
Owner: Architecture/Governance + all owners evidence
Migration mode: acceptance
Primary paths: docs/**, architecture/** status/registry, dev/**, evidence; code only final defects found by acceptance
Цель
Зафиксировать Gen2 как новый рабочий baseline и отделить фундамент от будущих capabilities.
Обязательная работа
- FULL acceptance gate once;
- production smoke/restart/rollback confirmation;
- architecture registry reflects actual code;
- canonical data model vs actual schema reconciliation;
- Personal Benchmark baseline;
- Learning Ledger initial history;
- known gaps/future capabilities queue;
- новый stable tag
domovoy-gen2-baseline-*; - обновить PROJECT_STATUS/active task.
Canonical writer
no semantic cutover
Rollback
previous M5 production tag remains last-known-good until Gen2 acceptance signed
FAST gate
not applicable; this is a justified FULL gate
Exit criteria
Gen2 is documented, production-proven, rollbackable and ready for capability growth/self-learning iterations.
Non-goals
не объявлять ambient home/robots fully implemented.
16. Реперные точки и gates
M0 exit
- все текущие открытые изменения сохранены в git;
- актуальная работа слита в
main; - remote
mainобновлён; GEN2_BASE_COMMITи baseline tag зафиксированы;- Gen2 docs/owners/governance официально приняты;
- task/test profiles существуют.
Gate: FAST only, если не обнаружен новый высокий риск.
M1 exit — Semantic substrate
Обязательные свойства:
- World referents stable и не владеют truth;
- Focus V2 поддерживает organization/system/database/version/activity/goal/task/entities;
- Company A/B isolation;
- Focus Stack push/pop/resume;
- V1 ActiveProjectFocus доступен только compatibility projection.
Gate: MILESTONE.
M2 exit — Memory/Knowledge foundation
Обязательные свойства:
- normalized evidence/claim/belief;
- freshness/volatility/versioning;
- positive + negative Experience;
- hard scope before similarity;
- rebuildable retrieval projections;
- Context Compiler V2;
- PersonalMemory — fallback only;
- iterative retrieval для маленьких локальных моделей.
Gate: MILESTONE.
M3 exit — Evolvable behavior
Обязательные свойства:
- typed/scoped Configuration;
- ENV только bootstrap/compatibility;
- Skill V2;
- Reflex lifecycle + shadow/revalidation;
- SELF observe/evaluate/propose;
- Personal Benchmark/evaluation;
- intelligence strategy учитывает cost/risk/quality.
Gate: FULL, потому что здесь впервые одновременно меняются configuration, cognition selection и обучаемое поведение.
M4 exit — Durable autonomy
Обязательные свойства:
- long jobs survive restart;
- dynamic perspectives/teams используют Work Graph;
- consequence assessment перед значимым mutation;
- execution receipt отделён от verified outcome;
- Supervisor rollback независим от candidate;
- self-evolution проходит existing development gates + independent evaluation.
Gate: MILESTONE + focused restart/recovery/rollback. FULL не повторять автоматически, если M3 FULL свежий и нет глобального schema cutover.
M5 exit — Integrated household Gen2
Обязательные свойства:
- natural conversational control;
- household scenarios 001–010 on Gen2;
- multi-person/data realm isolation;
- multimodal provenance/degraded paths;
- local fallback usefulness;
- production canary and rollback.
Gate: FULL + production smoke.
M6 exit — V1 retirement
Обязательные свойства:
- no active V1 canonical writers where Gen2 replaced them;
- retirement based on usage evidence;
- historical evidence preserved;
- old rollback path removed only after explicit proof;
- architecture registry equals actual runtime.
Gate: FULL only immediately before irreversible retirement, затем targeted production smoke.
17. Coverage Matrix — чтобы не потерять обсуждённую концепцию
| Концепция | Где реализуется/закрепляется |
|---|---|
| Домовой != LLM | GEN2-000/001, existing cognitive boundary |
| Правда vs гипотеза | GEN2-006/007/020 |
| «Не умею» -> исследовать | GEN2-016/017 |
| Долгий фоновый расчёт | GEN2-017 |
| Пережить restart | GEN2-017 + Continuity + existing recovery |
| Память != prompt | GEN2-009/010 |
| Scope Company A/B | GEN2-003/004/005/009 |
| Freshness/скорость старения | GEN2-007 |
| Старое знание как аналогия | GEN2-007/010 |
| Не забывать raw evidence | GEN2-006/008/025/029 |
| Reprocess прошлое новой моделью | GEN2-006/008/009 |
| Positive experience | GEN2-008/009 |
| Negative experience/грабли | GEN2-008/009/010 |
| Correction -> learning signal | GEN2-008/015 |
| Focus / Focus Stack | GEN2-004 |
| Project только одна грань | GEN2-004 |
| World model/referents | GEN2-003/005 |
| Entity resolution | GEN2-005/024 |
| Source trust by domain | GEN2-024 + Epistemics |
| Dynamic settings | GEN2-012 |
| ENV минимум | GEN2-012 |
| Secrets отдельно | GEN2-012 |
| Conversational control | GEN2-023 |
| Skill from repeated solution | GEN2-013 |
| Reflex from stable Skill | GEN2-014 |
| Reflex не закостеневает | GEN2-014 |
| Shadow reasoning | GEN2-014/016 |
| Новая сильная модель переоценивает Skills | GEN2-016/022 |
| SELF: что умею | GEN2-015 |
| SELF: свои слабости/грабли | GEN2-015 |
| Learning Ledger | GEN2-015/022 |
| Creator != Evaluator | GEN2-001/015/022 |
| Personal Benchmark | GEN2-016 |
| Cost of intelligence | GEN2-016 |
| Roles/perspectives | GEN2-018 |
| Temporary team of specialists | GEN2-018 |
| Не 20 агентов всегда | GEN2-016/018 |
| Consequence/risk instead of blanket prohibition | GEN2-019 |
| Owner can accept risk | GEN2-019 + Authority/Commit |
| Transactional self-change | GEN2-021/022 |
| Independent Lifeboat | GEN2-021 |
| Outcome verification | GEN2-020 |
| No duplicate external action | existing Commit + GEN2-020 regressions |
| Attention/Continuity | existing owner + GEN2-017 integration |
| Multi-person/family boundaries | GEN2-024 |
| Voice/image/OCR provenance | GEN2-025 |
| Future cameras/TV/home | architectural hooks GEN2-003/004/019/025 |
| Future PC/mobile hands | Capability/World/Authority/Commit hooks |
| Future robots/vehicles | Capability/World/Consequence/Authority/Outcome hooks |
| Memory salience/retention/hot-warm-cold-archive | GEN2-009 |
| Explicit «запомни/можно забыть» | GEN2-009 + Interaction retention evidence |
| Consolidation raw -> episode -> knowledge -> experience -> skill -> reflex | GEN2-008/009/013/014 |
| Reversible evolution | GEN2-021/022 |
| Minimum unnecessary questions | GEN2-019 clarification value + Personal Benchmark |
| Do not optimize for agreement | GEN2-006/016 |
| User preference is scoped/evolving | GEN2-016/023; evidence-backed preference profile |
| Goal hierarchy / что значит «лучше» | GEN2-016 + Work Goal V2 |
| Decision regret / learning from choices | GEN2-016/015 |
| Active environment/device discovery | GEN2-025 + World/Capability qualification |
18. Future capabilities intentionally NOT fully implemented in foundation
Эти возможности не забыты. Gen2 обязан оставить для них совместимый путь, но не должен расходовать месяцы на реализацию до готовности костяка.
18.1 Ambient home awareness
Будущее:
- микрофоны в доме;
- bounded/continuous audio observations;
- speaker recognition;
- камеры;
- presence/location inference;
- семейные разговоры/события;
- automatic episode extraction.
Gen2 foundation уже должен дать:
Interaction ingress
+ Artifact raw lineage
+ World Device/Room/Person refs
+ Identity != speaker guess
+ Epistemics observations/provenance
+ PrincipalDataRealm
+ Focus
+ Context Compiler
18.2 Active environment and capability discovery
Будущее окружение нельзя заранее перечислить в таблицах. Новый PC-hand, телефон, TV, камера, датчик, автомобиль или неизвестный сегодня класс устройства должен уметь зарегистрировать наблюдаемый identity/capability descriptor.
Gen2 foundation использует:
discovery observation
-> World candidate referent
-> Capability candidate
-> qualification/health
-> scoped configuration
-> Authority only when an action requires it
Обнаружение никогда автоматически не означает доверие, identity владельца или право на mutation.
18.3 Output to surrounding devices
Будущее:
«Покажи камеру улицы.»
Домовой сможет вывести изображение на подходящий TV/phone/display, учитывая текущий Focus/location.
Для этого Gen2 оставляет:
World device capabilities
+ current location/presence observations
+ Capability selection
+ Consequence/Authority when required
+ Commit/Outcome
18.4 PC/mobile “hands”
Future device agents должны регистрироваться как capabilities/environment nodes и никогда не получать специальный обход core semantics.
Файл/команда/программа:
Intent -> Work -> Capability -> Consequence -> Authority -> Commit -> device executor -> Outcome
18.5 Home automation / vehicles / robots
Не создаётся отдельная «robot authority» архитектура.
Используются те же:
- World referents;
- capabilities;
- risk/consequence;
- Authority/Commit;
- outcome verification;
- Supervisor для собственного software evolution.
18.6 Digital Twin / simulation
Gen2 ConsequenceAssessment и World referents должны позволять позже подключить simulation/dry-run adapters, но foundation не требует полного Digital Twin.
18.7 Automatic Skill/Reflex synthesis
Сейчас закладывается lifecycle и governance.
Полная автоматизация:
repeated experience -> candidate Skill -> code synthesis -> sandbox -> evaluator -> shadow -> reflex promotion
может включаться позже без изменения canonical model.
18.8 New-model global requalification
Новая сильная модель позже сможет просматривать Skills/Reflexes/negative experience и предлагать улучшения, но всегда через GEN2-022 evolution protocol.
19. Architecture anti-patterns запрещённые на всём пути
memory_items(id, jsonb)как новый универсальный source of truth.- WorldObject с произвольным JSON, где лежат факты всех owners.
map[string]anyвместо typed domain contract.- Один Core Runtime, который сам понимает всю семантику owners.
- SELF, от которого синхронно зависят все запросы.
- Event Bus как обязательный центр любого взаимодействия.
- Cross-owner SQL JOIN для корректности бизнес-смысла.
- Два canonical writers во время migration.
- In-memory durable schedule/job state.
- Prompt history как единственная память.
- Vector DB как истина.
- LLM как источник факта об успешной внешней операции.
- Skill, который сам выставляет себе trusted/quality score.
- Reflex без applicability/version/dependency/revalidation.
- Настройки через бесконечное расширение ENV.
- Пароли/токены в embeddings/context.
- Multi-agent team для каждой мелкой задачи.
- Full test suite после каждого небольшого commit.
- Добавление тестов ради coverage без нового риска.
- Удаление V1 evidence при миграции.
- Big-bang rewrite всего проекта.
- «Временно» обойти Authority/Commit ради ускорения feature.
20. Definition of Done для Gen2 как поколения
Gen2 считается состоявшимся не по количеству новых файлов, а когда выполняются реальные свойства.
20.1 Memory/knowledge
Сценарий:
год назад структура УНФ была X, сейчас live источник недоступен.
Домовой способен:
- найти старое знание;
- понять его scope/version/age;
- не назвать его текущей истиной;
- предложить использовать как гипотезу/старт;
- при появлении live access revalidate и обновить BeliefAssessment.
20.2 Scope
Данные Company A не смешиваются с Company B даже при почти идентичной семантике/embedding.
20.3 Negative experience
При знакомой проблеме Context Compiler вытаскивает не только «правильное решение», но и релевантные ранее провалившиеся подходы и условия провала.
20.4 Local context budget
Маленькая локальная модель может решить задачу через точный первичный context + iterative retrieval без загрузки всей истории.
20.5 Skill/Reflex
Повторяющееся подтверждённое решение может пройти:
Experience -> Candidate Skill -> Active Skill -> Reflex
а при drift:
Reflex -> revalidation/shadow mismatch -> suspend -> Skill/reasoning
20.6 SELF
Домовой способен показать evidence-backed ответ:
что я умею / при каких условиях / где ранее ошибался / какие зависимости сейчас недоступны.
20.7 Long work
Задача может работать много шагов, пережить restart, сменить model provider и продолжить с checkpoint.
20.8 Risk/control
Высокорисковое действие не запрещается искусственно владельцу, но последствия/uncertainty/rollback объясняются до конкретного Commit.
20.9 Memory retention and preference learning
Домовой умеет различать:
- факт, который давно не использовался, но дорог в потере;
- быстро устаревающее operational знание;
- explicit owner directive «это обязательно запомни»;
- временную preference текущей задачи и устойчивую preference владельца;
- inferred preference как гипотезу с evidence, а не как безусловную истину.
Он способен консолидировать память, не теряя возможность вернуться к исходному evidence.
20.10 Self-evolution
Core/capability candidate может быть построен, независимо оценён, запущен canary и автоматически откатан Supervisor при failure.
20.11 Human UX
Пользователь управляет обычным поведением разговором и получает естественный результат, а не внутренние BeliefAssessment/FocusFrame/CommitState.
21. Codex execution discipline
Для каждого task Codex должен:
Before
- Прочитать Gen2 canonical docs.
- Проверить active task packet.
- Найти current owner/writer/callers.
- Записать короткий implementation note:
что меняю / чего не меняю / writer_before/after. - Выполнить FAST preflight.
During
- делать минимальный bounded diff;
- не отвлекаться на unrelated cleanup;
- сначала сохранить evidence/backfill path, затем переключать;
- не запускать FULL без milestone reason;
- при обнаружении architecture gap остановиться и оформить finding.
After
- Выполнить FAST gate.
- Обновить migration/evidence note.
- Зафиксировать:
- changed paths;
- contracts/schema/events/dependencies;
- writer before/after;
- tests actually run;
- assumptions;
- findings not changed;
- rollback procedure.
- Commit task.
- Merge в
gen2/integration. - Если task завершает milestone — выполнить milestone gate и merge milestone в
main.
22. Что Codex не должен ждать от пользователя
Codex не должен прерывать работу вопросами о локальной детали, которую можно безопасно определить из repo/contracts/tests.
Он должен запросить решение только если:
- два canonical owner действительно конфликтуют;
- изменение затрагивает фундаментальный user intent, которого нет в Конституции/ADR;
- требуется секрет/credential, который невозможно получить существующим разрешённым способом;
- irreversible migration не имеет согласованного rollback/backup;
- внешний production action требует authority, которой task packet не содержит.
Во всех остальных случаях — best effort внутри принятых контрактов.
23. Что делать с DEV-000295
DEV-000295 revision 2 не расширяется до Gen2.
Перед Gen2:
- его текущий branch/diff входит в PRE-GEN2 consolidation;
- существующие household scenarios становятся V1 regression baseline;
- его ограничения
no new owner/no migrations/no architecture changeне переносятся на Gen2 architectural tasks; - незавершённый production evidence фиксируется как known baseline gap, а не причина блокировать Gen2 foundation;
- после
GEN2-000active task переводится на первую Gen2 task packet.
24. Приоритет, если сроки начинают раздуваться
Если программа становится слишком большой, нельзя выкидывать фундамент и оставлять features.
Приоритет сохранения:
P0 — invariants / canonical owners / migration safety
P1 — Focus/Scope + Epistemics + Retrieval/Context
P2 — Configuration + Skill/Reflex + SELF
P3 — LongWork + Outcome + Supervisor/evolution
P4 — household integration
P5 — future capabilities
То есть при сокращении объёма позже реализуются камеры/роботы/ambient streams, но не откладываются снова на «потом» Scope, freshness, dynamic configuration, Skill/Reflex lifecycle или SELF foundation.
25. Итоговая последовательность
PRE-GEN2-000 Preserve + merge all current work -> main -> tag
↓
GEN2-000/001 Adopt Gen2 governance + owners
↓
M1 Primitives -> World -> Focus/Scope -> identity/version bindings
↓
MILESTONE
↓
M2 Epistemics -> freshness -> Experience -> Retrieval -> Context Compiler -> PersonalMemory cutover
↓
MILESTONE
↓
M3 Configuration -> Skill V2 -> Reflex -> SELF -> Intelligence/Benchmark
↓
FULL
↓
M4 LongRunningWork -> Perspectives -> Consequence -> Outcome -> Lifeboat -> Self-evolution
↓
MILESTONE + recovery
↓
M5 Conversational UX -> multi-person -> multimodal readiness -> household migration -> production canary
↓
FULL + production
↓
M6 retirement proof -> retire V1 paths -> final acceptance
↓
FULL only before irreversible retirement
↓
DOMOVOY GEN2 BASELINE
После этого массовое развитие capabilities идёт на Gen2 костяке, а саморазвитие постепенно начинает использовать тот же governed lifecycle, который был заложен вручную.