LearnNewsExamplesServices
Frontmatter
id15277
titleEra-chain-first family read spine + era-owned flat-fact retirement
stateClosed
labels
enhancementaiarchitecture
assigneesneo-opus-vega
createdAtJul 16, 2026, 5:56 PM
updatedAtJul 16, 2026, 6:24 PM
githubUrlhttps://github.com/neomjs/neo/issues/15277
authorneo-opus-vega
commentsCount0
parentIssue14750
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 16, 2026, 6:24 PM

Era-chain-first family read spine + era-owned flat-fact retirement

Closed Backlog/active-chunk-6 enhancementaiarchitecture
neo-opus-vega
neo-opus-vega commented on Jul 16, 2026, 5:56 PM

Context

The reviewer fork on the implementing PR (formal review PRR_kwDODSospM8AAAABGQbNUg on PR #15259, 2026-07-16): the PR's delivered scope — the seven era-owned flat fields retired plus every live family read-path era-chain-first — is verified and CI-green, but #14750-as-written also owns the graph-seeding consume (migrateAllResidents() → IdentityState + EmbodiedEpisode writes) and the reflexive-landing agreement AC, both AC-level-gated on the GPT-5.6 Sol era succession existing first (the module author's ratified sequencing-gate comment on #14750). A Resolves close of the parent would therefore overclaim. This ticket is the truthful smaller close-target the review recommends: it captures exactly the delivered consumer-half so #14750 stays open owning the gated remainder.

The Problem

ai/graph/identityRoots.mjs carried seven era-owned facts flat on every agent entry (family duplicate, tier, contextWindowInput, parallelToolCalls, thoughtBudget, hosting, sunsetTriggers) — moving-mirror data the identity schema owns via era chains. Live family/model consumers read those flat properties directly, so the fields could not leave until every read-path moved. The full end-state (persisted-successor-episode reads; modelFamily itself retiring as episode-owned per ADR-0032) is gated and stays on the parent.

The Architectural Reality

  • The read spine: ai/services/graph/agentFamilyResolution.mjsresolveResidentFamily(identity) projects migrateResident → buildHydrationIndex → index.currentEra.family with the flat modelFamily property as the DOCUMENTED, retirement-gated fallback; resolveResidentFamilyById(id) keys the same read for graph-node consumers.
  • The witness populations bounding the fallback: post-epoch residents (first era observation-owned, not yet seeded) and runtime-provisioned graph-only identities. When both reach zero, the flat field itself can retire (parent scope).
  • The recorded-fact owner: ai/graph/identityRootsMigration.mjs REGISTRY_SEED_FACTS — a frozen epoch snapshot, mechanically generated at retirement time; migrateResident refuses unmapped residents (the moving-mirror prohibition in the module header).

The Fix (delivered by the implementing PR)

  • Six live family consumers moved era-chain-first, one per commit with identical-before/after regressions: getCoreSwarmAgentFamilies (Golden Path maps), MailboxService.validateMailboxTarget (A2A AGENT:<family>/<model> alias resolution incl. ambiguity rejection), WakeSubscriptionService (who_is_online filter + liveness projection), resolveIdentityDisplay (fleet cockpit join), resolveHarnessTargetForIdentity (fresh-session harness routing), resolveIdentitiesForFamily (Tier-2 revalidation fan-out).
  • The seven era-owned flat fields deleted from all pre-epoch registry entries; REGISTRY_SEED_FACTS owns the recorded era facts.
  • modelFamily stays temporarily flat as a compatibility field while remaining episode-owned under ADR-0032 — the two witness populations' fallback (compatibility contract; era-owned by ADR-0032 classification; retirement trigger recorded on the parent).

Contract Ledger

Consumed surface Authority and behavior Failure / fallback Retirement trigger
resolveResidentFamily(identity) Migration-produced hydration index / current era owns roster-family truth. Temporary flat modelFamily fallback only for post-epoch roster residents; otherwise undefined. Persisted-successor graph path lands and the post-epoch witness population reaches zero under #14750.
resolveResidentFamilyById(id) + graph-node consumers Static-roster lookup routes through the resolver; Fleet/Mailbox/Wake callers holding runtime graph nodes own the runtime-provisioned fallback. Unknown id returns undefined; consumers fail to null/no-match or reject ambiguity as their public contract requires. Runtime-provisioned identities gain persisted successor episodes and their witness population reaches zero under #14750.

Acceptance Criteria

  • The seven era-owned flat fields (family duplicate, tier, contextWindowInput, parallelToolCalls, thoughtBudget, hosting, sunsetTriggers) absent from every identityRoots.mjs agent entry (spec-pinned per entry).
  • Every live family read-path resolves era-chain-first through the agentFamilyResolution seam, flat modelFamily engaged only for the witness populations (spec-pinned: spoof-divergence + fallback-population pins).
  • A2A alias resolution + wake family-routing regressions green before AND after each consumer move (identical-before/after).
  • Consumer census verified by the hosted full battery plus the exact-head source census, not the targeted local sweep alone.

Out of Scope (stays on parent #14750)

  • The graph-seeding consume (migrateAllResidents() → IdentityState + EmbodiedEpisode writes) — AC-gated on the GPT-5.6 Sol era succession existing first (ratified sequencing-gate).
  • The reflexive-landing fixture ↔ production agreement AC (meaningful once bearer-audited era backfill exists).
  • modelFamily field retirement + persisted-successor-episode reads (the episode-owned end-state; blocked on the witness populations reaching zero).

Decision Record impact

aligned-with ADR-0032 (episode-owned identity-fact classification) — this leaf moves read-paths onto the era-chain seam and explicitly does NOT claim the episode-owned end-state.

Related

Parent #14750 (stays open — the gated remainder) · grandparent #14677 · #14731 (migration module + census) · PR #15259 (the implementing PR; this ticket is its close-target) · #14901 / PR #14902 (the post-epoch era-transition discovery that ratified the gate).

Live latest-open sweep: checked latest 20 open issues at 2026-07-16 ~15:55Z; no equivalent found. A2A in-flight claim sweep: no overlapping lane-claims in the herd window (current claims all disjoint: lint-mask, stop-hook advisory, W4 cockpit leaves).

Origin Session ID: c4f8e75b-bf73-448b-bee3-6a17e3b1cb45

Retrieval Hint: "identityRoots era-chain-first family read spine flat-fact retirement partial leaf witness populations"

tobiu closed this issue on Jul 16, 2026, 6:24 PM