Skip to content

Proposal: add a version-gated DeepSeek Harness transcript source to SkillOpt-Sleep #225

Open

Description

@iiwish

Motivation

DeepSeek Harness (DSH) now persists event-sourced sessions, but SkillOpt-Sleep has no DSH transcript source. The recently merged OpenCode source provides a useful precedent for adding a narrow, privacy-conscious harvester independently from an execution backend or plugin.

DSH is currently a developer preview (0.1.0-rc.5) and its session header is version 0, so this integration should be explicitly experimental and fail closed rather than claim forward compatibility.

Proposed MVP

  • Add an explicit --source dsh and --dsh-session-root; do not add DSH to auto discovery yet.
  • Read sessions locally and read-only, accepting only the tested DSH schema/version.
  • Keep root-session visible user/assistant text, short tool names, working directory, timestamps, and immutable session feedback records.
  • Exclude reasoning/chunk events, tool arguments/results, file payloads, request/provider/account metadata, child sessions, and SkillOpt-created replay sessions.
  • Normalize accepted sessions into the existing SessionDigest contract and preserve the current redaction boundary.
  • Add sanitized fixtures and tests for valid sessions, corruption, unknown versions, filtering, redaction, CLI/config routing, and documentation.

Design question

Would maintainers prefer the smallest direct importer for version-0 JSONL (with a documented policy for DSH's default zstd files), or a versioned sanitized export produced by a thin DSH plugin? Direct import is smaller and has no plugin prerequisite; an exporter is a more durable format boundary and can include DSH's separate message-feedback store.

Non-goals

  • A DSH execution backend or tool-aware agentic replay
  • A DSH UI/plugin bundle
  • Automatic skill adoption
  • Recovering message-level feedback from DSH's sidecar when using raw session logs
  • Compatibility with unknown future DSH session versions

Acceptance criteria

  • Harvesting is local, read-only, and requires no DSH model login or running daemon.
  • Unknown or malformed schemas are skipped with a clear warning; no partial permissive parse.
  • since, project, limit, child-session, and replay-session filters have tests.
  • Sensitive event payloads never enter SessionDigest or fixtures.
  • Existing harvest sources remain unchanged and the full test/documentation checks pass.

Activity

  1. Yif-Yang commented on Sep 30, 2026

    @Yif-Yang
    Contributor

    #266 now handles current v2 and highest-generation selection correctly; those earlier review concerns are resolved. A new current-producer check found that ordinary DSH compaction lifecycle events make the importer discard an otherwise valid session. The reproduction extends the PR's sanitized fixture with the producer's start/end records and uses no live data or model calls.

    The 70 shipped importer tests and strict docs build pass, but they do not cover that normal producer behavior. Keep this issue open until the supported-event gap is fixed and revalidated; no DSH backend or broad benchmark is required. Unknown-required-event refusal and the existing privacy/lineage/replacement tests should remain intact.

  2. Yif-Yang commented on Oct 23, 2026

    @Yif-Yang
    Contributor

    The new discussion on #266 reports a v4 producer format with additional event and compaction behavior, while the unchanged PR head accepts only versions 0/1/2. A sanitized producer-shaped fixture and expected final visible conversation are the next useful evidence. Version acceptance alone would not establish correct lifecycle reconstruction or privacy filtering. #330 has now merged and repairs a separate shell-executor invocation seam; it does not deliver a DSH transcript source. This issue remains open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions