Repository navigation
Adopt Framework beta with contract-declared HTTP idempotency - #102
Merged
Merged
Conversation
andrewzolotukhin
temporarily deployed
to
pr-102
October 4, 2026 08:19 — with
GitHub Actions
Inactive
andrewzolotukhin
temporarily deployed
to
pr-102
October 4, 2026 08:29 — with
GitHub Actions
Inactive
andrewzolotukhin
temporarily deployed
to
pr-102
October 4, 2026 08:36 — with
GitHub Actions
Inactive
andrewzolotukhin
commented
Oct 4, 2026
andrewzolotukhin
marked this pull request as draft
October 4, 2026 15:12
andrewzolotukhin
temporarily deployed
to
pr-102
October 4, 2026 16:16 — with
GitHub Actions
Inactive
andrewzolotukhin
temporarily deployed
to
pr-102
October 4, 2026 17:55 — with
GitHub Actions
Inactive
andrewzolotukhin
marked this pull request as ready for review
October 4, 2026 18:03
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Original request
Adopt Framework
0.0.0-beta-20261004165009following the merge of Framework #244. Prevent duplicate server execution when the HTTP client automatically retries a request, with ordinary application calls unchanged.What changed
.idempotent()in the shared contract. Framework generates the request key, retains it across configured HTTP retries and handles batching eligibility automatically.main; no form or session retry state is added.Reasoning
A retry of one HTTP client call must reuse that call's key and return the original server response. A separate client call receives a fresh key even if its input is identical. Contract metadata now drives this behavior, while the application retains its authorization rules.
Replay remains bounded and process-local: 24-hour retention, 1,000 entries and 65,536 bytes per response. Restarts, expiry, separate replicas and thrown failures remain outside a durable exactly-once guarantee. No database migration is introduced.
Blog post
Skipped: this is an internal HTTP transport and dependency update with no new user interaction. The earlier manual-retry article and image are removed.
Screenshots / preview evidence
PR preview. Screenshots are not applicable to the transport behavior. Preview validation checks that concurrent same-key requests return one transaction and Location, a fresh key creates another transaction, and the generated API document exposes the replay header and errors.
Validation
npm cipassed with the published registry packages. Dependency checks confirm all 19 installed Framework packages use the requested beta, with one shared schema installation; other package versions are unchanged.npm run lint,npm run typecheck,npm test(125 files / 1,961 tests), andnpm run build(all seven workspace builds) passed.npm run test:queries:integrationpassed all 61 cases in UTC and America/Los_Angeles, including a lost completed response followed by an automatic retry with only one database write.0ce9e51:Lint and test,Deploy PR environmentandPlaywright e2e. Workflow run.