Repository navigation
Add deepseek-lossless adapter, web presets, e2e recipe - #8
SutuSebastian wants to merge 86 commits into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
Walkthrough
Merge Risk:
|
🦋 Changeset detectedLatest commit: 6944136 The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
…ird-party backends
…ecar restore Fixes Greptile P2 4389431440 (tool result prefix) and 4389431449 (remount restore qualifier).
|
@pullfrog review |
There was a problem hiding this comment.
Important
Manual /lcm compact fails on exactly the sessions that need it most (long pre-mount histories and races with the async mount backfill). The auto seam path heals the same mirror gap; the DAG bracket path does not. The remaining notes are minor inconsistencies worth aligning before merge.
Reviewed changes
- DeepSeek adapter (
packages/deepseek/src/): per-session SQLite mirror with paged/capped async backfill, shared ladder overdshModelHost, DAG bracket transaction plus engine override, four recall tools with cross-session search, and eleven/lcmverbs with dry-run defaults. - Shared core seams (
packages/core/src/): order-dependent recall scope machine with removed-row handling,readMetricRowssession/limit filters plus usage tally helpers,SidecarStoresevict/clear,selectCompactableRange, and exportedtoolNameOfText. - Pi pass conditions:
mechanicalToolsjoins the compared pass-condition set so async passes go stale on tool-list change. - Web presets (
packages/deepseek-web/): four generated Lossless presets plus thesync-lossless-presetsgenerator pinned to the harness version. - Docs and releases: DeepSeek guides, reference, audited comparison, nav/home wiring, and per-package changesets.
Two specialist passes (DAG transaction fidelity, sidecar file safety) back the comments below; every finding was re-validated against the checked-out code. Dropped as non-actionable: memory-note-before-flush ordering (matches the existing seam summarize path), non-atomic export/diagnose/gc writes (explicit user paths, delete-after-successful-write ordering is fail-closed), and read-only path traversal (listing-based lookup, sanitized stems).
muse-spark-1.3-contributor | 𝕏
- ptc preset swaps the unreleased executor row for the pinned presentation row (dsh-agent-tool-presentation, mode ptc) - generator pins the harness checkout to exactly 0.2.1-rc.3 at tag dsh-v0.2.1-rc.3, with content pins that fail fast on master HEAD - 4 preset descriptions, one per lossless preset, rendered by the UI for non built-in ids - publish-surface test asserts every lossless preset declares a non-empty description with no em dash
- lcm command declares input hint <subcommand> ... so spaced verbs route through one handler with bare input on status - ptc preset swaps the unreleased executor row for the pinned dsh-agent-tool-presentation row with mode ptc - generator pins the harness checkout to exactly 0.2.1-rc.3 at tag dsh-v0.2.1-rc.3 - 4 lossless preset descriptions, one per preset, rendered by the UI for non built-in ids - lifecycle shape test asserts the hint plus bare, spaced status, and dump dispatch - e2e probes use a portable tarball path with a runner that checks pong finals and sidecars
Each bracket writes a single condensed summary to the session log and keeps leaves sidecar only in sqlite. Adds a two-compaction regression test pinning one log summary per bracket. Resolves loader repeats that re-read leaf records on harness reload.
Default sidecarDir is the global dsh home path ($DSH_HOME/lossless, else ~/.dsh/lossless) with ./.lossless only as fallback. First publish ships no legacy path, so the startup CWD warning and migrate hint are gone; mount keeps the one startup log line with dir plus source.
Bracket span mapping retries once through history backfill before throwing. Manual taxonomy rethrows already-memory so it matches the auto path. Recall wiring reads through peek so lookups create no empty sidecar. Half-set summarizer pair falls back to the agent route.
There was a problem hiding this comment.
ℹ️ No critical issues — two minor inconsistencies inline, both in new delta files. Prior feedback is fully addressed.
Reviewed changes since the prior Pullfrog review (9fdbbfa..323ab3f, five commits):
- Bracket writes one condensed summary per pass with leaves sidecar-only, keeping the single-summary session log shape plus sidecar ids on the result for metrics.
- Sidecar default moved to the dsh home (
$DSH_HOME/lossless, else~/.dsh/lossless, else./.lossless) via a pure resolver with tests. - Preset surface corrected to the pinned harness rows with per-preset descriptions, and the sync script now pins the exact harness tag with fail-fast row guards.
- Manual e2e probes added as recipes plus a runner script against real
dshprofiles. - Prior review gaps closed: DAG catch-up backfill, already-memory rethrow, half-set summarizer fallback, and peek-based recall wiring (threads retired).
No specialist pass was needed: the delta is narrow, and each prior fix was verified by direct reads against the checked-out code.
muse-spark-1.3-contributor | 𝕏
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes since the prior Pullfrog review (323ab3f..6944136, one commit):
- Routed the sidecar-dir notice through the harness logger instead of
console.log, keeping headless--jsonstdout clean NDJSON, with a regression test asserting nothing reachesconsole.logorstdout. - Scoped the e2e runner to a scratch
DSH_HOME(/tmp/e2e-dsh/lossless) for sidecar creation and assertions, replacing the stale/tmp/.losslesspath, with string-guard tests on the script. - Added a patch changeset describing both fixes.
Both prior threads were verified fixed against the checked-out code and retired. One verification limit: the new engine logger test was checked by reading only, since the sandbox lacks the private @deepseek-ai/* harness packages needed to execute the deepseek suite.
muse-spark-1.3-contributor | 𝕏

Summary
Adds the
deepseek-losslessadapter (per-session SQLite sidecar mirror, DAG compaction through the harness seam plus a DAG-bracket manual path, four recall tools,/lcmverbs) anddeepseek-lossless-web(Lossless variants of all four shipped presets on an identity-tied shared core). Selecting a Lossless preset is the opt-in; host-plane profiles need only the host bundle.Evidence
/lcmverbs claimed, no recall tools.After: pong probes plus sidecar checks pass per the recipe (shipped headless profile, plain base plus overlay, lossless bundle; each asserts the final pong event plus sidecar sqlite and metrics.jsonl checks). Live runs on installed dsh 0.2.1-rc.3 over Go and OpenRouter routes: auto pressure stored leaves plus condensed nodes with checkpoint replaces across 4 swaps (depth-2 DAG: 61 summaries, 47 leaves, 14 condensed, billed usage); a zero-context session answered verbatim with cross-session entry citations; the in-process reader answered through the Go route after the calling session id stamp fixed the MissingSessionID 400s. Note: on 2026-10-27 the headless probes hung with zero output even without the bundle, pointing at the environment rather than the plugin; live web proof stays owner-side and presets are pinned by unit tests.
Targeted pins verified this pass:
packages/deepseek/test/preset.test.tsplusdefault-sidecar-dir.test.ts(24 passed), covering Lossless preset loading and the dsh home sidecar default. Defaults run mirrored without compacting. Boot and span defects found live are fixed with tests.Merge Danger
Door: two-way
Unreleased 0.1.0, no registry binding yet, so revert is a branch delete. Owner steps before merge: bind npm trusted-publisher for
deepseek-lossless0.1.0 anddeepseek-lossless-web0.1.0, then manual publish. Roadmap item 10 stays tracking until merge.Blast Radius: deepseek-only
New surface is
packages/deepseekandpackages/deepseek-webplus docs andscripts/sync-lossless-presets.ts. Shared seams are small and host-free: metric row filters, usage-tally sink helpers, SidecarStores eviction, compactable range selection, and a toolNameOfText export inpackages/core, plus a 3-line config-io tweak inpackages/pi. No behavior change for existing users: the adapter is opt-in with enabled, auto, and bracketAuto off.Summary by CodeRabbit
New Features
/lcmcommands for status, reports, backups, exports, imports, diagnostics, sidecar maintenance, and manual compaction. Maintenance operations default to dry-run where applicable.Bug Fixes


Confidence Score: 5/5
The reviewed changes appear safe to merge, with both numbered previous findings addressed.Summary
Adds
deepseek-losslesswith per-session SQLite history, DAG compaction, four recall tools,/lcmcommands, and a companion bundle for web presets./lcmto inspect and manage it.Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR History[DeepSeek session events] --> Mirror[History mirror] Mirror --> Store[Per-session SQLite store] Store --> Ladder[Leaf and condensed summaries] Ladder --> Checkpoint[DeepSeek checkpoint] Store --> Recall[Four recall tools] Commands["/lcm commands"] --> StoreReviews (31) · Last reviewed commit: "fix(deepseek): keep json stdout clean an..." · Reviewed by Greptile