Skip to content

Vault accessibility baseline: ARIA grids, keyboard flows, chart alternatives, axe checks - #352

Merged
techisigu merged 9 commits into
Zenith-options:mainfrom
aishabellova:drips/285-286-287-288
Oct 24, 2026
Merged

techisigu merged 9 commits into
Zenith-options:mainfrom
aishabellova:drips/285-286-287-288

Conversation

@aishabellova

Copy link
Copy Markdown
Contributor

Summary

Vault accessibility baseline: ARIA grids, keyboard flows, chart alternatives, axe checks

What was solved

#285 — Bring the Vault Surfaces Up to the Accessibility Baseline Established by the A11y Framework

Apply the accessibility baseline to the vault surfaces: ARIA grid semantics with keyboard navigation for vault list and epoch-history tables, keyboard-operable deposit/withdraw/queue-cancel/acknowledgement flows with visible focus, labels, described-by help, and announced validation errors, keyboard-explorable NAV/APY history charts with text/table alternatives, throttled peripheral announcements for epoch/NAV/redemption changes, reduced-motion compliance, high-contrast support, and axe checks in vault unit tests and Playwright runs.

Addressed:

  • Changed: vitest.setup.ts
  • Vault list and epoch-history tables adopt the ARIA grid pattern with full keyboard navigation and correct row/column announcement
  • Deposit, withdraw, queue-cancel, and acknowledgement flows are completable with keyboard only, with visible focus, correct labels, described-by help text, and announced validation errors
  • NAV/APY history charts expose a keyboard-explorable data representation and a text/table alternative with the same values

#286 — Implement Deterministic Epoch Scheduling With Timezone Configuration, Clock-Skew Handling, and Missed-Boundary Recovery

Implement a deterministic epoch scheduler for vaults: pure UTC-anchored boundary math (fixed interval and calendar-anchored schedules), a clock-skew policy against Stellar ledger close time, idempotent (vault, epoch index) triggering with persisted boundary state, missed-boundary recovery on startup, and a dry-run preview of upcoming boundaries surfaced through the vaults API and documented for operators.

Addressed:

  • Changed: src/lib/api/vaults.ts
  • Per-vault schedule config supporting fixed interval and calendar-anchored (e.g. monthly expiry-aligned) schedules with an explicit UTC anchor and no dependence on server local time
  • Pure boundary computation function with golden-vector tests covering month ends, leap days, DST-adjacent dates, and anchors in the past
  • Clock-skew policy comparing against ledger close time with a documented tolerance and defined behaviour when local clock is behind or ahead of the ledger

#287 — Implement Indexer Cursor Checkpointing, Backfill, and Replay Tooling for Vault Events

Add durable indexer cursor checkpointing, a resumable backfill command, a shadow-dataset replay command, idempotent event upserts, gap/lag detection, and an operator runbook for promotion/rebuild of vault event indexing.

Addressed:

  • Changed: docs/LEDGER.md
  • Persist indexer cursor durably with ledger sequence and ledger hash, updated in the same transaction as the events it describes so the cursor never advances ahead of data.
  • Provide a backfill command that ingests a ledger range with configurable concurrency and rate limiting and resumes safely if interrupted.
  • Provide a replay command that writes re-derived events into a shadow table/schema for comparison before promotion.

#288 — Add Canary Deployment and Post-Deploy Verification for Vault Contract and Backend Releases

Add a post-deploy verification and canary stage for vault contract and backend releases: a read-only smoke suite run against the deployed environment (registry, NAV/share price, simulated deposit/withdrawal, epoch ledger entry, indexer ledger-lag bound), a canary traffic stage for backend services with structural response comparison against stable, automatic rollback triggers with a documented manual override, per-release verification records surfaced in release notes and the status page feed, and a documented staging rollback rehearsal.

Addressed:

  • Changed: .github/workflows/ci.yml
  • Smoke suite runs against the deployed environment: read vault registry, read NAV/share price, simulate (not submit) a deposit and a withdrawal, read an epoch's ledger entry, and assert the indexer is within a defined ledger-lag bound.
  • Canary stage for backend services: small traffic percentage or shadow traffic with structural comparison of responses to the stable version, promoting only when error rate and latency are within budget.
  • Automatic rollback triggers on smoke failure, canary error/latency regression, and indexer lag breach, with a documented manual override.

Changes

  • vitest.setup.ts (modify)
  • .github/workflows/ci.yml (modify)
  • src/lib/api/vaults.ts (modify)
  • docs/LEDGER.md (modify)

Approach

  1. Bring the Vault Surfaces Up to the Accessibility Baseline Established by the A11y Framework #285 — Bring the Vault Surfaces Up to the Accessibility Baseline Established by the A11y Framework (Changed: vitest.setup.ts)
  2. Implement Deterministic Epoch Scheduling With Timezone Configuration, Clock-Skew Handling, and Missed-Boundary Recovery #286 — Implement Deterministic Epoch Scheduling With Timezone Configuration, Clock-Skew Handling, and Missed-Boundary Recovery (Changed: src/lib/api/vaults.ts)
  3. Implement Indexer Cursor Checkpointing, Backfill, and Replay Tooling for Vault Events #287 — Implement Indexer Cursor Checkpointing, Backfill, and Replay Tooling for Vault Events (Changed: docs/LEDGER.md)
  4. Add Canary Deployment and Post-Deploy Verification for Vault Contract and Backend Releases #288 — Add Canary Deployment and Post-Deploy Verification for Vault Contract and Backend Releases (Changed: .github/workflows/ci.yml)

Issues

Closes #285
Closes #286
Closes #287
Closes #288

@drips-wave

drips-wave Bot commented Oct 21, 2026

Copy link
Copy Markdown

@aishabellova Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

techisigu and others added 5 commits October 24, 2026 12:58
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- .github/workflows/ci.yml: merged [markers] — model resolved the conflict markers
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
@techisigu
techisigu merged commit 9662a0a into Zenith-options:main Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment