Context
The epic's gating leaf: #14472's measurement floor decides the anchoring architecture (Matrix-1: A graph-native edges at add_memory time / C derived nightly index / D candidate-now-promote-later), and this leaf executes that decision — data first, disposition recorded, implementation follows in the same PR chain. Filed in the operator-directed full-fledging pass; live latest-open sweep 2026-07-02T19:37:34Z: no equivalent ticket.
This is the ONE leaf whose outcome may amend an ADR: the graduation's Decision-Record ruling is ADR-0024 amendment iff the disposition lands on A (graph-native); recorded either way.
The Problem
Concept anchoring is the epic's foundation question and it is deliberately undecided: the graduation refused to pick A/C/D from ambition after two independent probes disagreed on live edge state within minutes (frontier churn). The decision inputs now exist or are accumulating: the #14454 route-attribution ledger emits per production handoff (durability/churn evidence), and the #14474 probe artifact supplies neighborhood reachability + axis-presence reality. Until this leaf lands, consumers 1/3/4 run over UNANCHORED memory-concept linkage (TAGGED_CONCEPT only) — workable, but the multi-hop walks the graduation designed for (concept → sibling → attached memories → decisions) stay shallow.
The Architectural Reality
- Option A (graph-native): MEMORY→CONCEPT edges written at
add_memory time. Falsifier: measurable degradation of the never-fail write contract (the #12972 hardening arc) — benchmark before adopting. Durability disposition is part of A (from Matrix-1): (i) re-derive neighborhoods from source truth per cycle, OR (ii) amend ADR 0023/0024 to protect PROMOTED concept edges — ai/services/memory-core/GraphService.mjs:73 PROTECTED_EDGE_TYPES (decay exclusion applied at :642-651), OR (iii) keep decaying-scent semantics and accept re-derivation.
- Option C (derived nightly): Dream-window consolidation computes concept↔memory mappings; zero write-path risk (ADR 0023 role-consistent). Falsifier: consumer-4's re-derivation detection needs intra-day freshness — test against actual wake cadence data.
- Option D (candidate→promote, the GPT-family cycle-1 shape): cheap candidate tags at write time; durable graph edges only on promotion. Falsifier: promotion latency starving same-day consumers degrades D to C's staleness.
- The flagged hypothesis with falsifier (Matrix-1/A, from the graduation): "durable structural weight lives on type-gated-out concepts" holds only if decay actually preserves concept-edge weight through a cycle — existence ≠ durability. TRUE → the type-gate blocks a second consumer class; FALSE → concepts are invisible AND decaying (urgency upgrade). The ledger emissions answer this.
The Fix
One PR chain, decision-then-implementation:
- Disposition artifact (
learn/agentos/measurements/): aggregate ≥5 production ledger emissions (edge-weight persistence across cycles → the durability hypothesis verdict) + the #14474 reachability/axis data + an add_memory write-path micro-benchmark (A's falsifier, measured not assumed). Apply each option's falsifier; record the disposition ON THE EPIC with data cites.
- Implement the surviving option: A → edge writes behind the never-fail contract (write-through with isolation: an edge failure never fails the memory write) + the chosen durability disposition (i/ii/iii); C → Dream-window derivation pass; D → candidate tags + promotion rules into the existing curation tiers.
- ADR text: iff A, the ADR-0024 amendment (protected-types change or re-derivation policy) rides in the same PR; iff C/D, a decision note on the epic records why no amendment.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
add_memory write path (iff A) |
#12972 never-fail contract |
Anchor-edge write isolated; memory write never fails on edge failure |
Edge-write error → logged, memory committed, edge queued for repair |
Service JSDoc |
Micro-benchmark + fault-injection spec |
PROTECTED_EDGE_TYPES (GraphService.mjs:73, iff A+ii) |
ADR 0024 |
PROMOTED concept edges protected from decay |
Non-promoted stay decaying (scent preserved) |
ADR amendment |
Decay-cycle spec |
| Dream window (iff C) |
ADR 0023 consolidation role |
Nightly concept↔memory derivation |
Missed window → previous mapping serves, staleness stamped |
DreamService JSDoc |
Cadence spec |
Decision Record impact
conditional: amends ADR 0024 iff disposition = A (+possibly ADR 0023); aligned-with otherwise, with the disposition note recorded on the epic either way. This line is the leaf's defining property — flag it in review routing.
Acceptance Criteria
Out of Scope
- Retrieval/render consumption (consumer leaves own it).
- Re-anchoring historical memories beyond what the chosen option's backfill defines (backfill scope stated in the disposition artifact, not assumed).
Avoided Traps
- Deciding from ambition — the graduation re-opened its own criterion twice for exactly this; the falsifiers run against DATA or the leaf does not proceed.
- Write-path heroism — under A, the memory write's never-fail contract outranks anchoring completeness, permanently.
- Silent ADR bypass — an A-implementation without the amendment (or a C/D without the no-amendment note) fails the Decision-Record ruling carried from graduation.
Sequencing
Hard-gated on: the #14474 measurements artifact + ≥5 production ledger emissions (count at claim time: ls learn/agentos/measurements/ + the handoff cadence since 1666a3de4). The falsifier data, not the calendar, opens this leaf.
Related: #14472 (parent epic), #14454 + #14474 (decision inputs), #14502 (spine unification — anchor to canonical ids), ADR 0023 / ADR 0024, Discussion #14422 (Matrix-1 + OQ1)
Origin Session ID: 8cf234b7-e698-47ca-99e2-bf865196b6aa
Retrieval Hint: OQ1 anchoring disposition graph-native derived candidate-promote falsifiers protected edge types
Context
The epic's gating leaf: #14472's measurement floor decides the anchoring architecture (Matrix-1: A graph-native edges at
add_memorytime / C derived nightly index / D candidate-now-promote-later), and this leaf executes that decision — data first, disposition recorded, implementation follows in the same PR chain. Filed in the operator-directed full-fledging pass; live latest-open sweep 2026-07-02T19:37:34Z: no equivalent ticket.This is the ONE leaf whose outcome may amend an ADR: the graduation's Decision-Record ruling is ADR-0024 amendment iff the disposition lands on A (graph-native); recorded either way.
The Problem
Concept anchoring is the epic's foundation question and it is deliberately undecided: the graduation refused to pick A/C/D from ambition after two independent probes disagreed on live edge state within minutes (frontier churn). The decision inputs now exist or are accumulating: the #14454 route-attribution ledger emits per production handoff (durability/churn evidence), and the #14474 probe artifact supplies neighborhood reachability + axis-presence reality. Until this leaf lands, consumers 1/3/4 run over UNANCHORED memory-concept linkage (
TAGGED_CONCEPTonly) — workable, but the multi-hop walks the graduation designed for (concept → sibling → attached memories → decisions) stay shallow.The Architectural Reality
add_memorytime. Falsifier: measurable degradation of the never-fail write contract (the #12972 hardening arc) — benchmark before adopting. Durability disposition is part of A (from Matrix-1): (i) re-derive neighborhoods from source truth per cycle, OR (ii) amend ADR 0023/0024 to protect PROMOTED concept edges —ai/services/memory-core/GraphService.mjs:73PROTECTED_EDGE_TYPES(decay exclusion applied at:642-651), OR (iii) keep decaying-scent semantics and accept re-derivation.The Fix
One PR chain, decision-then-implementation:
learn/agentos/measurements/): aggregate ≥5 production ledger emissions (edge-weight persistence across cycles → the durability hypothesis verdict) + the #14474 reachability/axis data + anadd_memorywrite-path micro-benchmark (A's falsifier, measured not assumed). Apply each option's falsifier; record the disposition ON THE EPIC with data cites.Contract Ledger Matrix
add_memorywrite path (iff A)PROTECTED_EDGE_TYPES(GraphService.mjs:73, iff A+ii)Decision Record impact
conditional: amends ADR 0024 iff disposition = A (+possibly ADR 0023); aligned-with otherwise, with the disposition note recorded on the epic either way. This line is the leaf's defining property — flag it in review routing.
Acceptance Criteria
Resolvesthis leaf,Refs#14472Out of Scope
Avoided Traps
Sequencing
Hard-gated on: the #14474 measurements artifact + ≥5 production ledger emissions (count at claim time:
ls learn/agentos/measurements/+ the handoff cadence since1666a3de4). The falsifier data, not the calendar, opens this leaf.Related: #14472 (parent epic), #14454 + #14474 (decision inputs), #14502 (spine unification — anchor to canonical ids), ADR 0023 / ADR 0024, Discussion #14422 (Matrix-1 + OQ1)
Origin Session ID: 8cf234b7-e698-47ca-99e2-bf865196b6aa
Retrieval Hint:
OQ1 anchoring disposition graph-native derived candidate-promote falsifiers protected edge types