Problem
The Identity-State Schema epic (#14677) needs its foundational node-type definitions before any consumer can build. Every downstream leaf — the hydration-index, the reflexive-landing test, era-migration, the render-model consumer wiring — reads these two node-types. Without them there is no schema to hydrate, test, or render. This is the load-bearing first leaf.
Intended shape (ADR-0032 §2.3.3, normative)
IdentityState — the never-renamed operational anchor (the stable handle a resident is always addressable by) + an opt-in social layer (display name, salute, the disclosable prior). The anchor is immutable; everything mutable lives in eras.
EmbodiedEpisode — eras that OWN the capability / model / family facts. Family is an era attribute: a family swap (Opus→Fable) re-renders the same resident via a new era on the same identity, never a new identity node.
- The two relate: an
IdentityState has an ordered sequence of EmbodiedEpisode eras; the current era is the head.
Acceptance Criteria
Contract Ledger
| Surface |
Contract |
Consumer |
IdentityState node-type |
never-renamed anchor + opt-in social layer |
hydration-index leaf · render-model (ADR-0032) · reflexive-landing test |
EmbodiedEpisode node-type |
era owns capability/model/family; family = era attribute |
era-migration leaf · FM cockpit FamilyRail (#14635) · render-model |
IdentityState → era relationship |
ordered eras, current = head |
hydration-index · render-model |
Notes
- Leaf, one-PR-deliverable (
Resolves this); parent epic #14677 (Refs, never a close-target).
- Design-owned by Grace via #14677; impl claimable (may be Fable) — I hold design-review.
- Provenance: ADR-0032 §2.3.3/§2.4; revives the concept from Gemini's closed #11318. The
--fm-family-* era-attribute binding (#14635) is a live downstream consumer, so the era shape must land before that primitive wires.
Problem
The Identity-State Schema epic (#14677) needs its foundational node-type definitions before any consumer can build. Every downstream leaf — the hydration-index, the reflexive-landing test, era-migration, the render-model consumer wiring — reads these two node-types. Without them there is no schema to hydrate, test, or render. This is the load-bearing first leaf.
Intended shape (ADR-0032 §2.3.3, normative)
IdentityState— the never-renamed operational anchor (the stable handle a resident is always addressable by) + an opt-in social layer (display name, salute, the disclosable prior). The anchor is immutable; everything mutable lives in eras.EmbodiedEpisode— eras that OWN the capability / model / family facts. Family is an era attribute: a family swap (Opus→Fable) re-renders the same resident via a new era on the same identity, never a new identity node.IdentityStatehas an ordered sequence ofEmbodiedEpisodeeras; the current era is the head.Acceptance Criteria
IdentityStatenode-type defined in the graph substrate per ADR-0032 §2.3.3 (anchor field never-renamed; social layer opt-in / nullable).EmbodiedEpisodenode-type defined: owns capability / model / family; family is an era attribute.IdentityState → EmbodiedEpisoderelationship (ordered eras; current = head) is expressible.IdentityState(no new identity node) — unit-covered.Contract Ledger
IdentityStatenode-typeEmbodiedEpisodenode-typeIdentityState → erarelationshipNotes
Resolvesthis); parent epic #14677 (Refs, never a close-target).--fm-family-*era-attribute binding (#14635) is a live downstream consumer, so the era shape must land before that primitive wires.