Connect ordinary bribe payments to player controls

Players can select a non-allied recipient and explicitly pay a whole-spice bribe
outside Mentat and open decision/response windows. The server derives private
payment limits from uncommitted spice and existing joint Truthtrance completion
checks on isolated copies. Target-specific Bureaucrat guards preserve supported
redirect/allow continuations. Reserved bids, sealed spending and incoming escrow
cannot be spent twice. No strategic AI negotiation or mode/publication changes.

The panel separates deferred incoming bribes from spendable supply, disables
stale/invalid selections and uses existing request/version fencing. The chronicle
now describes actual payment and next-Mentat spendability rather than a promise.
Internal guidance and the implementation checklist record this boundary. The
separate Emperor gift/Bureaucrat source ambiguity remains explicitly pending.

Independent review found no material issue. Focused tests cover out-of-turn
payment, JSON escrow/collection, private budgets, invalid targets/amounts,
phase/response gates, reserved bids, joint promises, supported redirection and
rendered controls. Existing Bureaucrat SQLite/all-four legal response tests pass.
The new HTTP test races duplicate submissions and verifies one debit, refreshed
private balances and stale/over-budget rejection.

Types, lint, all 4968 offline tests, production build and 49 HTTP tests
pass on stable source. Preliminary checks caught a typed fixture opener and
semantic-status/internal-link/template lint requirements and the new SSR test
needed the existing Vinext Link alias. All were corrected before the
final4 run. Browser QA used genuine fresh Basic setup with a human payer and
Easy AI recipient: 11 rejected by controls, 4 paid from10 leaving6, one public
payment entry and unchanged recipient spendable10 with4 in escrow after refresh.
Keyboard selection and amount access passed. At390px the panel fits with16px
text and44px-or-larger controls; linked rules and back navigation work. Screenshot
capture timed out; full visual/assistive and all-configuration acceptance remain
open. Browser transport loss was not injected; HTTP concurrency is separately
covered. This is playability evidence, not difficulty calibration.

All 1418 original rooms, 2991 seats and auxiliary rows are
unchanged. SQLite integrity and foreign keys pass. The healthy server was reused
without restart, migration, reset or recurring maintenance.

Private evidence: 20260921-bribe-controls.
Verified source tree: b9a8594c5dcd85f78974c9647f24f5f6eba60a38c9dcd2badcf4529d1e825ae1
This commit is contained in:
Quintine committed 2026-09-21 10:22:18 +10:00
1 parent 7814f740ef
commit 91dcca46fb
16 files changed
+482 -26

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
# Ordinary bribe controls
21 September 2026. A connected prototype exposes the existing authoritative
ordinary bribe action beneath the table. This does not complete negotiation,
Leader Skills or expansion acceptance.
## Payment and controls
Choose a non-allied recipient and a positive whole amount, then explicitly pay.
The payer loses spice immediately. The recipient's share is deferred until the
next Mentat Pause; it is not current spending money. The public chronicle records
the amount and recipient, while the panel exposes only its owning seat's supply
and incoming escrow. Self/allied targets, Mentat payments and Inflation Double
remain prohibited. Bribes are allowed out of turn at otherwise open boundaries.
These preserve the existing rules and [Bureaucrat source contract](BUREAUCRAT_PAYMENTS.md).
The official [November FAQ, p. 9](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=9)
places paid bribes in front of the recipient's shield until the next Mentat Pause.
Chat messages and verbal promises do not themselves transfer spice. Emperor
gifts to allies remain a separate power.
The server derives the owner's limits from existing uncommitted spice, excluding
sealed bids, paid support, Banker spending and other reserved costs. Existing
Truthtrance completion checks further constrain voluntary spending on isolated
copies; this projection does not commit actions or live continuations. The
target-specific Bureaucrat guard can cap unsupported combinations below five.
Supported payments use the existing saved redirect/allow decision. A pending
response, decision or forced continuation disables the payment controls.
The client retains an invalid amount or removed recipient as a disabled draft
rather than silently changing a payment. The explicit action uses existing
request/version handling: concurrent or stale submissions cannot debit twice.
After an uncertain result, reconcile the game before making another payment.
Only committed game state survives refresh; unsubmitted form drafts do not.
## Verification and remaining work
Focused tests cover out-of-turn transfer, JSON escrow/collection, private owner
budgets, target and integer validation, phase/response restrictions, auction
reservations, max/max-plus-one Truthtrance spending, Bureaucrat continuation and
rendered controls. Production HTTP checks exercise concurrent duplicate payment,
stale rejection, refresh and private views; existing Bureaucrat SQLite and all
four legal AI response tests remain applicable. Source-bound checks, browser
observations, preservation, independent review and Git delivery are retained
with the private checkpoint.
AI seats can receive and later spend bribes through ordinary resource handling;
existing Bureaucrat choices remain legal. Automated negotiations and strategic
bribe initiation wait for the post-feature AI stage. Textual deals are not
automatically enforced. Complete negotiation, responsive/assistive acceptance
and all legal expansion combinations remain open.
+17
View File
@@ -39,6 +39,23 @@ CHOAM-only skill profile. Other optional modules retain their existing gates.
Tleilaxu revival, other expansion payment sources and direct gifts remain outside
this connected batch. Their absence does not establish a rule prohibition.
### 21 September gift classification review
A bounded primary-source review did not resolve whether Emperor gifts count as
the card's "payment." The [November FAQ, p. 5](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf#page=5)
describes Emperor giving/sharing spice with allies separately from the ally's
later auction payment. The designer's examples name income recipients, not
outgoing gifts. The [base secrecy rule, p. 12](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf#page=12)
does not settle gift-amount disclosure for this combination. Current gift
amounts are projected only to Emperor and recipient. Even a threshold-only
Bureaucrat prompt would reveal that the gift qualifies; the existing exact-amount
payment projection must not be applied blindly.
The user has been asked whether to retain this boundary or apply Bureaucrat
with only the qualifying threshold public. No answer is assumed. Gifts remain
outside the connected Bureaucrat payment paths while independent ordinary
[bribe controls](BRIBE_CONTROLS.md) proceed.
For native income, the prototype resolves the existing Karama income window
first, then offers Bureaucrat before crediting the eligible recipient and
continuing the original auction or shipment. A canceled income payment goes to
+16 -17
View File
@@ -6,24 +6,23 @@ gated.** Prototypes do not open completion or publication gates.
## Current checkpoint and work
Latest delivered checkpoint: `b2fcef8`, [Storm and Spice Blow practice](INTERACTIVE_INTRODUCTION.md).
Types, lint, **4,954 offline tests** and production build passed. All 1,373 rooms,
2,883 seats and existing auxiliary rows stayed unchanged. The running server was
reused. Earlier checkpoints include `66c41b2` for Kwisatz Haderach inspection,
`ed53eb7` for Storm Cards and `67e429e` for Charity/Revival practice.
The `8f7a62c` policy checkpoint removed the usage cutoff and deferred AI refinement
until feature completion, with three adjacent 75% targets. See the
[implementation history](IMPLEMENTATION_STATUS.md).
Latest delivered checkpoint: `7814f74`, [durable table discussion](TABLE_DISCUSSION.md).
Types, lint, **4,963 offline tests**, production build and **48 HTTP tests** passed.
All 1,373 opening rooms, 2,883 seats and existing auxiliary rows stayed unchanged;
new isolated QA brought the local baseline to 1,418 rooms and 2,991 seats. The
running server was reused. Earlier checkpoints include `b2fcef8` for Storm/Spice
practice and `66c41b2` for Kwisatz Haderach inspection. The `8f7a62c` policy
checkpoint removed the usage cutoff and deferred AI refinement until feature
completion, with three adjacent 75% targets.
Current work: [table discussion](TABLE_DISCUSSION.md) adds public conversation and
private human-seat messages, separate from game state and decision continuation.
Durable history, audience-filtered pagination, exact retries and active-session
fences support communication through refresh and seat recovery. AI conversation
and prose-deal enforcement remain unfinished. Source-bound checks, independent
review, browser and preservation/Git evidence belong to the private checkpoint.
A fresh bounded Terror/Kull audit confirmed existing pending rulings; independent
multiplayer communication proceeds without inventing their outcomes. The full
rules, multiplayer and component acceptance gates remain open.
Current work: [ordinary bribe controls](BRIBE_CONTROLS.md) connect existing engine
payments to named recipients, private deferred balances and authoritative
spending limits. Binding Truthtrance answers, reserved costs and Bureaucrat
continuations remain intact. Source-bound checks, independent review, browser
and preservation/Git evidence belong to the private checkpoint. Strategic AI
negotiation and complete rules/multiplayer acceptance remain open. The independent
Bureaucrat/Emperor gift source review found an unresolved payment-classification
and disclosure boundary; the existing user question remains pending.
A bounded remaining-effect audit found that the reviewed faction/Nexus candidates
still cross recorded pending rulings. Continue independent features rather than
+12
View File
@@ -1,5 +1,17 @@
# Dune implementation status
## 21 September 2026 — ordinary bribe controls
Players can now initiate the existing out-of-turn bribe action, with server-derived
recipient limits, private incoming escrow and public payment history. Limits
preserve reserved funds and binding Truthtrance completions; existing Bureaucrat
redirection and saved version handling remain authoritative. See
[bribe controls](BRIBE_CONTROLS.md). Focused rules/projection/rendering and HTTP
concurrency checks accompany independent review and private source-bound browser,
preservation and Git evidence. Strategic AI negotiation remains deferred.
The separately reviewed Emperor gift/Bureaucrat interaction remains pending;
this work does not open mode or publication gates.
## 21 September 2026 — durable table discussion prototype
Public table conversation and direct human-seat messages now have usable controls,
+1
View File
@@ -49,6 +49,7 @@ These are unresolved in the cited records. Do not infer an answer from elapsed t
| Boundary | Still unresolved | Existing record |
| --- | --- | --- |
| Bureaucrat / Emperor gifts | Whether an allied gift is a qualifying payment and whether its threshold may be revealed. Existing gift amounts are private to payer/recipient; the card and retrieved primary sources do not explicitly settle this combination. The user question is pending; no answer or exact-amount disclosure is assumed. | [Gift classification review](BUREAUCRAT_PAYMENTS.md#21-september-gift-classification-review) |
| Reinforcements cost | A user question asks whether to keep the card disabled, always transfer three reserve forces on every outcome, or waive only a sole traitor-call winner's cost. No answer is assumed. Advanced Atreides loss accounting and same-plan Harass ordering are separate unresolved combinations. Eligibility must not depend on concealed matching Traitors. | [Fresh cost review](ECAZ_TREACHERY_RULES.md#14-september-reinforcements-cost-review) |
| Harass / Stone Burner | A user question has been sent: keep the combination gated or compare forces remaining after withdrawal. No answer is assumed. The Richese card-family configuration is guarded publicly; hidden Stone Burner custody never controls eligibility. Ambiguous physical allocations and other optional modules remain unfinished. | [Current boundaries](HARASS_WITHDRAW_RUNTIME.md#current-boundaries) |
| Recruits late accounting and rates | A user question has been sent for two free plus one paid Atreides return before Recruits: keep the disputed case gated, or one/two further free returns without refund. No answer is assumed. Late-changing free rates, pending repricing and same-turn recovered-card replay also stay gated. The connected clean-case preview retains the independent seven-force cap after faction-advantage cancellation as an explicit inference, not a direct combined FAQ. | [Source audit](RECRUITS_RULES.md), [runtime scope](RECRUITS_RUNTIME.md) |