Skip to content

Append-only per-session transcript: preserve what compaction discards (greppable history) #441

Description

@justrach

Surfaced by the #410 implementation (PR #438): the premise "the session file preserves what compaction discards" is FALSE in graff — .graff/sessions/<name>.session.json is a single JSON object whose messages array is rewritten in place after compaction. The next autosave permanently drops the pre-compaction history. Prime-agent's "grep your own conversation log" property (the model recovering any detail compaction summarized away) therefore has no graff equivalent today; the traces/trajectories JSONLs serve telemetry, not recall.

Proposal: an append-only transcript log per durable session — .graff/sessions/<name>.transcript.jsonl — one line per message as it first enters history, never rewritten, unaffected by compaction. The #410 prompt line then gains a second path: the resume artifact (current truth) and the transcript (full history, greppable). Compaction summaries could even cite it ("full detail for this span in the transcript").

Bounds: same session lifecycle as artifacts (#409's sweep), size cap with head-truncation or rotation, subagents excluded (history never persisted). Cheap to write (append at the same point autosave observes a new message); the win is that post-compaction "what did that error say exactly?" becomes a grep instead of a lost cause.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions