Skip to content

WIP: feat(daemon): bind accept to artifact and receipt to operation - #1611

Draft
pdurlej wants to merge 1 commit into
mvschwarz:mainfrom
pdurlej:piotr/upstream-accept-receipt-binding-v2
Draft

pdurlej wants to merge 1 commit into
mvschwarz:mainfrom
pdurlej:piotr/upstream-accept-receipt-binding-v2

Conversation

@pdurlej

@pdurlej pdurlej commented Oct 20, 2026 •

Copy link
Copy Markdown

Summary

Hard truth in code, not in harness memory (Codex-class compression / multi-agent orchestration): bind accept to a concrete artifact, and bind the receipt to the specific operation that produced it — not “latest on the target”.

Concrete case: publish A, then B to the same target, then retry A — without per-operation receipts, restart after compression confuses historical A with target-latest B.

Independence from C (#1610)

This tip is unstacked. It does not include WriterAuthority, lease migration, fenced lease publish, or /api/writer lease routes. Review does not need to wait on #1610.

Supersedes dirty #1599.

What lands

  • artifact-acceptance — accept binds a clean immutable artifact digest
  • SimplePublishTarget — lease-free disposable target for contract proofs
  • OperationPublishService — receiptsByOperation keyed by operationId (historical, not target-latest)
  • Contract tests: retry A after B → receipt A; body skew refused; simulation without target; per-op receipt files

Out of scope

Stays draft. Native not-run.

Fork: pdurlej/openrig-1 · piotr/upstream-accept-receipt-binding-v2

@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pdurlej

pdurlej commented Oct 20, 2026

Copy link
Copy Markdown
Author

Reposting on this superseding PR (same reply as on the earlier draft).

Thanks @mvschwarz — also from the same operator work (multi-agent / multi-harness orchestration on one theme).

The correctness bug we keep hitting: after context compression on small-context harnesses (e.g. Codex-class ~250–256k windows), if compression lands at a bad moment the agent replays work it already did — sometimes twice or three times — and a lot of progress is lost. Harness memory is not a reliable source of truth here; historically some harnesses handle compaction poorly, and there’s no guarantee future ones will do better.

So the goal of this draft is hard truth in code, not in the agent’s memory: bind accept to a concrete artifact, and bind the receipt to the specific operation that produced it (not “latest on the target”). Concrete case on one existing path: publish A, then publish B to the same target, then retry A — without per-operation receipts, retry/restart after compression easily confuses historical outcome A with target-latest B (and crash-between-artifact-and-receipt can fake success). Smallest change: receipt keyed by operation / submission, plus accept bound to the artifact digest for that op.

Agreed this doesn’t need to wait on #1598 — we can keep the thin correctness extract independent of the lease PR. Also happy to keep proposal text out of the repo tree while it’s a draft.

End-to-end, the boring pattern that let me ship quality at a steady pace under multi-agent load was: clear hard rules + durable truth in files/state — less spectacle, more control.

@mvschwarz

Copy link
Copy Markdown
Owner

Thanks, @pdurlej, and thanks for the retry-after-compression case on #1599. This stays a draft, as you ask. Binding an acceptance to its artifact and a receipt to its operation is a new product concept too, so it needs a product decision before we review the code, and we can't say yet when that will be. Your answer on #1599 is part of the input for it.

…f leases)

Unstacked Topic D: bind accept to a clean artifact digest and key receipts
by operationId via SimplePublishTarget. No WriterAuthority / mig 119 /
fenced lease path — reviewable without mvschwarz#1610.
@github-actions
github-actions Bot force-pushed the piotr/upstream-accept-receipt-binding-v2 branch from 62caaf8 to 9e625b8 Compare October 20, 2026 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants