WIP: Draft: Unblock pending registration snapshots (issue #14) #24

Closed
PlasticDigits wants to merge 0 commits from 14-fix-voting-registration-stays-pending-no-cl8y-amount-after-snapshot-timeout into main
PlasticDigits commented 2026-08-30 05:54:19 +00:00 (Migrated from gitlab.com)

Summary

  • After register sign, the dApp keeps polling (backoff, 120s window) and shows Retry snapshot instead of a dead Registering… pill. Reload while an intent is in flight resumes wait. POST /v1/register ok still does not mean Registered or a CL8Y amount.
  • Ledger intent processing runs on its own loop so Terra/BSC ingest cannot starve snapshots. Ingest is chunked (2000) and a stale non-zero cursor jumps to tip (L1, no archive). pending_intents SQL errors fail closed (/health.intents_ok, L12) instead of looking like an empty queue.
  • OV-B6: GET /v1/balances always emits registered / pending / as_of_height / initial_balance. Missing keys are unknown, never a live 0. Terra and BSC pending → registered paths stay distinct.

Related to #14. Do not close #14 until the live writer /health is not 503, intents_ok stays true, and a real Terra (then BSC) register leaves pending and shows the GET /v1/balances amount. Do not close #9 instead of this issue.

Test plan

  • cargo test --workspace --lib (ingest window: boot jump, chunk, stale cursor)
  • LEDGER_TEST_DATABASE_URL=… cargo test --workspace --tests (pending → snapshot Terra+BSC, LCD fail leaves intent, permission error is not an empty queue, privilege grants)
  • cd frontend && npm test (timeout+Retry CTA, missing registered is not a live 0, poll backoff/abort)
  • cd frontend && npx playwright test --workers=5 (pending→registered, timeout+Retry without a second seed, remount resumes poll)
  • Ops: Coolify voting-ledger /health 200, terra_height advancing, intents_ok: true (proxy 503 is not a poller)
  • Redeploy operator-voting so live GET /v1/balances includes registered / pending / as_of_height
  • Live Terra (hpax3) then BSC 56: sign register → pending at most one wait window → list + /new show formatted amount; propose stays gated until the ledger row exists

Closes #14

## Summary - After register sign, the dApp keeps polling (backoff, 120s window) and shows **Retry snapshot** instead of a dead Registering… pill. Reload while an intent is in flight resumes wait. POST `/v1/register` `ok` still does not mean Registered or a CL8Y amount. - Ledger intent processing runs on its own loop so Terra/BSC ingest cannot starve snapshots. Ingest is chunked (2000) and a stale non-zero cursor jumps to tip (L1, no archive). `pending_intents` SQL errors fail closed (`/health.intents_ok`, L12) instead of looking like an empty queue. - OV-B6: GET `/v1/balances` always emits `registered` / `pending` / `as_of_height` / `initial_balance`. Missing keys are unknown, never a live 0. Terra and BSC pending → registered paths stay distinct. Related to #14. Do not close #14 until the live writer `/health` is not 503, `intents_ok` stays true, and a real Terra (then BSC) register leaves pending and shows the GET `/v1/balances` amount. Do not close #9 instead of this issue. ## Test plan - [x] `cargo test --workspace --lib` (ingest window: boot jump, chunk, stale cursor) - [x] `LEDGER_TEST_DATABASE_URL=… cargo test --workspace --tests` (pending → snapshot Terra+BSC, LCD fail leaves intent, permission error is not an empty queue, privilege grants) - [x] `cd frontend && npm test` (timeout+Retry CTA, missing `registered` is not a live 0, poll backoff/abort) - [x] `cd frontend && npx playwright test --workers=5` (pending→registered, timeout+Retry without a second seed, remount resumes poll) - [ ] Ops: Coolify `voting-ledger` `/health` 200, `terra_height` advancing, `intents_ok: true` (proxy 503 is not a poller) - [ ] Redeploy `operator-voting` so live GET `/v1/balances` includes `registered` / `pending` / `as_of_height` - [ ] Live Terra (hpax3) then BSC 56: sign register → pending at most one wait window → list + `/new` show formatted amount; propose stays gated until the ledger row exists Closes #14
PlasticDigits (Migrated from gitlab.com) closed this pull request 2026-08-30 05:54:51 +00:00
PlasticDigits commented 2026-08-30 05:54:52 +00:00 (Migrated from gitlab.com)

Closed: this MR targeted GitLab's empty issue branch instead of fix/14-registration-pending.

Closed: this MR targeted GitLab's empty issue branch instead of fix/14-registration-pending.

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/voting!24
No description provided.