ADR 0155 — Authorize Gameserver contract anti-griefing blocklist + pairwise hostility (LEG-DEC-905)¶
Status¶
Proposed
Context¶
Human Decision LEG-DEC-905 asked whether work may begin on Gameserver LEG-3994: wire the documented anti-griefing hostility-block and posting blocklist that FEATURES/economy/contracts.md Status item #3 still lists as a permanent no-op stub.
Verify-first (from Decision context, 2026-09-02 tip):
FEATURES/economy/contracts.mdAnti-griefing: contracts cannot be accepted from players the acceptor has active hostility with (negative direct-relationship reputation); posting-side player blocklist is a documented no-op seam (_is_player_blocklistedalways returns False) until a real blocklist model exists.contract_service.py:_is_player_blocklistedand_acceptor_hostile_to_issueralways return False;accept()call sites are wired and monkeypatch-tested, but no Blocklist/standing model exists in tree.- Scope on LEG-3994: design + implement a minimal blocklist / pairwise-hostility model, or wire to existing standing if one lands during the WO — do not invent rules beyond
contracts.mdprose. Keep theaccept()gate exercised by unit tests (tests/unit/test_contract_service.py). Schema / new tables still require human_signoff if the model shape is unclear.
Cited: LEG-DEC-905 (id=923, adr_id=75, wo=LEG-4139/#4220, stakes=canon-edge, terminal_choice=draft_adr, answered 2026-09-03). Source work: LEG-3994 / initiative 351.
Decision¶
The human selected Approve / authorize work. Gameserver LEG-3994 may implement the canonical anti-griefing gates (pairwise hostility block on accept; posting-side player blocklist) against contracts.md prose. Do not invent extra rules. Do not treat this ADR as a schema GO — a new table still needs its own human_signoff if the model shape is not already settled in canon.
Consequences¶
- LEG-3994 is authorized to replace the NO-OP seams with real checks and to keep
accept()covered by unit tests. - invent=0 vs
FEATURES/economy/contracts.mdAnti-griefing / Status item #3; no new game rules in this ADR. - A migration or new table remains separately human-gated if the implementor cannot wire an existing standing/blocklist model.
- Docs-only ADR materialization; live-prove n/a.