Skip to content

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.md Anti-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_blocklisted always returns False) until a real blocklist model exists.
  • contract_service.py:_is_player_blocklisted and _acceptor_hostile_to_issuer always 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.md prose. Keep the accept() 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.md Anti-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.