Build the per-harness harvest adapters that assemble capture arguments (insights, tickets, summary, context) from whatever a given environment exposes as "the session." capture itself is uniform and shipped; harvest is the deliberately-non-uniform front half (the "acceptable per-harness quirk" from #49 — only how args are assembled varies, never what persistence does).
The three fidelity tiers
Each harness has a different notion of "the session," yielding different fidelity:
transcript-parse (richest) — Claude Code CLI, Crush, Pi: a .jsonl / run-log transcript on disk. Reuse the existing ai-sessions extractors (extract_claude_sessions.py, extract_crush_sessions.py, extract_pi_sessions.py) to parse, then map to capture args. Highest fidelity → its summary supersedes a thinner one for the same session_ref (server-enforced collision rule).
chat-reconstruct (lossy) — claude.ai Chat/Cowork/Design: no transcript file; the model reconstructs from conversation memory. This is what the close-session SKILL veneer (#62) does. fidelity: live-capture.
A harvest adapter per tier that emits a valid capture request.
transcript-parse: wrap the ai-sessions extractors; map their output to insights/summary.
Define how insights (the durable, brain-worthy learnings) are distinguished from raw session content at harvest time — the SKIP-bias / "generalizable learning vs project status" filter (cf. brain-weekly-ingest design).
Ensure fidelity + session_ref are set so the supersession/collision rule works across re-captures of the same session at improving fidelity.
Insight-extraction filter (durable learning vs noise) defined + applied
fidelity/session_ref set so a richer re-capture supersedes a thinner one
At least one tier tested end-to-end into a live capture
Related
#49 (capture epic), #62 (SKILL veneer = the chat-reconstruct tier)
ai-sessions extract_*_sessions.py (the transcript-parse reuse path)
brain-weekly-ingest (the SKIP-bias insight-extraction precedent)
**Parent epic:** #49 (capture, complete, v0.11.0) · deferred follow-up
## Scope
Build the per-harness **harvest** adapters that assemble `capture` arguments (`insights`, `tickets`, `summary`, `context`) from whatever a given environment exposes as "the session." `capture` itself is uniform and shipped; harvest is the deliberately-non-uniform front half (the "acceptable per-harness quirk" from #49 — only *how args are assembled* varies, never what persistence does).
## The three fidelity tiers
Each harness has a different notion of "the session," yielding different `fidelity`:
1. **transcript-parse** (richest) — Claude Code CLI, Crush, Pi: a `.jsonl` / run-log transcript on disk. **Reuse the existing `ai-sessions` extractors** (`extract_claude_sessions.py`, `extract_crush_sessions.py`, `extract_pi_sessions.py`) to parse, then map to `capture` args. Highest fidelity → its summary supersedes a thinner one for the same `session_ref` (server-enforced collision rule).
2. **chat-reconstruct** (lossy) — claude.ai Chat/Cowork/Design: no transcript file; the model reconstructs from conversation memory. This is what the close-session SKILL veneer (#62) does. `fidelity: live-capture`.
3. **agent-runlog** — Agentsquad executor/reviewer: structured run output → capture args. `fidelity: agent-runlog`.
## What to do
- A harvest adapter per tier that emits a valid `capture` request.
- transcript-parse: wrap the `ai-sessions` extractors; map their output to `insights`/`summary`.
- Define how `insights` (the durable, brain-worthy learnings) are distinguished from raw session content at harvest time — the SKIP-bias / "generalizable learning vs project status" filter (cf. brain-weekly-ingest design).
- Ensure `fidelity` + `session_ref` are set so the supersession/collision rule works across re-captures of the same session at improving fidelity.
## Acceptance
- [ ] transcript-parse adapter (reuses ai-sessions extractors) → valid capture request
- [ ] chat-reconstruct path (via #62 SKILL) → valid capture request
- [ ] agent-runlog adapter → valid capture request
- [ ] Insight-extraction filter (durable learning vs noise) defined + applied
- [ ] `fidelity`/`session_ref` set so a richer re-capture supersedes a thinner one
- [ ] At least one tier tested end-to-end into a live `capture`
## Related
- #49 (capture epic), #62 (SKILL veneer = the chat-reconstruct tier)
- ai-sessions `extract_*_sessions.py` (the transcript-parse reuse path)
- brain-weekly-ingest (the SKIP-bias insight-extraction precedent)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent epic: #49 (capture, complete, v0.11.0) · deferred follow-up
Scope
Build the per-harness harvest adapters that assemble
capturearguments (insights,tickets,summary,context) from whatever a given environment exposes as "the session."captureitself is uniform and shipped; harvest is the deliberately-non-uniform front half (the "acceptable per-harness quirk" from #49 — only how args are assembled varies, never what persistence does).The three fidelity tiers
Each harness has a different notion of "the session," yielding different
fidelity:.jsonl/ run-log transcript on disk. Reuse the existingai-sessionsextractors (extract_claude_sessions.py,extract_crush_sessions.py,extract_pi_sessions.py) to parse, then map tocaptureargs. Highest fidelity → its summary supersedes a thinner one for the samesession_ref(server-enforced collision rule).fidelity: live-capture.fidelity: agent-runlog.What to do
capturerequest.ai-sessionsextractors; map their output toinsights/summary.insights(the durable, brain-worthy learnings) are distinguished from raw session content at harvest time — the SKIP-bias / "generalizable learning vs project status" filter (cf. brain-weekly-ingest design).fidelity+session_refare set so the supersession/collision rule works across re-captures of the same session at improving fidelity.Acceptance
fidelity/session_refset so a richer re-capture supersedes a thinner onecaptureRelated
extract_*_sessions.py(the transcript-parse reuse path)