paperclip/tests
Nicky Leach 91c79d28cb
test(e2e): retry run-lock 409 in signoff-policy agentPatch (#10386)
## Thinking Path

> - Paperclip is the control plane people use to manage AI-agent work
across companies
> - This repository's e2e suite verifies the execution and approval
paths that keep the control plane reliable
> - The signoff-policy flow uses a helper that runs a heartbeat and then
PATCHes the issue with that run id
> - That PATCH can race the heartbeat's run-lock ownership and
intermittently receive a transient 409
> - When that happens, a single-positive transition fails the shard even
though the underlying behavior is only a lock contention race
> - This pull request makes the helper retry the 409 path by re-reading
the current lock and re-PATCHing under the winning run id
> - The benefit is a stable e2e shard without weakening the
negative-path assertions that protect the contract

## Linked Issues or Issue Description

No public GitHub issue exists for this change. This PR addresses a flaky
signoff-policy e2e transition where the helper can lose a run-lock race
and receive a transient 409 while the issue is still assigned to the
acting agent.

## What Changed

- Added bounded retry/backoff handling in the signoff-policy
`agentPatch` helper for transient run-lock 409 responses.
- Re-read the issue's current lock before retrying so the helper can
re-PATCH with the winning run id.
- Kept the retry guarded so non-participant rejection and
missing-comment 400s still surface unchanged.
- Preserved the existing positive-path behavior without adding
Playwright retries or weakening assertions.

## Verification

- Reviewed the diff shape for a single-file change in
`tests/e2e/signoff-policy.spec.ts`.
- Verified the pushed commit matches the authorized submit SHA from the
handoff.
- Confirmed the branch contains only the expected commit and no
unrelated history.
- The handoff notes record deterministic harness evidence showing the
pre-fix helper fails on the 409 race and the post-fix path passes.

## Risks

- Low functional risk: the retry is narrowly scoped to the transient 409
lock-contention path.
- If the lock semantics change server-side, the helper may need a
follow-up adjustment.
- The change only affects the e2e helper and does not alter production
API behavior.

## Model Used

OpenAI Codex (GPT-5, tool-using coding agent)

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` /
`Closes: #` / `Refs: #` OR (b) described the issue in-PR following the
relevant issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-07-28 11:53:16 -07:00
..
e2e test(e2e): retry run-lock 409 in signoff-policy agentPatch (#10386) 2026-07-28 11:53:16 -07:00
release-smoke PAP-10430: split Issue-to-Task copy migration (#7651) 2026-06-06 10:10:01 -05:00
storybook-visual feat(ui): design-system component convergence — Card/Badge adoption, multiplicative radius ladder, unified list surfaces (#9240) 2026-07-08 17:15:45 -07:00