Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/wiki/progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Stage ledger. One row per stage; keep entries short. Verifier = exact fresh comm

| Stage | Status | Verifier | Review | Next |
|---|---|---|---|---|
| Prevent auction overlap with fee handout | human-review-required (base a6f20e340) | RED: stale indexed length, click cutoff, and silent handler block reproduced · GREEN: unit 891 incl. helper 5/5 · launch-write 8/8 · lint/typecheck/e2e-ts · helper 72/72 · smoke 64 + 1 skip · visual default+blocked | Dark HOLD reconciled; PR review comments addressed: indexed render guard + handler RPC/clock recheck, visible click-time feedback, single clock, fake-timer cleanup; Engineer review still required for UTC boundary and wallet/mining safety buffer | PR #1090 open; wiki-lint pre-existing stale design-system blocker |
| Preserve Index DTF section in cmd-k navigation | human-review-required (base ebcd6febe) | RED: proposal/rebalance both landed overview; GREEN 2/2 · gate typecheck/lint/880 unit · live Ctrl+K proposal→governance + rebalance→auctions | independent Intent + Engineering Risk PASS, no findings; shared route-selection behavior requires Engineer review | merge only after Engineer review; wiki-lint blocked by pre-existing stale design-system page |
| vote modal: address-length title overflowed the dialog | done (base 6854a370b) | lint · typecheck · test:run · e2e helper units · smoke 58 · new `vote-modal-long-title` spec desktop+mobile green · RED-verified (reverted the index-dtf modal fix → checkbox right edge 943 vs dialog 849.9) | product/correctness: self — copy + layout only, no tx path touched | — |
| Fix DTF settings confirm button | human-review-required (base 6854a370b) | RED: rounded seeded distribution blocked mandate confirm; GREEN: unit 878 incl. mapper 27/27 · focused E2E 5/5 · typecheck · lint | Dark HOLD on untested mapping → 27 exhaustive mapper tests → Dark PASS; Light PASS; CodeRabbit 2 Minor → resolved (test IDs + editable confirmed state) | PR #1084 open; Engineer review required before merge; wiki-lint blocked by pre-existing stale design-system page |
Expand Down
4 changes: 3 additions & 1 deletion e2e/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,9 @@ failure paths. Receipts resolve only recorded hashes.
**Frozen time.** `freezeTime(page, seconds)` BEFORE navigation (browser +
Node RPC clocks in lockstep), `advanceTime(page, ms)` after actions. Compute
timestamps relative to snapshot data (`proposalTime`, `rebalanceTime`) so
re-captures keep working.
recaptures keep working. Use `harness.chain.jumpTo(seconds)` only to model a
deadline crossing between render timer ticks: it moves `Date.now()` and the RPC
clock without firing timers, so handler-time defenses can be tested directly.

**Compliance/geolocation.** `test.use({ compliance: {...} })` sets the
API-level geolocation for the whole spec; per-DTF restriction goes through
Expand Down
5 changes: 4 additions & 1 deletion e2e/harness/controller.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Page } from '@playwright/test'
import type { Address, Hex } from 'viem'
import { advanceTime, freezeTime } from '../helpers/clock'
import { advanceTime, freezeTime, jumpTime } from '../helpers/clock'
import type { MockOverrides } from '../helpers/overrides'
import type { TxRecord } from '../helpers/provider'
import type { BoundaryRequest } from '../helpers/requests'
Expand Down Expand Up @@ -34,6 +34,9 @@ class ChainControl {
advance(ms: number): Promise<void> {
return advanceTime(this.page, ms)
}
jumpTo(seconds: number): Promise<void> {
return jumpTime(this.page, seconds)
}
}

// The injected EIP-6963 test wallet (account = TEST_ADDRESS). `chain` reflects
Expand Down
9 changes: 9 additions & 0 deletions e2e/helpers/clock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,15 @@ export async function advanceTime(page: Page, ms: number) {
}
}

// Move Date.now() and the RPC clock without firing browser timers. This models
// crossing a deadline between React timer ticks so click handlers must recheck
// time instead of trusting their last rendered state.
export async function jumpTime(page: Page, timestampSeconds: number) {
frozenMs = timestampSeconds * 1000
await page.clock.setSystemTime(frozenMs)
setMockNow(frozenMs)
}

// A timestamp (seconds) placed inside/around a proposal's voting window, read
// from snapshot data so the frozen clock lands the proposal in a known phase.
export function proposalTime(
Expand Down
Loading