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: trueEntry 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: trueInvalid 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
- A prior resolution becomes usable but lacks an answerable body.
- Create or update 应责席案卷.
- Run 应责席指派.
- Select one of ten exact seated, recruited, split, proxy, public, empty, or suppress/default states.
- Mutate future route acceptance, counterclaim target, public audit, lawful appeal, sponsor unwind, worker protection, or recovery-only route.
- Only explicit choice
suppress_or_defaultarms 应责空席默认; missing input or expiry leaves the review unresolved.
Branch outcomes
| Branch | Relief | Cost | Future acceptance |
|---|---|---|---|
| Protect/recruit usher | answerability clarity | worker exposure, future counterclaim cost | one bounded 阮停 route-asset use |
| Producer seat | route continues; target clear | producer-license pressure, management heat | producer body required before next clean report |
| Artist seat | consent/public legitimacy improves | exposure, sponsor pressure, boundary risk | artist route with scar; sponsor route costlier |
| Sponsor seat | funding/slot pressure improves | contract capture, public distrust | sponsor-only or unwind-required |
| Inspector seat | lawful appeal/custody improves | inspection heat, bureau debt | lawful-only or archive-only |
| Worker seat | source row becomes legible | protection/payroll/exposure | worker protection required before reuse |
| Public delegate seat | fan/public audit unlocks | queue capture, oxygen liability | public audit required; sponsor clean route contested |
| Split seat | incompatible readers proceed narrowly | split debt, delay, contradiction | reader-specific acceptance |
| Empty seat preserved | false clean blocked | public contradiction, future correction cost | correction/recovery required before clean route |
| Default | fastest clean claim files first | false clean, proxy capture, scapegoat, hostility | blocked/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: 1Primary surfaces:
answerability_clarityempty_seat_riskfalse_answerability_cleanproducer_license_pressuremanagement_pressurepublic_receipt_legitimacypublic_receipt_distrustsponsor_stop_loss_pressurecontract_captureinspection_heatbureau_favor_debtartist_trustartist_boundary_riskworker_exposureworker_scapegoat_riskprotected_witness_payroll_dueroute_asset_integrityseat_split_debtfuture_counterclaim_costrecovery_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_witnessA 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.17 → public_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.