Skip to content

Sleep phases

1. The order

memhtml sleep run runs 17 phases in the order below, on a review branch, and each committing phase makes its own commit there. --phases runs any subset of them.

The last column names the phases that a failure here blocks. Those are the hard prerequisites the runner reads, so a phase with an empty cell can fail without stopping the rest.

# Phase Commits Calls a model Blocked if it fails
1 preflight no no dedup-merge, entity-resolution, person-links, relationship-mining, edge-typing, confidence-decay, arc-synthesis, retention-triage, compress, reprieve, trace-consolidation, task-detection, placement-triage, integrity, state-export, report
2 dedup-merge yes yes compress, retention-triage
3 entity-resolution yes yes -
4 person-links yes no -
5 relationship-mining no no -
6 edge-typing yes yes -
7 confidence-decay yes no -
8 arc-synthesis yes yes -
9 retention-triage yes no -
10 compress yes yes -
11 reprieve yes no -
12 trace-consolidation yes yes -
13 task-detection yes yes -
14 placement-triage yes yes -
15 integrity yes no -
16 state-export yes no -
17 report yes no -

8 of the phases call a model. The rest are deterministic, so a run with no credentials still gets through them.

2. Why this order

The seventeen phases, in execution order.

The order encodes the predecessor memory system’s dependencies (design §6): entity resolution precedes person links so aliases have already merged, confidence decay precedes retention triage so triage scores the decayed value, and dedup-merge precedes compress and retention because both operate on the post-merge set.

task-detection sits after trace-consolidation and before integrity, and both edges are deliberate. It scans the ACTIVE corpus for unresolved commitments, so it has to run after every phase that changes what is active — after dedup’s folds, after retention’s evictions, after compress’s canonicals, and after trace consolidation’s newly distilled memories, which are the freshest text of the night and the likeliest to carry one. And it WRITES files, so it must precede integrity, which repairs dangling hrefs and regenerates the directory artifacts: a task minted afterwards would be absent from its directory’s index.html until the next night.

placement-triage is deep-only (issue #63): on a run without --deep it returns immediately, writes nothing, and commits nothing, so a default run’s behavior is unchanged by its presence in this list. Its slot has the same two edges task-detection’s does, plus one more on each side: it must run after compress (it re-files only what even deep grouping could not fold, so folding has to have had its chance first) and after task-detection (a move mid-scan would hand the detector paths that no longer hold files), and it must precede integrity because it MOVES files — integrity regenerates each directory’s index.html, and it rewrites inbound hrefs itself because integrity’s dangling-href repair only knows how to chase a target into the ARCHIVE, not into a topic directory.

3. Provenance

A loader generates this page from packages/sleep/src/contract.ts while the site builds, so no file in the repository holds it: the phase names, the committing set, the model-calling set, and the hard prerequisites are four constants there, and they are the same four the runner, memhtml sleep resume, and the run report read. Change the registry and this page changes with it.