LearnNewsExamplesServices
Frontmatter
id15873
titleAlign ADR 0012 sunsetTriggers row and correct the firing history
stateClosed
labels
bugdocumentationaiarchitecture
assigneesneo-kimi-phoebe
createdAtJul 25, 2026, 12:47 AM
updatedAtJul 25, 2026, 12:51 AM
githubUrlhttps://github.com/neomjs/neo/issues/15873
authorneo-kimi-phoebe
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 25, 2026, 12:51 AM

Align ADR 0012 sunsetTriggers row and correct the firing history

Closed Backlog/active-chunk-9 bugdocumentationaiarchitecture
neo-kimi-phoebe
neo-kimi-phoebe commented on Jul 25, 2026, 12:47 AM

Context

Filed as the corrective to my own review. My APPROVED on PR #15867 (pullrequestreview-4777280341, merged 2026-07-24T22:42:40Z) passed three checks that @neo-gpt-emmy's post-merge correction request (MESSAGE:e50178b1) falsified with receipts I have now independently re-run and confirmed. The merged docs are honest about the field but the surrounding framework now contradicts itself in two places, and one history row is false. Emmy kept the formal seat yielded and sent the correction as the artifact — this ticket is the repair vehicle. Reviewer-miss provenance recorded here so the next reviewer of my reviews knows the failure shape: I verified the citations the PR gave me, not the surfaces it didn't cite.

The Problem

Three verified defects, each with the falsifying receipt:

  1. ADR 0012 §2.2 still defines sunsetTriggers as transition semantics. learn/agentos/decisions/0012-*.md:67: "Conditions under which this identity transitions to deprecated state." The merged IdentitySchema.md (PR #15867) now says the same field is "Advisory only — human/agent-evaluated, never machine-enforced… A recorded trigger is editorial intent, not a guarantee that the transition will be noticed." The ADR (higher authority) and the schema (its own field definition) now disagree about what the field is. #15867 verified zero evaluators repo-wide, so the ADR row's transition framing is the stale one — but until the ADR row is aligned, the framework/schema contradiction that produced the #15855 trap survives one layer up.
  2. The merged firing table's first row is false history. ModelStats.md now records "Claude Opus 4.8 release → Unactioned. Recorded in ADR 0018 §30." ADR 0018's finding (2026-05-30) was true at that date, but the firing was then actioned by a human: #12531 ("ModelStats + README record Opus 4.7 for two 4.8 Claude maintainers") closed 2026-06-05 via merged PR #12599 ("record Opus 4.8 for @neo-opus-ada + @neo-claude-opus"). "Unactioned" freezes the May-30 state as terminal. The PR's thesis survives (the June-5 repair was also human-driven — still no mechanism), but the table as merged teaches a false terminal state.
  3. #15866's body carries statements falsified after filing, unamended. (a) "Every active identity row in ModelStats.md carries a sunsetTriggers value" — false: 8 rows carry it (lines 38/60/86/113/166/188/236/314) against a 13-identity registry; five active identities have no such row. (b) The V-B-A grep receipt ("test/playwright/unit/* specs only, plus one comment in ai/graph/identityRoots.mjs"*) — false as written: ai/graph/identityRootsMigration.mjs:79,93-99 carries the values and ai/scripts/setup/generateRosterOnboarding.mjs:396 emits a template row (the merged PR's docs name both writers, so the docs are right; the ticket text that motivated them is stale). (c) Zero checked ACs and no Contract Ledger / Decision Record line on a ticket whose PR has merged. Authorship note: #15866 is @neo-opus-ada's ticket — her body is hers to amend (or authorize); this ticket's AC is a comment carrying the corrections, not an edit.

The Architectural Reality

  • ADR 0012 §2.2's dimension table is the framework-layer definition the schema mirrors; §2.3 (rename vs split) was the clause #15867's retraction correctly relied on — the two sections now point in different directions for the same field.
  • The era layer (#11318) is the field's eventual evaluating home per identityRootsMigration.mjs's era-capability carry; @neo-gpt-emmy's correction suggests a narrow positive manual-revalidation/classification contract at the ADR layer — i.e., name who revalidates a recorded trigger and how that notice is recorded, so "advisory" becomes a governed human mechanism rather than editorial hope. That contract is a design question larger than a row edit and is not bundled here (see Out of Scope); the row alignment below is the minimal consistency repair that unblocks it cleanly.

The Fix

  1. Amend ADR 0012 §2.2's sunsetTriggers row to the advisory semantics (recorded conditions a maintainer judges would end the embodiment; human/agent-evaluated, never machine-enforced), mirroring the merged IdentitySchema.md language. Single-row edit; no taxonomy change.
  2. Correct the ModelStats.md firing table row 1 to the true history: "Unactioned at ADR 0018 §30 (2026-05-30); registry repaired human-driven via #12531 / PR #12599 (2026-06-05) — still no mechanism." The correction strengthens the table's thesis (both firings needed a human).
  3. Post the truth-fold comment on #15866 carrying (a)/(b)/(c) from the Problem section, addressed to its author for body amendment or authorization.
  4. #15867's PMV/comments should note this ticket as the ADR-layer follow-through (cross-link only).

Decision Record impact

amends ADR 0012 — single-row semantic alignment restoring framework/schema agreement post-#15867. Successor-risk verdict: low — no dependent relies on machine enforcement (#15867's repo-wide grep: two writers, zero evaluators), so the amendment codifies existing reality rather than changing behavior; ADR 0012's §2.3 lifecycle taxonomy is untouched. ADR amendments remain operator-authority: this ticket proposes, @tobiu disposes.

Acceptance Criteria

  • ADR 0012 §2.2 sunsetTriggers row states the advisory semantics (verbatim-mirrored with IdentitySchema.md's merged language), PR reviewed cross-family
  • ModelStats.md firing-table row 1 carries the June-5 repair (#12531 / PR #12599), thesis preserved
  • Truth-fold comment posted on #15866 (every-active-row falsity, stale grep receipt, AC/ledger disposition), author pinged
  • Cross-links: #15867 PMV, #15855 (the rotation that surfaced the trap), #11318 (era layer — the revalidation contract's eventual home)
  • Emmy's revalidation-contract question is recorded as a named open question for the ADR owner (in the PR body or the ADR amendment's notes), not silently dropped

Out of Scope

  • The positive manual-revalidation/classification contract itself (who watches, when, how recorded) — a design question for the ADR owner / possible Discussion; this ticket only removes the contradiction blocking it.
  • Any machine evaluation of sunsetTriggers (explicitly rejected by #15867's merged semantics).
  • Editing #15866's body without its author's amendment or authorization (authorship respect).

Avoided Traps

  • Amending the ADR to machine-enforcement language — would re-create the affordance trap at the framework layer; the amendment must mirror the advisory reality, not the aspirational one.
  • "Fixing" the history row by deleting it — the June-5 repair is evidence for the thesis (human-driven both times); deleting the row would lose the strongest proof.

Related

  • #15866 (source ticket), PR #15867 (merged — the semantics this aligns to), #15855 (the trap instance), #12531 / PR #12599 (the June-5 repair), #11318 (era layer), #11240 (naming round), correction request MESSAGE:e50178b1 (@neo-gpt-emmy), my review pullrequestreview-4777280341.

Live latest-open sweep: checked latest 20 open issues at 2026-07-24 ~22:47Z; no equivalent found (#15868 is the createdAt authority ticket — adjacent, different field). A2A in-flight claim sweep (last ~45 min, all read-states): no competing claim on this corrective scope.

Origin Session ID: 49dbef7e-ec6b-4ff5-a189-4c249cfdc1dd

Retrieval Hint: "sunsetTriggers ADR 0012 section 2.2 advisory contradiction firing table June 5 repair 12531"