Part of #179 .
Entry kinds contextEviction / contextRecall (format v4, forward rejection in runMigrations), fold.ts, project.ts, byte-stable markers, policies/age-horizon.ts reproducing today's selection through the ledger, engine.ts replacing the mask stage in runAutoCompact (no replaceEntries), context(scope="recall"), /context working-set section, transcript evicted tag, context.workingSet settings block (enabled: true, policy: age-horizon). Legacy destructive mask behind CLIO_CODER_LEGACY_MASK=1 for one release.
Acceptance
Scripted runAutoCompact appends one contextEviction and never calls replaceEntries; with enabled: false the summary stage is reached directly.
age-horizon selects the same set of entries maskStaleObservations would have rewritten (floor disabled).
Recall round-trips byte-exact and appends contextRecall; off-path and not-evicted refs return typed errors naming the nearest valid ref.
Fork and /tree cases pass through filterEntriesToActivePath (fix(session): /tree switch and /fork reconstruct different state from the same turn #94 ).
Every switch (entry.kind) site handles the new kinds (exhaustiveness test).
npm run ci green.
Part of #179.
Entry kinds
contextEviction/contextRecall(format v4, forward rejection inrunMigrations),fold.ts,project.ts, byte-stable markers,policies/age-horizon.tsreproducing today's selection through the ledger,engine.tsreplacing the mask stage inrunAutoCompact(noreplaceEntries),context(scope="recall"),/contextworking-set section, transcriptevictedtag,context.workingSetsettings block (enabled: true,policy: age-horizon). Legacy destructive mask behindCLIO_CODER_LEGACY_MASK=1for one release.Acceptance
runAutoCompactappends onecontextEvictionand never callsreplaceEntries; withenabled: falsethe summary stage is reached directly.maskStaleObservationswould have rewritten (floor disabled).contextRecall; off-path and not-evicted refs return typed errors naming the nearest valid ref./treecases pass throughfilterEntriesToActivePath(fix(session): /tree switch and /fork reconstruct different state from the same turn #94).switch (entry.kind)site handles the new kinds (exhaustiveness test).npm run cigreen.