deepseek-harness
Identity
-
Names:
com.deepseek.harness; short aliasdeepseek-harness. -
Native format:
deepseek-harness-session-jsonl;.jsonland concatenated checksummed.jsonl.zstdframes hold the same logical events. Header fields includeversion,id,parentSession,seedLength,originanddelegationDepth. -
Session ID: Header
id, verbatim. The pinned SessionStore can generate instance-local IDs. Require a persisted installation/instance namespace for that mode. Do not merge independent instances or infer the namespace from an encoding path. -
Entity keys: Native message and tool IDs remain verbatim. Body
seqis a logical event position; packed rows useseq0. Derive an inference ID when a recorded call lacks a native response ID. Compression and physical row counts do not define identity. -
Notes: Preserve request defaults, replay state, failed-attempt usage, approvals, plans and hooks. Packed deltas remain native evidence when not projected. Unknown file add/modify operations use
_com.deepseek.harness/diff. Attachment bytes are not fetched. A torn compressed frame may require retrying the capture.
Position basis
Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions form the snapshot tail, after all records with transcript positions. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.
Destinations
deepseek-harness: native facts without a standard field
Links
-
Lineage:
parentSessionrecords fork/seed ancestry.origin: subagentalso establishes spawning and subagent scope.seedLengthcounts copied logical events, not messages or compressed rows. It can establish a local copied prefix under this writer contract; a value of zero records no inheritance. UsethroughOrdinal: seedLength - 1only with a qualified ancestor segment mapping. Otherwise retain the seed count and omit the unresolved ordinal. Parent identity and namespace must be known before emitting a SessionRef. No root rule is qualified. -
Links and provenance: Assistant
tool-callblocks own requests; executiontool/callis an audit start, not a duplicate request. Results join bysource.callIdortoolCallIdwhen unique.senderSessionIdsupplies a sender only after identity resolution. Source kind user/model/plugin/goal/subagent-settled/coordinator/subagent-report determines provenance. User role alone does not.
Usage
- Inference and compaction:
request/headerrecords non-history request settings and instruction references; it does not establish complete context. Stream finish and usage records need the pinned request ownership contract before revising the same inference. Adjacent compaction meters supplyshadowedSeqsfor a surface replacement only under the version-0 writer contract. Translate every targeted logical message to all its context projections. Missing extent remains unknown; do not infer links from adjacency in other versions.
Lane and unassigned facts
Facts without established session ownership use manifest_meta["com.deepseek.harness/unassigned"] with the common shape. An export may retain these facts with any session subset, including an empty subset, but must not imply session ownership. State the selection policy in the export report.
Losses
Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Use a documented vendor loss or report for omitted unassigned facts; do not create a new core category.Evidence
Basis: source-verified:0.1.0-rc.7, commit 99f6f02fecdb7dff40c3fbc9470f5907c29f74ca, logical format version 0. Native persistence API probes cover plain and Zstandard encodings; semantic fixtures are authored. No live inference or tool qualification.
Evidence applies only to the named formats and explicit mappings above. A real capture covers only the behavior that was exercised. A writer probe run without a model covers persistence, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.
Observations from 2026-10-27
observed, version 0.2.1-rc.2: DeepSeek Harness 0.2.1-rc.2 wrote session.v4.jsonl.zstd. Two runs succeeded after a failed settings-migration attempt, but the earlier converter discovered no streams and reported four unidentified inputs. The version-0 writer contracts above do not qualify this storage dialect. No v4 decoder or ASR link mapping was established. The ctx CLI spelling is deepseek-harness, with deep-seek-harness retained as a CLI alias; that spelling does not add an ASR agent alias.
The ctx conversion produced 0 streams and 0 records, with 0 errors, 0 notices, 0 gaps and 4 unidentified inputs under validator-v0.1.2. These counts describe the selected output; an empty bundle qualifies no source format. No sanitized native fixture was retained for this observation.
Whole native records use native.record or native.blob, with JSON text columns preserved as strings. The exporter’s own bookkeeping for serialization, partitioning and message keys belongs in the exporter namespace (rs.ctx for ctx), not to a provider metadata destination. These runs add no evidence for approvals, lineage links, compaction boundaries or exact request context that they did not exercise.