Enforce ordinary auction bidding deadlines online
This commit is contained in:
1 parent
f76c8dfb93
commit
f548039cd8
17 files changed
+1363
-33
No files matched your search
@@ -0,0 +1,107 @@
|
||||
# Ordinary-auction time limit
|
||||
|
||||
## 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. Special silent/once-around procedures retain their own rules.
|
||||
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. 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.
|
||||
+46
-1
@@ -1,6 +1,6 @@
|
||||
# Current development status
|
||||
|
||||
Updated 26 October 2026. **The full twelve-faction goal is unfinished. Basic
|
||||
Updated 27 October 2026. **The full twelve-faction goal is unfinished. Basic
|
||||
is playable. Advanced, expansion-faction and supported optional-module starts
|
||||
are labelled previews; complete rules/publication acceptance remains gated.**
|
||||
|
||||
@@ -16,6 +16,51 @@ open mode gates.
|
||||
|
||||
|
||||
## Current checkpoint and work
|
||||
**Ordinary-auction ten-second bidding — 27 October. Prototyped / Partial.**
|
||||
New ordinary lots in Basic and Advanced now use trusted server time. Silence
|
||||
follows the actual native pass; when a binding Truthtrance answer forbids it,
|
||||
the provisional online convention submits the lowest legal required bid across
|
||||
whole-answer alternatives. Native quote bounds select that amount without
|
||||
speculatively settling purchases. Winning bids retain normal payment.
|
||||
|
||||
Inspection, Truthtrance and other native decisions hold remaining time. The
|
||||
countdown persists while another control owns the table. Administrative room-
|
||||
control/closure revisions conservatively re-arm ten seconds on resumption,
|
||||
including unobserved pauses. Those online conventions are explicit. Old open
|
||||
unstamped lots retain their saved timing; future new lots are timed. Only
|
||||
trusted room time can advance the clock. Existing online AI pacing runs in
|
||||
parallel; no strategy or calibration changes are made.
|
||||
|
||||
The frozen batch passes **17 files,199/199**, types/lint/build. Thirteen helper,
|
||||
four display, nine native and14 SQLite/fake-clock cases provide40 new checks.
|
||||
They cover exact deadlines, native interruption, late/forged-time requests,
|
||||
minimal compelled bids, actual purchases, source changes, old lots, authenticated
|
||||
access and existing version/control fences. Six runtime paths pass: five native
|
||||
journeys plus one real local HTTP room, with14 GameTable SSR renders and43 HTTP
|
||||
requests. Basic source20 and Advanced source23 time out through actual pass;
|
||||
source22 covers whole bid3/pay2, held Truth time and alternatives5/3 choosing3.
|
||||
The public HTTP path reaches bidding through12 actual controls after lobby/start,
|
||||
accepts bid1, records the next bidder's timeout/pass and rejects late bid2.
|
||||
Original native inventories remain; no played source state is installed.
|
||||
|
||||
Runtime-first feedback catches the hidden held countdown and moves it into the
|
||||
persistent notice area. Types/lint feedback is repaired. The affected union
|
||||
then catches two test assumptions: a pass can retire the lot, and cross-context
|
||||
async callbacks need an event-loop barrier. Both exact repaired cases pass.
|
||||
V5's manifest proves only those two test files changed after V4's passing runtime;
|
||||
all production, native fixtures and the runtime script are identical. The six
|
||||
runtime journeys are reused, then final quick checks,199 tests and build pass.
|
||||
|
||||
Proof/manifest:
|
||||
`/home/quintine/.local/share/dune/checkpoints/20261026-auction-clock-proof-v5/`;
|
||||
reused journeys/HTML: adjacent `20261026-auction-clock-runtime-v4/`.
|
||||
The stopped local server was started without resetting storage and remains
|
||||
healthy after build (HTTP200). Three dedicated local QA rooms from iteration
|
||||
are preserved; no existing room was acted on. No reset, deletion, restart or
|
||||
deployment is performed. Special-auction timing, wider interactions and final
|
||||
browser/deployed/recovery/privacy/custody acceptance remain; no mode is certified.
|
||||
[Source, conventions and scope](AUCTION_TIME_LIMIT.md).
|
||||
|
||||
**Truthtrance / combined current battle decisions — 26 October. Prototyped / Partial.**
|
||||
Whole turn-action questions now combine atomic current battle-plan predicates
|
||||
or the original revealed-battle Traitor declaration with payments and frozen
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 27 October 2026 — Ordinary-auction ten-second deadline
|
||||
|
||||
**Ordinary-auction ten-second bidding — 27 October. Prototyped / Partial.**
|
||||
New ordinary lots in Basic and Advanced now use trusted server time. Silence
|
||||
follows the actual native pass; when a binding Truthtrance answer forbids it,
|
||||
the provisional online convention submits the lowest legal required bid across
|
||||
whole-answer alternatives. Native quote bounds select that amount without
|
||||
speculatively settling purchases. Winning bids retain normal payment.
|
||||
|
||||
Inspection, Truthtrance and other native decisions hold remaining time. The
|
||||
countdown persists while another control owns the table. Administrative room-
|
||||
control/closure revisions conservatively re-arm ten seconds on resumption,
|
||||
including unobserved pauses. Those online conventions are explicit. Old open
|
||||
unstamped lots retain their saved timing; future new lots are timed. Only
|
||||
trusted room time can advance the clock. Existing online AI pacing runs in
|
||||
parallel; no strategy or calibration changes are made.
|
||||
|
||||
The frozen batch passes **17 files,199/199**, types/lint/build. Thirteen helper,
|
||||
four display, nine native and14 SQLite/fake-clock cases provide40 new checks.
|
||||
They cover exact deadlines, native interruption, late/forged-time requests,
|
||||
minimal compelled bids, actual purchases, source changes, old lots, authenticated
|
||||
access and existing version/control fences. Six runtime paths pass: five native
|
||||
journeys plus one real local HTTP room, with14 GameTable SSR renders and43 HTTP
|
||||
requests. Basic source20 and Advanced source23 time out through actual pass;
|
||||
source22 covers whole bid3/pay2, held Truth time and alternatives5/3 choosing3.
|
||||
The public HTTP path reaches bidding through12 actual controls after lobby/start,
|
||||
accepts bid1, records the next bidder's timeout/pass and rejects late bid2.
|
||||
Original native inventories remain; no played source state is installed.
|
||||
|
||||
Runtime-first feedback catches the hidden held countdown and moves it into the
|
||||
persistent notice area. Types/lint feedback is repaired. The affected union
|
||||
then catches two test assumptions: a pass can retire the lot, and cross-context
|
||||
async callbacks need an event-loop barrier. Both exact repaired cases pass.
|
||||
V5's manifest proves only those two test files changed after V4's passing runtime;
|
||||
all production, native fixtures and the runtime script are identical. The six
|
||||
runtime journeys are reused, then final quick checks,199 tests and build pass.
|
||||
|
||||
Proof/manifest:
|
||||
`/home/quintine/.local/share/dune/checkpoints/20261026-auction-clock-proof-v5/`;
|
||||
reused journeys/HTML: adjacent `20261026-auction-clock-runtime-v4/`.
|
||||
The stopped local server was started without resetting storage and remains
|
||||
healthy after build (HTTP200). Three dedicated local QA rooms from iteration
|
||||
are preserved; no existing room was acted on. No reset, deletion, restart or
|
||||
deployment is performed. Special-auction timing, wider interactions and final
|
||||
browser/deployed/recovery/privacy/custody acceptance remain; no mode is certified.
|
||||
[Source, conventions and scope](AUCTION_TIME_LIMIT.md).
|
||||
|
||||
## 26 October 2026 — Combined current battle decisions
|
||||
|
||||
**Truthtrance / combined current battle decisions — 26 October. Prototyped / Partial.**
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# Rule decision index
|
||||
|
||||
## Ordinary-auction ten-second deadline — 26 October 2026
|
||||
|
||||
Publisher Basic printed8 and supplied Advanced physical8/printed6 require a
|
||||
bid within ten seconds, otherwise pass. New versioned ordinary lots use trusted
|
||||
server time and native pass/order/settlement; old open unstamped lots retain
|
||||
their saved protocol. Native decisions suspend remaining time. The standing
|
||||
choose-recommended policy provisionally submits only a required legal Truth
|
||||
bid if passing would violate a binding answer; normal payment remains owed.
|
||||
Room-control/closure revisions conservatively re-arm ten seconds after play
|
||||
resumes, including unobserved pauses. These online compositions are explicit,
|
||||
not publisher timing examples. Special-auction and full-mode gates remain.
|
||||
[Contract and source](AUCTION_TIME_LIMIT.md).
|
||||
|
||||
## Combined final Nexus membership — 26 October 2026
|
||||
|
||||
Compose final current-Nexus membership with the whole native turn-action
|
||||
|
||||
Reference in new issue
Block a user