Add Sapho first and last for cyclic auction lots

Provisionally apply first/last to the current ordinary or native Advanced normal Black Market lot. Preserve bids, funding and passes; skip passed seats until a real raise. Use a local full cycle and actual post-discard hand capacity. Keep the original Black Market opener in both settlement consumers and clear ordinary overrides for the next lot. Connect persistent controls, native disposal and existing minimal AI options.

Validation:10-file134/134, types/lint/build and eight original-action/rendered-table continuations. Public setup/cache1, real lobby circle choice, native Black Market and paid full hand preserve prior1,2/3/4 raises, one payment4 and original next opener or final-lot Revival. Eight minimal policies are legal. Corrected fixture opener/completion assumptions and external default-history/final-lot assertions; only runtime was rerun against identical source. Bounded consumer review found no concrete defect. Other timing scopes, direct combined Semuta claim/capture, full modes, final assurance and browser/deployed acceptance remain open. No saved-room/reset/restart/deployment operation.
This commit is contained in:
Quintine committed 2026-10-18 13:28:34 +11:00
1 parent 561152d58e
commit cb13a4d674
15 files changed
+920 -30

No files matched your search

+29
View File
@@ -16,6 +16,35 @@ open mode gates.
## Current checkpoint and work
**Sapho cyclic auctions — 18 October. Prototyped / Partial.** First/last now
works in ordinary cyclic lots and native Advanced normal Black Market under an
explicit provisional current-lot convention. Full local cycles preserve existing
bids, funding and passes; native traversal skips passes until a real raise.
Actual post-discard capacity admits a full holder. Original opener identity stays
with both Black Market settlement consumers; ordinary overrides clear on the
next lot. Persistent controls and existing minimal policies use the same options.
Two disjoint lanes, bounded source/continuation review and owner integration
pass **10 files134/134**, types/lint/build and eight finite original-action/
rendered-table continuations. Public host/setup and cache1 purchase use33 Basic/
38 Advanced source actions; actual next-turn Black Market uses81, including a
real lobby circle5 choice; a full hand from two normal1 purchases uses44.
Continuations use10–18 actions: prior1, actual holder2/rival3/holder4 wrap, native
payment4 and original next opener or final-lot Revival entry. Eight minimal
policy proposals are legal. Original-action passes remain spent until a real
raise; controlled pure-cycle/post-sale quotes are separately labelled.
Feedback repaired two fixture assumptions: turn2's native opener required the
original lobby circle choice, and Black Market completion must pass its native
cache auction before the following normal pool. The external rendering smoke
was corrected for default history visibility and final-lot phase closure; only
that smoke was rerun against identical source after tests/types/lint/build.
No engine repair followed frozen feedback. Actual offered/busy controls render,
without browser clicks or visual/deployed acceptance. Direct combined Semuta
claim/capture, other timing scopes, full modes and final assurance remain open.
No saved-room/database/reset/restart/deployment operation.
[Source, convention and exact proof](JUICE_OF_SAPHO_RUNTIME.md#cyclic-ordinary-and-black-market-bidding--18-october-2026).
**Guild Cunning / physical Ornithopter — 18 October. Prototyped / Partial.**
Either physical card mode may provisionally replace an earned unused Hajr
allowance after Cunning's second shipment. No ordinary move is added. Original
+29
View File
@@ -1,5 +1,34 @@
# Dune implementation status
## 18 October 2026 — Sapho current-lot cyclic auctions
First/last now connects ordinary cyclic lots and native Advanced normal Black
Market under an explicit provisional current-lot convention. Local cycles retain
all seat positions, bids/funding/passes and actual post-discard capacity. Both
advancement loops skip passed seats until a real raise. Native opener identity
survives both Black Market settlement consumers; ordinary overrides clear before
the next lot. Existing minimal policies use the projected choices, with readable
scope/block reasons and compatible old Sapho discard signatures.
Two disjoint lanes, bounded review and owner integration pass10-file134/134,
types/lint/build and eight original-action/rendered-table continuations.
Public setup/cache1 uses33 Basic/38 Advanced actions; Black Market uses81 with
an actual pre-start circle5 choice; the full hand from two normal1 purchases
uses44. Each10–18-action continuation preserves prior1 and native2/3/4 raises,
one payment4 and original following opener or final-lot Revival. Eight minimal
policy proposals remain legal; an actual pending-pass case requires a real raise
before reentry. Controlled pure quotes stay separately labelled.
Feedback corrected original Black Market opener/completion fixture assumptions.
Only the external rendering smoke was rerun after repairing default-history and
final-lot assertions against unchanged source; tests/types/lint/build retain
their exact source binding. No engine repair followed frozen feedback.
[Canonical source and exact proof](JUICE_OF_SAPHO_RUNTIME.md#cyclic-ordinary-and-black-market-bidding--18-october-2026).
No browser click, visual/deployed, direct combined Semuta claim/capture, wider
scope or complete-mode acceptance. Final assurance remains due. No saved-room/
database/reset/restart/deployment operation.
## 18 October 2026 — Guild Cunning with the physical Ornithopter
Provisional unused-entitlement composition now permits either card mode to
+96 -2
View File
@@ -1,6 +1,10 @@
# Juice of Sapho: finite ordering implementation
Updated 14 September 2026. **Partial card implementation; complete Richese/Advanced starts remain disabled.** This document distinguishes implemented boundaries from printed rules. Sources and unresolved questions remain in [the source audit](JUICE_OF_SAPHO_ENGINE_AUDIT.md). The publisher CHOAM/Richese rulebook p11 confirms Once Around last; the physical face describes first, last (including after Guild), and battle aggressor. No newly discovered official ruling resolves normal cyclic auction duration, partly completed combined turns, or first versus Guild. These three material questions have been sent to the user; no answer has been assumed.
Updated 18 October 2026. **Partial card implementation; full modes and
publication acceptance remain gated.** The earlier source audit remains the
printed-evidence baseline. The current-lot prototype below selects an explicit
provisional cyclic convention under the 14 October choose-recommended direction;
it is not a newly located publisher answer. Other timing questions remain open.
The [Battle-phase ordering prototype](SAPHO_BATTLE_ORDER.md) adds first/last
remaining battle choices. Its separate chooser, phase priority and saved-boundary
@@ -8,6 +12,96 @@ contract supersede the earlier absence of that mode below. The
[early aggressor prototype](SAPHO_AGGRESSOR.md) now uses the existing shared
pre-plan opportunity; later aggressor intervention remains unfinished.
## Cyclic ordinary and Black Market bidding — 18 October 2026
The physical face offers first/last in an ordered action; the publisher's Once
Around FAQ does not determine duration in cyclic bidding. The
[source review](JUICE_OF_SAPHO_SOURCE_UPDATE.md#ordinary-cyclic-and-normal-black-market-bidding)
identifies one upcoming circuit, the current lot and the whole phase as different
possible readings. Provisionally choose **the current lot**, anchored at the
actual next bidder when Sapho is played. This supersedes the old software
exclusion within ordinary normal auctions and native Advanced normal Black
Market. It does not alter Silent bidding, native Black Market eligibility or
extend a choice across the phase.
A holder with a pending eligible bid can move first/last in the full local cycle.
Keep other seats' relative cyclic order, including high-bid, passed and currently
full placeholders that could become relevant later. The next actor is the first
eligible unpassed seat other than the high bidder. A passed holder waits for a
real raise; a high bidder has no current pending bid to reorder. These are
explicit next-opportunity prototype boundaries, not extra printed restrictions.
Compare full effective cycles for no-op rejection: a last pending bidder may
still move behind a skipped seat that can reenter after a raise. A mere rotation
with the same next actor and effective cycle cannot consume the card.
Discarding the real card frees a hand slot before determining holder capacity.
A native full-hand Black Market seller retains its existing paid-retention
eligibility through the shared quote. Sapho does not change the physical lot,
standing bid, bidder, allied funding or passed list. Both native advancement
loops skip passes until a genuine raise clears them. Every new bid must still
strictly exceed the standing amount; Sapho supplies no standing-price purchase.
The ordinary auction retains a per-lot `saphoOrder`; the physical `g.order` and
original `opener` stay unchanged, and the next lot removes the override. A normal
Black Market retains `saphoOriginalOpener` before changing its local cycle, so
both settlement consumers resume the following normal pool from the original
physical source. Existing same-lot unfunded-payment recovery retains the new
cycle without revising its separate provisional payment policy.
Owner controls expose `scope:'cyclicAuction'` with the server event and first/
last mode, explain this provisional duration and keep blocked reasons readable.
The existing minimal bot adapter consumes the same options without new strategy
or hidden hand inspection. The optional cyclic tag on the existing Sapho discard
continuation binds its native lot and does not run a bid during disposal. Legacy
Once Around signatures and their normal resume suffix stay unchanged.
The frozen batch passes **10 files134/134**, types/lint/build and eight finite
original-action/rendered-table continuations from four public setup sources.
Actual cache1 purchase uses33 Basic/38 Advanced source actions; native next-turn
Black Market uses81, including the accepted original Emperor circle5 choice;
a full hand built through two further normal1 purchases uses44. First/last
continuations use10–18 actions: prior1 stays funded, the actual holder raises2,
rival raises3, holder wraps to4, and native purchase pays4 once. Black Market
pays its seller4 and resumes the original next opener; ordinary lots rotate
normally, while the full-hand final lot correctly enters Revival. Eight minimal
policy proposals remain legal. Another original-action case keeps prior passes
through Sapho, rejects the standing-price bid and reopens passes only on a real
raise. Nine controlled pure tests cover full cycles, no-ops, strict funding/
termination and post-sale opener/override quotes.
The first batch exposed an original fixture assumption: turn2's native Storm
made the holder already first after its initial raiser. A real pre-start circle
choice supplies the intended independent pending opportunity. Its completion
predicate also had to follow the actual intervening cache-first lot before
asserting the following normal pool. No live order/card/fund/clock injection or
engine repair followed this feedback. Original unopened Spice positions/scalar
lotteries and the explicit lobby circle choice are selected source conditions.
The external rendered smoke initially assumed default history showed the full
new log and that every completed lot had a next lot. It now checks the actual
accepted event separately, renders offered/busy/passed controls, and permits the
full-hand final lot's native phase close. Only that smoke was rerun after those
external-only repairs; all application source stayed identical to the passing
134/134/types/lint/build checkpoint. The aggregate report records exact child
report provenance rather than claiming those checks were repeated. A bounded
read-only source/consumer review found no concrete implementation defect.
Actual GameTable and isolated offered controls render with enabled and busy
states. No browser click, visual or deployed acceptance is claimed. Direct
combined Semuta claim/capture, other ordered phases, first-versus-Guild, partly
completed movement, later aggressor intervention, full modes and final assurance
remain open. No saved-room/database/reset/restart/deployment operation.
Private artifacts: `/home/quintine/.local/share/dune/checkpoints/20261018-sapho-cyclic/`.
`frozen-integrated-final/report.json` combines passing tests/types/lint/build
from `frozen-integrated-2` with `runtime-repaired-2`, all at base `561152d` and tree
`506a6b698ff5c791a1f05a0700450dc6d13837516ecdef6a8f9d3d5eee752bd3`.
`runtime-smoke.json` and private rendered HTML retain actual source/continuation
counts and controls. Final checkpoint prose/reference evidence is a documented
post-proof overlay; `documentation-overlay.json` and `git-result.json` bind that
reviewed overlay and pushed revision. Relevant helpers, engine, controls and
tests stay identical to the frozen proof.
## Implemented contract
`{type:'card',card:'richese-juice-of-sapho',scope,event,mode}` accepts one of these current opportunities and discards the actual held card once:
@@ -27,7 +121,7 @@ The [battle-order follow-up](SAPHO_BATTLE_ORDER.md) connects first/last at a cle
boundary between actual battles. It does not implement the separate aggressor
mode discussed below.
Later battle aggressor intervention, normal/Black Market cyclic bidding, other ordered actions and partly completed movement remain unfinished. First/Guild competing priority is guarded. Reacquiring and replaying Sapho while an existing movement protection remains is also guarded. Silent submission is simultaneous and receives no fabricated order or tie change.
Later battle aggressor intervention, other ordered actions and partly completed movement remain unfinished. The current-lot cyclic prototype above supersedes the earlier normal/Black Market absence claim. First/Guild competing priority is guarded. Reacquiring and replaying Sapho while an existing movement protection remains is also guarded. Silent submission is simultaneous and receives no fabricated order or tie change.
The battle audit in [the battle review](JUICE_OF_SAPHO_BATTLE_REVIEW.md) found a real Stone Burner counterexample: a plan admitted with original aggressor tie priority can become allocation-ambiguous after late Sapho. A complete implementation needs the actual allocation continuation (and a usable, possession-independent late intervention boundary), not rejection based on an opponent's hidden plan. No aggressor handler has been enabled around that defect.
+8
View File
@@ -37,6 +37,14 @@ The connected follow-up now offers first after earlier bids whenever the holder
### Ordinary cyclic and normal Black Market bidding
**18 October implementation follow-up:** the standing choose-recommended
instruction selects an explicit provisional current-lot cycle, anchored at the
live next bidder. It preserves funding/passes, original opener identity and
native strict-raise/termination. The following source uncertainty remains;
this is not a publisher answer or a user numerical ruling.
[Runtime contract](JUICE_OF_SAPHO_RUNTIME.md#cyclic-ordinary-and-black-market-bidding--18-october-2026).
The source guarantees an order effect exists for ordered actions, but does not specify the cycle anchor or duration in a cyclic auction. Plausible implementations (one upcoming circuit, whole current lot, or full Bidding Phase) have different winners and opener sequences. None was resolved by this review.
Before enabling any such adapter, specify its selected scope and test that it preserves ordinary raise/pass termination. A last bidder is not entitled to buy at the standing price: every acquisition still requires a legal bid and the ordinary closing condition. Simply moving the holder to the end of an array while advancing from a numeric cursor can skip or repeat seats; immediately changing `active` can deprive another seat of an existing opportunity. A first/last array position without a declared cycle anchor has no stable meaning once bidding wraps.
+13
View File
@@ -1,5 +1,18 @@
# Rule decision index
## Provisional Sapho cyclic lot — 18 October 2026
The printed first/last ordered-action effect does not specify cyclic duration.
Under the 14 October choose-recommended direction, use the current ordinary or
native Advanced normal Black Market lot, anchored at the live next bidder.
Keep the full local cycle, standing bid/funding/passes, strict raises and native
next-lot opener. A pending eligible holder may reorder; passed/high-bid holders
wait for another genuine opportunity. Full effective cycle comparison rejects
no-ops. This is a first-version composition, not publisher clarification or a
new human timing answer. Other ordered phases/timing remain open.
[Source and runtime contract](JUICE_OF_SAPHO_RUNTIME.md#cyclic-ordinary-and-black-market-bidding--18-october-2026).
## Guild Cunning and physical Ornithopter — 18 October 2026
The printed Nexus grants a second shipment with Hajr required for later movement.