Skip to content

feat(governance): configurable vote duration and per-claim deadlines - #244

Merged
jhayniffy merged 2 commits into
InsurNiffy:mainfrom
aji70:feat/governance-voting-duration-ledgers
Mar 28, 2026
Merged

feat(governance): configurable vote duration and per-claim deadlines#244
jhayniffy merged 2 commits into
InsurNiffy:mainfrom
aji70:feat/governance-voting-duration-ledgers

Conversation

@aji70

@aji70 aji70 commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Makes claim voting windows tunable via instance storage while keeping each claim’s voting deadline fixed at filing time. Finalization and late-vote checks use the stored voting_deadline_ledger, not the current admin config. Frontend countdowns prefer that field plus Horizon’s latest ledger; backend/OpenAPI expose it on claim summaries.
closes #191

Contract

  • Instance key VoteDurLedgers with getters; default VOTE_WINDOW_LEDGERS if unset (upgrades).
  • admin_set_vote_duration_ledgers / get_vote_duration_ledgers (Soroban 32-char export limit).
  • MIN_VOTING_DURATION_LEDGERS / MAX_VOTING_DURATION_LEDGERS with rationale in ledger.rs.
  • On file_claim: voting_deadline_ledger = filed_at + duration (checked_addOverflow).
  • Vote window: inclusive through deadline ledger (is_claim_voting_open); finalize when now > voting_deadline_ledger.
  • VotingDurationUpdated { old_ledgers, new_ledgers } when admin changes duration.
  • ClaimSummary + list_claims include voting_deadline_ledger.
  • Tests: tests/voting_duration_config.rs, ledger unit tests; Claim test fixtures updated with asset.
  • Build fixes: remove duplicate contractimpl methods in lib.rs; fix admin import.

Frontend

  • vote.ts: isVoteOpen / deadlineMs use voting_deadline_ledger (inclusive semantics).
  • use-latest-ledger + ClaimsBoardClaimListClaimRowDeadlineDisplay (ledger + optional legacy ISO).

Backend / docs

  • ClaimSummaryDto + OpenAPI: optional voting_deadline_ledger.
  • voting.mdx: configurable duration and immutable per-claim deadlines.

How to verify

cd contracts/niffyinsure && cargo test --features testutils --lib
cd contracts/niffyinsure && cargo test --features testutils --test voting_duration_config

- Store vote duration in instance storage; admin_set_vote_duration_ledgers (32-char limit)
- Snapshot voting_deadline_ledger at filing; inclusive vote deadline; finalize after
- MIN/MAX bounds + VotingDurationUpdated event; ClaimSummary includes deadline
- Tests: voting_duration_config + ledger bounds; fix Claim.asset in test fixtures
- Frontend: Horizon latest ledger + DeadlineDisplay from voting_deadline_ledger
- Backend DTO/OpenAPI: voting_deadline_ledger; voting.mdx docs
- Fix duplicate contractimpl methods and admin events import in lib/admin

Made-with: Cursor
@drips-wave

drips-wave Bot commented Mar 27, 2026

Copy link
Copy Markdown

@aji70 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

@jhayniffy
jhayniffy merged commit 9c4049b into InsurNiffy:main Mar 28, 2026
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.

Contract — Configurable voting deadline: per-claim ledger offset from filing

2 participants