Skip to content

Preserve Idempotency-Key replay CLI guidance (draft) - #94

Open
purpshell wants to merge 1 commit into
mainfrom
claude/idempotency-replay-20261022
Open

purpshell wants to merge 1 commit into
mainfrom
claude/idempotency-replay-20261022

Conversation

@purpshell

@purpshell purpshell commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Summary

Publish previously local immutable CLI companion db3a4a587042235498b14837b9ce9b4ca30c39c1, parent 58e91a18d1a4afc108eb3119db0830340bb2a926, without content or history changes. The eight-file delta updates Idempotency-Key README/research text and command help strings for replayed original responses and the one-hour Messaging window.

This candidate had no remote branch or owning PR. It is not current-main integrated: observed main was 044f8b75ae8b0689664fe489c22d4a3c64486717. This draft preserves authored source; the frozen claims are not proof of shipped behavior.

Impact

Impact table

Area Updated / blocked Change or named blocker Paths / evidence
CLI help and documentation Updated frozen source; qualification blocked Replay/window descriptions for campaign lifecycle, channel reaction and template writes. No new command/flag or dispatch implementation is introduced README.md, docs/command-research/campaigns.md, src/commands/campaign/{pause,resume,stop}.ts, src/commands/channel/message/react.ts, src/commands/cloud/template/{create,delete}.ts
API and SDK Blocked dependency reconciliation Backend #890 and SDK companion must be accepted against current source and exact artifacts before claiming CLI behavior. No SDK package pin changes here Backend #890; SDK #369, commit ce436aa8eebdff65b771c2620c679403b6ebe021
Public docs and feature release Blocked availability Customer copy must match actual API/SDK availability and approved recovery/retention guidance; changelog/version/upgrade reconciliation remains pending README retry/campaign/template sections
Onboarding, recovery, billing/PAYG, Usage, Logs, audit and Analytics Blocked integrated acceptance Help changes customer recovery expectations; no duplicate-effect, charging, usage/log/audit or activation acceptance is established Existing command behavior plus backend/SDK qualification

No impact table

Area Why there is no direct source impact Supporting paths / evidence
Barback/HyperMeow, runners/Bartender, Temporal, customer/Admin APIs, Inspector, Console, Admin Console/MCP, migrations, flags, pricing and tracking configuration Exact eight-file delta changes documentation and flag-description strings only. It adds no executable dispatch, permission, billing, retention or staff control Commit inventory, 23 insertions/21 deletions
Dependencies, package versions and release tooling No manifest, lockfile, SDK pin, version or publishing workflow changes Same exact diff

Verification

Publication-only custody checks: clean source/index/untracked status, exact commit/parent and authored diff, absent remote branch, and no owning PR were checked under the standard serialized bounded wrapper. GitHub did not contain this exact commit before publication (422 from commit/PR association lookup). The existing immutable commit is published unchanged; no rebase, source repair, install, build, new test or PR review was performed.

No fresh current-head tests, typecheck, package/CLI installation, backend/native/real PostgreSQL acceptance or cross-repository artifact qualification is claimed. Backend #890's earlier 84 focused tests belong to its old backend slice. Its current rebase remains conflicted: the real producer failed on edition JSON conflict markers. Five prerequisite compiles passing does not qualify this client candidate.

Session provenance and UI evidence

Recovered source belongs to Idempotent Send Success Status Code. Publication is by the same existing owner, Codex gpt-6.1-sol. This is source custody and draft publication, not a PR review; no reviewer or agent was requested.

Private preservation packet: ~/.polymorfa-agent-work/idempotency-replay/publication-preservation-20261028T234311Z/. It retains source bytes, original indexes, staged/unstaged patches and raw authored commit/patch records for both recovered repositories. Registration and committed sanitized transcript provenance for this old source are not reconciled; no full capture or review-readiness claim is made. No browser was inspected.

Rollout and rollback

Draft source preservation only. No customer availability or package publication is claimed. Release owns merges. Existing source/legal/feature/PKI/custody, package, native, production and deployment gates remain; staging prerequisites do not clear this candidate.

Backend dependency: #890, frozen source 71efbde710894bea82fb391e9213be50a8326d74. Its parked target eda77760b56095a771c55e5d2df18be23e985377 is not an accepted new source head. Documentation #892 and Marketing #893 remain frozen. Privacy/Redis, real PostgreSQL/native, current-target integration, genuine generated artifacts and exact backend availability remain unresolved.

Before readiness: reconcile current main with preserved authorship under the existing owner, bind the actual accepted API contract/source/spec hashes and SDK/CLI dependency artifacts, qualify examples/retry/error behavior, complete required independent reviews and provenance, and prove matching deployed acceptance. No source-only draft opening waives stale Zod/security checks. No automatic review, blind rerun or manual CI dispatch was requested.

Rollback planning is a reviewed source revert coordinated with the accepted backend and client contract. No rollback, tag, release, activation, package or deployment action occurs here. Linear/Notion release-state reconciliation has not been performed during this urgent publication sweep.

Rendered CLI help/current installed-command output has not been captured or qualified; no new screenshots or terminal acceptance is claimed. CLI source snapshot: 668 paths; original index SHA-256 ef590807e7582ab947e14ff208038a0d5956c358569eef4a966dabb522c5f99a.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

The API replays a completed request's status and body for 1 hour on
Messaging writes and campaign lifecycle actions, and answers 422
idempotency_conflict for key reuse. Update the README, command research
notes and flag help text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

The included review limit has been reached and this organization has disabled usage-based review continuation. Wait for reviews to reset or ask a billing admin to change After included review limits.

  • Ask an admin to enable usage-based reviews

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available. Your 56 included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 2bfc04ea-f345-4854-9176-0c9dd9607950
Commits

Reviewing files that changed from the base of the PR and between 044f8b7 and db3a4a5.

Files selected for processing: 8
  • README.md
  • docs/command-research/campaigns.md
  • src/commands/campaign/pause.ts
  • src/commands/campaign/resume.ts
  • src/commands/campaign/stop.ts
  • src/commands/channel/message/react.ts
  • src/commands/cloud/template/create.ts
  • src/commands/cloud/template/delete.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T04:48:14.779460Z db3a4a5 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-31T04:47:54.443024Z db3a4a5 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db3a4a5870

ℹ️ 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".

Comment thread README.md
- A finished request returns its original status and body, success or error,
with `Idempotent-Replayed: true`. A send whose response was lost prints the
original message.
- A recorded error is returned again. Correct the request and use a new key.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve outcome reconciliation before recommending a new key

For a recorded server error, replaying the error does not establish that the original write had no effect; the previous guidance explicitly warned that the write may have happened. Telling callers to correct the request and use a new key for every recorded error can therefore cause a duplicate message when the original send succeeded before an error was recorded. Limit this advice to errors known to precede execution, and retain the instruction to reconcile message events or webhooks before changing keys after a potentially side-effecting failure.

Useful? React with 👍 / 👎.

Comment thread README.md
Comment on lines +397 to 398
For 1 hour after the first request, the API prevents the same key and request
from running the write again:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the remaining CLI help to the one-hour retry window

With the one-hour API window documented here, users following several command help descriptions are still told that retries have “24-hour retention”: this remains in src/commands/message/send/text.ts:24, the shared send flags in src/input/message-send.ts:26, the payment-order flags in src/input/payment-order.ts:15, and campaign create/launch help. A caller retrying a message after, for example, two hours can therefore follow the advertised retention period yet execute another send because the key has expired. Update the remaining Messaging idempotency help alongside this window change so it does not promise protection for an additional 23 hours.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant