Skip to content

Harvest can capture another concurrent run's answer and report it as this run's completed result #390

Description

@postoso

Version: oracle 0.17.3, browser engine (-e browser --browser-manual-login), persistent Chrome profile, GPT-5.6 Sol at Pro thinking time

When two runs are launched against the same persistent Chrome profile close together, a run can bind to another run's conversation. The harvest then captures that other run's answer and stores it under this run's slug. The session reports completed, the archived transcript passes validation, and nothing in the output indicates the answer belongs to a different question.

What I observed

Session slug oracle-trigger-rewrite-contract-review. Its archived transcript at ~/.oracle/sessions/<slug>/artifacts/transcript.md contains:

  • ## Prompt — a request to review an operating-reference document for a browser-automation lane. Correct; this is the prompt that was sent.
  • ## Answer — a twenty-section review of an entirely different subject: a database schema-recovery runbook, discussing Dolt commits, schema_migrations rows, and backup semantics. It has no relationship to the prompt above it.

A second run against the same profile that evening was reviewing exactly that database runbook. Its answer is what landed in this session's transcript.

The run's own header reported:

Status: completed
Response: status=completed
Artifacts:
- Browser transcript — .../artifacts/transcript.md (36.5 KB) sha256=7ccd3dd9d23b… validation=ok

So validation=ok and sha256 are present and correct. They validate that the file transferred intact, not that its contents answer the prompt. Both signals a caller would reach for to check success are green.

Why this is worth a guard

Every other failure mode in this area is detectable by counting or by an error. This one is not. The output is a well-formed, high-quality answer to a question, so it survives a skim by a human and passes any automated check that looks at status, exit code, size, or hash. Where a caller is chaining oracle output into further automated work, a topically adjacent answer can be acted on before anyone notices.

Suggested direction

I do not have a deterministic reproduction; it requires two runs racing on one profile and I hit it once. But the failure seems addressable without reproducing the race:

  • Bind and verify a conversation id per run. If the harvest is scoped to a conversation id the run itself established, capturing a different conversation's content becomes detectable rather than silent.
  • Treat a mismatch as an error, not a completion. Right now the run reports completed.
  • A caller-side marker also works and needs no server changes. I now open every prompt with an instructed echo token and refuse to trust a harvested answer whose first line does not carry it. That has been effective, but it is a workaround each caller has to invent, and it only helps callers who know to do it.

Happy to dig up more detail from the archived session if useful. The transcript is still on disk.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateThis issue is about session, memory, transcript, context, or agent state drift.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions