Repository navigation
docs(audit): inventory the transcript capture producers (#716, slice 1) - #874
Conversation
No producer keeps a cursor into a transcript, none discovers Codex rollouts, and the only rollout reader extracts tool names and turn counts. The audit cites each session key, dedup and replay path so the owner can decide between a durable cursor and documented limits. Refs #716 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_018kyZYthhBeHYUUVXweieTP
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @cdeust's task in 2m 59s —— View job PR #874 review (1 of 3)
Blocker (1): the audit's P1 claim at Notes (3, no action before merge):
CI gates are unaffected and no security problems were found. Verdict: block |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 238a40585d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| (`session_lifecycle.py:359-372`). *Inferred:* a Codex session continued | ||
| into a second rollout file gets two log rows but one profile update, so | ||
| the second file's activity never reaches the profile — acceptance item 1 | ||
| of #716 fails on the profile path. |
There was a problem hiding this comment.
Account for intake deduplication in the multi-rollout conclusion
For the Codex hook path described above, a second rollout with the same session_id never reaches the lifecycle handler: plugins/hypermnesia-mcp-codex/scripts/session_queue.py::enqueue keys the job solely by sha256(session_id), returns immediately when its completed receipt exists, and preserves the first queued payload when the job is still pending. Consequently, this path produces neither a second log row nor a second profile update. Please distinguish direct lifecycle calls from queued Codex delivery and identify the intake deduplication as an additional blocker; otherwise the audit directs the later multi-file fix toward the log/profile key split while overlooking where the second file is actually discarded.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Confirmé et corrigé dans 0db1f65. enqueue clé le job par sha256(session_id) seul, rend la main dès qu'un reçu completed/ existe, et os.link conserve la première charge d'un job encore en attente (session_queue.py:89-111). Sur le chemin Codex en file d'attente, le second rollout n'atteint donc jamais session_lifecycle. L'audit distingue maintenant la livraison en file d'attente (rejet à l'entrée, premier obstacle au critère 1 de #716) de l'appel direct (la séparation des clés journal/profil, toujours marquée inferred). La section « What a later slice can reuse » ne présente plus la clé session_id comme la bonne pour une session sur plusieurs fichiers.
Generated by Claude Code
|
Claude finished @cdeust's task in 1m 32s —— View job Review 1 of 3: no Blockers. Verdict: approve
The cited lines match the code, and the fixup Notes, no action before merge
|
PR #874 review (1 of 3), head
|
Review 1 of 3 — PR #874 (head
|
Summary
First slice of #716 (resumable incremental transcript capture). The issue's own first step is "audit all capture producers first; reuse any existing cursor/idempotency mechanism". This PR is that audit, with no code change:
docs/audits/transcript-capture-producers-2026-11-05.md.Findings (each cited to a line at
main2126d2a):sha256(session_id)(SessionEnd), spool and queue files, exact-content dedup inremember.transcript_path, and only tool names and turn counts are extracted.session_queue.py) keys its job bysha256(session_id)alone and drops a second SessionEnd of the same session (receipt exists, oros.linkkeeps the first queued payload): a second rollout file reaches neither the session log nor the profile — the first blocker for acceptance item 1 of feat: specify and verify resumable incremental transcript capture across Codex rollouts #716. The stem /session_idkey split insession_lifecycleonly matters for a direct (unqueued) call.Refs #716 — not
Closes.Type of change
Test plan
python scripts/check_doc_claims.py→ OK;python scripts/check_craftsmanship.py→ OK.grep -n/sed -nagainst the tree before commit.Not verified here: the claims marked inferred in the audit were derived from the cited code, not executed.
Audit notes
Remaining slices of #716, after the owner's product decision (build a cursor, or document the limits and close, per the issue's Alternatives considered):
sha256(session_id)insession_queue.py), which must also name the file or its turns, then the stem /session_idsplit for direct calls.Breaking changes
None.
Generated by Claude Code