Files
Dune/docs/RECRUITS_RUNTIME.md
T
Quintine 0e3d6a250e Make Fremen allied revival grants cancelable
Bind the original Fremen/ally/turn grant before Karama allowance or prevention.
A prevented grant leaves intrinsic free rates and prior payments intact. Permit
late grants under the explicit provisional Recruits current-rate policy, with
shared controls, minimal bot support and native public chronology evidence.
Complete rules and browser/deployed acceptance remain open.
2026-10-24 18:16:03 +11:00

201 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Recruits development preview
14 September 2026. **Prototyped, not full card-variant acceptance.** The independent
Ecaz & Moritani Treachery Cards variant is included before genuine Basic or
Advanced faction setup. All three physical cards are present exactly once.
Recruits, bounded Reinforcements and Harass & Withdraw have connected controls,
AI and saved continuation; full interactions and publication remain gated.
## Native Fremen grant after play — 24 October 2026
The earlier later-grant guard is replaced by the symmetric current-rate
prototype: an original Fremen allied grant may be declared after Recruits.
Its native Karama window settles before permission is committed. Prevention
blocks only that grant for this Revival; it does not erase intrinsic free
allowance, Recruits or earlier returns/payments. A successful late grant uses
the same current3→6 calculation as a grant preceding play, with actual prior
free usage deducted, no refund, and ordinary/native total and typed limits.
The exact response scope and later-rate composition remain provisional under
14 October, not a new publisher combined ruling.
[Source, controls and bounded evidence](FREMEN_REVIVAL_GRANT.md).
## Original Skills/phase composition — 17 October 2026
Supported classic, selected E1/E2 and standalone/paired E3 all14/card profiles
retain original Tech3–6 Basic/Advanced and Advanced Strongholds2–6, without
World/Nexus/Discovery. One genuine five-Tanks programme returns3 for4, then2
for2 after Recruits, preserving prior payment and free/ordinary usage. The
larger allowance cannot create a third counter when only two actual Tanks
remain. Axlotl accrues once/pays at phase end; normal Banker keeps its actual
Bank-payer threshold and deferred Mentat grant. Native prices/caps/recipients
and provisional late-paid policy remain unchanged.
[Current471/471 programme and limits](LEADER_SKILLS_RUNTIME.md#independent-cards-with-original-phase-modules--17-october-2026).
## Provisional late-paid activation — 8 October 2026
The content-first pass now permits Recruits after recorded paid ordinary
returns, once the current transaction has finished. **Provisional policy:**
prior payments are retained; only actual recorded free returns consume the
doubled free rate, while all returns consume the total allowance. No refund,
reset or retroactive reclassification is performed. This is not a numerical
user ruling or a newly retrieved publisher answer.
Thus Atreides' actual two-free/one-paid return retains its two-spice payment
and three total returns; after Recruits it may take two additional free
forces under the seven total cap. Missing or inconsistent free-use ledgers,
pending declarations, unrelated later rate changes and same-turn replay remain guarded.
The owned before-play panel and public active panel name this interpretation.
Basic/Advanced before/after native smokes use a genuinely dealt card, an
actual three-force return and useful allied Easy activation, then two free
returns: total5/free4, unchanged paid spice and one card disposal. Live React
controls in Chromium produce the same available2/remaining4 quote and preserve
spice18/total3/free2 at activation. No broad suite, recovery or deployed proof.
## Classic Homeworld composition — 16 October 2026
The fresh `ecaz-treachery --homeworlds` entry now admits Recruits during
original classic2–6 Basic/Advanced Revival, with its original36-card inventory.
Reuse native current free rates and typed revival deposits. No rate snapshot,
new saved field, seven extra counters, automatic refund, generic module
activation or played-save conversion is added. Reinforcements has a separate
[native-source fee composition](REINFORCEMENTS_RUNTIME.md#classic-homeworld-reserve-fees--16-october-2026);
original Tech/Advanced Strongholds now follow the separate
[classic World phase contract](ECAZ_TREACHERY_RULES.md#classic-world-phase-module-composition--16-october-2026).
Selected E1/E2 Worlds use the [native setup contract](ECAZ_TREACHERY_RULES.md#native-selected-family-world-composition--17-october-2026)
and [original phase-module composition](ECAZ_TREACHERY_RULES.md#native-world-phase-modules--17-october-2026);
other rosters and overlays remain separate.
Publisher Ecaz & Moritani printed pp11/16 specifically gives low Fremen4,
doubled but capped at7. Under the standing choose-recommended instruction,
compose the existing native separate-request population rule: quote against
current population when each request is accepted, retaining that group's
accepted free/paid classification. Later separate requests observe the
resulting population and actual recorded free usage. This changing-threshold
timing is visibly provisional, not a new publisher worked example or answer
to the earlier late-rate question.
Thus low Fremen at2 native counters can accept7 free together. If it accepts1
first, reaching high3, the next native rate is3→6 and only5 free remain. With
Tleilaxu absent it cannot buy a seventh after those six. The total card cap
is still7, not an independent paid-revival permission. Original special-force
limits remain: Advanced one Fedaykin/Sardaukar per turn; Basic preserves
physical star identities without adding the Advanced one-per-turn rule.
Original destination/deployment eligibility remains native, not guaranteed
merely because Recruits increased a rate.
Atreides with actual3 prior returns (2 free/1 paid) can accept2 further free
after play, even if already ready while phase4 remains open. Its payment
stays2 spice, total5/free4. A native mixed Emperor return deposits normal on
Kaitain and Sardaukar on Salusa in Advanced; Basic retains its primary World.
The new panel names the provisional current-rate policy. An actual Advanced
Fedaykin return exposed an enabled repeat with stale selected elite1 against
remaining0: the button now disables that over-cap selection and explains the
remaining special limit, without altering authoritative revival rules.
Four actual390px GameTable journeys cover Basic bulk7, Advanced typed1+5,
already-ready paid Atreides and Advanced mixed Emperor revival. Native low→high
quotes, physical custody, no refund and exact once-only discard are observed.
Sixteen fresh programmes/four minimal policies accept104 card/Revival/readiness
actions through original phase5, including useful activation by an already-ready
Atreides. Real setup/shipments/zero-dial losses produce the dead counters;
only physical hands/unopened first-Blow cards are positioned, with the existing
Recruits moved to the selected holder explicitly. These are not unstaged
full-game card draws. Eight startup Vite dependency aborts and a corrected
QA-only middleware ordering issue precede successful surfaces; no overflow
or application exception. Owned hosts/tab/scaffolds removed; proof outside Git.
Final checks:10 new cases pass, related18 offline files167/167, types/lint and
app build pass. A test-only nullable-view narrowing is followed by a passing
10-case rerun; production behavior is unchanged. CLI help executes and guide
import resolves207 unique evidence paths/source anchor, with both coverages
Partial. Existing build register/large-chunk/route-classification warnings
remain; no HTTP/DB boundary changed or new recovery assurance ran.
## Rules contract
[The source audit](RECRUITS_RULES.md) records publisher Ecaz & Moritani pages 11
and 16, the base and faction revival rules, and designer Jack Reda's explanation
at 8:25–8:48. The card plays during Revival, doubles every current free rate,
raises the normal force limit to seven for this turn, and is discarded after use.
The publisher's four-to-eight example is capped at seven by the ordinary limit.
Fresh publisher/designer-linked PDF fetches on 14 September returned HTTP 403;
this follow-up uses the earlier recorded primary-source audit and independent
source review. No newly retrieved late-paid ruling is claimed.
The scope permits activation before returns or after consistently recorded
free/paid normal returns, once priority windows and transactions finish.
Unknown legacy usage, unrelated late-rate changes, same-turn replay after recovery
and other optional modules remain guarded, apart from clean classic Homeworlds
above or the separate clean classic/Ix/CHOAM
[Tech/Advanced Stronghold composition](ECAZ_TREACHERY_RULES.md#original-phase-module-composition--16-october-2026).
These are boundaries, not printed timing rules.
Already-ready players retain their Revival opportunity while phase four is open.
Atreides doubles two to four, Fremen three to six, and Guild one to two. Native
CHOAM and Tleilaxu retain their unlimited allowance with free rates zero and four.
Paid prices, prevention and separate elite caps remain in force. A Fremen grant
settled before play doubles the ally's replacement rate three to six.
The seven-force allowance remains an independent global card effect when a
CHOAM or Tleilaxu faction advantage is canceled. **This is an implementation
inference from independent effects, not a direct combined publisher FAQ.** A
Tleilaxu limit response is not opened merely for crossing three under Recruits;
other qualifying price/prevention responses retain their original purposes.
The earlier user question about one versus two further free Atreides returns
remains unanswered. The 8 October first version uses the visibly provisional
two-further-free policy above; it does not claim that question was adjudicated.
The source audit retains the alternatives and later changing-rate ambiguity.
## Connected path and persistence
`initializeEcazTreacheryGameForAudit` composes the complete three-card inventory
with the selected ordinary deck before shuffle/deal. The local `ecaz-treachery`
prototype-room profile accepts only a fresh ready lobby and uses the existing
version/state compare-and-swap. It preserves seats and other rooms.
The holder's existing inspector shows the complete original-language card guide.
The Revival panel submits the shared `recruitsPlayAction`; rivals receive no held
card offer. A successful action discards the physical card once and saves its
player, turn and identity. Every player then sees the same effective public rates
and force limits. No rival hand, private spice or revival-use ledger is added.
Authoritative shared revival quotes use the effect. Exact free usage is separate
from total normal returns only while Recruits is active; inactive/legacy games
retain their previous arithmetic. Active receipts and ledgers are validated on
action and projection. JSON and SQLite restoration retain the same allowance;
the next turn clears the effect. Rejected actions leave the supplied state intact.
All four AI profiles use the same legal owned offer when their faction or ally can
benefit, then ordinary quoted revival choices. The late Fremen grant is excluded
from bot candidates as well as server and UI controls. This is a legal first
strategy, not completed Recruits difficulty calibration.
## Verification
Focused engine, component, AI, genuine prototype-room and authenticated SQLite
recovery suites are maintained alongside the pure arithmetic and inventory tests.
Independent review passes a 37-case related union; four authenticated SQLite cases
cover restored free/paid returns, malformed saves, stale/duplicate actions and
competing writes. Eight fixed-seed six-seat Basic/Advanced samples across all four
AI profiles finish in 7,995 accepted actions with no rejected candidates. Recruits
is genuinely played three times. Physical cards, Traitors, safe force/elite pools,
212 periodic all-seat JSON restores and terminal private views pass. Undefined
object properties are normalized through JSON on both sides of the comparison;
defined values are retained. Earlier harness attempts remain in private artifacts.
A separate conserved browser Revival fixture verifies the full inspector, actual
play/discard, public Atreides four/Fremen six rates, four free returns, automatic
chronicle and active/resolved refresh. Exact state comparison preserves the seat,
cards, forces and unchanged spice. This staged browser position does not establish
naturally reached card use. Final broad checks, source fingerprints, saved-game
preservation and Git delivery are recorded with the checkpoint. These samples do
not certify the unfinished three-card variant or every combined configuration.
See [current status](CURRENT_STATUS.md), [decision index](RULE_DECISIONS.md) and
[the reference checklist](../game/reference.ts), topic `card-recruits`, for the
remaining boundaries. Final polishing, other two effects and valid optional-module
combinations remain required work.