Part of #100 (EPIC). Workstream N. One issue = one PR.
Source: zmem deep audit 2026-09-10 (https://claude.ai/code/artifact/39012f75-25f0-441b-978f-cc90a3bd3a9d) and issue plan v3 (https://claude.ai/code/artifact/59e74242-17da-4416-9b00-0b0cf347837c); dependency DAG computed over all open PRs (edge kinds: Depends on = merged artifact, Schema after = migration lane, Gated on = #100 measurement/decision gate).
Labels: enhancement, severity:low. Depends on: none. Blocks: none.
Design. Register SessionEnd (main thread only; no Interrupt entry) with timeout: 2 calling the existing session-end verb, which performs file unlinks only.
Acceptance criteria. (a) Manifest test: Codex has a SessionEnd entry and no Interrupt entry. (b) Verb test with subprocess patched to raise: ledger and pending files still removed. (c) The verb performs zero subprocess spawns (call-count assertion) and completes under 200 ms of fake-scheduler time.
Part of #100 (EPIC). Workstream N. One issue = one PR.
Source: zmem deep audit 2026-09-10 (https://claude.ai/code/artifact/39012f75-25f0-441b-978f-cc90a3bd3a9d) and issue plan v3 (https://claude.ai/code/artifact/59e74242-17da-4416-9b00-0b0cf347837c); dependency DAG computed over all open PRs (edge kinds: Depends on = merged artifact, Schema after = migration lane, Gated on = #100 measurement/decision gate).
Labels: enhancement, severity:low. Depends on: none. Blocks: none.
Design. Register
SessionEnd(main thread only; noInterruptentry) withtimeout: 2calling the existingsession-endverb, which performs file unlinks only.Acceptance criteria. (a) Manifest test: Codex has a
SessionEndentry and noInterruptentry. (b) Verb test withsubprocesspatched to raise: ledger and pending files still removed. (c) The verb performs zero subprocess spawns (call-count assertion) and completes under 200 ms of fake-scheduler time.