Connect occupied Homeworld economics and Bidding

This commit is contained in:
Quintine committed 2026-10-05 12:48:08 +11:00
1 parent a6e80c7e23
commit 0774ae6f83
32 files changed
+3220 -111

No files matched your search

+44 -3
View File
@@ -8,15 +8,56 @@ The user-supplied `UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf` is now
an [authorized Advanced source of truth](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026),
including its identified unofficial rulings. The 44-page file has 2.3
metadata but a visibly retained 2.2 editorial heading; the index records its
SHA-256 and physical-page citations. Current Guild payment/source passages
were compared with the wave. Wider Advanced reconciliation remains open.
SHA-256 and physical-page citations. Guild payment/source passages and Advanced
Homeworld sole/last-departure occupation now have explicit source cutovers.
Wider Advanced reconciliation remains open.
Adoption does not reset games, convert Basic, republish the local PDF or
open mode gates.
## Current checkpoint and work
**Stable Homeworld occupation — bounded Development Verified:**
**Occupied Homeworld economics / Bidding — bounded Development Verified:**
original fresh2..6 Basic/Advanced setup and selected decks; Advanced uses the
authorized supplied p22 sole qualification retained until its last force leaves,
while Basic keeps its historical lifecycle guards. Actual Kaitain/Junction/
Richese percentages and completed total Southern Collection retain original
invoices, one payer debit, immediate sharing and signed once-only continuations.
Caladan shares the admitted private face, Ix transfers its actual pool, Richese
keeps native terms/seller/invoice while the occupier chooses only the card, and
Giedi awards one original purchase bonus using actual receiving capacity.
Native cancellation remains distinct from printed occupied effects.
Final247 affected cases/24 files, types/lint/build and all4 legal policies pass.
Human shipping exposed lost concurrent BG accompaniment; the signed suffix
now preserves it through allocation/JSON and actual subsequent advisor placement.
Wrong bonus recipients use normal RuleError; actual HTTP409 leaves version42.
Nondeterministic original-deal capacity/stock fixtures are conserved, not rerolled.
Pre-advisor-repair50 genuine games on unchanged09cfdd19 tree:44 finish18,977
accepted/19,149 attempts/491 JSON continuations; all50 total22,383/22,580/580.
Six remaining captures are four Basic occupation and two CHOAM source guards.
Five original Advanced captures finish3,135/3,136/83 at their original seeds;
resume restarts rather than reconstructs the random stream. After repair,
five fresh six-seat Advanced games finish4,339/4,358/114 on unchanged2ada8996
tree, including19 recorded rejected candidates. No zero-rejection/full-mode claim.
Original CLI HH7VHT2U v21/4H5CZDMA v18/6K5JFNPH v18 preserve actors and stock.
Real turn-two alliances precede labelled conserved positions. Human390px verifies
Kaitain1/1, one allied bonus despite full Harkonnen8, actual three-force shipping6
and Junction1/2 with restored BG accompaniment. Completed Fremen Collection9
retains5 and shares4 as1/3; HH7VHT2U **v72/Mentat** wallets are Emperor5/Guild17/
Harkonnen11/Fremen10/Atreides13/BG9. Richese native counterclockwise terms,
original Ornithopter5 invoice and3/2 net split reach **v29**; sole Ix pool6→5
reaches **v25**, with native Ix-known0 and Technology still native.
Refresh has no root390px overflow. [Exact source/program evidence](HOMEWORLD_OCCUPATION_RULES.md#original-runtime-and-human-evidence).
Tupile capacity/cleanup, exceptional Duke, Basic/CHOAM rulings, other overlays,
public/save conversion and full/deployed assurance remain open. No reset or
current-garrison shortcut. Publication is not deployment; NAS prerequisites
and last observed liveab5c782 remain unchanged.
**Prior checkpoint5e902e3: stable Homeworld occupation — bounded Development Verified:**
fresh original2..6 Basic/Advanced setup/selected decks and Homeworlds alone;
no played-game conversion or inferred current controller. Continuously present
sole qualification, without competing/departed/contested/restored-high history,
+107 -1
View File
@@ -2,7 +2,113 @@
Runtime follow-up, 10 September 2026: [Tupile intelligence and qualification history](HOMEWORLD_TUPILE_INTELLIGENCE_RUNTIME.md#occupation-observation-boundaries) implement confirmed observations while retaining the unresolved entitlement and expiry questions below. The source audit remains historical evidence.
## Occupied economics, Bidding and Advanced source cutover — 5 October 2026
The supplied `UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf`, physical
**page22**, is authorized for Advanced. Its occupation clause replaces the
publisher boundary qualification with **sole foreign presence**, then retains
that occupier’s advantages **until none of its forces remain**. This is the
supplied revision’s rule, not a newly located GF9 erratum or a Basic ruling.
An intervening foreign army, a later turn or native high population does not
expire that retained Advanced source. Departure clears it; a later sole arrival
creates a new epoch. Original ordered semantic snapshots prove these transitions;
turn-boundary foreign presence alongside natives cannot invent Advanced
qualification. Unobserved physical writes and missing history cannot mint an
entitlement. Basic retains the historical pending guards below.
The same fresh `homeworld-occupation` entry connects these original producers:
| Printed source | Original consumer and ownership |
| --- | --- |
| Kaitain | Eligible paid Treachery receipt: native rounded-up half, occupied rounded-down half; buyer payment occurs once. |
| Junction | Eligible other-player shipping receipt after original Guild-funded exclusions and routing; the existing two-odd-contributor guard remains. |
| Richese income | Rounded-down half of actual seller net received, not the gross sale or contribution routed to Emperor. |
| Southern Hemisphere | One completed actual native Collection aggregate, including settled shared and occupied-bank credits; round once and redistribute the already credited amount. |
| Caladan | Native and occupier inspect the original admitted lot, never the occupier’s ally. Canceling native inspection hides its face from native while the separately admitted printed share survives. |
| Ix | One controller chooses from the actual original pool; native setup and Technology remain native, without duplicate native pool knowledge. |
| Richese cache choice | Original seller chooses auction method/direction first; occupier chooses only the physical cache card. Seller, lot, invoice and unbid disposition stay native. |
| Giedi Prime | One original Harkonnen purchase bonus goes to occupier or reciprocal ally with actual receiver capacity and drawable stock, even if the buyer’s purchase filled its own hand. |
Percentage income has a separate persisted source ledger, frozen eligible
payment/Collection proof and exact suspended continuation. Keep-all or immediate
ally allocation commits actual credits with its settled receipt, not a second
payer debit or static Bank icon grant. Ordinary native income cancellation leaves
its native portion in the Bank; the printed occupied portion remains separate.
This cancellation composition uses the printed Homeworld immunity and original
ordinary cancellation rules, not a dedicated retrieved worked FAQ.
Richese’s existing source-blocked canceled-auction count remains guarded:
occupied card selection is not authority to invent a sale after cancellation.
Actual Collection percentage credits feed the original once-per-phase Giedi
spice hook. Private producer proofs and suspended invoices stay server-private.
Original receipt-free occupation captures may admit a new source lazily; no past
percentage is back-awarded. Public starts, played-game conversion, other modules,
occupied Tupile capacity/cleanup and exceptional Duke custody remain separate.
See [percentage receipts](../game/homeworld-occupied-percentage.ts),
[Bidding authority](../game/homeworld-occupied-bidding.ts) and
[original consumer programs](../tests/homeworld-occupied-producers-engine.test.ts).
### Original runtime and human evidence
Final **247 affected cases in24 files**, types/lint and build pass. Actual
programs retain original physical cards, paid invoices, typed forces, private
lots, native terms and JSON continuations; all four policies take legal source
choices. Controlled capacity/counter positions are labelled and conserved,
including original Karama already dealt during random setup.
Two real consumer defects were reproduced and repaired. Invalid bonus recipients
now use the ordinary `RuleError` adapter; an actual authenticated request returns
409 without changing the room version. Guild income could overwrite a concurrent
BG accompaniment choice. The signed source suffix now retains it through the
percentage choice and JSON; the original-snapshot smoke and native regression
complete the subsequent actual advisor placement, not merely a copied decision.
The pre-advisor-repair **50 genuine games** ran on unchanged tree
`09cfdd1957d9ae4c807bce3c7c43edd66fe72b5c239c29cbadf3acca4253de9a`:
**44 complete**,18,977 accepted/19,149 attempts/491 JSON continuations.
All50 total22,383 accepted/22,580 attempts/580 JSON continuations.
Six captures retain the four Basic occupation and two low-Tupile CHOAM guards;
this is not a zero-rejection or complete-mode certificate.
Five original Advanced captures finish **3,135 more accepted/3,136 attempts/
83 JSON continuations** at original scenario seeds20263433/453/455/465/475.
Resume restarts those seeds, not their lost original random streams.
After the advisor repair, **five fresh six-seat Advanced games all finish**
4,339 accepted/4,358 attempts/114 JSON continuations on unchanged tree
`2ada89969c683b3ed263f39b9467f623205d83b765cb3639832ee10adf918aae`.
The19 rejected candidates remain recorded, including existing arrival guards.
Three original backed-up CLI setups preserve the real actors, decks and starting
choices: **HH7VHT2U v21**, **4H5CZDMA v18** and **6K5JFNPH v18**.
Real second-turn Nexus actions earn the alliances before labelled conserved
positions. Refreshed390px controls have no root overflow:
- HH7VHT2U pays Harkonnen5 once: Emperor10→13, Guild6→7 and Harkonnen12→8
after the1/1 Kaitain share. Harkonnen’s actual hand fills8; Atreides chooses
its ally Fremen for the one real bonus, whose hand1→2.
- Its actual three-normal-force Kaitain shipment costs6: Emperor11→5,
Guild7→10, Atreides12→13 and Fremen3→5 after the1/2 Junction share.
The restored BG control sends its actual advisor into Hagga Basin afterward.
- Original Collection has Fremen5 plus two actually shared2-spice bank grants:
total9, retained5, occupied4 allocated Guild1/Harkonnen3. **v72/Mentat**
ends with Emperor5/Guild17/Harkonnen11/Fremen10/Atreides13/BG9.
The five bank receipts and percentage settle once before original readiness.
- 4H5CZDMA’s native seller chooses Once Around/counterclockwise; Guild chooses
only original Ornithopter. The actual5-spice Harkonnen purchase splits Richese
net as native3/occupied2, then Guild1/Harkonnen1: balances4→7/5→6/10→6.
A single real bonus reaches Atreides; **v29** preserves the next native lot.
- 6K5JFNPH’s Guild alone sees the actual six-card Ix pool and returns original
Snooper to the top. **v25** retains five auction cards/five Guild-known faces,
native Ix-known0 and its unrelated Technology decision still owned by Ix.
Only dedicated QA records changed; no game reset, public activation or credential
disclosure. Reports/private receipts remain outside Git. These local receipts do
not certify full Homeworlds, deferred assurance or deployed acceptance.
## Stable continuous occupation prototype — 5 October 2026
Historical checkpoint `5e902e3`; its narrower Advanced lifecycle and absent
percentage/Bidding paths are superseded by the source cutover above.
The fresh local `homeworld-occupation` entry uses original two-through-six-seat
Basic/Advanced setup, selected faction decks, thirteen physical card facts and
@@ -110,7 +216,7 @@ The following is an implementation design derived from those timing requirements
A public qualification record needs no hand, Traitor, Face Dancer or sealed-plan data. Malformed initialized evidence must fail validation; a legacy save lacking history cannot be claimed to prove that no earlier qualifier existed. Resolving entitlement by scanning current armies alone would discard the distinction the publisher created.
## Questions the retrieved sources do not settle
## Basic source questions and historical publisher gaps
| Concrete situation | Missing decision; do not silently substitute a policy |
| --- | --- |
+18 -2
View File
@@ -2,6 +2,11 @@
Source-composition contract, 9 September 2026. This covers population-based reductions to existing Emperor and Guild payment receipts. It does not implement occupied income, decide competing Occupiers or certify a complete Homeworld module. [Occupation source boundary](HOMEWORLD_OCCUPATION_RULES.md).
Runtime follow-up, 5 October 2026: the fresh occupation profile now has a
[separate original percentage ledger](HOMEWORLD_OCCUPATION_RULES.md#occupied-economics-bidding-and-advanced-source-cutover--5-october-2026).
The unoccupied contract below remains historical authority for ordinary native
receipt reduction, not for canceling a printed occupied share.
## Printed effects and source precedence
The verified low faces say that native Emperor receives the rounded-up half of Treachery Card payments and native Guild receives the rounded-up half of shipping payments. Both are low at zero through four native forces. Kaitain population is its own physical native pool, excluding forces allocated to Salusa Secundus. Component provenance is recorded in the [Homeworld component audit](HOMEWORLD_COMPONENT_AUDIT.md); this pass did not re-download its historical reverse-image cache.
@@ -55,9 +60,20 @@ Do not reduce unrelated Emperor/Guild bank awards, charity, revival income, ordi
## Occupied branch remains separate
The unoccupied calculation leaves the missing half in the bank. An occupied face can assign that portion to a qualifying occupier and may independently award printed bank spice during Collection. Do not convert the bank remainder into an occupier award until the lifecycle and actual recipient are resolved. Likewise, high native population alone cannot prove that a retained occupation penalty has expired. Any runtime scope guard must acknowledge this limitation rather than describing the population-only quote as complete occupation support.
The unoccupied calculation leaves the missing half in the Bank. The fresh
occupation profile instead assigns that rounded-down portion to its proved
occupier, independently of the printed Collection bank icons. Advanced uses the
authorized supplied p22 sole/last-departure lifecycle; Basic retains guarded
historical cases. Native repopulation does not expire a retained Advanced source.
Future integration must preserve the original eligible receipt, present force state and qualification history separately. Ordinary income cancellation, retained low effects, occupied percentage income and immediate ally sharing must compose from their own rules; the current unoccupied branch is not authority for a future occupied Karama outcome.
The original eligible paid receipt, present force state and original qualification
history remain distinct. Native income Karama sends only its native portion to
the Bank; the printed occupied portion survives under Homeworld immunity and may
be immediately shared with the reciprocal ally. This is explicit source
composition, not a dedicated retrieved worked cancellation FAQ. The payer’s
completed debit and delivery never repeat. Existing two-odd contributor ambiguity,
independent-Karama bank routing and Guild Nexus full-fee overrides remain separate.
No past receipt is back-awarded and no overlay combination is admitted here.
### Guild Nexus Betrayal is a full-fee exception
+9 -8
View File
@@ -4,14 +4,15 @@ Source audit, 9 September 2026. No runtime activation. The primary module source
### Stable occupation runtime follow-up — 5 October 2026
Original fresh `homeworld-occupation` setup now connects continuously proved,
uncontested bank Collection/immediate ally sharing and the printed Wallach/
Tleilax/Grumman/Salusa occupied protections. The immutable qualification history
remains distinct from present armies; departure, replacement, contested or
repopulated histories retain their pending guards. Percentage receipts and
other occupied powers remain separate. This does not open normal starts,
convert old saves or certify Homeworlds. See the
[exact supported source/runtime subset](HOMEWORLD_OCCUPATION_RULES.md#stable-continuous-occupation-prototype--5-october-2026).
Original fresh `homeworld-occupation` connects bank Collection/immediate sharing,
Kaitain/Junction/Richese percentage receipts, the completed total Southern
Collection, original Caladan/Ix/Richese/Giedi Bidding ownership and printed
Wallach/Tleilax/Grumman/Salusa protections. Advanced follows the authorized supplied
rulebook p22: qualify alone, retain until the last occupying force leaves.
Basic still guards its publisher-source lifecycle questions. Original history,
native population, invoices and private audiences remain separate. Tupile capacity,
exceptional Duke, other modules, normal starts and full acceptance stay open.
See the [source cutover and original consumers](HOMEWORLD_OCCUPATION_RULES.md#occupied-economics-bidding-and-advanced-source-cutover--5-october-2026).
## Module scope and component inventory
+45
View File
@@ -1,5 +1,50 @@
# Dune implementation status
## 5 October 2026 — occupied Homeworld economics, Bidding and Advanced retention
The authorized supplied p22 resolves Advanced qualification/retention: sole
foreign presence, continuing until its last force leaves. Original snapshots
retain that epoch through contests/native revival/turn changes and replace it
only after departure plus a new sole source. Basic historical guards remain.
Fresh Homeworlds alone connects actual Kaitain/Junction/Richese percentage
receipts, one completed Southern Collection total, immediate ally allocation,
Caladan shared private inspection, sole Ix pool control, Richese card-only choice
with native seller terms, and one Giedi bonus using real receiver space/stock.
Original paid invoices, hidden custody and source suffixes remain authoritative.
Native income/inspection cancellation does not silently cancel printed shares.
Final247 affected cases/24files, types/lint/build and original programs/four legal
policies pass. Real wrong-recipient rejection needed the RuleError adapter;
actual HTTP409 leaves v42. Human Guild income exposed overwritten BG accompaniment:
the signed suffix now restores its original choice through JSON and subsequent
actual advisor placement. Conserved random-deal stock/capacity fixtures now stage
the exact tested boundary; no favorable seed, invented card or guard weakening.
Pre-advisor-repair50 genuine games on unchanged
`09cfdd1957d9ae4c807bce3c7c43edd66fe72b5c239c29cbadf3acca4253de9a`:
44 complete18,977 accepted/19,149 attempts/491 JSON; all50 total22,383/22,580/580.
Four Basic occupation/two CHOAM captures retain existing rulings.
Five exact original Advanced captures finish3,135/3,136/83 at original scenario
seeds20263433/453/455/465/475; resume restarts the seed, not its lost stream.
After repair, allfive fresh six-seat Advanced games finish4,339/4,358/114 on
unchanged `2ada89969c683b3ed263f39b9467f623205d83b765cb3639832ee10adf918aae`;
19 rejected candidates remain recorded, not a zero-rejection certificate.
Original backed-up CLI HH7VHT2U v21/4H5CZDMA v18/6K5JFNPH v18 preserve real
decks, choices and actors. Actual turn-two alliances precede labelled positions.
390px human controls exercise all four percentages, native Richese terms/card-only
selection, full-Harkonnen allied real bonus and sole Ix pool6→5/native-known0.
HH7VHT2U actual shipping6 shares Junction3 as1/2 without repeating forces or
losing BG; Collection9 retains5/shares4 as1/3 and reachesv72/Mentat with wallets
5/17/11/10/13/9. Richese v29 retains its actual Ornithopter5 invoice/3+2 net split;
Ix v25 leaves unrelated Technology native. Allthree refreshed roots fit390px.
Only dedicated QA changes, no reset/public activation/credential disclosure.
Private proofs remain outside Git. Tupile capacity/cleanup, exceptional Duke,
pending Basic/CHOAM rulings, overlays and complete/deployed acceptance remain.
[Canonical source, original consumers and evidence](HOMEWORLD_OCCUPATION_RULES.md#original-runtime-and-human-evidence).
## 5 October 2026 — stable occupied Homeworld bank income and protections
Fresh original `homeworld-occupation` enters Basic/Advanced2..6 and selected
+23 -1
View File
@@ -151,11 +151,33 @@ reveal history and the log now name the sourced forfeiture. Exceptional leader
custody and the independent private-step UX/public-preview gates are unchanged.
See [the cutover and Advanced sequence](MORITANI_ASSASSINATE_LEADERS.md#authority-and-advanced-duration-cutover).
## Advanced Homeworld occupation source cutover — 5 October 2026
The authorized supplied revision, physical **page22**, qualifies an occupier
when its foreign forces are **alone** on the world and retains those benefits
until **none of its forces remain**. Original semantic snapshots therefore
retain Advanced ownership through later contests, native repopulation and turn
changes, then clear it on departure; a subsequent sole arrival creates a new
original epoch. Its sole-only qualification does not inherit the publisher’s
foreign-presence-at-boundary clause. This supersedes the historical Advanced
lifecycle guard, not Basic, a GF9 erratum or a current-garrison shortcut.
The supplied page omits the individual reverse effects; audited components and
GF9 immunity/payment authority continue to supply those details.
Kaitain/Junction native cancellation remains separate from printed occupied
percentages. Caladan native inspection denial hides native’s face while the
separately admitted occupier share survives. Ix transfers the actual Bidding
pool, not setup/Technology; Richese transfers only cache-card selection, not
seller terms, invoice or authority to bypass a canceled-auction-count ruling.
One real Giedi bonus uses the recipient’s hand space; Southern rounds the
completed actual Collection total once. These source compositions are not
dedicated retrieved worked FAQs. [Contract and remaining limits](HOMEWORLD_OCCUPATION_RULES.md#occupied-economics-bidding-and-advanced-source-cutover--5-october-2026).
## Recorded contracts and implementation boundaries
| Topic | Decision to preserve | Detailed authority and evidence |
| --- | --- | --- |
| Stable Homeworld occupation | Fresh original Homeworlds alone, original setup and qualification history. Admit only one continuously present qualifier without another foreign army, departure, competing qualification or restored native high threshold. Actual bank icons/immediate reciprocal-ally allocation and Wallach/Tleilax/Grumman/Salusa protections compose source-clear cases; no current-controller shortcut or expiry/replacement ruling. Zero-icon ambiguity cannot block unrelated currency awards or select combat strength. Paid percentages, remaining borrowed powers, pending rulings and public/save conversion stay separate. | [Source and bounded runtime evidence](HOMEWORLD_OCCUPATION_RULES.md#stable-continuous-occupation-prototype--5-october-2026) |
| Stable Homeworld occupation | Fresh original Homeworlds alone and source history. Advanced uses authorized p22 sole qualification retained until last-force departure; Basic keeps historical lifecycle guards. Actual bank/percentage income, immediate sharing, Caladan/Ix/Richese/Giedi original ownership and Wallach/Tleilax/Grumman/Salusa defenses are connected. No inferred current controller, past-income back-award, invented canceled-auction count, public/save conversion or unrelated overlay. Tupile capacity and exceptional Duke remain separate. | [Source cutover and original consumers](HOMEWORLD_OCCUPATION_RULES.md#occupied-economics-bidding-and-advanced-source-cutover--5-october-2026) |
| Standalone E3 Nexus / Skills / original components | Fresh Ecaz OR Moritani/classic ecaz33/all14/all12, Basic/Advanced2..6, original Tech3+/Advanced Strongholds2+. Original Duke/assassination/Terror, chosen-plan Advanced Occupy and separate physical armies remain. Ecaz-led Suk rescues only its own fixed casualties; Diplomat uses the selected faction's own undialed commitment. Owner-pool skill composition is an explicit implementation inference, not a combined-skill FAQ. E3 pairs/Harkonnen Advanced/HW/previews/shared-Duke training/enhanced relocation and pending rulings remain guarded. | [Source and verified scope](NEXUS_CARD_RULES.md#standalone-e3-nexus-skills-and-original-components--5-october-2026), [coalition contract](ECAZ_OCCUPY_RULES.md#standalone-nexus--skills-coalition--5-october-2026) |
| Harkonnen special-Karama forced return | Return automatically only when the combined hand equals the count owed. Keep actual drawn-card observations owner-private after settlement; legacy forced saves describe held-card history without inventing draw provenance. Existing provisional auction-payment recovery and mode gates remain. | [Contract and limits](HARKONNEN_EXCHANGE.md) |
| Basic Moritani / Leader Skills | Ordinary Terror death returns the assigned skill once; own revival offers the existing private optional replacement. Sabotage does not take skills, alliances do not transfer assignments, and mandatory Planetologist/Diplomat disposal excludes those cards from ally retention. This is composition of existing contracts, not a new ruling or resolution of unfinished skill effects. Advanced and other roster/module combinations remain gated. | [Integration contract](MORITANI_LEADER_SKILLS.md) |