Connect the Recruits independent-card revival preview
The explicit development initializer now includes the complete three-card Ecaz Treachery variant before genuine Basic/Advanced faction setup. Recruits has owned play/discard controls, full inspection, a public current-rate table, shared authoritative revival quotes, all four AI profiles and persistent exact free-use ledgers. Existing CHOAM/Tleilaxu choices settle before returning forces. Inactive games retain their prior allowance arithmetic. Clean activation before normal returns or after exactly recorded free returns is connected. Prior-paid/unknown use, later Fremen grants, pending repricing, same-turn recovered-card replay and additional optional modules stay gated. Native unlimited faction advantages remain unlimited. The independent seven-force cap after faction cancellation is explicitly documented as an inference from independent effects, not a direct combined FAQ. Reinforcements and Harass & Withdraw remain unfinished; public starts and publication stay gated. Independent rules/privacy/persistence review passed. Review fixed auction alias double-counting after a physical card sale, malformed canonical cards, legacy zero-ledger activation, a seat-control validation bypass and an ordinary-start bypass. Focused tests cover readiness and turn expiry as well as authenticated restart, exact free/paid accounting, stale/duplicate requests, competing writes and malformed-save rejection. Types, lint, 4743 offline tests, build and 43 HTTP tests passed with unchanged source. Eight fixed-seed genuine six-seat samples finish: basic/Easy: 1961 accepted, 0 Recruits plays, 53 JSON restores; basic/Medium: 711 accepted, 0 Recruits plays, 19 JSON restores; basic/Hard: 239 accepted, 0 Recruits plays, 6 JSON restores; basic/Brutal: 1367 accepted, 1 Recruits plays, 36 JSON restores; advanced/Easy: 1402 accepted, 0 Recruits plays, 37 JSON restores; advanced/Medium: 530 accepted, 0 Recruits plays, 14 JSON restores; advanced/Hard: 545 accepted, 1 Recruits plays, 14 JSON restores; advanced/Brutal: 1240 accepted, 1 Recruits plays, 33 JSON restores. Reports retain rejected candidates and earlier harness attempts. All 216 game-source hashes remain identical to the samples; a later presentation-test expectation update changes no game code. Actual card use, custody and periodic/terminal private views are checked; this is bounded playability evidence, not full variant acceptance or AI calibration. A separate conserved browser Revival fixture verifies the full inspector, physical play, public rates, four free returns and active/resolved refresh. All 902 opening games and original seat/recovery records remain unchanged (936 after checks). All 903 present immediately before broad checks are also preserved. Database integrity and foreign keys pass. The healthy server recovered after the power failure and was reused without restart, reset or recurring automation. Verified source tree: 1f934f996268b35c8a20d0d617fa962aad878108496fa1a4a05323360757b0e3
This commit is contained in:
1 parent
9ca17a66a0
commit
c04cb93830
21 files changed
+1421
-119
No files matched your search
+30
-92
@@ -6,100 +6,38 @@ gated.** Prototypes do not open completion or publication gates.
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
Previous verified checkpoint: `58ae84f`, Moritani Assassinate Leaders preview.
|
||||
Types, lint, **4,690 offline tests**, build and **43 HTTP tests** passed.
|
||||
All 801 opening rooms and original seat/recovery records were preserved
|
||||
(835 after HTTP checks); all 802 present immediately before verification also
|
||||
remained unchanged. The healthy server was reused.
|
||||
Previous verified checkpoint: `9ca17a6`, [Fremen/Ecaz final-turn victory](ECAZ_VICTORY_RULES.md#fremen-final-turn-runtime-follow-up)
|
||||
and [deferred shipment repair](DEFERRED_SHIPMENT_ARRIVAL.md). Types, lint,
|
||||
**4,716 offline tests**, build and **43 HTTP tests** passed. All 835 opening games
|
||||
and the 869 present after the outage, including their seat/recovery records,
|
||||
were preserved (902 after verification). Three source-stable samples finish,
|
||||
including the exact failed shipment resumption; full scope remains unfinished.
|
||||
Detailed earlier capabilities and evidence are linked below and retained in the
|
||||
[implementation history](IMPLEMENTATION_STATUS.md).
|
||||
|
||||
[Mentat](MENTAT_QUESTION.md) connects private naming/disclosure before posture
|
||||
and faction powers, all four AI profiles and saved continuation in explicitly
|
||||
opted-in previews. Two controlled-shuffle genuine-setup samples finish. Ordinary
|
||||
activation still awaits the uniform private response UX decision.
|
||||
Current prototype: [Recruits](RECRUITS_RUNTIME.md) connects the independent complete
|
||||
three-card inventory before genuine Basic/Advanced faction setup, owned card
|
||||
play/discard, public current revival rates, existing CHOAM/Tleilaxu decisions,
|
||||
four AI profiles and saved continuation. Exact free usage and physical custody
|
||||
are retained. Prior-free activation is supported; prior-paid or unknown accounting,
|
||||
later grants, pending repricing, same-turn replay and other optional modules stay
|
||||
gated. Reinforcements and Harass & Withdraw are present but their effects remain
|
||||
unfinished. Independent-cap precedence is explicitly labeled as an inference.
|
||||
|
||||
[Bureaucrat payments](BUREAUCRAT_PAYMENTS.md) connect
|
||||
ordinary auctions, shipment income, Richese sale proceeds and actual bribe
|
||||
transfers, with a once-per-phase optional redirection and preserved continuation.
|
||||
Qualifying allied funding, other payment families and combined-module acceptance
|
||||
stay explicit. Independent review and focused controls/AI/recovery checks pass.
|
||||
Four genuine-setup games finish without rejected candidates, but contain no payment
|
||||
choice; a separate staged browser exercise verifies both choices and refresh.
|
||||
All 699 opening rooms and original seat/recovery records survived the reported
|
||||
outage. The healthy server was reused. The completed checkpoint's Git record
|
||||
contains final broad verification and post-HTTP preservation totals.
|
||||
Independent review's 37-case union and four authenticated recovery cases pass.
|
||||
Eight fixed Basic/Advanced six-seat samples finish in 7,995 actions with no
|
||||
rejected candidates and three actual Recruits plays. Exact custody, 212 periodic
|
||||
all-seat JSON restores and terminal private views pass. A separate conserved
|
||||
browser fixture verifies inspection, play/discard, public rates, four free returns
|
||||
and refresh. Final broad-check totals, source fingerprints and Git delivery are
|
||||
recorded with the checkpoint; these are bounded playability results.
|
||||
|
||||
Completed prototype: [Emperor Nexus Secret Ally revival](NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md).
|
||||
Exactly three free returns, independent ordinary allowances, shared Fedaykin caps,
|
||||
private controls, four AI profiles and saved continuation are connected. Independent
|
||||
review and 17 focused effect tests pass. Two genuine-start and two explicitly staged
|
||||
samples finish with zero rejections; only the staged pair uses this effect. A staged
|
||||
browser exercise verifies a Fedaykin return, three ordinary returns and refresh.
|
||||
Final broad checks, preservation counts and Git delivery are recorded in the
|
||||
checkpoint commit and private report before handoff.
|
||||
|
||||
The purchase alternative still needs a private post-win payment choice. The earlier
|
||||
question asks whether to allow a uniform winner payment step, including otherwise
|
||||
forced spice payments. No answer or purchase policy is assumed. All 733 opening
|
||||
rooms and seat/recovery records survived the latest outage unchanged; a new snapshot
|
||||
protects all 734 rooms before final verification. The healthy server is reused.
|
||||
|
||||
Completed prototype: [Truthtrance recorded knowledge](TRUTHTRANCE_KNOWLEDGE.md), connecting
|
||||
stored BG prediction faction/turn, submitted current Storm dials and actually known
|
||||
Fremen forecasts. The same private verified answer drives controls, all four bots
|
||||
and saved continuation. Independent source/privacy review and 44 focused cases pass,
|
||||
including five authenticated SQLite recovery cases. Two genuine-setup games finish
|
||||
in 192/518 actions with zero rejections and three scripted, naturally held-card
|
||||
questions; forecast coverage comes from the separate conserved browser exercise.
|
||||
Browser controls, unknown/rephrasing, compound answers and resolved refresh pass.
|
||||
All 767 opening rooms and seat/recovery records survived the latest reported outage;
|
||||
the healthy server is reused. A new snapshot protects all 768 rooms before broad
|
||||
verification. Final checks, preservation totals and Git delivery are recorded in
|
||||
the checkpoint commit and private report; full mode/publication gates remain.
|
||||
|
||||
Completed prototype: [Moritani Assassinate Leaders](MORITANI_ASSASSINATE_LEADERS.md)
|
||||
connects a qualifying battle loss to a private reveal/continue choice, living/dead
|
||||
targets, bank bounty, public markers and automatic Mentat replacement. All four
|
||||
AI profiles and saved continuation are connected in the bounded Advanced preview.
|
||||
Independent source/privacy/persistence review and 32 focused cases pass. Two genuine
|
||||
four-profile games finish in 296/101 actions with no rejections; both observed
|
||||
opportunities are declined. A separate conserved, staged browser battle verifies
|
||||
the reveal, three-spice payment, automatic physical replacement, readable inspectors
|
||||
and pending/resolved refresh. Normal-traitor-call duration and the uniform private
|
||||
UX question remain pending; exceptional custody and combined modules stay gated.
|
||||
All 801 opening games remain unchanged after the reported outage; the healthy
|
||||
server is reused. Required broad checks, source fingerprint, final preservation
|
||||
and Git delivery are recorded in the checkpoint commit and private report.
|
||||
|
||||
Current checkpoint: [Fremen/Ecaz final-turn victory](ECAZ_VICTORY_RULES.md#fremen-final-turn-runtime-follow-up).
|
||||
The explicit Sietch Tabr exception is connected to the same public board quote
|
||||
used by automatic victory and the table guide. Reciprocal allies must both be
|
||||
present; solitary/non-allied Ecaz and third-party fighters still block. Ordinary
|
||||
stronghold/BG precedence, the other protected sietch and Tuek conditions, Guild
|
||||
fallback and private No-Field identity remain intact. Independent review and
|
||||
17 focused cases pass, including all-profile final readiness and authenticated
|
||||
SQLite restart/concurrent writes. Final-turn fixtures are staged after genuine
|
||||
setup; they do not establish naturally reached allied special wins. Habbanya
|
||||
symmetry and complete mode/expansion acceptance remain unfinished. Broad checks,
|
||||
browser/sample evidence, saved-game preservation and Git delivery are recorded
|
||||
with the checkpoint.
|
||||
|
||||
The same checkpoint repairs a pre-existing [deferred Guild shipment deadlock](DEFERRED_SHIPMENT_ARRIVAL.md)
|
||||
found after 90 accepted Advanced actions. Fresh ordinary and No-Field declarations
|
||||
preflight unsupported arrivals; an eligible saved ordinary Guild allowance returns
|
||||
unspent for another choice. Special card/parent receipts retain their own gates.
|
||||
Independent review and its 149-case union pass. The exact failed snapshot now
|
||||
finishes in 842 further accepted actions. The original Basic/Advanced seeds finish
|
||||
in 563/806 actions, with 14/81 guarded candidates; the resume has 109. All physical
|
||||
custody, 58 periodic JSON rounds and 12 terminal private views pass. The Advanced
|
||||
runs form Ecaz/Fremen alliances but do not exercise the shared-Tabr exception.
|
||||
These are bounded playability checks, not complete arrival-order acceptance.
|
||||
|
||||
After the latest reported outage, the server responds normally, all 835 opening
|
||||
rooms and original seat/recovery records remain unchanged, and integrity/foreign-key
|
||||
checks pass. A new backup protects all 869 rooms before final checks. The completed
|
||||
browser game restores its result and private seat; no restart, reset or automation
|
||||
is required. Final broad verification, preservation totals and Git delivery are
|
||||
recorded with the checkpoint.
|
||||
After the latest reported power failure, the existing server responds normally.
|
||||
All **902 rooms**, **1,888 seats** and original recovery/entry/handover records
|
||||
match the opening backup; SQLite integrity and foreign-key checks pass. No server
|
||||
restart, database reset or recurring automation is needed. Final review, sample and
|
||||
browser evidence, broad verification and Git delivery are recorded with this
|
||||
checkpoint before handoff. Public mode and publication gates remain closed.
|
||||
|
||||
## Authoritative navigation
|
||||
|
||||
@@ -130,7 +68,7 @@ These links define bounded working behavior, not complete module certification.
|
||||
| Discoveries | [Prototype](DISCOVERY_PROTOTYPE.md): genuine setup, Great Maker, seven cards/eight tokens, inspection and stash rewards, nested sites, signed later free entry, carried Ornithopter, sole Cistern, bounded Jacurutu income, Testing Station and Shrine. Orgiz and contested/mixed cases remain pending. |
|
||||
| Nexus/Homeworlds | [Decision index](RULE_DECISIONS.md) links each integrated faction family, native/borrowed effects, physical custody, private choices, payments and transport. [CHOAM Collection trade](NEXUS_CHOAM_SECRET_ALLY.md) and [Emperor extra revival](NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md) are connected; CHOAM inspection and Emperor purchase remain pending. A source audit or helper alone is not a completed effect. |
|
||||
| Truthtrance | [Spice facts](TRUTHTRANCE_SPICE_FACTS.md), [card counts](TRUTHTRANCE_CARD_COUNT.md), [hand inventory](TRUTHTRANCE_HAND_INVENTORY.md), [recorded knowledge](TRUTHTRANCE_KNOWLEDGE.md), and [Basic/no-Guild Advanced reserve-shipment promises](TRUTHTRANCE_SHIPMENT_PROMISES.md) use authoritative private state. Earlier readiness audits do not supersede these follow-ups. |
|
||||
| Other cards | [Sapho runtime](JUICE_OF_SAPHO_RUNTIME.md) includes first among remaining unstarted movement turns after Advanced Guild has finished. Richese card contracts and the checklist identify the other connected effects and explicit gaps. |
|
||||
| Other cards | [Sapho runtime](JUICE_OF_SAPHO_RUNTIME.md) includes first among remaining unstarted movement turns after Advanced Guild has finished. [Recruits](RECRUITS_RUNTIME.md) connects clean Revival play in its independent three-card preview. Richese card contracts and the checklist identify other connected effects and explicit gaps. |
|
||||
| Multiplayer | Saved rooms/seats, [recovery](../README.md#saved-seats-and-reconnecting), uncertain-request retry, [own-seat AI](AUTOPILOT.md), and [voluntary seat handover](SEAT_HANDOVER.md) have connected controls and recovery evidence. |
|
||||
|
||||
## Remaining readiness
|
||||
|
||||
@@ -1,5 +1,38 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 14 September 2026 — Recruits independent-card preview
|
||||
|
||||
[Recruits](RECRUITS_RUNTIME.md) is connected in an explicit development preview.
|
||||
Genuine Basic/Advanced faction setup includes all three independent Ecaz Treachery
|
||||
Cards before shuffle and deal. Physical play/discard, public effective rates,
|
||||
shared revival quotes, exact free-use tracking, existing CHOAM/Tleilaxu response
|
||||
continuation, owner controls and all four AI profiles share the authoritative
|
||||
contract. Inactive games retain their earlier free-use arithmetic. The other two
|
||||
battle effects and public variant starts remain unfinished.
|
||||
|
||||
Source review supports the bounded clean-case contract. The independent seven-force
|
||||
cap after faction cancellation remains an explicit inference. Earlier-paid returns,
|
||||
late grants, pending repricing and same-turn recovered-card replay remain gated;
|
||||
the user's late-paid question is pending. Focused rules, controls, genuine local
|
||||
setup and authenticated recovery tests accompany the implementation. Complete-game
|
||||
and browser evidence, required broad checks and Git delivery are recorded with
|
||||
the checkpoint; this does not certify complete variant or combined-mode compliance.
|
||||
|
||||
All 902 opening rooms and original seat/recovery records survived the latest power
|
||||
failure unchanged. The healthy server was reused; integrity and foreign keys pass.
|
||||
No database reset, server restart or recurring automation was needed.
|
||||
|
||||
Final independent review's 37-case union and four SQLite recovery cases pass.
|
||||
Review closed normal-auction sale aliasing, malformed canonical cards, known-zero
|
||||
legacy ledger initialization, seat-control validation and ordinary-start bypasses.
|
||||
Eight genuine six-seat Basic/Advanced samples finish in 7,995 accepted actions,
|
||||
with zero rejected candidates and three Recruits plays. Every action preserves
|
||||
physical card/Traitor/force/elite custody; 212 periodic all-seat JSON restores and
|
||||
terminal views pass. The conserved browser exercise verifies play/discard, global
|
||||
rates, four free returns, explanatory chronicle, private seat and refresh. Earlier
|
||||
harness attempts remain preserved; JSON comparison normalizes undefined properties
|
||||
on both sides without dropping defined values.
|
||||
|
||||
## 14 September 2026 — Fremen/Ecaz final-turn victory and deferred shipment repair
|
||||
|
||||
The [explicit Sietch Tabr FAQ](ECAZ_VICTORY_RULES.md#fremen-final-turn-runtime-follow-up)
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
# 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 has connected controls, AI and saved continuation; Reinforcements and
|
||||
Harass & Withdraw remain unfinished. Public starts and publication remain gated.
|
||||
|
||||
## 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 connected scope permits clean activation before normal returns or after only
|
||||
exactly recorded free normal returns, once existing priority windows and transactions
|
||||
have finished. Earlier paid returns, unknown legacy usage, later Fremen grants,
|
||||
same-turn replay after recovery and additional optional modules remain guarded.
|
||||
Those guards identify unfinished cases; they are not new 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 user has been asked about Atreides taking two free plus one paid return before
|
||||
Recruits: preserve the gate, provide two further free returns without refund, or
|
||||
provide one further free return without refund. No answer is assumed. The source
|
||||
audit also records the refund alternative 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.
|
||||
@@ -41,6 +41,7 @@ These are unresolved in the cited records. Do not infer an answer from elapsed t
|
||||
|
||||
| Boundary | Still unresolved | Existing record |
|
||||
| --- | --- | --- |
|
||||
| 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) |
|
||||
| Ambassador/Terror arrival priority | Both optionally react to the same entry, but no publisher/designer priority was found. The order can change Fremen relocation versus Atomics losses. A user question has been sent: keep the overlap gated pending an official ruling, or use explicitly provisional storm order. No answer is assumed; Baliset remains a separate pre-entry prevention effect. | [Reproduction and source boundary](DEFERRED_MOVEMENT_ARRIVAL.md) |
|
||||
| Sapho remaining timing | First versus unspent Advanced Guild priority, partly completed combined turns, cyclic auction duration and remaining battle timing stay guarded. Prior questions remain unanswered. | [Source audit](JUICE_OF_SAPHO_SOURCE_UPDATE.md), [battle review](JUICE_OF_SAPHO_BATTLE_REVIEW.md) |
|
||||
| Mirror Weapon | Whether copied Tooth/Artillery mandatory-discard rules attach to the physical Mirror remains unanswered; arithmetic helpers do not admit the full battle card. | [Engine audit](MIRROR_WEAPON_ENGINE_AUDIT.md) |
|
||||
|
||||
Reference in new issue
Block a user