Replies: 3 comments
|
+1 from a downstream consumer. We are building a single-user localhost product on top of DSH's public plugin seams, and user-managed Session deletion is a hard privacy requirement for our v0.1 release — we deliberately do not work around its absence with private imports or direct file removal, so this seam is currently our only remaining release blocker. The contract proposed here maps exactly onto what we need: reject live Sessions, idempotent absent results, consistent cleanup of backend-owned derived state, and a Is there any signal from the maintainers on whether a deletion primitive like this could be integrated? Even a rough sense of direction would help us plan whether to keep waiting or to descope deletion from our v0.1 privacy acceptance. Thanks to @wulun811 for the thorough proposal. |
|
We validated the exact DSH The |
|
Thanks @somebear and @fuweiliang988-hub — glad this is getting exercised on real setups, and the checklist is the right pressure for a durable-delete seam. Quick status: the branch is now rebased onto alpha.4 and folds in the derived-state eviction that was open on the rc.8 cut. (Upstream removed the SQLite backend since my first cut, so the seam ships JSONL-only; the backend hook is shared.) On the checklist:
Evidence: 505 unit tests across the touched packages pass, including both eviction paths and their fail-soft branches. Branch: https://github.com/wulun811/deepseek-harness/tree/feat/session-persistence-delete @jl0nd0n0 your rc.2 implementation landed on the same contract independently — worth comparing designs so downstream effort concentrates once. If maintainers have a different deletion design in mind, we'd rather align than invent. |
Uh oh!
There was an error while loading. Please reload this page.
Hi! External contributor here. I implemented a single-session deletion primitive for the persistence seam, with full tests and docs, and would like the team to consider it.
Proposal
SessionPersistencegainsabstract delete(id: SessionId): Promise<void>that permanently removes one stored session's durable log, or cancels a created-but-never-appended create intent:Sessionor a reserved preparation rejects.createmay reuse it.session-persistence/deleted(after clearing coordinator state), so derived data can react.PersistenceBackendgainsdeleteStored(id)(idempotent no-op for an already-absent artifact). JSONL unlinks the artifact (POSIX fsyncs the parent directory; Windows skips - write-through). SQLite deletes the session row in oneBEGIN IMMEDIATEtransaction; events cascade viaON DELETE CASCADE.Full details, alternatives, and consequences are in an Agent Note in the branch:
.agents/notes/implemented/architecture/2026-08-21-session-persistence-single-session-deletion.md.Implementation
Complete and verified on branch: https://github.com/wulun811/deepseek-harness/tree/feat/session-persistence-delete (commit
7f29826970)pnpm run typecheck,pnpm run lint, and the doc gates (translation-pairing, cordis-catalog, scoped-events, doc-budgets, md-wrap, export-jsdoc, package-invariants, readme-limitations) all pass.subagent/list-childrenfailure was a parallel-run flake (passes 3/3 in isolation). None relate to this change.Why it matters
The persistence seam is append-only with no deletion primitive; pruning stored sessions is out-of-band backend maintenance, and nothing notifies derived data when a stored id becomes unusable. A deletion primitive is the foundation for session management: retention policies, GC, and recursive subtree deletion can build on it.
I understand the repo does not currently accept external pull requests - happy to adapt to whatever review or integration process you prefer. Thanks for considering it.
All reactions