Skip to content

Fence payout intent claims with persistent leases - #312

Merged
Exzentttt merged 1 commit into
mainfrom
feature/189-claims-current-20261106
Nov 6, 2026
Merged

Exzentttt merged 1 commit into
mainfrom
feature/189-claims-current-20261106

Conversation

@Exzentttt

@Exzentttt Exzentttt commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Allow a future payout processor to claim one stored intent with an explicit expiry and persistent generation number. An expired or superseded processor cannot renew or release another claim; a lost reply can be reconciled with lease-show. Refs #189.

Add claim, renew, release, recover and lease-show to the existing operator CLI. Worker UUID identifies a coordinator, not authentication or signing authority. Strict TTL is 1–300 seconds; mutations lock the immutable parent before the child, use server time and exact worker/generation predicates, and report success only after commit. Persistent epochs and ordinary INSERT/UPDATE/DELETE/TRUNCATE guards prevent identity resets. SQL contention returns a finite busy result after rollback; existing receipt, submit/show and private-safe error contracts remain intact.

V112 and its repeatable add only the separate claim relation and its transition guards. All 105 existing SQL files, the immutable V111 parent, current bootstrap dependencies and typed error handling are preserved. Application rollback to #188 retains schema112 and both parent/child tables and data. No new dependency, global configuration, shared conftest, SDK, backlog worker, signer, broadcast or reward policy.

Validation: 296 focused PostgreSQL/CLI/bootstrap cases passed without skips, including two regressions preserving legacy storage-error exit codes. SQL guard mutation failed as expected; the original passed. Independent source review found no issues. The frozen whole backend passed 2,585 tests with two existing skips (local frontend/Playwright and stand-only runsc), zero failures/errors; all 70 tracked test containers were removed. The first full attempt failed because the root launcher omitted the Docker SDK endpoint and used an unsuitable ambient DSN; that evidence is retained. Corrected baseline/candidate launch probes and the full recovery passed without source changes. Static, type, complexity and self-review gates passed; the existing fixture F811 was proven against base.

Installed on production from merged 171bc1209eabd0654b69d855dfad70c3bfbe4b0e after CI5/5, native image/scanner smoke, complete isolated migration/compatibility rehearsal and separate production expansion/backend admissions. Root postcheck verified runtime source hashes, schema112/history/guards, health200 and preservation of all other containers, volumes, bindings and A4 settings. Installation evidence. Application rollback retains both tables and their data. Actual funds and accrual activation were not enabled.

@Exzentttt
Exzentttt merged commit 171bc12 into main Nov 6, 2026
5 checks passed
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