Files
Dune/docs/AUCTION_TIME_LIMIT.md
Quintine 7fc6f1cd43
Verify and publish checkpoint container / container (push) Canceled after 0s
Time sequential Richese auctions
2026-10-29 02:11:18 +11:00

135 lines
7.9 KiB
Markdown

# Ordinary-auction time limit
## Sequential Richese auctions — 29 October 2026
**Prototyped / Partial.** Fresh Once Around cache/Black Market lots and normal
Black Market lots use the same trusted ten-second room clock as ordinary
auctions. Expiry performs the actual Richese pass. A binding Once Around
Truthtrance Yes instead submits its lowest compatible funded bid, retaining
the existing provisional online convention. Truthtrance and other decisions
hold the remaining budget; changing a later bidder's order does not give the
current bidder more time. Room pause/control fences, stale-action checks and
the existing bounded worker apply. The public countdown does not expose the
concealed Black Market card.
The publisher's Basic ten-second rule and the authorized Advanced revision
physical p. 8 / printed p. 6 govern ordinary bidding. Applying that limit to
Once Around is a provisional online interpretation, not a separate publisher
ruling. Silent auctions stay untimed; previously open unstamped special lots
retain their saved behavior. Real Basic cache and Advanced Black Market tests,
display and isolated trusted-room cases plus one authenticated HTTP QA room
cover this slice. Complete modes, other auction interactions and final deployed
acceptance remain open.
[Native cases](../tests/richese-auction-clock-runtime.test.ts),
[display](../tests/richese-auction-countdown.test.tsx),
[trusted-room cases](../tests/rooms-richese-auction-clock.test.ts),
[HTTP journey](../tests/richese-auction-clock-http.test.ts).
## Source and scope
**Prototyped / Partial.** Publisher Basic rulebook printed8, Time Limit,
requires a bid within ten seconds of the previous player and treats silence as
a pass. The user-authorized supplied revised Advanced rulebook repeats it on
physical8/printed6. This is a Basic and Advanced rule, not an AI pacing option.
[Publisher rulebook](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf#page=8).
New native ordinary lots use a versioned clock. An already-open older lot with
no stamp retains its saved untimed protocol; the next newly opened native lot
uses the clock. At that checkpoint special procedures retained their own rules;
the sequential Richese extension is described above.
Pure engine/offline simulation has no wall-clock dependency. Only trusted
room time arms, suspends or expires an online clock; clients cannot supply time.
## Online timing convention
The clock starts when the current bidder can actually bid. Inspection,
Truthtrance, cancellation, payment and other native decisions hold the exact
remaining budget. Their native owners and mandatory continuation stay intact.
An ordinary bid or pass starts ten seconds for the next original bidder;
unrelated polls, chat and repeated requests cannot refresh the deadline.
At the exact deadline the server follows the canonical pass continuation.
A binding Truthtrance answer can legally prohibit passing. Under the standing
14 October choose-recommended policy, provisionally submit only its quoted
lowest legal bid compatible with the whole answer instead of letting silence
evade it. Finite predicate thresholds are quoted with exact private native
bounds; no speculative purchase is executed to search for an amount. This is an
explicit online composition, not a publisher timeout/Truthtrance worked example.
It grants no free purchase, extra bid or strategic escalation; normal payment
is still due if that bid wins. A whole-answer alternative permitting pass keeps
that ordinary pass available. Existing actual impossibility rules remain.
An administrative room-control or closure revision re-arms the current bid
with ten seconds once play resumes. This conservative online convention also
covers a pause that no active client observed. No paused, closed or removed
room advances. Current native interruptions retain their remaining budget.
Source and control epochs are private; the public countdown contains only an
opaque event, current bidder, remaining time and running status.
## Server continuation and controls
The persisted clock binds the exact native turn/lot/bidder/bid/pass/order
source. Version and operational-control fences prevent concurrent workers or
late requests from acting on a superseded bid. Authenticated reads/actions
resume or expire it before accepting a late bid. A bounded background worker
runs alongside existing automatic/AI work; it is not a durable alarm. After a
stopped host, the stored deadline is evaluated on the next authenticated
request. Server restarts neither invent a bid nor reset a game.
The ordinary-auction notice persists. Its local animation is display only;
only the server decides expiry and emits the native action. The notice shows
held/paused/starting states and explains any compulsory Truthtrance bid.
No client-generated pass, hidden-card source or disposable popup is used.
## Evidence and remaining scope
Helper: game/auction-clock.ts. Engine timing/source/expiry and private-to-public
projection: game/engine.ts. Trusted storage scheduling: db/rooms.ts and
room-continuation.ts. Human countdown: components/auction-countdown.tsx and the
native ordinary-auction section of components/game-table.tsx.
## Verified checkpoint — 27 October 2026
The frozen source passes17 files,199/199, types/lint and production build.
Thirteen pure clock, four real-component/display, nine native engine and14
trusted SQLite/fake-clock cases add40 focused checks. Existing bid, auction
retirement, continuation, funding, controls, bot pacing and reference cases
remain in the related union. Exact-deadline, held/resumed timing, source change,
old-lot, both control-revision fences, current-seat authorization, competing
writes and scalar/whole Truth obligations have bounded evidence.
Five native journeys plus one actual local HTTP journey pass, with14 full
GameTable SSR renders and43 HTTP requests. Original Basic source20 and Advanced
source23 expire by canonical pass. Source22 covers forced whole bid3 then pay2
and its real invoice, actual Truth holding8s until resolution, and a voluntary
first alternative5 whose compelled minimum is3. The HTTP room is genuinely
created/joined/readied/started, then reaches ordinary bidding through12 actual
controls; bid1 succeeds and the next bidder's silence records a native pass.
Late bid2 with stale version and forged now0 is rejected. Cookies stay in memory
and are neither logged nor saved. Native original inventories remain.
The first runtime smoke catches a countdown hidden behind the Truth control;
it is moved into persistent notices. Type and lint feedback is repaired. The
first related union reports197/199: its OR-pass test assumed the old lot stayed
open, and its VM concurrency test waited too few cross-context microtasks.
The first now compares actual canonical native pass/retirement and resolves
native aftermath before testing later payment. The second waits an event-loop
barrier while still requiring bots to start before releasing the sleeping
clock. Both exact repaired cases pass, then the related union passes199/199.
V5 retains V4's six passing runtime journeys through a per-file manifest:
only the two failing test files changed; all production code, native fixtures
and the private runtime script are identical. The final source passes quick
checks, related tests and build without recreating that HTTP room again.
Proof/manifest:
`/home/quintine/.local/share/dune/checkpoints/20261026-auction-clock-proof-v5/`;
reused journeys/HTML: adjacent `20261026-auction-clock-runtime-v4/`.
These are local native/SSR/controlled-display and real HTTP checks, not browser
or deployed acceptance. At that checkpoint special-auction timers, wider module/order interactions,
full-mode acceptance and comprehensive recovery/privacy/custody assurance remain
open. Existing publication/AI gates are preserved.
The stopped local server was started without resetting storage. HTTP proof
uses a dedicated QA room only; no existing game action, reset, deletion, restart
or deployment is performed.