Replies: 2 comments
|
Verified at rc.8 ( Source confirmation. Why the "narrow the sentence" option is cheaper but weaker. The failure you hit (a parser keying on A third option that closes both the catalog gap and the family root. Rather than only listing the storage rows as a static vocabulary, the generator could emit the mapping event shapes → storage shapes: which Family note. This connects to the session-log corruption family (#3198 and friends): the Also agree with the #2328 linkage — one "what is actually in a session log" section covering framing + row types would be the right home for both. |
|
I turned the rc.8 source findings in this thread into a reader-oriented format map: https://sandbaseai.github.io/deepseek-harness-handbook/deepseek-harness-session-log-format.html The key contract is now explicit there:
The guide includes a safe read-only inspection sequence and eleven parser acceptance gates, including mixed-layout equivalence, malformed-row failure, committed-region gap detection, and a This is a community-maintained operational reference, not an upstream format guarantee; unsupported format versions should still fail explicitly. |
Uh oh!
There was an error while loading. Please reload this page.
docs/persistence-catalog.mddescribes itself as coveringbut with
packChunksenabled — the default — the JSONL backend also writes packed storage rows that the catalog does not list. At99f6f02fe(dsh-v0.1.0-rc.7) I see three:text-chunks,reasoning-chunks, andtool-call-chunks. Searching the generated catalog for those three names returns nothing.They are also shaped differently from a
SessionEvent: they carryseq0/time0rather thanseq/time, and pack a run of deltas into arrays. An example line, lightly trimmed:{"type":"text-chunks","seq0":10,"time0":1787150994000, "data":{"turn":1,"step":1,"index":0,"dt":[21,1,0,0,20], "texts":["He","llo",", ","wor","ld"]}}Repro
persistenceCompression: none(so the log is readable as text) andpackChunksleft at its default.grep '"type":"text-chunks"' <persistenceRoot>/**/session.jsonl— present, and absent fromdocs/persistence-catalog.md.Why it matters
The catalog is generated from source, which is exactly what makes the gap easy to trust into: a reader implementing a log parser against it has good reason to believe it is complete, and then meets rows it cannot classify. The failure is quiet in a specific way — a parser that walks chunk events to reconstruct assistant text will silently miss every packed run, and on a thinking-enabled session that can be most of the output, with no error anywhere.
I hit this from the safe side (keying on
seq, which packed rows lack), but only by accident of how the reader was written.Related
This is the same family as #2328 ([Docs proposal] document the multi-frame zstd session-log container format) but one layer in: that one is about how the file is framed, this one is about which row types appear once you are past the framing. A single "what is actually in a session log" docs section could close both.
Suggestion
Either extend the generator to cover the storage-row encodings, or narrow the catalog's opening sentence to say it documents
SessionEventtypes specifically and point to the persistence docs for what else the log file can contain. The second is cheaper and would have been enough to prevent the wrong assumption.All reactions