I3145 — Continuity is resolved and judged fresh by one function, and the shell's copies are deleted
ADR 0047 steps 5 and 6: continuity.state, lifecycle.*, episodes.* and the Cockpit read the domain's aggregates; mj_resolve_latest and mj_freshness are deleted and their callers ask the executable, so nothing in lib/ holds domain state.
BLOKOVÁNO vlna 4 · p2 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3143, I3144 are done. The status is derived from that, not declared.
Cíl
ADR 0047 steps 5 and 6: continuity.state, lifecycle.*, episodes.* and the Cockpit read the domain's aggregates; mj_resolve_latest and mj_freshness are deleted and their callers ask the executable, so nothing in lib/ holds domain state.
Proč
Freshness is implemented twice (lib/common.sh mj_freshness and Freshness in capability/builtin/continuity.rs), both reading session.freshness in .ai/repo/policy.yaml; ADR 0047 names the duplicated resolution for deletion. Sources: chatgpt-majordomus:c116#7.
Aktuální stav
Two resolvers and two freshness functions agree today by construction of the same policy keys.
Cílový stav
One resolver and one freshness function, in Rust; a structural case proves the session libraries carry no lifecycle semantics.
Rozsah
- lib/common.sh
- lib/handover.sh
- lib/context.sh
- apps/majordomus-cli/src/continuity
- apps/majordomus-cli/src/capability/builtin/continuity.rs
- apps/majordomus-cli/src/capability/builtin/lifecycle.rs
- apps/majordomus-cli/src/capability/builtin/episodes.rs
- .ai/repo/automation/inventory.jsonl
Mimo rozsah
- Changing the freshness thresholds
Závislosti
- I3143BLOCKED Each provider lifecycle event leaves a typed receipt written by the domain before any guard can return early
- I3144BLOCKED Checkpoints and handovers are recorded against the episode, and the shell only parses and renders them
Kritéria přijetí
- No freshness threshold or resolution order remains in shell
- cases 127, 131_freshness_has_an_age and 368 pass unchanged
- The inventory records of lib/session.sh, lib/checkpoint.sh and lib/handover.sh leave disposition A with a reason, as a consequence of the structural case, not as its proof
Validace
- bash test/run.sh --no-skips 127_briefing_freshness 131_freshness_has_an_age 368_mesh_handover_resolves
- bin/majordomus-cli shell check
Požadované důkazy
- case_one_resolver
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3145.yaml. Read it back with majordomus plan show I3145.