Files
Assistant/architecture/GEN2_TARGET_ARCHITECTURE.md
2026-08-29 01:53:27 +03:00

1992 lines
60 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домовой — Target Architecture Gen2
**Статус:** target architecture / архитектурная цель следующего поколения
**Дата:** 2026-08-28
**Основание:** действующая Architecture Generation 1, пакеты анализа v2/v3, `DOMOVOY_GEN2_GAP_MAP.md`, принятая концепция и Конституция Домового.
**Назначение:** зафиксировать, каким должен стать костяк Домового до массового наращивания новых возможностей.
---
# 0. Решение уровня поколения
Gen2 — это **не новая программа с нуля** и не набор локальных feature-патчей поверх V1.
Gen2 является **управляемой миграцией архитектурного поколения**:
```text
Architecture Generation 1
│
├─ сохранить доказанные invariants
├─ сохранить рабочие regression scenarios
├─ сохранить recovery semantics
├─ сохранить историю ошибок и evidence
│
▼
Architecture Generation 2
│
├─ новый фундамент памяти/контекста
├─ Focus/Scope V2
├─ World Model foundation
├─ Skill/Reflex evolution
├─ SELF
├─ dynamic configuration
├─ long-running intelligence
└─ controlled self-evolution
```
Существующий production/reference код является одновременно:
- рабочей реализацией;
- regression oracle;
- источником доказанных инвариантов;
- источником уже найденных ошибок;
- миграционным источником данных;
- fallback до доказанной готовности Gen2.
Ни один крупный V1 bounded context не удаляется до того, как новый путь доказал эквивалентность полезного поведения и имеет rollback.
---
# 1. Цель Gen2
Домовой Gen2 — долговременный персональный мыслящий агент, который:
1. понимает намерение владельца, текущую деятельность и окружение;
2. хранит долговременное evidence, знания, опыт, цели и обязательства;
3. отличает текущий факт от старого знания, гипотезы, аналогии и противоречия;
4. умеет извлекать из большой памяти небольшой релевантный рабочий контекст;
5. не смешивает людей, организации, базы, проекты, версии и окружения;
6. запоминает как успешные решения, так и неудачные попытки;
7. превращает повторяемый успешный опыт в Skill, а стабильный Skill — в Reflex;
8. умеет обнаруживать устаревшие Skills/Reflexes и возвращать их на переоценку;
9. знает собственные способности, слабости, зависимости и версии;
10. выбирает минимально достаточную стоимость мышления;
11. способен вести длительную работу с checkpoint/pause/resume/recovery;
12. способен создавать новые capabilities и изменять собственный код через governed evolution;
13. управляется преимущественно естественным разговором, а не админками;
14. может в будущем воспринимать голос, видео, устройства и окружающую среду без смены базовой архитектуры;
15. не подменяет предположение фактом и своё намерение намерением владельца;
16. выполняет реальные действия только через явный контур полномочий, последствий, Commit и проверки Outcome.
---
# 2. Что Gen2 наследует без изменения смысла
Следующие значения являются ДНК системы и не должны потеряться при Gen2 migration:
```text
LLM != Assistant
Capability != Authority
Observation != Claim != Belief
Intent != Goal != Task
Task != Action
Proposal != AuthorizedAction != Attempt != Outcome
Tool success != verified world outcome
Memory != ModelContext
Projection/index/embedding != source of truth
Restart != loss of commitment
Timeout != failure
UNKNOWN_OUTCOME is first-class
More intelligence != more authority
Creator of a candidate != sole evaluator of that candidate
```
Обязательные операционные инварианты:
- один canonical semantic owner на mutable state;
- нет прямой записи в storage другого owner;
- нет cross-owner SQL dependency как способа склеить архитектуру;
- external mutation только через `Authority -> Commit -> Executor`;
- ambiguous mutation не ретраится вслепую;
- durable future relevance принадлежит Continuity, а не timer engine;
- durable work принадлежит Work, а не одному LLM request;
- model/provider не является источником canonical state;
- correction/supersession добавляется версионно, историческое значение не переписывается молча;
- secrets не являются обычной памятью или контекстом модели;
- критические изменения системы имеют rollback path.
---
# 3. Главный принцип устройства Gen2
Gen2 разделяет два мира.
## 3.1 Strict Operational Core
Здесь нужна максимальная однозначность, типизация, constraints, audit и transactional semantics.
```text
Identity
Authority
Commit
ActionAttempt
ExecutionReceipt
Outcome verification linkage
Continuity obligation state
Recovery
Audit
Release/Supervisor control
```
Чем ближе данные к необратимому действию, тем меньше допустима семантическая свобода.
## 3.2 Evolving Semantic World
Здесь модель должна расширяться без глобального redesign при появлении новых знаний и новых видов окружения.
```text
World referents
Typed facet definitions
Relation definitions
Observations
Claims
Beliefs/Assessments
Episodes
Experience
Skills
Reflexes
Preferences
Dynamic configuration definitions
SELF assessments
Search projections
```
Чем ближе данные к пониманию мира, тем больше допустима эволюционируемая типизированная схема.
**Это не означает `map[string]any` и не означает generic `SaveEntity(any)`.**
Расширяемость строится через versioned schema definitions и ограниченный typed value algebra.
---
# 4. Архитектурная карта Gen2
```text
HUMAN / ENVIRONMENT
│
Interaction / Observation ingress
│
▼
INTENT INTERPRETATION
│
▼
SITUATION / FOCUS V2
"что сейчас происходит"
│
┌──────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
WORLD REFERENCES ACTIVE WORK CONTINUITY
people/systems/places goal/task/job obligations
│ │ │
└───────────────┬──────┴───────────────┬──────┘
│ │
▼ ▼
MEMORY RETRIEVAL SELF SIGNALS
facts / experience competence/
success / failure weaknesses
│ │
└──────────┬───────────┘
▼
CONTEXT COMPILER
minimal task-specific context
│
▼
INTELLIGENCE STRATEGY
Reflex -> Skill -> Local Model -> Strong Model
-> Research -> Specialist Team
│
▼
PLAN
│
Consequence / Risk
│
┌──────────────┴──────────────┐
│ │
read-only work mutation required
│ │
▼ ▼
Evidence Authority
│ │
│ Commit
│ │
│ Executor
│ │
└──────────────┬──────────────┘
▼
WORLD OBSERVATION
│
▼
OUTCOME ASSESSMENT
│
┌────────────────┼────────────────┐
▼ ▼ ▼
Experience Continuity SELF/Learning
│ │
└──────── Skill / Reflex / Evolution
```
---
# 5. Bounded contexts и owners Gen2
## 5.1 Identity — KEEP
**Владеет:**
- Actor identity;
- Principal identity;
- PrincipalBinding;
- authenticated session identity;
- identifier history для actor/principal.
Identity не становится World Model и не хранит arbitrary people/devices/projects.
Идентификация источника и полномочия остаются разными понятиями.
---
## 5.2 Authority — KEEP, уточнить семантику Scope
**Владеет:**
- `AuthorityScope`;
- grants;
- authorization context;
- validity/revision of grants.
### Важное изменение Gen2
V1 понятие `Scope` перегружено. Gen2 должен различать:
```text
AuthorityScope
"что этому Actor разрешено делать для Principal"
ContextScope
"к какой части мира/работы относится текущая задача"
```
`AuthorityScope` остаётся в Authority.
`ContextScope` принадлежит Situation и не предоставляет никаких полномочий.
Компания A/B, конкретная УНФ, репозиторий, база и версия не должны кодироваться как побочный эффект Authority.
---
## 5.3 Interaction — KEEP + EXPAND ingress
**Владеет:**
- Conversation;
- HumanUtterance;
- OriginalHumanIntent;
- Interpretation;
- correction/supersession relations;
- explicit preference/directive/assertion speech acts.
Gen2 делает Channel открытым для новых ingress adapters:
```text
web chat
voice
phone transcript
file/message
future ambient audio
future device UI
```
Raw media не копируется в Interaction: оно является Artifact, а Interaction хранит reference/transcript lineage.
Interaction не определяет truth и не становится memory owner.
---
## 5.4 Situation — REWORK -> Focus V2 owner
Situation остаётся владельцем текущей интерпретации «что происходит сейчас».
### Новая canonical семантика
`FocusFrame`:
- Actor/Principal;
- AuthorityScope ref;
- ContextScope;
- active activity/project;
- organization/family context;
- environment/location;
- system/database/repository/branch/version refs;
- Goal/Task refs;
- active WorldObject refs;
- explicit/inferred provenance;
- confidence;
- activation/suspension/expiration state;
- parent/previous frame.
`FocusStack`:
- active frame;
- suspended frames;
- return/resume relation;
- explicit switch provenance;
- automatic inference provenance.
### Правила
- explicit human switch — сильный сигнал;
- inferred focus имеет confidence/provenance;
- короткое отвлечение не уничтожает предыдущий Focus;
- textual similarity сама по себе не выбирает project/context;
- Focus не является Authority;
- Focus не является Memory;
- Focus задаёт направление retrieval/config/skills, а не записывает их state.
---
## 5.5 World — NEW bounded context, узкий и типизированный
World нужен, чтобы новые виды объектов окружения могли появляться без создания специальной глобальной таблицы на каждый будущий класс вещей.
World **не является generic domain Entity service**.
### World владеет только семантикой referents и extensible vocabulary
- `WorldObject` — стабильный referent;
- `WorldObjectKindDefinition`;
- `WorldAlias`;
- `FacetDefinition`;
- `RelationDefinition`;
- schema version lineage;
- identity-resolution decision for WorldObjects;
- merge/split lineage.
### World НЕ владеет истиной значений
Например World может знать, что существует schema:
```text
onec.configuration
configuration_version: string
database_ref: ref
```
Но утверждение:
> `Company A UNF version = 1.6.x`
является Observation/Claim/Belief Epistemics, с provenance и freshness.
Таким образом:
```text
World = что за объект/свойство/тип связи вообще существует
Epistemics = что мы считаем известным об этом объекте сейчас и почему
```
### Typed value model
Новые Facet/Relation definitions используют ограниченные типы:
```text
STRING
INTEGER
DECIMAL
BOOLEAN
TIME
DURATION
ENUM
REFERENCE
BINARY_REF
LIST<T>
STRUCT<fields>
```
Не допускается domain API типа `SaveEntity(any)`.
Физическая сериализация может меняться, но semantic validation обязательна.
---
## 5.6 Epistemics — EXPAND -> knowledge/evidence owner
Epistemics становится главным владельцем знаний как доказательных утверждений, но **не монолитной Memory БД**.
Владеет:
- Observation;
- Claim;
- Belief/Assessment;
- Provenance;
- Source/Snapshot/Excerpt/Citation;
- ExperienceRecord;
- ReflectionCandidate;
- Episode (derived grouping of observations);
- Freshness/Validity assessment;
- source/domain reliability evidence;
- world outcome observation/assessment;
- contradiction/supersession relationships.
### Не вводить отдельный canonical `MemoryItem`
«Память» — это read/retrieval architecture над несколькими владельцами.
Epistemics владеет knowledge/evidence, но Work владеет задачами, Continuity обязательствами, Capability skills, Interaction utterances.
### Outcome owner clarification
Gen2 фиксирует ранее недостаточно явную границу:
```text
Commit owns:
authorization + execution attempt state + execution receipt
Epistemics owns:
observation/assessment of what actually произошло в мире
```
`HTTP 200`, exit code 0 или accepted API receipt не обязаны означать verified Outcome.
---
## 5.7 Work — KEEP + EXPAND
Work остаётся владельцем:
- Goal;
- Task;
- Decision;
- Plan;
- WorkGraph;
- Delegation;
- AgentRun/Checkpoint;
- producer/verifier workflow;
- governed development gates.
Gen2 расширяет Work следующими понятиями.
### LongRunningWork / Investigation
Durable работа содержит:
- objective;
- hypotheses refs;
- attempt history refs;
- findings refs;
- blockers;
- checkpoints;
- resource/time/cost budget;
- next step;
- pause/resume/cancel state;
- justification path.
Один LLM request никогда не является durable job.
### PerspectiveSpec
Role/Perspective — не roleplay и не Authority.
Perspective задаёт:
- objective lens;
- retrieval profile;
- evaluation criteria;
- capability requirements;
- expected output shape.
Примеры: architect, programmer, director, designer, critic, security reviewer.
### ConsequenceAssessment
Перед значимой mutation Work/Planning может формировать:
- cost of error;
- reversibility;
- affected objects;
- expected consequences;
- uncertainty;
- mitigation options;
- simulation/dry-run requirement;
- backup/snapshot requirement;
- recommended confirmation strength.
Authority отвечает «разрешено ли», ConsequenceAssessment — «что может произойти».
---
## 5.8 Continuity — KEEP + EXPAND only where needed
Continuity остаётся единственным владельцем:
- Commitment;
- ProspectiveItem;
- AttentionItem;
- HumanResponse;
- durable future relevance.
Никакого второго scheduler/attention engine.
### Gen2 integration
Long-running Work использует Continuity для будущего wake/review/retry eligibility, но Work остаётся владельцем job state.
```text
Continuity: когда это снова становится релевантно
Work: что за работа и где она остановилась
```
Attention остаётся human-facing relevance, а не generic notification bus.
---
## 5.9 Capability — EXPAND -> ability/skill/reflex/intelligence selection owner
Capability остаётся владельцем:
- capability descriptors;
- implementations;
- health;
- qualification;
- resolution;
- selection;
- gaps;
- usage observations;
- model bindings/evaluation.
### Skill V2
Skill — повторяемый способ решения класса задач.
Обязательные свойства:
- applicability conditions;
- ContextScope compatibility;
- supporting experience refs;
- known failure experience refs;
- dependencies;
- implementation/version;
- last validation;
- environment/subject version conditions;
- lifecycle;
- confidence/quality evidence;
- retirement path.
### Reflex
Reflex — оптимизированный дешёвый путь, полученный из проверенного Skill/experience.
Reflex может быть:
- deterministic Go/Python logic;
- rule;
- workflow;
- SQL/query template;
- small local model + bounded tool chain;
- compiled adapter operation.
Reflex имеет:
- source Skill refs;
- applicability;
- exact implementation version;
- dependencies;
- validation evidence;
- shadow/revalidation policy;
- decline/escalate semantics;
- stale/suspend/retire lifecycle.
`FastPathDecision` становится runtime decision around Skill/Reflex, а не самим Reflex.
### Intelligence Strategy
Capability выбирает минимально достаточную implementation strategy в пределах требований Work:
```text
Rule
-> Reflex
-> Skill
-> small local model
-> strong local model
-> external model
-> research capability
-> specialist/delegation path
```
Capability не создаёт WorkGraph самостоятельно: если требуется decomposition/team, управление возвращается Work.
---
## 5.10 Configuration — NEW bounded context
Gen2 отказывается от ENV как основной модели конфигурации.
### Configuration владеет
- `SettingDefinition`;
- `SettingAssignment`;
- schema/version/lifecycle setting definitions;
- typed validation rules;
- scope applicability;
- effective resolution semantics;
- provenance of human/system changes.
### SettingDefinition
Минимально:
- stable key;
- owner namespace;
- value type;
- default;
- validation;
- allowed scope dimensions;
- sensitivity class;
- lifecycle/version;
- human description.
### Scoped values
Assignment может относиться к:
```text
GLOBAL
PRINCIPAL
WORLD_OBJECT
ORGANIZATION/ENVIRONMENT through World ref
ACTIVITY/PROJECT
SKILL
TASK
SESSION
TEMPORARY_OVERRIDE
```
Effective Configuration — derived result, а не отдельная canonical истина.
Приоритет задаётся явной политикой, а не порядком случайных `if` в коде.
### Skill-defined settings
Новый Skill/Capability может предложить новые SettingDefinitions через Configuration API.
Он не добавляет column в глобальную таблицу и не пишет arbitrary key/value напрямую.
### Secrets
Secret value никогда не находится в SettingAssignment.
Configuration хранит только:
```text
CredentialRef / SecretRef
```
Сам секрет разрешается через Secrets boundary только в authorized adapter/runtime.
---
## 5.11 SELF — NEW bounded context, не God orchestrator
SELF — формальная модель Домового о собственных возможностях и эволюции.
SELF не выполняет пользовательскую работу и не находится обязательным посредником между всеми модулями.
### SELF владеет
- `CompetenceAssessment`;
- `WeaknessPattern`;
- `DependencyAssessment`/self dependency view;
- `LearningLedgerEntry`;
- `ImprovementNeed`;
- aggregate self-version view;
- self-evaluation interpretation.
### SELF не владеет
- Capability definitions/health — Capability;
- raw evidence — Epistemics;
- tasks/development execution — Work;
- authority — Authority;
- code/release switching — Supervisor/runtime.
SELF assessments всегда evidence-backed.
Нельзя:
```text
skill sets competence=1.0
candidate sets trusted=true
new model declares itself better
```
### Learning Ledger
Запись существенного улучшения:
- observed problem;
- evidence refs;
- diagnosis/hypothesis;
- proposed change ref;
- expected improvement;
- evaluation refs;
- actual result;
- promoted/rejected/rolled-back;
- regression/side effects;
- version lineage.
---
## 5.12 Commit — KEEP, no semantic dilution
Commit сохраняет:
- immutable ActionProposal evidence;
- AuthorizedAction;
- authorization revision;
- ActionAttempt;
- idempotency/reconciliation identity;
- execution state including `UNKNOWN_OUTCOME`.
Gen2 Risk/Consequence не заменяет Commit.
Reflex не получает обход Commit.
Self-modification не получает обход Commit/DevelopmentGate там, где есть external/system mutation.
---
## 5.13 Artifact — KEEP + EXPAND for large raw memory
Artifact владеет durable content/resource identity и lineage.
Именно Artifact является базой для будущих больших raw inputs:
- audio;
- video;
- image;
- documents;
- call recordings;
- sensor captures;
- generated code/artifacts.
Большие payload могут храниться на NAS/object/file storage, а не в PostgreSQL.
Raw artifact не обязателен в prompt и не является автоматически Knowledge.
Derivations:
```text
Artifact -> Observation -> Episode/Claim/Belief
```
должны сохранять provenance для future reprocessing более сильной моделью.
---
## 5.14 Cognitive Gateway / Context Compiler — NO canonical owner
Cognitive workers остаются replaceable.
Они не владеют каноническим state.
### Context Compiler V2
Context Compiler — детерминированный/контролируемый слой сборки ModelContext.
Получает:
- current FocusFrame;
- ContextScope;
- Task/Goal/Perspective;
- model context budget;
- output budget;
- freshness requirement;
- cost-of-error/risk hints;
- DataPolicy;
- candidate memories/evidence/skills/settings.
Должен собирать минимум достаточного контекста.
Не пытается заполнить всё окно модели «раз уж место есть».
### ModelContext != Memory
В ModelContext входят только выбранные excerpts/structured summaries.
Secret values запрещены.
### Iterative retrieval
Модель/strategy может через typed query запросить дополнительную память:
```text
memory.search(...)
experience.successes(...)
experience.failures(...)
knowledge.contradictions(...)
world.related(...)
artifact.fetch_excerpt(...)
```
Запрос проходит через trusted runtime и DataPolicy; модель не получает прямого DB access.
---
## 5.15 Supervisor/Lifeboat — NEW runtime layer, not semantic owner
Supervisor — минимальный независимый control plane, который должен переживать поломку основного Домового.
Он не использует LLM для критических recovery decisions.
### Responsibilities
- start candidate version;
- health/watchdog;
- last-known-good release;
- traffic/process switch;
- rollback;
- minimal recovery command interface;
- bootstrap validation;
- release manifest verification.
Он не занимается обычным чатом, памятью, Skills или reasoning.
Чем проще Supervisor, тем лучше.
---
# 6. Memory/Knowledge architecture Gen2
## 6.1 Memory — не новый monolithic owner
Логически память Домового состоит из нескольких источников:
```text
Interaction what human said
Artifact raw durable material
Epistemics observations/claims/beliefs/experience
Work goals/tasks/decisions/jobs
Continuity commitments/future relevance
Capability skills/reflexes/known failures
World referents/schema vocabulary
Configuration effective relevant settings
SELF competence/weakness/learning history
```
`Memory Retrieval` является read-side composition.
Он не получает права писать canonical state владельцев.
---
## 6.2 Canonical vs projections
Обязательное разделение:
```text
Canonical evidence/state
↓
Derived semantic records
↓
Search projections
├─ vector
├─ lexical
├─ graph
├─ temporal
└─ hot cache
↓
Retrieval candidates
↓
Context Compiler
↓
ModelContext
```
Любой vector/graph/search index должен быть rebuildable.
Замена retrieval technology не требует миграции canonical памяти.
---
## 6.3 Freshness и скорость устаревания
Знание не имеет одного простого TTL.
Нужны понятия:
- observed time;
- last verified time;
- validity interval;
- volatility/decay profile;
- environment/subject version binding;
- current freshness state;
- freshness requirement of task.
Примеры:
```text
π volatility ~ zero
старый разговор исторически стабилен, интерпретация может улучшаться
структура UNF version-sensitive
current server status very fast
exchange rate near-real-time
personal preference slow/uncertain change
```
Старое знание не удаляется автоматически.
Оно теряет право считаться текущим фактом и может использоваться как:
- historical evidence;
- analogy;
- starting hypothesis.
---
## 6.4 Freshness requirement of task
Work/Planning классифицирует задачу по требуемой актуальности.
```text
LOW
historical/general knowledge acceptable
MEDIUM
memory acceptable, live validation preferred
HIGH
live/current source should be attempted before factual decision
CRITICAL
stale evidence cannot authorize high-impact factual conclusion without explicit degraded handling
```
Если live source недоступен, Домовой может продолжить по памяти, но epistemic status понижается и пользователь получает честное предупреждение, когда это существенно для решения.
---
## 6.5 Scope before similarity
Retrieval сначала применяет hard/context filters, затем semantic similarity.
Приоритет:
```text
identity/access
-> principal/person
-> WorldObject/context scope
-> organization/environment
-> system/database/repository/version
-> active activity/goal/task
-> temporal applicability
-> semantic similarity
```
Knowledge из другой компании/версии может быть найден на broadened pass только как analogy unless independently validated.
---
## 6.6 Positive and Negative Experience
Success и failure не хранятся как две изолированные truth базы.
Они являются разными retrieval views над ExperienceRecord.
Для сложной задачи retrieval обязан по возможности искать одновременно:
```text
what worked
what failed
why failed
under which conditions
what later superseded it
```
Negative knowledge всегда содержит conditions. `FAILED_ONCE` не равно `FOREVER_WRONG`.
---
## 6.7 Memory consolidation
Gen2 должен позволять постепенно преобразовывать:
```text
raw observations
-> episodes
-> stable beliefs/knowledge
-> patterns
-> skills
-> reflexes
```
Консолидация не обязана удалять raw evidence.
Storage/retention policy может переводить raw payload в cold/archive tier, сохраняя metadata/provenance.
---
## 6.8 Contradiction pass
После первичного retrieval для consequential reasoning выполняется отдельный поиск:
> есть ли evidence/experience, который опровергает или существенно ограничивает выбранную память?
Это защищает от confirmation bias retrieval.
---
# 7. Focus, ContextScope и переключение деятельности
## 7.1 Не всё является Project
Gen2 не использует Project как универсальный контейнер.
В Focus могут одновременно присутствовать:
```text
work domain
organization
system
specific database
repository/branch
activity
problem
goal/task
person
location/environment
active objects
```
Project остаётся допустимой гранью, но не обязательным центром.
---
## 7.2 Explicit Focus command
Пользователь может сказать:
> «Теперь работаем над проектом A»
или:
> «Открываю новую работу по себестоимости»
Это создаёт/активирует FocusFrame с сильным human provenance.
---
## 7.3 Inferred Focus
В будущем Focus может выводиться из:
- открытого repo/file;
- active device/app;
- location;
- previous task;
- referenced WorldObjects;
- conversation context.
Inferred Focus никогда не притворяется explicit fact и имеет confidence/provenance.
---
# 8. Configuration as evolvable state
## 8.1 ENV только bootstrap
Target state:
ENV не является основной конфигурационной системой.
Минимальный bootstrap должен позволить только:
- определить node/runtime identity;
- найти control state/config store;
- найти root Secrets resolver;
- выполнить initial health/recovery.
Сам bootstrap может быть Docker Secret, mounted sealed file, OS credential store или иной минимальный mechanism; использование ENV не требуется как обязательное решение.
---
## 8.2 Database credential
Адрес/credential рабочих БД, моделей, Skill endpoints и integrations после bootstrap живут в Configuration + Secrets references.
Например:
```text
SettingAssignment:
company-a.unf.endpoint = https://...
company-a.unf.credential = secret://...
```
Secret никогда не индексируется и не передаётся модели.
---
## 8.3 Conversational control is primary
Обычный пользователь не обязан открывать admin UI.
Команда:
> «Для фирмы B в этом навыке используй тестовую базу»
должна быть интерпретирована как изменение соответствующего scoped SettingAssignment через нормальный semantic/authority path.
Админские/диагностические экраны допустимы как:
- inspection;
- debugging;
- emergency recovery;
- audit.
Они не являются главным UX управления Домовым.
---
# 9. Intelligence, Skill, Reflex and learning loop
## 9.1 Runtime path
```text
Task
↓
known Reflex?
↓ no / declined
known Skill?
↓ no / insufficient
cheap local reasoning?
↓ insufficient
strong reasoning?
↓ insufficient
research/decomposition?
↓
solution
↓
Outcome
↓
Experience
↓
Reflection
↓
Skill candidate / improvement need
```
---
## 9.2 Skill promotion
Один удачный ответ не создаёт trusted Skill.
Минимальный lifecycle:
```text
CANDIDATE
-> VALIDATING
-> ACTIVE
-> DEGRADED
-> SUSPENDED
-> RETIRED
```
Promotion требует evidence на нескольких сценариях либо эквивалентного сильного доказательства.
---
## 9.3 Reflex promotion
```text
validated Skill
-> ReflexCandidate
-> sandbox/historical replay
-> shadow
-> limited activation/canary where applicable
-> ACTIVE Reflex
```
Reflex обязан уметь `DECLINE/ESCALATE_TO_THINK`.
Сомнение не считается провалом Reflex.
---
## 9.4 Revalidation / Shadow Reasoning
Для selected stable Reflexes система может периодически или по signal выполнять shadow comparison более сильным способом.
Triggers:
- environment/version changed;
- repeated corrections;
- outcome degradation;
- stronger model qualification;
- sampled audit;
- source contract changed.
Shadow path не создаёт external mutation второй раз.
---
# 10. SELF and self-evolution
## 10.1 SELF is evidence-backed
SELF отвечает на вопросы:
- что я умею;
- насколько хорошо;
- при каких условиях;
- от чего способность зависит;
- где я часто ошибаюсь;
- что изменилось во мне;
- стало ли лучше.
Но SELF не назначает себе качество произвольно.
---
## 10.2 Self-improvement levels
```text
Level 1: Knowledge update
Level 2: Behavioral/config adaptation
Level 3: Skill/Reflex capability evolution
Level 4: Core/runtime architecture evolution
```
Чем выше уровень, тем сильнее evidence/evaluation/rollback requirements.
---
## 10.3 Governed evolution loop
Существующий Work DevelopmentGate расширяется, а не заменяется.
```text
observed weakness
-> evidence
-> diagnosis hypothesis
-> improvement proposal
-> expected metrics / must-not-worsen constraints
-> isolated implementation
-> FAST verification
-> milestone evaluation
-> historical replay
-> shadow/canary where needed
-> promotion
-> observation
-> Learning Ledger
-> rollback if degraded
```
`Creator != Judge` сохраняется.
---
## 10.4 New smarter model
Новая модель не получает право переписать Skills только потому, что она новая.
Она может:
- пройти qualification;
- анализировать Skill/Reflex archive;
- предложить improvements;
- быть independent evaluator;
- работать в shadow.
Promotion проходит обычный governed path.
---
# 11. Long-running background work
Пользователь может сказать:
> «Разбирайся сколько потребуется»
Это создаёт durable Work, а не удерживает один HTTP connection/model request.
### Required semantics
- checkpoint after meaningful steps;
- explicit hypothesis/attempt/finding records;
- pause/resume;
- deadline/budget;
- model/provider replaceability;
- network/provider outage recovery;
- restart recovery;
- human Attention only when useful;
- ability to continue silently until result/blocker/decision point.
Continuity отвечает за wake/relevance, Work — за process state.
---
# 12. Roles, perspectives and agent teams
## 12.1 Perspective, not persona
Perspective определяет способ анализа, а не художественный персонаж.
```text
Architect:
dependencies, invariants, future change, failure modes
Programmer:
implementation, debug, tests, performance
Director:
value, priority, cost, people, risk
Designer:
usability, interaction, clarity
```
---
## 12.2 Dynamic specialist
Домовой может собрать временного специалиста из:
```text
Perspective
+ Focus
+ relevant Knowledge
+ Skills
+ tools
+ evaluation criteria
```
Он не обязан существовать заранее как отдельный permanent agent.
---
## 12.3 Team only when justified
Multi-agent strategy выбирается только если decomposition/independence даёт ожидаемый прирост качества.
Agent count не является quality metric.
WorkGraph хранит независимые Findings/Evidence/Artifacts, а не только текстовые пересказы агентов друг другу.
---
# 13. Risk, user control and consequences
## 13.1 No artificial capability blacklist as design principle
Основная модель:
```text
Identity
-> Intent authenticity
-> Authority
-> Consequence/Risk
-> Mitigation
-> Confirmation when needed
-> Commit
```
Высокий риск означает больше evidence, предупреждение, simulation/backup/rollback и более сильное подтверждение, а не автоматическое «вам нельзя».
---
## 13.2 Owner may choose risky action
Если authenticated owner после ясного описания последствий подтверждает рискованную операцию, система может её выполнить в рамках explicit authority.
При этом архитектурные integrity truths нельзя подменять:
- нельзя сказать `SUCCEEDED`, если Outcome неизвестен;
- нельзя незаметно изменить подтверждённый subject;
- нельзя считать отсутствие evidence доказательством;
- нельзя скрыть известный существенный риск.
---
## 13.3 Self-change transaction
Для core/system change preferred path:
```text
snapshot
-> candidate
-> build
-> tests
-> start isolated
-> health
-> switch/canary
-> observe
-> commit version
```
Failure -> Supervisor rollback.
---
# 14. Truth versus exploration
Внутренний поиск решения допускает широкий набор гипотез.
```text
Hypothesis != Claim accepted as true
```
Домовой может исследовать маловероятные варианты, но human-facing answer обязан отражать epistemic state.
Примеры:
```text
SUPPORTED
STALE
CONFLICTED
PARTIAL
UNKNOWN
UNAVAILABLE
```
Если свежий источник недоступен, старое знание может быть использовано как hypothesis/analogy с соответствующим disclosure.
---
# 15. World/environment future compatibility
Gen2 не реализует сейчас всю ambient среду, но не закрывает путь к ней.
Будущие WorldObjects могут быть:
- person;
- organization;
- room;
- computer;
- phone;
- TV;
- microphone;
- camera;
- vehicle;
- robot;
- database;
- repository;
- service;
- document collection;
- unknown future device/object kind.
Future flow:
```text
voice observation
-> source identity evidence
-> Situation detects user/environment
-> Capability resolves street camera
-> Situation/World identifies nearby suitable display
-> Authority/Policy/Consequence
-> TV presentation capability
```
Это future capability, не Gen2 foundation implementation requirement.
---
# 16. Source trust and entity resolution
## 16.1 Source trust is contextual
Нельзя использовать глобальное `trust=0.9`.
Reliability assessment зависит от:
```text
Source
× Domain
× Freshness
× History
× Identity confidence
× Provenance quality
```
Epistemics владеет evidence/assessment, а не provider adapter.
---
## 16.2 Entity resolution
`Иван`, Telegram contact, CRM person и voice speaker могут быть одним человеком или разными.
World identity resolution поддерживает:
- candidate same-as;
- evidence refs;
- confidence;
- confirmed merge;
- reversible split/correction;
- identifier history.
Никакое semantic similarity alone не выполняет irreversible merge.
---
# 17. Resource and cost model
Work задаёт требования задачи:
- required quality;
- allowed latency;
- cost budget;
- freshness;
- cost of error;
- reversibility;
- background allowed;
- deadline.
Capability/Strategy выбирает исполнение.
Пример:
```text
movie recommendation
cheap path acceptable
production financial discrepancy
correctness/freshness >> latency
```
Домовой со временем обучается пользовательским предпочтениям по этим trade-offs, но выводимые preferences имеют provenance/scope и не превращаются в вечный global constant без evidence.
---
# 18. Evaluation and Personal Benchmark
Gen2 не имеет одной метрики `better`.
Оцениваются минимум:
- goal achievement;
- correctness;
- evidence quality;
- repeated mistakes;
- user corrections;
- unnecessary clarifications;
- missed necessary clarification;
- latency;
- resource/API cost;
- risk incidents;
- recovery success;
- context relevance;
- regression count;
- complexity/maintenance cost.
Capability продолжает владеть component/task evaluations.
SELF строит evidence-backed interpretation этих результатов и Learning Ledger.
Реальные классы задач владельца формируют Personal Benchmark Suite.
---
# 19. Primary UX and emergency control plane
## 19.1 Primary interface
Главный UX:
> сказать Домовому, чего хочешь.
Это относится и к runtime configuration, и к Skill use, и к tasks, и к будущим devices.
---
## 19.2 Technical UI is secondary
Creator Web diagnostic/admin screens разрешены для:
- наблюдения;
- audit;
- diagnostics;
- development;
- recovery.
Но обычная operation не должна требовать ручного похода по admin settings.
---
## 19.3 Emergency path
Если основной Interaction/LLM/Core сломан, нужен независимый минимальный recovery интерфейс Supervisor/devctl.
Разговор с Домовым не может быть единственным способом починить Домового, который не запускается.
---
# 20. Dependency rules Gen2
## 20.1 No God context
Не создаётся `DomovoyContext` с доступом ко всем stores/services.
Runtime orchestration собирает explicit contracts.
---
## 20.2 SELF is not central dependency
Обычный request path не обязан проходить через SELF.
SELF наблюдает и оценивает систему асинхронно/по explicit query.
Это защищает от превращения self-improvement в центральный монолит.
---
## 20.3 World does not become truth owner
World schemas/referents используются Epistemics, но WorldObject не заменяет domain object и не объявляет произвольный payload текущей истиной.
---
## 20.4 Configuration is explicit
Domain module не вызывает global `GetSetting("x")` service locator.
Runtime/adapters получают resolved typed configuration явно или через bounded query contract.
---
## 20.5 Event usage
Не вводится generic Event Bus ради моды.
Domain Event создаётся только когда нужен:
- durable history;
- temporal decoupling;
- asynchronous projection;
- explicit cross-owner notification.
Outbox/inbox остаются technical mechanism.
---
# 21. Suggested Gen2 owner registry target
| Owner | Gen2 role | Change |
|---|---|---|
| Identity | actor/principal identity | KEEP |
| Authority | grants + AuthorityScope | KEEP/CLARIFY |
| Interaction | human input/intents/corrections | KEEP/EXPAND |
| Situation | FocusFrame/FocusStack/ContextScope | REWORK |
| World | referents + schema vocabulary + identity resolution | NEW |
| Epistemics | evidence/knowledge/freshness/experience/outcome assessment | EXPAND |
| Work | goals/tasks/jobs/plans/perspectives/consequence/development | EXPAND |
| Continuity | commitments/prospective/attention/human response | KEEP |
| Capability | abilities/implementations/skill/reflex/selection/evaluation | EXPAND |
| Configuration | typed/scoped settings and resolution | NEW |
| SELF | competence/weakness/learning ledger/self assessment | NEW |
| Commit | authorized mutation/attempt/idempotency | KEEP |
| Artifact | durable raw content/lineage | KEEP/EXPAND |
| Cognitive workers | replaceable reasoning/context workers | NO OWNER |
| Supervisor/Lifeboat | release health/switch/rollback/recovery | RUNTIME ONLY |
Добавление каждого нового canonical owner требует отдельного ADR до таблиц и implementation.
---
# 22. Migration architecture
## 22.1 No big bang
Не мигрировать все bounded contexts одним гигантским commit.
Миграция идёт по органам.
---
## 22.2 V1 remains rollback/reference
До promotion соответствующего Gen2 subsystem V1 остаётся доступен как reference/fallback where feasible.
---
## 22.3 Memory migration
V1 HumanUtterance и существующие evidence не переписываются.
Новые retrieval projections строятся из существующей canonical history.
`PersonalMemory ContextText` становится compatibility projection и затем retire.
---
## 22.4 Focus migration
Focus V2 создаётся Situation owner.
На переходе старый `ActiveProjectFocus` может быть compatibility projection из FocusFrame, а не отдельный source of truth.
---
## 22.5 Configuration migration
Порядок:
```text
inventory ENV/config consumers
-> define SettingDefinitions
-> import non-secret values
-> replace secrets with SecretRefs
-> run shadow/equivalence
-> make Configuration canonical
-> ENV fallback read-only compatibility
-> remove non-bootstrap ENV
```
---
## 22.6 World/SELF start low-risk
World и SELF сначала могут работать с projection/evidence-only semantics и не находиться в critical mutation path.
Canonical responsibilities расширяются только после доказанной необходимости.
---
# 23. PRE-GEN2 mandatory baseline
До первого Gen2 code change:
1. `git status` и inventory всех открытых изменений.
2. Не делать `reset`, discard или overwrite неизвестной работы.
3. Отделить secrets/build garbage от реального исходного кода.
4. Выполнить FAST baseline gate.
5. Закоммитить все актуальные открытые изменения в их рабочей ветке/ветках.
6. Свести текущую работу в основной поток `main` управляемым merge.
7. Разрешить конфликты без потери изменений.
8. Push `main` в canonical remote.
9. Зафиксировать `GEN2_BASE_COMMIT`.
10. Создать immutable baseline tag, например `domovoy-pre-gen2-2026-08-28` либо согласованное имя.
11. Сохранить baseline verification evidence.
12. Только после этого создавать Gen2 architecture branch/worktree.
Полный тяжёлый test suite перед baseline merge не запускается автоматически, если FAST/MILESTONE evidence достаточно для сохранения текущего состояния. Существующий подтверждённый CI evidence учитывается.
---
# 24. Gen2 testing strategy
Тесты являются страховкой архитектурной цели, а не самой целью разработки.
## 24.1 FAST gate — основной цикл
Запускается после локальных meaningful changes.
Содержит только:
- compile/build affected packages;
- targeted changed-owner tests;
- один/несколько regression tests именно изменённой семантики;
- fast architecture/diff guard;
- static check затронутой области where cheap.
FAST должен быть коротким и не запускать весь repository suite.
---
## 24.2 MILESTONE gate — после реперной архитектурной точки
Запускается после законченного блока, например:
- Semantic Model/ownership;
- Focus/Scope;
- Memory/Freshness/Context;
- Skill/Reflex/SELF;
- Configuration;
- Long-running Work/Evolution.
Проверяет:
- subsystem tests;
- соседние contracts;
- ключевые V1 regressions;
- migration compatibility;
- architecture invariants;
- recovery relevant to that milestone.
---
## 24.3 FULL gate — редко
Запускается:
- перед merge крупной architecture phase;
- после критической data migration;
- перед Gen2 production canary;
- перед окончательным retirement V1 path.
FULL может включать:
- `go test ./...`;
- `go vet ./...`;
- full architecture suite;
- recovery/restart;
- household scenarios;
- migration tests;
- selected multimodal suite;
- benchmark/regression evidence;
- production smoke when applicable.
---
## 24.4 Test growth rule
Новый тест должен защищать конкретный риск:
- observed bug;
- semantic invariant;
- migration;
- recovery;
- critical consequence;
- complex algorithm.
Не дублировать глобальные architecture invariants десятками feature tests.
Если тестовая работа начинает существенно превосходить implementation при отсутствии новых рисков, Codex обязан остановить test expansion и переоценить достаточность evidence.
---
# 25. Architecture change process for Codex
Gen2 architecture work требует отдельного authority class/task packet, который явно разрешает изменение protected architecture artifacts.
Ordinary feature task по-прежнему не имеет такого права.
Перед кодом каждого Gen2 subsystem:
```text
Constitution
-> Target Architecture
-> relevant ADR/owner decision
-> contract
-> migration path
-> implementation
```
Если ownership/semantic conflict не решён, Codex возвращает typed architecture gap, а не создаёт второй owner.
---
# 26. New ADRs required before implementation
Минимально нужны отдельные решения:
1. **ADR-G2-001 — Scope split:** AuthorityScope vs ContextScope.
2. **ADR-G2-002 — World bounded context:** referents/schema vocabulary, no truth ownership.
3. **ADR-G2-003 — Epistemics Gen2:** knowledge/freshness/outcome assessment/episodes.
4. **ADR-G2-004 — Memory retrieval architecture:** no monolithic memory owner; projections/context compiler.
5. **ADR-G2-005 — Dynamic Configuration owner + bootstrap/secrets.**
6. **ADR-G2-006 — Skill V2 + Reflex lifecycle.**
7. **ADR-G2-007 — SELF bounded context and evidence boundaries.**
8. **ADR-G2-008 — Long-running Work/Research ownership with Continuity wake integration.**
9. **ADR-G2-009 — Consequence/Risk semantics without Authority duplication.**
10. **ADR-G2-010 — Independent Supervisor/Lifeboat.**
11. **ADR-G2-011 — Outcome ownership clarification: execution receipt vs world verification.**
12. **ADR-G2-012 — Gen2 migration/compatibility/retirement policy.**
---
# 27. What Gen2 foundation explicitly does NOT need to implement yet
Следующие направления входят в compatibility requirements, но не обязаны быть полностью реализованы в foundation milestone:
- continuous home microphone capture;
- speaker recognition;
- continuous video understanding;
- automatic TV/speaker output selection;
- home automation;
- vehicle/robot control;
- full Digital Twin;
- mandatory graph database;
- automatic code compilation for every Reflex;
- automatic rewrite of all Skills by a new model;
- fixed team of many agents.
При review каждого foundation decision задаётся вопрос:
> закрывает ли это решение возможность добавить перечисленное позже без смены фундаментальной семантики?
---
# 28. Acceptance criteria of Target Architecture
Gen2 architecture считается достаточно определённой для Canonical Data Model только если:
1. каждый canonical mutable concept имеет ровно одного proposed owner;
2. AuthorityScope и ContextScope не смешаны;
3. Memory не становится монолитным owner;
4. World не превращается в generic `Entity(any)`;
5. Epistemics остаётся truth/evidence boundary;
6. Dynamic Configuration не является arbitrary key/value store;
7. secrets исключены из memory/context/config values;
8. Skill и Reflex различены;
9. SELF не является God orchestrator;
10. Work и Continuity не дублируют durable scheduling responsibility;
11. Commit сохраняет idempotency/unknown-outcome semantics;
12. verified world Outcome отделён от executor receipt;
13. Context Compiler поддерживает маленькие локальные модели и iterative retrieval;
14. knowledge freshness учитывает volatility и task requirement;
15. cross-company/version isolation обеспечивается до similarity ranking;
16. positive и negative experience доступны retrieval;
17. long-running work не зависит от одного process/model request;
18. architecture имеет path для self-evolution и independent rollback;
19. normal user configuration возможно через conversation;
20. migration from V1 может выполняться поэтапно с rollback;
21. testing strategy разделена на FAST/MILESTONE/FULL и не блокирует разработку постоянным full-suite прогоном.
---
# 29. Следующий документ
После принятия этой Target Architecture следующий обязательный шаг:
**`GEN2_CANONICAL_DATA_MODEL.md`**
Он должен определить точные типы, identifiers, lifecycle, validity/freshness fields, schema/value representation, owner tables/streams, projections и migration mapping для:
- FocusFrame/ContextScope;
- WorldObject/schema definitions;
- Observation/Claim/Belief/Episode/Experience;
- Knowledge freshness;
- Skill/Reflex;
- Configuration;
- SELF;
- LongRunningWork;
- ConsequenceAssessment;
- Outcome verification.
Только после Canonical Data Model следует писать Master Plan и task packets implementation.
---
# 30. Итог
Gen2 не пытается заранее знать все будущие свойства мира.
Он должен заранее знать **как безопасно принять новое свойство, новое знание, новый Skill, новый Reflex, новую модель, новый тип устройства и даже новое поколение собственного кода**.
Ключевая архитектурная формула:
```text
Stable invariants
+ evolvable semantics
+ explicit provenance
+ scoped/fresh memory
+ minimal context
+ evidence-driven learning
+ cheap-to-expensive intelligence
+ governed consequences
+ reversible self-evolution
```
Это и является костяком будущего Домового.