94 KiB
Домовой — Canonical Data Model Gen2
Статус: proposed canonical semantic/data model for Architecture Generation 2
Дата: 2026-08-29
Основание: GEN2_TARGET_ARCHITECTURE.md, DOMOVOY_GEN2_GAP_MAP.md, Architecture Generation 1 contracts/migrations и принятая Конституция Домового.
Назначение: определить, какие данные Gen2 считаются каноническими, кто ими владеет, как они версионируются, стареют, связываются, извлекаются в память и мигрируют из V1.
0. Решение уровня модели данных
Gen2 не создаёт одну универсальную таблицу памяти и не переносит все сущности в generic Entity + JSON.
Модель строится из двух уровней:
STRICT OPERATIONAL CORE EVOLVING SEMANTIC WORLD
─────────────────────── ────────────────────────
Identity Interaction evidence
Authority Situation / Focus
Commit World referents/vocabulary
Continuity state Epistemic knowledge
Recovery Experience
Audit Skills / Reflexes
Configuration
SELF
Search projections
Ключевое правило:
Расширяемость достигается не отсутствием схемы, а возможностью добавлять новые типизированные и версионируемые определения поверх маленького стабильного meta-kernel.
При этом:
- факты выполнения внешнего действия остаются строго типизированными;
- raw evidence не переписывается при появлении лучшей модели;
- derived knowledge может быть переоценено и superseded;
- embeddings, search index и собранный model context никогда не являются source of truth;
- у mutable canonical concept ровно один semantic owner;
- cross-owner ссылки не создают cross-owner ownership.
1. Законы Gen2 Data Model
1.1 Canonical owner один
Для каждого mutable semantic concept существует один owner.
Примеры:
HumanUtterance -> Interaction
FocusFrame -> Situation
WorldObject -> World
Observation/Claim -> Epistemics
Goal/Task -> Work
ProspectiveItem -> Continuity
Skill/Reflex -> Capability
SettingAssignment -> Configuration
CompetenceAssessment -> SELF
ActionAttempt -> Commit
Artifact -> Artifact
Другой owner хранит только typed reference и собственный смысл вокруг него.
1.2 История не переписывается молча
Gen2 различает четыре класса данных.
A. Immutable evidence
После записи содержание не изменяется:
- HumanUtterance content;
- SourceSnapshot;
- SourceExcerpt;
- raw Observation;
- immutable Artifact version;
- ActionProposal;
- ExecutionReceipt;
- ExperienceRecord;
- evidence attachment.
Исправление создаёт новую запись и relation/supersession, а не меняет прошлое.
B. Versioned semantic records
Определение или оценка получает новую revision:
- FocusFrame;
- FacetDefinition;
- RelationDefinition;
- BeliefAssessment;
- Episode;
- Skill;
- Reflex;
- SettingDefinition;
- SettingAssignment;
- WeaknessPattern;
- CompetenceAssessment family;
- ConsequenceAssessment.
Старые revisions остаются читаемыми.
C. Mutable operational heads + append-only transition ledger
Для state machines нужен быстрый current head, но переходы сохраняются:
- Goal/Task;
- LongRunningWork;
- ProspectiveItem;
- AttentionItem;
- ActionAttempt;
- DevelopmentGate;
- Focus activation state.
Текущая строка/head может обновляться optimistic revision, но каждый существенный переход должен иметь audit/transition record.
D. Rebuildable projections
Можно удалить и построить заново:
- PersonalMemory compatibility view;
- vector embeddings;
- FTS/search index;
- entity adjacency index;
- temporal index;
- positive/negative experience index;
- current knowledge view;
- current FocusStack view;
- EffectiveConfiguration;
- SELF aggregate dashboard;
- ModelContext;
- hot/warm/cold memory tiers as indexes.
Проекция никогда не становится единственным местом, где существует смысл.
1.3 Memory != storage table
Термин Memory в Gen2 обозначает способность восстановить нужную часть прошлого и текущего состояния.
Он не обозначает отдельный bounded context и не означает таблицу memory_items.
Memory Retrieval читает через owner contracts:
Interaction
Situation
World
Epistemics
Work
Continuity
Capability
Configuration
SELF
Artifact
и строит task-specific context.
1.4 Truth != latest value
Новое значение не обязано автоматически уничтожать старое.
Пример:
2026: Company A / UNF structure = V1
2027: Company A / UNF structure = V2
Обе записи могут быть верны в своём valid-time/version scope.
Gen2 хранит:
- когда это наблюдали;
- к какой версии/окружению относится;
- когда это считалось действующим;
- чем подтверждено;
- что supersede/contradict эту запись.
1.5 Freshness != deletion
Старение знания влияет прежде всего на право использовать его как текущую истину, а не на физическое существование записи.
Старое знание может быть:
- текущим;
- допустимым с предупреждением;
- историческим;
- аналогией;
- стартовой гипотезой;
- слишком старым для конкретной задачи.
1.6 Scope before similarity
До semantic/vector ranking применяются hard filters:
- Principal/data access;
- required ContextScope bindings;
- explicit organization/environment/system/database/repository constraints;
- known version constraints;
- sensitivity/data-policy restrictions.
Только после этого применяются semantic similarity, recency и другие ranking signals.
1.7 Creator != Evaluator
Ни Skill, ни Reflex, ни новая модель, ни self-written code не могут сами объявить себя validated/trusted/better без внешнего evidence.
2. Общие примитивы данных
Эти примитивы являются техническими value objects. Они не являются generic domain entities.
2.1 Stable ID
Сохраняется действующий принцип platform/ids:
128-bit cryptographically random opaque ID
Правила:
- ID не содержит domain meaning;
- каждый bounded context оборачивает его в strong semantic type;
- stable ID живёт через все revisions объекта;
- revision не кодируется внутри ID;
- historical refs не переписываются после merge/split;
- bare generic ID не передаётся через domain API.
Пример:
type FocusFrameID ids.ID
type WorldObjectID ids.ID
type SkillID ids.ID
2.2 Revision
Для versioned aggregate:
Revision uint64, starts at 1
Новая revision immutable.
Current head хранит только:
stable_id
current_revision
current_state where needed
updated_at
Запись новой revision требует expected-current-revision guard.
2.3 Time primitives
Семантически используется один UTC instant.
Instant = Unix milliseconds UTC
Если PostgreSQL хранит одновременно BIGINT и TIMESTAMPTZ, только одно значение является authoritative, второе должно быть generated/derived.
Различаются:
recorded_at— когда Домовой записал record;observed_at— когда произошло/наблюдалось событие;captured_at— когда зафиксирован raw source snapshot;valid_from/valid_until— когда утверждение относится к миру;verified_at— когда evidence было повторно проверено;effective_from/effective_until— когда настройка/версия действует.
Нельзя заменять эти понятия одним created_at.
2.4 Cross-owner SemanticRef
Физическое cross-owner хранилище не имеет FK/JOIN ownership.
Для transport/storage используется технический reference envelope:
SemanticRef
owner_namespace
semantic_kind
stable_id
revision? // optional exact evidence binding
В domain contracts он оборачивается в конкретный typed ref.
Нельзя создавать API:
SaveAny(ref SemanticRef, payload any)
SemanticRef разрешает ссылку, а не универсальный CRUD.
2.5 Principal data realm
Все user-specific canonical semantic records должны быть привязаны к PrincipalID, если они не являются глобальным schema definition.
Это позволяет позже выразить:
- личную память владельца;
- отдельного члена семьи;
- shared family principal;
- рабочий principal;
- публичное/system-defined vocabulary.
PrincipalID не заменяет AuthorityScope.
2.6 SensitivityClass
Минимальная классификация:
PUBLIC
PRIVATE
RESTRICTED
SECRET_REFERENCE
Secret value никогда не является обычным semantic payload.
SECRET_REFERENCE означает reference/locator в Secrets boundary, а не сам секрет.
Context projection вычисляет совместимость с выбранным DataPolicy до передачи модели.
3. ContextScope и Focus primitives
Gen2 окончательно разделяет:
AuthorityScope = что разрешено
ContextScope = о чём/где/с чем сейчас работаем
3.1 ContextScope
ContextScope — Situation-owned versioned value.
ContextScope
ID
PrincipalID
Revision
Bindings[]
RecordedAt
ContextBinding:
RoleKey
TargetRef
MatchPolicy
Provenance
ConfidenceMillis
SourceRef?
MatchPolicy
REQUIRED // candidate outside binding excluded before similarity
PREFERRED // strong positive ranking signal
RELATED // association, not hard filter
EXCLUDED // explicit negative scope
Core RoleKeys
Foundation defines only the most useful roles:
PERSON
ORGANIZATION
FAMILY
ENVIRONMENT
LOCATION
SYSTEM
DATABASE
REPOSITORY
BRANCH
VERSION
ACTIVITY
PROJECT
ACTIVE_ENTITY
Новые виды объектов не требуют новой колонки: TargetRef может ссылаться на новый WorldObject.
RoleKey registry остаётся Situation semantic vocabulary. Добавление новых core routing roles требует Situation contract revision; произвольный Skill не может тихо создать новый hard-filter role.
3.2 FocusFrame
FocusFrame
ID
PrincipalID
ActorID
Revision
AuthorityScopeRef
ContextScopeRef + exact revision
GoalRef?
TaskRef?
SourceUtteranceRef?
Provenance
ConfidenceMillis
State
ParentFrameRef?
ActivatedAt
SuspendedAt?
ExpiredAt?
RecordedAt
State:
CANDIDATE
ACTIVE
SUSPENDED
EXPIRED
SUPERSEDED
Provenance:
EXPLICIT_HUMAN
USER_CONFIRMED
INHERITED
ENTITY_REFERENCE
TASK_REFERENCE
REPOSITORY_REFERENCE
ENVIRONMENT_OBSERVATION
INFERRED
3.3 FocusTransition
Append-only:
FocusTransition
TransitionID
FrameID
FromRevision
ToRevision
Operation // ACTIVATE/SUSPEND/RESUME/SUPERSEDE/EXPIRE
CauseRef
RecordedAt
FocusStack является Situation-owned rebuildable projection из FocusFrame + transitions.
Короткое отвлечение создаёт child/temporary frame и suspend/resume, а не уничтожает рабочий контекст.
4. World Model canonical data
World — registry referents и extensible typed vocabulary. World не владеет фактическими значениями свойств мира.
4.1 WorldObject
WorldObject
ID
PrincipalID
KindDefinitionRef
KindRevision
LifecycleState
CreatedAt
Lifecycle:
ACTIVE
MERGED
SPLIT
RETIRED
UNKNOWN_IDENTITY
Примеры WorldObject:
- человек Иван;
- Company A;
- база Company A / UNF production;
- ATLAS repository;
- living-room TV;
- street camera;
- комната;
- автомобиль;
- физическое место.
WorldObject означает referent, а не «таблицу всех его истинных свойств».
4.2 WorldObjectKindDefinition
Versioned schema definition:
WorldObjectKindDefinition
KindKey
Revision
DisplayName
ParentKindRef?
Lifecycle
DefinitionDigest
RecordedAt
Примеры:
PERSON
ORGANIZATION
SOFTWARE_SYSTEM
DATABASE
REPOSITORY
DEVICE
ROOM
LOCATION
VEHICLE
Новая capability может предложить новый kind через governed schema registration; она не получает право произвольно менять существующие definitions.
4.3 WorldAlias
WorldAlias
ID
PrincipalID
WorldObjectID
Namespace
AliasValue
NormalizedValue
SourceRef
EvidenceRefs[]
State
RecordedAt
State:
CANDIDATE
CONFIRMED
REJECTED
RETIRED
Например:
"Иван"
"Ваня"
Telegram user id
phone contact id
CRM counterparty/contact id
Alias не объединяет объекты автоматически.
4.4 FacetDefinition
FacetDefinition описывает какое свойство возможно выразить, но не его текущее значение.
FacetDefinition
ID
Namespace
Key
Revision
ApplicableKindRefs[]
ValueTypeSpec
DefaultVolatilitySpec?
Description
Lifecycle
SupersedesRevision?
RecordedAt
Пример:
namespace = onec.configuration
key = configuration_version
value = STRING
или:
namespace = device.air_purifier
key = filter_resource_percent
value = DECIMAL
4.5 RelationDefinition
RelationDefinition
ID
Namespace
Key
Revision
SourceKindConstraints[]
TargetKindConstraints[]
Directionality
Cardinality
InverseRelationRef?
DefaultVolatilitySpec?
Lifecycle
RecordedAt
Примеры:
WORKS_WITH
BELONGS_TO
LOCATED_IN
CONNECTED_TO
DEPENDS_ON
USES_DATABASE
Факт A CONNECTED_TO B хранится не в World, а как epistemic proposition/evidence.
4.6 Typed Value Algebra
Для extensible semantic values используется ограниченный algebra:
STRING
INTEGER
DECIMAL
BOOLEAN
TIME
DURATION
ENUM
REFERENCE
BINARY_REF
LIST<T>
STRUCT<field definitions>
ValueTypeSpec является рекурсивным typed AST, а не arbitrary JSON schema.
Физически payload может сериализоваться JSONB, но только как encoding уже проверенного TypedValue.
Domain API не принимает map[string]any.
Каждый encoded value хранит:
schema_definition_id
schema_revision
value_type_fingerprint
payload
и должен повторно валидироваться при чтении/migration.
4.7 Identity Resolution
World владеет решением referent identity, но решение всегда evidence-backed.
IdentityResolutionDecision
ID
PrincipalID
CandidateObjectRefs[]
Decision // SAME / DISTINCT / MERGE / SPLIT / UNRESOLVED
EvidenceRefs[]
ConfidenceMillis
DecidedAt
Revision
Merge
Исторические refs не переписываются.
Создаётся lineage:
old A ----\
-> canonical C
old B ----/
Resolver может вернуть current canonical ref, но evidence продолжает указывать исходный ID.
Split
Ошибочное объединение обратимо через split lineage. Новые записи используют successor refs; старые записи не переписываются молча.
5. Epistemics Gen2 — evidence, propositions and knowledge
Gen2 не создаёт отдельный canonical KnowledgeItem.
То, что в разговоре называется «знанием», является результатом:
raw source
-> Observation
-> Claim/Proposition
-> BeliefAssessment
-> task-relative FreshnessAssessment
BeliefAssessment может считаться knowledge retrieval candidate, но raw evidence остаётся отдельно.
5.1 Source
Сохраняется существующий смысл Source/Snapshot/Excerpt и расширяется до любых ingress sources.
Source
ID
PrincipalID
SourceKind
LocatorRef
DisplayName
Publisher/Origin?
WorldObjectRef?
SensitivityClass
RecordedAt
SourceKind примеры:
AUTHENTICATED_HUMAN
WEB_RESOURCE
REPOSITORY
DATABASE
DEVICE_SENSOR
PHONE_CALL
EMAIL
CALENDAR
FILE
CAMERA
MICROPHONE
SYSTEM_RUNTIME
EXECUTOR
LocatorRef не обязан быть публичным URL. Secret-bearing locator хранит только safe reference.
5.2 SourceSnapshot
Immutable evidence boundary:
SourceSnapshot
ID
PrincipalID
SourceID
ArtifactRef?
ContentDigest
CapturedAt
SourceVersionRef?
AcquisitionMethod
SensitivityClass
Важно: Freshness=CURRENT/STALE не является постоянным каноническим свойством snapshot.
V1 поле Freshness на snapshot мигрирует как historical assessment/evidence, а Gen2 freshness вычисляется task-relative.
5.3 SourceExcerpt
SourceExcerpt
ID
SnapshotID
ArtifactRangeRef?
Text?
StartOffset?
EndOffset?
ContentDigest
Large binary/video/audio evidence не копируется в text tables. Excerpt может ссылаться на Artifact segment/time range.
5.4 Observation
Observation означает «что было непосредственно зафиксировано/извлечено из source».
Observation
ID
PrincipalID
SourceSnapshotRef
SourceExcerptRef?
ContextScopeRef?
ObservedAt
RecordedAt
ObservationKind
Payload
ExtractorRef?
ExtractionConfidenceMillis?
ObservationKind foundation:
TEXT
STRUCTURED_VALUE
RELATION_CANDIDATE
STATE_CHANGE
EVENT
EXECUTION_RECEIPT_OBSERVATION
ExtractionConfidence оценивает качество извлечения, а не истинность мира.
Пример:
Audio segment -> STT extracted "позвонить Ивану в пятницу"
Высокая STT confidence не означает автоматически, что это обязательство пользователя.
5.5 Proposition
Для машинно используемых знаний Gen2 вводит structured proposition.
Proposition
PropositionKind
SubjectRef
PredicateRef?
ObjectValue?
ObjectRef?
Qualifiers[]
TextFallback?
PropositionKind
WORLD_FACET
WORLD_RELATION
OWNER_DEFINED
TEXTUAL
Пример world facet:
SubjectRef = WorldObject CompanyA_UNF
PredicateRef = FacetDefinition onec.configuration/configuration_version@3
ObjectValue = "1.6.28"
Пример relation:
SubjectRef = Ivan
PredicateRef = RelationDefinition WORKS_WITH@2
ObjectRef = ProjectA
Structured proposition предпочтителен, если vocabulary известен.
Free text разрешён для неизвестных понятий, но не должен быть единственной машинной основой high-risk mutation.
5.6 Claim
Claim — утверждение, которое может быть истинным или ложным.
Claim
ID
PrincipalID
Proposition
StatementText
SourceKind
ObservationRefs[]
SourceUtteranceRefs[]
ContextScopeRef?
TemporalApplicability
SubjectVersionRefs[]
ClaimState
RecordedAt
ClaimState:
UNVERIFIED
SUPPORTED
REJECTED
CONFLICTED
UNKNOWN
SUPERSEDED
Claim может быть создан из:
- human assertion;
- trusted sensor observation;
- research extraction;
- inference/cognition;
- reprocessing old Artifact.
Но source chain всегда сохраняется.
5.7 BeliefAssessment
Belief Gen2 — не «вера модели», а evidence-backed current assessment конкретного Claim/Proposition.
BeliefAssessment
ID
PrincipalID
ClaimRef
Revision
State
ConfidenceMillis
SupportingEvidenceRefs[]
ContradictingEvidenceRefs[]
TemporalProfile
SourceReliabilityAssessmentRefs[]
AssessedAt
SupersedesAssessmentRef?
State:
PROVISIONAL
VERIFIED
CONFLICTED
REJECTED
UNKNOWN
HISTORICAL
Новая оценка создаёт новую revision/assessment; прошлое assessment не стирается.
5.8 Knowledge не является новой таблицей
Для retrieval понятие knowledge определяется как query:
BeliefAssessment
WHERE state in task-allowed states
AND ContextScope compatible
AND temporal/version applicability compatible
AND data access allowed
Поэтому не вводится knowledge_items с копиями Claim text.
Current knowledge view — projection.
6. Temporal applicability, freshness и скорость устаревания
Это один из фундаментальных элементов Gen2.
6.1 TemporalApplicability
TemporalApplicability
ObservedAt?
ValidFrom?
ValidUntil?
LastVerifiedAt?
VolatilitySpec
VersionBindings[]
ValidUntil отсутствует, если неизвестен, а не означает «вечный».
6.2 VolatilitySpec
Volatility описывает ожидаемую скорость изменения знания.
VolatilityMode
IMMUTABLE
VERSION_BOUND
VERY_SLOW
SLOW
MEDIUM
FAST
EPHEMERAL
CUSTOM
Дополнительные параметры:
ExpectedChangeIntervalMillis?
RevalidateAfterMillis?
HardStaleAfterMillis?
InvalidateOnVersionChange bool
RevalidationPolicyRef?
Примеры:
π -> IMMUTABLE
дата рождения -> VERY_SLOW / manual correction
структура конкретной УНФ -> VERSION_BOUND + MEDIUM
текущая цена -> FAST
"сервер доступен" -> EPHEMERAL
Не требуется выбирать идеальную математическую half-life для каждого знания. Foundation должен хранить достаточно metadata, чтобы ranking policy можно было заменить позже.
6.3 VersionBinding
VersionBinding
SubjectRef
VersionRef
MatchMode
MatchMode:
EXACT
COMPATIBLE_FAMILY
AT_OR_BEFORE
UNKNOWN
Например знание о структуре УНФ может быть привязано к конкретному configuration snapshot/version.
6.4 TaskFreshnessRequirement
Freshness requirement принадлежит Work/task requirements, а не самой памяти.
TaskFreshnessRequirement
Mode
MaximumAgeMillis?
RequiredVersionRefs[]
RevalidationRequired bool
FallbackPolicy
Mode:
ANY
PREFER_CURRENT
REQUIRE_CURRENT
REQUIRE_WITHIN_AGE
REQUIRE_VERSION_MATCH
LIVE_REQUIRED
FallbackPolicy:
ALLOW_STALE_WITH_DISCLOSURE
USE_AS_HYPOTHESIS_ONLY
WAIT_FOR_SOURCE
ASK_OWNER
STOP_WITH_UNKNOWN
Это позволяет выразить пользовательский сценарий:
«Свежая структура УНФ недоступна. Есть прошлогоднее знание. Могу использовать его как гипотезу с предупреждением или дождаться live-доступа.»
6.5 FreshnessAssessment
Freshness state вычисляется для конкретной задачи:
FreshnessAssessment
SourceKnowledgeRef
TaskRef
State
Reason
AgeMillis
VersionMatchState
RevalidationAttemptRef?
AssessedAt
State:
CURRENT
ACCEPTABLE
AGING
STALE
VERSION_MISMATCH
HISTORICAL_ONLY
UNKNOWN
По умолчанию FreshnessAssessment — derived runtime evidence. Если он важен для решения/аудита, его можно persist как Epistemics evidence, но он не заменяет TemporalApplicability.
6.6 Active revalidation
Если задача требует свежесть выше доступной памяти:
retrieve old knowledge
-> detect freshness gap
-> request live/revalidation capability
-> obtain new evidence
-> new Claim/BeliefAssessment
-> continue decision
Если source недоступен, поведение определяется TaskFreshnessRequirement/FallbackPolicy.
Домовой не должен скрывать переход на stale memory.
7. Episode — derived episodic memory
Episode группирует связанные события/наблюдения, но не заменяет raw history.
Episode
ID
PrincipalID
Revision
EpisodeKind
ContextScopeRef
StartAt
EndAt
ParticipantWorldRefs[]
ObservationRefs[]
UtteranceRefs[]
ArtifactRefs[]
GoalTaskRefs[]
Summary
GroupingEvidenceRefs[]
ConfidenceMillis
State
RecordedAt
EpisodeKind примеры:
CONVERSATION
PHONE_CALL
WORK_SESSION
MEETING
INCIDENT
RESEARCH_SESSION
DEVICE_EVENT_SEQUENCE
State:
PROVISIONAL
CONFIRMED
SUPERSEDED
Новая модель может пересобрать Episode из тех же raw observations и создать новую revision/supersession.
Raw call/audio не изменяется.
8. Experience — положительный и отрицательный опыт
Positive и Negative Experience не являются разными таблицами. Их различает Outcome/evaluation.
8.1 ExperienceRecord V2
Append-only:
ExperienceRecord
ID
PrincipalID
SourceKind
OriginalIntentRef?
SourceUtteranceRef?
EpisodeRef?
ContextScopeRef?
GoalRef?
TaskRef?
ProblemStatement
MethodKind
MethodRef?
AttemptRef?
WhyAttempted?
ApplicabilityConditions[]
ExpectationRef?
ExpectedOutcome
ExpectedEffect?
ActualOutcome
OutcomeAssessmentRef?
OutcomeDetail
WhySucceededOrFailed?
SkillRef?
ReflexRef?
CapabilityImplementationRef?
AgentRunRef?
VerificationEvidenceRefs[]
HumanResponseRef?
CorrectionUtteranceRef?
ConfidenceMillis
RecordedAt
ActualOutcome сохраняет текущие классы и расширяется только отдельным contract revision.
Ключевые состояния:
SUCCESS
PARTIAL_SUCCESS
FAILED
UNKNOWN
USER_CORRECTED
UNEXPECTED_OUTCOME
LOW_CONFIDENCE
OUT_OF_DISTRIBUTION
CONFLICT
STALE
8.2 Почему отрицательный опыт first-class
FAILED/USER_CORRECTED/CONFLICT/STALE experiences индексируются в отдельной retrieval lane.
При похожей задаче Context Compiler обязан иметь возможность запросить:
what worked?
what failed?
what was corrected?
what became stale?
Negative experience не означает вечный запрет. ApplicabilityConditions и VersionBindings определяют, при каких условиях ошибка была ошибкой.
8.3 ReflectionCandidate
Сохраняется V1 смысл и расширяется context refs:
ReflectionCandidate
ID
Trigger
State
SourceExperienceRef
ContextScopeRef?
Summary
EvidenceRefs[]
RequiresCognition
Revision
Lease fields
RecordedAt
Reflection не пишет Skills/SELF напрямую. Она создаёт evidence/proposal.
9. Source trust / reliability
Не вводится глобальный source_trust = 0.87.
9.1 SourceReliabilityObservation
Append-only Epistemics evidence:
SourceReliabilityObservation
ID
PrincipalID
SourceRef
DomainScopeRef?
PropositionClass?
ComparedClaimRef?
VerificationEvidenceRef
Result
RecordedAt
Result:
SUPPORTED
CONTRADICTED
PARTIAL
UNKNOWN
STALE
9.2 SourceReliabilityAssessment
Derived/versioned assessment:
SourceReliabilityAssessment
ID
SourceRef
DomainMatcher
Revision
ReliabilityMillis
EvidenceRefs[]
Validity
AssessedAt
Один источник может иметь разные assessments по разным domains.
Например авиакомпания может быть сильным источником собственного рейса и нерелевантным источником структуры УНФ.
10. Outcome verification
Gen2 жёстко различает execution receipt и наблюдение мира.
10.1 ExecutionReceipt — Commit owner
Immutable:
ExecutionReceipt
ID
ActionAttemptRef
ExecutorImplementationRef
ExternalOperationRef
ExternalRequestID?
RequestDigest
ResponseDigest?
DispatchAt
CompletedAt?
ExecutorResult
AmbiguityState
ReconciliationKey
RawArtifactRef?
ExecutorResult:
ACCEPTED
REPORTED_SUCCESS
REPORTED_FAILURE
NO_RESPONSE
AMBIGUOUS
REPORTED_SUCCESS не равно verified world success.
10.2 WorldOutcomeAssessment — Epistemics owner
WorldOutcomeAssessment
ID
PrincipalID
ActionAttemptRef
ExecutionReceiptRefs[]
ExpectedEffectRef
ObservationRefs[]
ClaimRefs[]
State
ConfidenceMillis
EvidenceRefs[]
AssessedAt
State:
VERIFIED_SUCCESS
VERIFIED_PARTIAL
VERIFIED_FAILURE
UNVERIFIED
UNKNOWN
CONFLICTED
Пример:
HTTP 200 from light API
!=
observed room light OFF
Continuity/Work могут удовлетворять обязательство только в соответствии с policy, которая явно говорит, достаточно ли executor receipt или требуется verified outcome.
11. Work Gen2 canonical data
Work остаётся владельцем «зачем/что делаем/как организована работа».
11.1 Goal V2
Сохраняется stable ID и source lineage V1.
Goal
ID
PrincipalID
ActorID
SourceIntentRef
SourceUtteranceRef
AuthorityScopeRef
ContextScopeRef
DesiredOutcome
ConstraintRefs[]
State
Revision
CreatedAt
UpdatedAt
Project больше не обязательная колонка Goal. Project/activity определяется ContextScope binding.
11.2 Task V2
Task
ID
GoalRef
PrincipalID
ContextScopeRef
ParentTaskRef?
DesiredOutcome
State
Revision
TaskRequirements
CreatedAt
UpdatedAt
TaskRequirements:
FreshnessRequirement
QualityRequirement
LatencyBudget?
ExternalCostBudget?
ComputeBudget?
MaxAttempts?
ErrorCostClass
DataPolicyRequirement
VerificationRequirement
ErrorCostClass:
TRIVIAL
LOW
MEDIUM
HIGH
CRITICAL
Эта классификация влияет на глубину проверки, но не предоставляет authority.
11.3 Work plan / graph
Сохраняются V1:
- PlanCandidate;
- WorkPlan;
- PlanStep;
- CapabilityRequirement;
- Delegation;
- AgentRun;
- AgentCheckpoint;
- AgentResult;
- Verification.
Gen2 требует, чтобы ContextScope/TaskRequirements передавались typed refs, а не только строковым summary.
Summaries остаются human/debug representation, не canonical machine semantics.
11.4 LongRunningWork / Investigation
LongRunningWork
ID
PrincipalID
GoalRef
RootTaskRef
ContextScopeRef
Objective
State
Revision
Budget
CurrentCheckpointRef?
NextStep
BlockerRefs[]
CreatedAt
UpdatedAt
State:
PLANNED
RUNNING
PAUSED
WAITING_EXTERNAL
WAITING_HUMAN
BLOCKED
COMPLETED
CANCELLED
EXHAUSTED
EXHAUSTED означает исчерпан выделенный budget, а не доказательство невозможности задачи.
Budget
WallClockBudget?
ComputeBudget?
ExternalCostMicros?
ModelCallBudget?
AttemptBudget?
Deadline?
Неиспользуемые поля отсутствуют, а не равны бесконечности.
11.5 InvestigationHypothesisRef
Work не создаёт собственную копию hypothesis text.
Hypothesis является Epistemics Claim/Proposition со статусом UNVERIFIED/PROVISIONAL.
LongRunningWork хранит:
HypothesisRefs[]
FindingClaimRefs[]
ExperienceRefs[]
AttemptRefs[]
Это позволяет исследованию пережить смену модели.
11.6 PerspectiveSpec
Versioned Work value:
PerspectiveSpec
ID
Revision
Key
ObjectiveLens
RetrievalProfileRef
EvaluationCriteria[]
CapabilityRequirements[]
OutputContractRef?
Lifecycle
Perspective не имеет Principal authority.
Generic presets могут быть system-defined; task-specific temporary perspective может существовать только внутри Work.
11.7 ConsequenceAssessment
Versioned Work record:
ConsequenceAssessment
ID
PrincipalID
TaskRef
ProposedActionRef?
Revision
ErrorCostClass
Reversibility
AffectedRefs[]
ExpectedConsequences[]
Uncertainties[]
Mitigations[]
SimulationRequired
BackupRequired
SnapshotRequired
RecommendedConfirmationStrength
EvidenceRefs[]
RecordedAt
Reversibility:
REVERSIBLE
REVERSIBLE_WITH_BACKUP
PARTIALLY_REVERSIBLE
IRREVERSIBLE
UNKNOWN
ConsequenceAssessment не запрещает действие и не заменяет Authority.
12. Continuity Gen2 canonical data
Continuity остаётся единственным owner future relevance.
12.1 Commitment
V1 уже имеет CommitmentID, но Gen2 делает semantic record явным.
Commitment
ID
PrincipalID
AuthorityScopeRef
ContextScopeRef?
GoalRef?
TaskRef?
SourceIntentRef
SourceUtteranceRef
Summary
State
Revision
CreatedAt
SatisfiedAt?
SupersededBy?
State:
OPEN
SATISFIED
CANCELLED
SUPERSEDED
EXPIRED
12.2 ProspectiveItem V2
ProspectiveItem
ID
CommitmentRef?
PrincipalID
AuthorityScopeRef
ContextScopeRef?
GoalRef?
WorkRef?
SourceIntentRef
SourceUtteranceRef
Summary
TriggerSpec
State
Revision
TriggerSpec algebra
Foundation должен уметь выразить не только absolute timestamp:
ABSOLUTE_INSTANT
RECURRENCE
RELATIVE_TO_EVENT
CONDITION
COMPOSITE
Примеры:
"завтра в 10"
"каждый понедельник"
"через три дня после письма"
"если ответа не будет"
"после работы, когда окажусь дома"
Полная event/condition engine может появиться позже, но canonical TriggerSpec уже не должен быть навсегда ограничен одной колонкой trigger_at.
12.3 AttentionItem / HumanResponse
Сохраняются текущие state machines.
Добавляются typed refs на ContextScope/Work where useful.
Attention не становится общей event queue.
13. Capability Gen2 — Skill, Reflex and intelligence data
13.1 Capability/Implementation
Существующие capability descriptor, implementation, health, binding, qualification и usage observation сохраняются.
Gen2 не объединяет Capability и Skill.
Capability = что система способна выполнить
Skill = проверенный повторяемый способ решения
Reflex = оптимизированный дешёвый путь из Skill/experience
13.2 Skill stable identity + revisions
Вместо семантически перегруженного одного SkillProfile Gen2 рассматривает его как stable identity + immutable revisions.
Skill
ID
PrincipalID? // system skill may be shared/system principal
Name
CreatedAt
SkillRevision
SkillID
Revision
Description
ApplicabilitySpec
InputContractRef?
OutputContractRef?
ImplementationRef
ImplementationVersion
DependencyRefs[]
SupportingExperienceRefs[]
KnownFailureExperienceRefs[]
ValidationEvidenceRefs[]
QualityAssessmentRefs[]
EnvironmentVersionConstraints[]
LastValidatedAt
LifecycleState
SupersedesRevision?
RecordedAt
Lifecycle:
CANDIDATE
EVALUATING
VALIDATED
DEGRADED
SUSPENDED
RETIRED
13.3 ApplicabilitySpec
Никаких []string как основного механизма matching.
ApplicabilitySpec
RequiredContextBindings[]
PreferredContextBindings[]
ExcludedContextBindings[]
RequiredWorldKinds[]
VersionConstraints[]
InputConditions[]
MinimumEvidenceFreshness?
InputConditions используют bounded typed condition vocabulary Skill contract, а не executable arbitrary expression из БД.
13.4 Reflex
Reflex
ID
PrincipalID?
SourceSkillRef
CreatedAt
ReflexRevision
ReflexID
Revision
SourceSkillRevision
ReflexKind
ApplicabilitySpec
ImplementationRef
ImplementationVersion
ArtifactDigest?
DependencyRefs[]
ValidationEvidenceRefs[]
KnownFailureExperienceRefs[]
ShadowPolicy
RevalidationPolicy
LastValidatedAt
LifecycleState
RecordedAt
ReflexKind:
DETERMINISTIC_CODE
RULE
WORKFLOW
QUERY_TEMPLATE
SMALL_MODEL_CHAIN
BOUNDED_ADAPTER_OPERATION
Lifecycle:
CANDIDATE
VALIDATING
ACTIVE
DEGRADED
STALE
SUSPENDED
RETIRED
13.5 ShadowPolicy
ShadowPolicy
Enabled
SampleRateMillis // 0..1000
ComparatorRef
MaxShadowCostMicros?
EligibleErrorCostClasses[]
High-risk operations не экспериментируют на реальном mutation path. Для них shadow/replay работает на historical/sandbox data.
13.6 RevalidationPolicy
RevalidationPolicy
MaxAgeMillis?
RevalidateOnDependencyRevisionChange
RevalidateOnWorldVersionChange
RevalidateAfterFailureCount?
RevalidateAfterCorrectionCount?
SampleAuditRateMillis?
Skill/Reflex может стать STALE/DEGRADED, не удаляясь.
13.7 Skill/Reflex promotion evidence
Promotion не определяется количеством удачных запусков одним условием.
Минимальный evidence bundle может включать:
- multiple ExperienceRefs;
- zero/acceptable correction rate;
- environment/version coverage;
- regression evidence;
- evaluator identity;
- comparison with previous path;
- cost/latency impact;
- rollback path для code-backed Reflex.
Exact threshold принадлежит evaluation policy, а не canonical schema.
14. Configuration Gen2 — динамические типизированные настройки
Configuration является новым canonical owner.
14.1 SettingDefinition stable identity
SettingDefinition
ID
OwnerNamespace
StableKey
CreatedAt
SettingDefinitionRevision
DefinitionID
Revision
DisplayName
Description
ValueTypeSpec
DefaultValue?
AllowedScopeSelectors[]
ResolutionMode
SensitivityClass
ValidationSpec
Lifecycle
SupersedesRevision?
RecordedAt
Lifecycle:
ACTIVE
DEPRECATED
RETIRED
14.2 SettingAssignment
Assignments versioned/append-preserving:
SettingAssignment
ID
PrincipalID
DefinitionRef + definition revision
Revision
ScopeSelector
TypedValue | SecretRef
EffectiveFrom
EffectiveUntil?
SourceKind
SourceRef
RecordedAt
Lifecycle
SourceKind:
HUMAN_DIRECTIVE
MIGRATED_CONFIG
SKILL_DEFAULT
SYSTEM_DEFAULT
GOVERNED_CHANGE
Skill default не имеет приоритета над explicit human assignment.
14.3 ScopeSelector
Чтобы выразить «для Skill X в Company A использовать Y», selector должен поддерживать conjunctive context.
ScopeSelector
PrincipalRef?
RequiredContextBindings[]
ActivityRef?
SkillRef?
TaskRef?
SessionRef?
TemporaryOverride bool
Это не arbitrary map: bindings используют ContextScope vocabulary и typed refs.
14.4 ResolutionMode
Foundation:
MOST_SPECIFIC_WINS
FIRST_EXPLICIT_HUMAN_WINS
MERGE_LIST
Новый режим требует Configuration contract revision.
Deterministic resolution
- отфильтровать assignments по Principal/access;
- исключить expired/incompatible definition revisions;
- оставить selectors, совпадающие с current Focus/Task/Skill;
- выбрать highest precedence tier;
- выбрать наиболее специфичный conjunctive selector;
- при равной специфичности и конфликте не использовать last-write случайно — вернуть configuration conflict;
- explicit temporary override может победить только в разрешённом definition scope.
14.5 EffectiveConfiguration
Derived only:
EffectiveSetting
DefinitionRef
Value
WinningAssignmentRef
ResolutionTrace
Effective config не записывается как второй source of truth.
14.6 ENV/bootstrap
После migration ENV разрешён только для bootstrap primitives:
node identity bootstrap
control database locator / bootstrap locator
root secret resolver locator
minimal recovery/supervisor bootstrap
Ordinary provider URLs, models, project settings, skill parameters и user preferences не должны оставаться обязательными ENV config.
14.7 SecretRef
SecretRef
ProviderKind
SecretID
VersionHint?
Secret value отсутствует в Configuration/Epistemics/Context projections.
Adapter получает разрешённый SecretRef через Secrets boundary только в момент использования.
15. SELF canonical data
SELF хранит evidence-backed модель Домового о себе, но не исполняет работу.
15.1 CompetenceAssessment
Append/versioned assessment:
CompetenceAssessment
ID
PrincipalID
SubjectRef // Capability/Skill/Reflex/strategy
Revision
ContextMatcher
QualityMillis
ReliabilityMillis
ConfidenceMillis
CostProfileRef?
LatencyProfileRef?
EnvironmentConstraints[]
EvidenceRefs[]
LastValidatedAt
AssessedAt
SupersedesRef?
Score без evidence невалиден.
Компетентность context-dependent:
"1C debugging with live IFCM"
!=
"1C debugging from stale memory only"
15.2 WeaknessPattern
WeaknessPattern
ID
PrincipalID
Revision
PatternKey
ContextMatcher
FailureMode
DetectionEvidenceRefs[]
KnownTriggers[]
MitigationRefs[]
State
RecordedAt
State:
CANDIDATE
CONFIRMED
MITIGATED
MONITORING
RESOLVED
SUPERSEDED
Пример:
premature anchoring on first hypothesis for PostgreSQL numeric overflow diagnostics.
15.3 DependencyAssessment
SELF не копирует Capability dependency registry, а хранит interpreted self-view:
DependencyAssessment
ID
SubjectRef
DependencyRef
ImpactClass
CurrentEffect
EvidenceRefs[]
AssessedAt
Это позволяет различать:
«я не умею»
и
«я умею, но зависимость IFCM сейчас недоступна».
15.4 ImprovementNeed
ImprovementNeed
ID
PrincipalID
SubjectRef
ProblemSummary
EvidenceRefs[]
ExpectedBenefit
Priority
State
CreatedAt
State:
OPEN
EVALUATING
PROPOSED
IN_PROGRESS
RESOLVED
REJECTED
SUPERSEDED
SELF не создаёт source patch напрямую; Work governed development принимает предложение.
15.5 LearningLedgerEntry
История значимых изменений интеллекта:
LearningLedgerEntry
ID
PrincipalID
ImprovementNeedRef?
ObservedProblem
EvidenceRefs[]
Diagnosis
Hypothesis
ProposedChangeRef
ExpectedImprovement
EvaluationPlanRef?
ActualEvaluationRefs[]
DevelopmentGateRef?
BeforeVersionRefs[]
AfterVersionRefs[]
Decision
SideEffects[]
RollbackRef?
RecordedAt
Decision:
PROPOSED
PROMOTED
REJECTED
ROLLED_BACK
SUPERSEDED
Это не заменяет git history или Work DevelopmentGate; ledger объясняет почему интеллект изменился и стало ли лучше.
15.6 SelfCompositionSnapshot
Durable snapshot для диагностики/version comparison:
SelfCompositionSnapshot
ID
PrincipalID
RuntimeVersionRef
ActiveCapabilityBindingRefs[]
ActiveSkillRevisionRefs[]
ActiveReflexRevisionRefs[]
RetrievalPolicyVersionRef
ContextCompilerVersionRef
ConfigurationSnapshotDigest
RecordedAt
Это aggregate snapshot, а не owner активных versions.
16. Memory Retrieval Fabric — rebuildable projections
Memory Retrieval не владеет canonical meaning. Он строит несколько специализированных проекций.
16.1 RetrievalDocument
Общий projection envelope:
RetrievalDocument
ProjectionID
ProjectionVersion
PrincipalID
SourceRef
ExactSourceRevision?
ContextScopeKeys[]
WorldObjectRefs[]
GoalTaskRefs[]
TemporalMetadata
VersionBindings[]
EvidenceState
ExperiencePolarity?
SensitivityClass
TextRepresentation
TokenEstimate
ContentDigest
EmbeddingRefs[]
IndexedAt
Это не новая canonical memory record.
Удаление всех RetrievalDocuments не должно уничтожить память; они перестраиваются из owners.
16.2 Независимые retrieval lanes
Минимально Gen2 проектирует отдельные lanes:
RECENT_INTERACTION— текущий разговор/соседние turns;EXACT_ENTITY— exact WorldObject/aliases;ACTIVE_WORK— Goal/Task/LongRunningWork;CONTINUITY— обязательства и future relevance;VERIFIED_KNOWLEDGE— epistemic assessments;EPISODIC— past Episodes;POSITIVE_EXPERIENCE— что сработало;NEGATIVE_EXPERIENCE— ошибки, corrections, failed attempts;SKILL_REFLEX— reusable approaches;CONTRADICTION— evidence, меняющее/опровергающее найденное;SELF_WEAKNESS— собственные известные failure patterns, если релевантно;CONFIGURATION— effective settings только для task execution, не для general semantic similarity.
Нельзя заменить эти lanes одним topK vector search.
16.3 Ranking signals
Ranking policy versioned и заменяемый.
Возможные сигналы:
hard scope compatibility
exact entity match
semantic similarity
task/goal relation
focus role match
freshness relative to task
subject-version match
source reliability
explicit human importance
recent successful usefulness
negative-experience relevance
contradiction value
episode proximity
current continuity relevance
context/token cost
Не требуется превращать их в одну вечную формулу.
Policy version обязательно попадает в ContextAssemblyTrace, чтобы позже понять, почему память была/не была выбрана.
16.4 Scope isolation
Алгоритм retrieval обязан выполнять:
1. authenticated Principal/access filter
2. REQUIRED/EXCLUDED ContextBindings
3. explicit version constraints
4. data policy/sensitivity filter
5. candidate lane retrieval
6. ranking/rerank
Нельзя сначала получить top semantic hits из всех компаний и потом надеяться, что модель сама различит Company A и Company B.
16.5 Positive/Negative balanced retrieval
Для diagnostic/problem-solving tasks retrieval должен иметь budget reservation для negative experience.
Пример:
Context budget 8k
verified/current facts 25%
task/current conversation 20%
skill/current method 20%
positive experience 10%
negative experience 10%
contradiction/verification 10%
reserve 5%
Это пример policy, не фиксированная формула.
Главное — отрицательный опыт не вытесняется автоматически более многочисленными positive similarity hits.
16.6 Contradiction pass
После предварительного выбора решения/knowledge candidate Context Compiler может выполнить отдельный pass:
"что в памяти существенно противоречит выбранным сведениям?"
Contradiction retrieval использует proposition/entity refs и known correction/supersession relations, а не только negative cosine similarity.
17. Context Compiler V2 data contract
Context Compiler остаётся worker/service, не canonical owner.
17.1 ContextCompileRequest
ContextCompileRequest
PrincipalID
ActorID
AuthorityScopeRef
FocusFrameRef + exact revision
ContextScopeRef + exact revision
GoalRef?
TaskRef?
TaskRequirementsRef?
IntelligenceStrategyHint?
ModelContextLimit
MaxInputTokens/Bytes
DataPolicy
Locale
RetrievalPolicyVersion
Model/provider выбирает Capability, поэтому compiler не принимает browser-selected provider.
17.2 Candidate contract
Каждый candidate приходит с metadata:
ContextCandidate
SourceRef
SourceRevision?
Lane
ContextBindings
FreshnessMetadata
EvidenceState
Sensitivity
RelevanceSignals
Text/structured representation
EstimatedTokens
17.3 ContextBundle
ContextBundle
BundleID? // runtime id
FocusRevision
RetrievalPolicyVersion
CompilerVersion
IncludedExcerpts[]
Omissions[]
CoverageSummary
FreshnessWarnings[]
ContradictionSummary?
RemainingBudget
ContextBundle не становится memory source of truth.
17.4 ContextAssemblyTrace
Чтобы Домовой мог учиться на retrieval mistakes, нужен диагностический trace.
По умолчанию он ephemeral/telemetry.
Если он стал evidence для Reflection/SELF, сохраняется как Artifact:
ContextAssemblyTrace
CompilerVersion
RetrievalPolicyVersion
FocusRef
TaskRef
CandidateRefs + lane + score components
IncludedRefs
OmittedRefs + reasons
Freshness decisions
Context budget
Model strategy ref
Содержимое секретов в trace запрещено.
Это позволяет после фразы пользователя:
«Я же уже говорил это раньше»
установить:
memory missing?
projection missing?
scope filtered incorrectly?
retrieval ranked too low?
context budget evicted it?
model ignored included memory?
17.5 Iterative memory retrieval
Initial ContextBundle должен быть минимально достаточным.
Во время reasoning модель через typed capability может запросить:
memory.search_failures(...)
memory.search_entity_history(...)
memory.search_commitments(...)
memory.search_old_versions(...)
Запрос проходит те же Principal/Scope/DataPolicy guards.
Это позволяет маленькой локальной модели работать с памятью значительно больше собственного context window.
18. Memory salience, forgetting and consolidation
18.1 Salience != truth
Высокая retrieval salience не делает Claim более истинным.
Salience — только вероятность быть полезным сейчас.
18.2 Salience signals
Derived projection может учитывать:
- freshness;
- explicit human «важно/запомни»;
- relation to active goals;
- entity proximity;
- use frequency;
- previous usefulness;
- unresolved commitment;
- failure/correction severity;
- uniqueness;
- cost of losing;
- current Focus.
Долгое неиспользование является только одним сигналом.
18.3 RetentionDirective
Если пользователь явно говорит «это обязательно запомни» или «это можно забыть», Interaction сохраняет исходную директиву, а Epistemics/Artifact может сформировать typed retention evidence/policy.
Foundation value:
RetentionDirective
SourceUtteranceRef
TargetRefs[]
Class
EffectiveAt
Class:
PINNED
LONG_TERM
NORMAL
SHORT_TERM
EPHEMERAL
FORGET_REQUESTED
FORGET_REQUESTED не означает мгновенный физический delete всех audit records. Реальная deletion/redaction policy должна учитывать operational/audit obligations и получить отдельный privacy ADR before implementation.
18.4 Consolidation
Memory может постепенно сжиматься:
raw observations
-> Episodes
-> Claims/Beliefs
-> patterns
-> Experience
-> Skills
-> Reflexes
Consolidation не удаляет evidence chain, пока retention policy не разрешает archival/deletion.
Summary всегда хранит refs на source evidence.
18.5 Hot / Warm / Cold / Archive
Это storage/retrieval tier, а не epistemic status.
HOT frequent/recent index
WARM normal indexed memory
COLD slow indexed/archive retrieval
ARCHIVE raw long-term evidence, may require explicit deep retrieval
Claim может быть VERIFIED и физически COLD.
Claim может быть STALE и физически HOT из-за текущего расследования.
19. Artifact Gen2 — raw durable memory substrate
Artifact остаётся owner больших immutable resources.
19.1 Artifact
Artifact
ID
PrincipalID
MediaType
ContentDigest
SizeBytes
StorageLocatorRef
SensitivityClass
CreatedAt
CapturedAt?
SourceRef?
RetentionClass
StorageLocatorRef не должен раскрывать credential.
19.2 ArtifactVersion / lineage
Если содержимое изменилось — новый Artifact/version с lineage:
DerivedFrom
TranscodedFrom
OCRFrom
TranscriptOf
ThumbnailOf
ReprocessedFrom
Новая speech/OCR/vision модель создаёт новый derived Artifact/Observation; original raw artifact не переписывается.
19.3 SegmentRef
Для audio/video/document:
ArtifactSegmentRef
ArtifactID
TimeStart/TimeEnd OR Byte/Page range
Digest?
Это позволяет эпизоду/claim ссылаться на конкретные 20 секунд звонка вместо копирования целого часа аудио в prompt.
20. Commit and strict operational data
Gen2 сохраняет строгий V1 смысл и усиливает audit trail.
20.1 ActionProposal
Immutable semantic proposal.
После изменения recipient/amount/file/content/operation создаётся новая proposal identity/digest.
Подтверждение старой proposal не распространяется на новую.
20.2 AuthorizedAction
Immutable authorization evidence:
AuthorizedAction
ID
ProposalRef
PrincipalID
GrantRef + exact revision
AuthorityScopeRef
AuthorizedAt
AuthorizationDigest
20.3 ActionAttempt
Operational aggregate:
ActionAttempt
ID
AuthorizedActionRef
IdempotencyKey
ReconciliationKey
State
Revision
LatestExecutionReceiptRef?
StartedAt
UpdatedAt
Recommended Gen2 state semantics:
CREATED
DISPATCHING
EXECUTOR_REPORTED_SUCCESS
EXECUTOR_REPORTED_FAILURE
UNKNOWN_OUTCOME
RECONCILING
CLOSED
Compatibility mapper может отображать V1 SUCCEEDED/FAILED/EXECUTING до перехода contracts.
CLOSED не обязано означать verified world success; closure reason должен ссылаться на policy/outcome assessment.
20.4 ActionAttemptTransition
Append-only:
TransitionID
AttemptID
FromState
ToState
CauseRef
ReceiptRef?
RecordedAt
Blind retry после UNKNOWN_OUTCOME запрещён.
21. Identity and Authority data
Основные V1 types сохраняются.
21.1 PrincipalBinding
Identity остаётся единственным owner связи authenticated actor -> principal.
World alias на человека не даёт principal identity автоматически.
21.2 AuthorityScope
Authority Scope может быть coarse/fine-grained, но он не используется как ContextScope.
Data access и mutations проверяются against authenticated Principal/Grant/AuthorityScope.
Наличие WorldObject в Focus не предоставляет permission к нему.
22. Cross-owner access rules
22.1 No cross-owner DB FK
Каждый schema owner хранит внешние IDs как typed refs without FK.
Причины:
- bounded-context autonomy;
- independent migrations;
- no semantic ownership leakage;
- replay/rollback;
- no cross-owner SQL joins as business logic.
22.2 No cross-owner write
Work не UPDATE'ит Epistemics.
Epistemics не UPDATE'ит Capability.
SELF не UPDATE'ит Skill status.
Configuration не UPDATE'ит World.
Связь идёт через typed command/contracts.
22.3 Read models may combine refs
Memory/Context projections могут объединять data from multiple owners, но projection read-only/rebuildable.
Projection cannot be mutated to change canonical state.
23. Physical PostgreSQL layout target
Это logical target, не готовый migration script.
Recommended schemas:
identity
authority
interaction
situation
world
epistemics
work
continuity
capability
configuration
self_model
commit
artifact
projection_* // rebuildable/read-only roles
Каждый canonical schema имеет отдельную DB role/write privilege, продолжая V1 ACL approach.
23.1 Version table pattern
Для definitions/skills/settings:
<aggregate>_revisions
id
revision
... immutable revision fields
PRIMARY KEY(id, revision)
<aggregate>_heads
id PRIMARY KEY
revision
state
updated_at
Head не содержит единственную копию semantic fields.
23.2 Transition ledger pattern
Для operational state:
<aggregate>
id
revision
current_state
... current operational fields
<aggregate>_transitions
transition_id
aggregate_id
from_revision
to_revision
from_state
to_state
cause_ref
recorded_at
23.3 TypedValue physical encoding
Допустимый вариант:
schema_definition_id TEXT
schema_revision BIGINT
value_type_fingerprint TEXT
value_payload JSONB
но только при условиях:
- payload валидируется owner domain code against ValueTypeSpec;
- DB CHECK обеспечивает базовую форму envelope;
- arbitrary JSON mutation API отсутствует;
- schema revision immutable;
- migration/replay может снова проверить payload;
- index создаётся только для реально нужных fields/projections.
JSONB здесь encoding, а не semantics.
23.4 No giant universal values table
Запрещён дизайн:
entities(id,type,data_json)
куда Identity, Commit, Goal, Skill и knowledge складываются как одинаковые records.
World extensibility ограничивается referents/definitions. Operational core остаётся собственными typed schemas.
24. Search/index physical design
Canonical data model не требует graph DB или vector DB.
Foundation должен поддерживать replaceable projections:
exact ID/entity index
alias index
FTS lexical index
temporal index
context-scope inverted index
world adjacency projection
experience positive/negative index
vector embedding index
current-belief index
freshness candidate index
Если позже graph/vector technology меняется, canonical rows не мигрируют из-за смены index engine.
24.1 Embedding record
Projection only:
EmbeddingRecord
ProjectionRef
SourceRef
ProjectionVersion
EmbeddingModelRef + exact version
VectorDigest
Vector
CreatedAt
Новая embedding model может перестроить весь index без изменения source knowledge.
25. Dynamic schema evolution
25.1 Definition registration
Новый World facet или SettingDefinition проходит:
proposal
-> owner validation
-> namespace collision check
-> schema compatibility check
-> revision creation
-> head activation
Для обычного low-risk Skill-defined setting это может быть автоматизированный bounded flow.
Изменение core semantic definition требует architecture task/ADR.
25.2 Compatible schema changes
Примеры обычно compatible:
- add optional struct field with default/absence semantics;
- expand enum only when consumers declare unknown-value handling;
- add new applicable World kind;
- deprecate field without deleting history.
Potentially incompatible:
- change scalar type;
- redefine meaning of existing field;
- change units;
- change relation direction/cardinality;
- reuse key for new meaning.
Incompatible change создаёт новую schema revision/version migration, а не silent reinterpretation old payload.
25.3 Unit semantics
Numeric semantic field должен указывать unit where applicable.
Нельзя иметь:
threshold = 10
без понимания, это секунды, проценты, рубли или байты.
ValueTypeSpec DECIMAL/INTEGER может содержать unit definition/ref.
26. Multi-person / family memory boundary
Gen2 foundation должен не смешивать людей даже до появления полного family mode.
26.1 Source person != Principal
WorldObject Ivan и Identity Principal Ivan — разные concepts.
Связывание требует Identity/World evidence and explicit binding process where applicable.
Распознавание голоса «похоже на Ивана» не создаёт authenticated PrincipalBinding.
26.2 Data ownership
User-specific evidence хранит PrincipalID data realm.
Shared family/work contexts позже могут использовать shared Principal или explicit authorized sharing, но не semantic similarity.
Memory retrieval никогда не смешивает records разных Principal realms без разрешённого cross-principal data access.
26.3 Ambient future compatibility
Для будущего microphone/camera ingestion source chain должна уметь хранить:
Artifact
-> SourceSnapshot/segment
-> speaker/person candidate Observation
-> World identity hypothesis
-> speech transcript Observation
-> Claim/Episode/Experience
Но raw ambient media не обязано храниться бесконечно. Retention policy и consent/privacy для multi-person ambient collection требуют отдельного ADR до включения такой возможности.
27. Current Focus + Configuration + Skill resolution example
Пример:
Пользователь говорит:
«Работаем с Company B, разберись почему в этой УНФ неправильно выбирается штрихкод.»
Situation создаёт:
ContextScope
ORGANIZATION REQUIRED -> WorldObject CompanyB
SYSTEM REQUIRED -> WorldObject CompanyB_UNF
ACTIVITY PREFERRED -> barcode investigation
Configuration получает:
SettingDefinition = onec.live_endpoint
Assignments:
CompanyA -> endpoint A
CompanyB -> endpoint B
EffectiveConfiguration выбирает B before Capability starts.
Memory retrieval hard-filters CompanyB primary knowledge.
Если CompanyB evidence недостаточно, расширенный analogical lane может вернуть:
CompanyA similar experience
relationship = ANALOGY_ONLY
disclosure = not current CompanyB fact
Skill resolver может выбрать общий 1C barcode diagnosis Skill, но его applicability/environment constraints проверяются против CompanyB context.
28. Freshness example: old UNF structure
Canonical data:
Observation O1:
captured 2026-08-28 from live CompanyA UNF
Claim C1:
CompanyA_UNF.SomeObject structure = X
Belief B1:
VERIFIED at 2026-08-28
volatility = VERSION_BOUND
version = configuration snapshot 2026-08-28
Через год вопрос:
«Как вообще раньше это было устроено?»
TaskFreshnessRequirement = ANY/HISTORICAL acceptable.
B1 используется напрямую как historical evidence.
Другой вопрос:
«Исправь ошибку в текущей CompanyA UNF.»
TaskFreshnessRequirement = REQUIRE_VERSION_MATCH or LIVE_REQUIRED.
Если live source доступен:
B1 -> revalidation request -> current snapshot -> B2
Если live source недоступен:
B1 FreshnessAssessment = HISTORICAL_ONLY / VERSION_UNKNOWN
FallbackPolicy = USE_AS_HYPOTHESIS_ONLY
Пользователю сообщается, что решение строится по прошлому состоянию и требует live confirmation.
Никакой физический delete B1 не происходит.
29. Negative experience example
Первый раз задача решается так:
Problem P
Attempt A1 -> failed
Reason: ignored characteristic/unit
Experience E1 = FAILED
Attempt A2 -> verified success
Experience E2 = SUCCESS
Skill S1 получает:
SupportingExperienceRefs = [E2]
KnownFailureExperienceRefs = [E1]
Следующая похожая задача:
Context Compiler получает одновременно:
S1
E2 positive
E1 negative
Если environment version изменился, S1/Reflex не применяются blindly; VersionConstraint вызывает revalidation/escalation.
30. Self-learning example
Пользователь говорит:
«Мы уже это проверяли. Почему ты опять пошёл тем же путём?»
Interaction:
SpeechAct = CORRECTION
relation CORRECTS previous response/utterance
Epistemics:
Experience E = USER_CORRECTED
ReflectionCandidate R
ContextAssemblyTrace позволяет установить:
negative memory existed
but retrieval omitted it due to ranking policy v17
SELF:
WeaknessPattern candidate:
repeated omission of known failure experience
Work governed development:
proposal retrieval policy v18
historical replay
milestone evaluation
shadow comparison
SELF LearningLedger фиксирует actual before/after.
Ни Correction, ни новая модель напрямую не UPDATE'ит Context Compiler production policy.
31. Migration mapping V1 -> Gen2
Migration выполняется owner-by-owner. V1 остаётся reference/rollback до promotion соответствующего Gen2 path.
31.1 Global migration laws
- PRE-GEN2 baseline commit/tag обязателен.
- V1 rows не уничтожаются до verified cutover.
- Existing IDs сохраняются wherever semantic identity совпадает.
- Backfill idempotent.
- Один canonical writer в каждый момент времени.
- Shadow read разрешён; indefinite dual canonical write запрещён.
- Migration-generated records имеют provenance
MIGRATED_FROM_V1+ exact source ref. - Нельзя invent missing semantic facts during migration.
- Если V1 не содержит scope/version/provenance — поле остаётся UNKNOWN, а не угадывается.
- Secrets не копируются через logs/sql dump/task artifacts.
31.2 Interaction
V1:
interaction.conversations
interaction.utterances
interaction.original_human_intents
interaction.relations
semantic candidates/interpretations
Gen2:
- сохраняются canonical;
- Channel enum расширяется только через contract revision;
- raw media
ContentRefпостепенно становится ArtifactRef lineage; - existing utterance IDs/intents сохраняются;
- corrections/supersession relations backfill only from explicit V1 evidence.
Никакого копирования Interaction history в новую memory table.
31.3 PersonalMemory V1
Текущий CompilePersonalMemory/ContextText:
- не мигрируется как canonical data;
- используется как compatibility output during transition;
- новые projections строятся из HumanUtterance/Epistemics/World/Work;
- после equivalence/household milestone compatibility PersonalMemory retires.
Если V1 PersonalMemory contains only derived string summary, summary может быть сохранён как migration evidence Artifact, но не как verified knowledge.
31.4 Situation Focus
V1:
FocusBinding
ActiveProjectFocus
ProjectDescriptor
ProjectReference
Migration:
ProjectDescriptor
-> WorldObject kind ACTIVITY/PROJECT where identity is explicit
FocusBinding.ProjectID
-> ContextBinding role PROJECT/ACTIVITY
FocusBinding.ScopeID
-> AuthorityScopeRef, NOT ContextScope
GoalID
-> FocusFrame GoalRef
V1 ActiveProjectFocus становится compatibility projection from FocusFrame after cutover.
Unknown organization/system/database context не угадывается из project name.
31.5 World bootstrap
WorldObjects создаются только из evidence-backed existing concepts:
- explicit ProjectDescriptor;
- known repository identity;
- configured database/system with stable existing ID/locator;
- explicit authenticated human references where resolution is safe.
Не выполнять массовое LLM-based entity extraction и auto-merge как migration requirement.
Entity resolution может постепенно улучшаться после foundation.
31.6 Epistemics truth/research
V1:
Source
SourceSnapshot
SourceExcerpt
Citation
Observation
Claim
Belief
TruthBundle
ExperienceRecord
ReflectionCandidate
Migration:
- preserve existing IDs/evidence chains;
- V1 Snapshot.Freshness переносится как historical
FreshnessAssessmentevidence if useful, not permanent property; - add TemporalApplicability defaults only where explicitly known;
- missing volatility = UNKNOWN, not MEDIUM by guess;
- existing Belief becomes BeliefAssessment revision 1 with source evidence;
- existing free text Claim remains valid legacy proposition
TEXTUALuntil structured proposition is derived and linked; - ExperienceRecord V1 maps field-by-field; missing new fields empty/unknown.
31.7 Work
V1 Goal/Plan/Delegation/AgentRun/Checkpoint сохраняются.
Migration:
- Project columns become compatibility fields/read projections after ContextScope cutover;
- create ContextScopeRef for existing unambiguous project focus;
- TaskRequirements default to explicit neutral policy, not guessed strictness;
- existing AgentCheckpoints seed LongRunningWork where semantics already represent durable job;
- do not duplicate current AgentRun as second new job if Work already owns it.
31.8 Continuity
V1 ProspectiveItem/Attention/HumanResponse сохраняют IDs/state/revisions.
Migration:
- create explicit Commitment only when source semantics prove a commitment;
- existing reminder without recoverable commitment may keep
CommitmentRef = nullwith source intent refs; - existing absolute
TriggerAtmaps toTriggerSpec ABSOLUTE_INSTANT; - state transitions preserved.
No second scheduler introduced.
31.9 Capability Skill
V1 capability.skill_profiles(id,revision,...) уже близок к Gen2.
Migration:
- SkillProfileID -> SkillID;
- each V1 revision -> SkillRevision;
- ApplicableContext strings initially become legacy applicability clauses with explicit marker
LEGACY_STRING_MATCH, not silently parsed into hard scope; - existing supporting/failure experience refs preserved;
- implementation/version/status preserved;
- later governed migration replaces legacy applicability with typed ContextMatcher.
Existing FastPath is not automatically promoted to Reflex.
Candidate Reflex records require explicit validation evidence.
31.10 Capability models/evaluations
Existing provider/model/binding/TaskEvaluation evidence preserved.
SELF competence may be seeded from these evaluations, but only by creating evidence-backed CompetenceAssessment records.
Do not copy overall score into global competence without ContextMatcher/task profile.
31.11 Configuration / ENV
Migration stages:
inventory consumers
-> create SettingDefinitions
-> import non-secret values as MIGRATED_CONFIG assignments
-> import secret values through Secret Resolver into SecretRefs
-> shadow EffectiveConfiguration against ENV
-> switch each consumer
-> leave ENV read-only fallback temporarily
-> remove non-bootstrap ENV dependency
Address/endpoint can become ordinary SettingAssignment.
Token/password/private key never become ordinary value payload.
For unknown legacy default semantics, migration must record explicit default definition instead of silently using process environment forever.
31.12 SELF
SELF starts empty except evidence-derived seed:
Capability TaskEvaluations
UsageObservations
Skill outcomes
Experience corrections/failures
Development gates
No LLM bootstrap statement such as «I am good at 1C» becomes canonical competence without evidence.
31.13 Commit
V1 ActionProposal/AuthorizedAction/ActionAttempt IDs/states preserved.
Add ExecutionReceipt/Transition ledger from evidence available in existing execution logs/receipts.
If old action outcome cannot be proven, migrate as UNKNOWN/UNVERIFIED, not success by inference.
31.14 Artifact
Existing artifact IDs/attestations preserved.
Raw files/media currently referenced indirectly can be enrolled gradually.
Migration must not copy entire binaries into PostgreSQL by default; Artifact owns storage identity/lineage, not necessarily bytes in DB.
32. Cutover pattern per subsystem
Каждый Gen2 subsystem проходит одинаковую схему:
1. contract/ADR accepted
2. new schema/tables exist
3. V1 backfill/rebuild
4. Gen2 read shadow
5. compare/evidence
6. switch canonical writer
7. V1 compatibility read projection
8. milestone validation
9. retire old writer
10. later remove old tables/code only after rollback horizon
Нельзя иметь два независимых canonical writers «временно на несколько месяцев».
33. Rebuild / replay requirements
33.1 Projection rebuild
Любой projection должен иметь:
projection_version
source watermark/checkpoint
rebuild command
idempotent source traversal
result digest/count evidence
33.2 Reprocessing old evidence
Новая model/extractor может создать:
new Observation
new Claim
new BeliefAssessment
new Episode revision
с DerivedFrom refs на старый Artifact/Snapshot.
Она не изменяет original SourceSnapshot.
33.3 Knowledge supersession
Если новая обработка обнаружила ошибку старого derived knowledge:
old assessment -> SUPERSEDED/REJECTED
new assessment -> PROVISIONAL/VERIFIED
Обе версии доступны historical query/audit.
34. Data integrity constraints
Минимальные universal invariants:
- stable IDs non-empty;
- revision >= 1;
- confidence 0..1000 where present;
- validity interval ordered;
- exact definition revision exists before TypedValue acceptance within same owner;
- head revision points to existing immutable revision;
- no secret payload in normal setting/context/epistemic value;
- cross-owner ref syntax valid even without DB FK;
- historical revision immutable;
UNKNOWN_OUTCOMEcannot transition to retry without reconciliation/explicit new attempt policy;- World merge/split lineage cannot delete source refs;
- ContextScope REQUIRED and EXCLUDED cannot contain same exact binding in one revision;
- EffectiveConfiguration conflict must surface, not choose nondeterministically;
- Belief VERIFIED requires supporting evidence refs;
- CompetenceAssessment score requires evidence;
- Skill/Reflex ACTIVE/VALIDATED requires evaluation evidence;
- Focus inferred with confidence cannot be treated as Authority;
- Context Compiler cannot include secret value;
- projection record must identify source ref + projection version;
- migration unknown stays unknown.
35. No-guess / Unknown representation
Gen2 avoids false precision.
Не использовать zero/default как скрытое «unknown», если zero является валидным значением.
Для optional/unknown:
- nullable/optional typed field;
- explicit UNKNOWN enum where state semantics require;
- evidence absence.
Примеры:
LastVerifiedAt absent != 1970-01-01
VersionRef absent != "latest"
Confidence absent != 0 confidence
No price != price 0
36. Data model and model-context safety
36.1 No database dump to LLM
Cognitive provider never receives raw DB rows by default.
Context Compiler produces bounded ContextExcerpt/structured excerpts with source refs.
36.2 Secret isolation
SecretRef may appear in execution plan metadata only when runtime needs to resolve it.
Secret value cannot appear in:
- embeddings;
- ContextBundle;
- ContextAssemblyTrace;
- Experience summary;
- LearningLedger;
- task packet;
- source code/logs.
36.3 External model data policy
Before context leaves local boundary:
Principal/access
-> ContextScope
-> Sensitivity
-> DataPolicy
-> minimization
-> egress acknowledgement/policy
Context selection for local model and external model can differ even for same task.
37. Minimal API contracts implied by data model
Это не final Go signatures, но owners должны иметь bounded operations, а не generic CRUD.
Situation
CreateFocusFrame
ReviseFocusFrame
ActivateFocus
SuspendFocus
ResumeFocus
ResolveCurrentFocus
World
RegisterWorldObject
RegisterKindDefinition
RegisterFacetDefinition
RegisterRelationDefinition
ProposeAlias
ResolveIdentity
ResolveCanonicalRef
Epistemics
RecordObservation
RecordClaim
AssessClaim
RecordEpisodeRevision
RecordExperience
AssessFreshness
QueryEvidence
Capability
RegisterSkillCandidate
ObserveSkillOutcome
Promote/Suspend/RetireSkill
RegisterReflexCandidate
ObserveReflexOutcome
ResolveStrategy
Configuration
RegisterSettingDefinition
AssignSettingValue
ResolveEffectiveSetting
DeprecateDefinition
SELF
RecordCompetenceAssessment
RecordWeaknessPattern
RecordImprovementNeed
AppendLearningLedger
BuildSelfSnapshot
Generic methods вроде PutObject(any)/SaveMemory(any) запрещены.
38. FAST / MILESTONE / FULL validation for data work
Чтобы Gen2 не снова превратился в двухсуточный test loop, data-model implementation follows target testing strategy.
FAST
Для локальной data change:
- compile changed contracts/owner;
- validator unit tests changed type;
- migration SQL parse/basic role check where cheap;
- one targeted repository test;
- architecture/diff guard.
Не запускать go test ./... автоматически.
MILESTONE
После Focus/World/Epistemics, Configuration или Skill/SELF block:
- owner schema/repository tests;
- backfill idempotency;
- migration read equivalence;
- projection rebuild;
- selected household regressions;
- relevant recovery check.
FULL
Только перед крупным architecture phase merge, critical migration/cutover, production canary или final V1 retirement.
39. Required ADR decisions before schema implementation
Canonical Data Model concretizes Target Architecture, но следующие решения должны быть приняты отдельными ADR до соответствующих migrations:
- Scope split physical/contract representation.
- World typed definition/value algebra encoding.
- Epistemics Proposition/Belief/Freshness V2.
- Projection/retrieval storage ownership and rebuild protocol.
- Configuration selector/precedence semantics.
- Skill/Reflex versioning and promotion authority.
- SELF evidence semantics.
- TriggerSpec extension for Continuity.
- ExecutionReceipt vs WorldOutcomeAssessment transition semantics.
- Artifact retention/privacy for ambient multi-person data.
ADR не должен заново открывать уже принятый owner decision без явной Architecture Generation authority.
40. Concepts intentionally NOT canonical in Gen2
Не создавать canonical tables для:
MemoryItem
ModelContext
ContextPrompt
EffectiveConfiguration
CurrentKnowledge
FreshnessScore universal
GlobalSourceTrustScore
AgentPersona
GenericEntityPayload
GenericEventBusMessage
EmbeddingAsKnowledge
LLMThought/ChainOfThought
Reasoning internals модели не нужны как canonical memory. Сохраняются только пользовательски/операционно полезные findings, evidence, decisions, attempts and outcomes.
41. Proposed table families
Имена предварительные; Master Plan/ADR может уточнить, но owner boundaries фиксированы.
situation
focus_frames
focus_frame_revisions
focus_transitions
context_scopes
context_scope_revisions
context_scope_bindings
focus_heads
world
objects
object_heads
kind_definitions
kind_definition_heads
aliases
facet_definitions
facet_definition_heads
relation_definitions
relation_definition_heads
identity_resolution_decisions
identity_lineage
epistemics
sources
source_snapshots
source_excerpts
observations
claims
belief_assessments
belief_heads
episodes
episode_heads
experience_records
reflection_candidates
source_reliability_observations
source_reliability_assessments
world_outcome_assessments
work
goals
tasks
long_running_work
long_running_work_transitions
perspective_specs
consequence_assessments
(existing plan/graph/delegation/run/checkpoint tables)
continuity
commitments
commitment_transitions
prospective_items
prospective_transitions
attention_items
human_responses
capability
skills
skill_revisions
skill_heads
reflexes
reflex_revisions
reflex_heads
(existing capability/provider/binding/usage/evaluation tables)
configuration
setting_definitions
setting_definition_revisions
setting_definition_heads
setting_assignments
setting_assignment_revisions
setting_assignment_heads
self_model
competence_assessments
weakness_patterns
weakness_pattern_revisions
improvement_needs
learning_ledger
self_composition_snapshots
commit
(existing proposals/authorized actions/attempts)
action_attempt_transitions
execution_receipts
artifact
artifacts
artifact_lineage
artifact_segments/segment_index where needed
attestations
projection schemas
retrieval_documents
entity_alias_index
temporal_index
experience_index
knowledge_current_index
embeddings
focus_stack_view
effective_config_cache
Projection schemas use read/write role of projection builder only and are never writable by domain owners as canonical state.
42. What should be implemented first
Canonical Data Model does not mean create all tables at once.
Recommended order for Master Plan:
1. shared primitives + ADRs
2. ContextScope / Focus V2
3. World referents + typed definitions
4. Epistemics Proposition/Freshness/Episode/Experience
5. retrieval projections + Context Compiler V2
6. Configuration
7. Skill V2 + Reflex
8. SELF foundation
9. LongRunningWork extensions
10. Commit receipt/outcome clarification
11. migration/cutover by subsystem
Strict existing Authority/Commit/Continuity semantics remain available throughout.
43. Acceptance criteria for Canonical Data Model
Data Model считается достаточно определённой для Master Plan, если выполняются все условия:
- ни один canonical concept не имеет двух proposed owners;
- нет universal MemoryItem table;
- World хранит referents/definitions, но не фактическую истину мира;
- Epistemics может выразить structured claim + evidence + contradiction + historical truth;
- freshness вычисляется относительно Task requirement, а не permanent stale bit;
- volatility/last verification/version scope могут быть сохранены;
- old knowledge остаётся historical/analogy candidate;
- ContextScope поддерживает Company A/B isolation before similarity;
- Focus Stack не требует project-only schema;
- TypedValue extensible, но arbitrary JSON API запрещён;
- Skill и Reflex имеют stable identity, revisions, applicability and evidence;
- negative experience first-class;
- Configuration supports typed scoped values without ENV explosion;
- secrets существуют только как SecretRef outside normal memory;
- SELF scores evidence-backed;
- long-running work durable and model-independent;
- execution receipt отделён от verified world outcome;
- raw artifacts/evidence могут быть reprocessed future models;
- embeddings/indexes rebuildable;
- V1 migration не требует destructive big bang;
- missing migration semantics remain UNKNOWN rather than guessed;
- one canonical writer during cutover;
- testing supports FAST/MILESTONE/FULL instead of constant full suite;
- future devices/ambient/robots can add World kinds/facets without changing strict operational core;
- future stronger model can rebuild derived memory without changing historical evidence.
44. Decisions carried into Master Plan
Master Plan должен считать уже принятыми следующие решения:
- PRE-GEN2 commit/merge/push/tag baseline выполняется до Gen2 code.
- Gen2 is migration, not greenfield rewrite.
PersonalMemoryV1 retires as canonical-looking mechanism; no new Memory owner.- Situation owns Focus/ContextScope.
- World is new narrow owner.
- Epistemics owns knowledge/evidence/freshness/Experience/world outcome assessment.
- Capability owns Skill/Reflex.
- Configuration and SELF are new owners.
- Continuity remains only owner future relevance.
- Commit keeps mutation/idempotency/unknown-outcome boundary.
- Context Compiler/Memory Retrieval are workers/projections, not canonical owners.
- ENV shrinks to bootstrap.
- Typed dynamic schemas are allowed only behind owner definitions/validation.
- No generic
Entity(any)/MemoryItem(any)/Settings map[string]any. - Full tests are milestone/full gates, not every Codex loop.
45. Следующий документ
После принятия Canonical Data Model следующий обязательный документ:
GEN2_MIGRATION_MAP.md
Он должен пройти по фактическим V1 packages/tables/functions и для каждого поставить:
KEEP
EXTEND
REWORK
REPLACE
RETIRE
с указанием:
- current owner;
- Gen2 owner;
- exact V1 source paths/tables;
- compatibility strategy;
- backfill/cutover;
- rollback;
- FAST/MILESTONE gate;
- dependency on later tasks.
После Migration Map создаётся GEN2_MASTER_PLAN.md и конкретные Codex task packets.
46. Итоговая формула Gen2 Data
RAW EVIDENCE IS PRESERVED
│
▼
STRUCTURED OBSERVATION
│
▼
CLAIM / PROPOSITION
│
▼
EVIDENCE-BACKED ASSESSMENT
│
├───────────── time / version / freshness
├───────────── context / scope
├───────────── source / provenance
└───────────── contradiction / supersession
│
▼
REBUILDABLE MEMORY PROJECTIONS
│
▼
MINIMAL TASK-SPECIFIC CONTEXT
│
▼
REASON / ACT / VERIFY
│
▼
EXPERIENCE
│
├── Skill
├── Reflex
└── SELF learning
Главная гарантия:
Домовой может менять способы понимания, поиска, обучения и даже собственный код, не теряя различия между тем, что действительно было наблюдено, тем, что он когда-то предположил, тем, что сегодня считает доказанным, и тем, что больше нельзя считать актуальным.
Именно это делает память и модель данных пригодными не только для текущего Assistant, но и для системы, которая должна развиваться годами.