Answerability Seat Assignment / 应责席指派机制

Answerability Seat Assignment is the mechanism that makes post-success accountability targetable. It answers a narrow question:

After a route has proof, words, legality, operator consensus, or a management metric, who must remain seated so future play can counterclaim, protect, pursue, audit, recruit, or record absence?

This mechanism fills the seam between existing surfaces. It does not decide proof burden, apology wording, broadcast legality, staff truth, or management yield. It makes those results actionable by attaching them to an answerable body or an explicit empty seat.

State model

answerability_seat_state:
  source_resolution_id: <id>
  source_surface: public_contrition | proof_burden | management_metric | broadcast_legality | operator_conclave | route_asset | equivalent
  future_reader_or_route: <reader_or_route_id>
  seat_state_before: unseated | proxy_pending | empty_chair_visible | coerced_low_rank_seat | sponsor_proxy_claimed | lawful_body_claimed | public_delegate_claimed
  selected_seat_holder: producer | artist | sponsor | inspector | worker | public_delegate | editor | archive | proxy | empty_seat | explicit_absence
  candidate_actor_or_absence: <actor_id | explicit_absence>
  proxy_or_absence: <proxy_id | explicit_absence>
  proof_anchor_or_absence: <anchor | explicit_absence>
  refusal_or_coercion_state: none | refused | coerced | absent | proxy_sent | cropped_out
  answerability_scope_after: public | lawful | sponsor | artist | worker | archive | editor | split | empty | recovery_only
  future_acceptance_change_required: true

Entry contract

Open only from live state pressure:

entry_state_required:
  trigger_kind: state_pressure
  source_resolution_present: true
  source_resolution_has_future_reader: true
  unresolved_harm_or_obligation_present: true
  proposed_or_missing_answerable_body_visible: true
  candidate_seat_count_min_or_explicit_absence: 1
  future_route_or_reader_can_change: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

Invalid triggers: fixed numbered turn, day interval, chapter quota, raw lens/page count, generic post-crisis upkeep, relationship threshold with no future reader, or dashboard state.

Core loop

  1. A prior resolution becomes usable but lacks an answerable body.
  2. Create or update 应责席案卷.
  3. Run 应责席指派.
  4. Select one of ten exact seated, recruited, split, proxy, public, empty, or suppress/default states.
  5. Mutate future route acceptance, counterclaim target, public audit, lawful appeal, sponsor unwind, worker protection, or recovery-only route.
  6. Only explicit choice suppress_or_default arms 应责空席默认; missing input or expiry leaves the review unresolved.

Branch outcomes

BranchReliefCostFuture acceptance
Protect/recruit usheranswerability clarityworker exposure, future counterclaim costone bounded 阮停 route-asset use
Producer seatroute continues; target clearproducer-license pressure, management heatproducer body required before next clean report
Artist seatconsent/public legitimacy improvesexposure, sponsor pressure, boundary riskartist route with scar; sponsor route costlier
Sponsor seatfunding/slot pressure improvescontract capture, public distrustsponsor-only or unwind-required
Inspector seatlawful appeal/custody improvesinspection heat, bureau debtlawful-only or archive-only
Worker seatsource row becomes legibleprotection/payroll/exposureworker protection required before reuse
Public delegate seatfan/public audit unlocksqueue capture, oxygen liabilitypublic audit required; sponsor clean route contested
Split seatincompatible readers proceed narrowlysplit debt, delay, contradictionreader-specific acceptance
Empty seat preservedfalse clean blockedpublic contradiction, future correction costcorrection/recovery required before clean route
Defaultfastest clean claim files firstfalse clean, proxy capture, scapegoat, hostilityblocked/costlier/sponsor-only/lawful-only/recovery-only

Counter contract

Every resolution must mutate at least three surfaces:

counter_contract:
  relief_min: 1
  cost_min: 1
  future_route_or_reader_delta_min: 1

Primary surfaces:

  • answerability_clarity
  • empty_seat_risk
  • false_answerability_clean
  • producer_license_pressure
  • management_pressure
  • public_receipt_legitimacy
  • public_receipt_distrust
  • sponsor_stop_loss_pressure
  • contract_capture
  • inspection_heat
  • bureau_favor_debt
  • artist_trust
  • artist_boundary_risk
  • worker_exposure
  • worker_scapegoat_risk
  • protected_witness_payroll_due
  • route_asset_integrity
  • seat_split_debt
  • future_counterclaim_cost
  • recovery_only_pressure

NPC and route-asset handling

Empty-Seat Usher is the default low-rank handler for absence rows. Her state matters because an empty seat can become recruitable evidence, a missed route asset, or a hostile witness.

ruan_ting_state_after_any:
  - not_present
  - encountered
  - recruited_empty_seat_usher
  - missed
  - hostile_empty_seat_witness

A recruited 阮停 can verify one future seat docket, proxy refusal, or preserved absence. She cannot make the seat clean.

Failure and recovery

Failure states:

  • false_answerability_clean;
  • sponsor_proxy_capture;
  • lawful_only_body_default;
  • worker_scapegoat;
  • empty_seat_public_scar;
  • hostile_absent_claimant;
  • recovery_only_answerability.

Recovery requires a scar: reopen docket, seat with cost, split readers, publish absence, protect worker, unwind proxy, lawful-only gate, public delegate audit, or recovery-only route.

Executable contract

The implemented rite accepts exactly thirteen named, in-hand cards and requires an explicit selected option. Missing, substituted, off-hand, choiceless, and repeated assignments fail. Ten ordered choices write mutually exclusive 阮停 state, seat state, future route state, and three counter deltas.

Its current data row is public_contrition.receipt.17public_counterclaim; the broader source and reader sets in the mechanism model are extension points rather than already executed variants.

Only choice 0 may grant route_asset.ruan_ting_empty_seat_usher. Only choice 9 may set the pending triple ruan_ting.default_pending, storyteller.event.empty_answerability_seat_default.v1.armed, and future_route.ruan_ting_recovery_pending. Each of the default’s five terminals clears that triple, removes any route asset, grants storyteller.card.answerability_empty_seat_counterreceipt.v1, and leaves a specific scar.

These invariants are executed by lens/storyteller-ruan-ting-empty-seat-usher.runtime.test.ts and demonstrated by the recruit and hostile-default Game CLI replays.

Non-goals

  • Not a governance page.
  • Not a court verdict simulator.
  • Not a generic accountability meter.
  • Not proof-burden reassignment.
  • Not public contrition wording.
  • Not management metric scoring.
  • Not fixed-turn content.