Audience Grievance Merge Register / 观众申诉并案登记
Audience Grievance Merge Register is the in-world card for the moment when many audience, fan, claimant, witness, caption, oxygen, access, or public-receipt complaints appear to describe the same crisis but do not carry the same harm.
It prevents two opposite failures:
- treating every complaint as a separate queue item until management pressure becomes raw-count noise;
- merging complaints into one clean incident and erasing minority harm, excluded fans, alternate proof, or a hostile future reader.
The card is not a support-ticket UI. It is a playable route object: a merge decision can open relief, create backlash, arm a counterreceipt, change audience stability, or make a future branch lawful-only, public-only, sponsor-only, hostile, or recovery-only.
Fixed executable row
The runtime-backed v1 card is a fixed Storyteller row, not a generic row builder:
fixed_register_row:
register_id: audience.merge.blackout.09
source_surface: crisis_ledger
incident_key_or_absence: blackout.incident.09
candidate_cohorts:
- cohort_id: caption_access_row_09
cohort_surface: caption_user
grievance_claim: caption_layer_erased_the_live_egress_instruction
harm_type: miscaption
proof_carrier_or_absence: caption_log_09
represented_count_posture: named_scope
- cohort_id: fan_oxygen_row_09
cohort_surface: oxygen_holder
grievance_claim: stability_patch_consumed_the_promised_oxygen_allocation
harm_type: oxygen_loss
proof_carrier_or_absence: oxygen_row_09
represented_count_posture: batch_scope
clean_merge_beneficiary: stability_table
harmed_if_merged_cleanly: caption_user
future_reader_or_route: public_contrition
future_route_effect: public_addendum_required
default_risk: proof_carrier_contaminationThe broader schema and accepted-value lists below are the future design envelope. Only the fixed row above is currently runtime-proven.
game-content/storyteller/cards/audience-grievance-merge-register-runtime.json5 contains ten cards: nine starter assignments and one scarred output. The nine exact assignments are register → storyteller.card.audience_grievance_merge_register.v1, source_surface → storyteller.card.audience_grievance_source_surface.v1, incident_key → storyteller.card.audience_grievance_incident_key.v1, cohort_one → storyteller.card.audience_grievance_caption_cohort_row.v1, cohort_two → storyteller.card.audience_grievance_oxygen_cohort_row.v1, beneficiary → storyteller.card.audience_grievance_clean_merge_beneficiary.v1, harmed_reader → storyteller.card.audience_grievance_harmed_reader.v1, future_reader → storyteller.card.audience_grievance_future_reader.v1, and handler → storyteller.card.audience_grievance_merge_handler.v1. The default-only output is storyteller.card.overmerged_grievance_counterreceipt.v1.
The rite offers exactly eight explicit choices: indexes 0..7 are merge_as_one_scoped, split_by_harm, split_by_reader, representative_lead, reject_duplicate_with_scar, publish_conflict, quarantine_proof, and default_clean_merge. Only choice 7 arms default. Missing, substituted, off-hand, choiceless, and repeated reviews fail without arming it. The armed event resolves through exactly five terminals: false_duplicate_denial, universal_representative_closure, public_apology_overreach, proof_carrier_contamination, or broadcast_reality_false_closure.
Card promise
When the producer is asked to merge, split, reject, or publish audience grievances, the register records:
- source crisis, receipt, ledger row, queue, or explicit absence;
- grievance cohort ids and claimant surfaces;
- alleged same incident and disputed harm type;
- proof carrier for each cohort;
- who benefits if the grievances are merged cleanly;
- who is harmed if they are merged out;
- which future route, apology, correction, oxygen row, access row, or counterreceipt will consume the merge state.
The card fails if it records only duplicate, same issue, handled, spam, merged ticket, low priority, or public sentiment without route consequences.
Required fields
audience_grievance_merge_register:
register_id: <stable id>
source_surface: crisis_ledger | claimant_floor | fan_oxygen | audience_stability | blackout_residue | fan_token | public_contrition | receipt_counterclaim | route_asset | explicit_absence | equivalent
incident_key_or_absence: <incident id or explicit_absence>
candidate_cohorts:
- cohort_id: <stable id>
cohort_surface: fan_public | oxygen_holder | access_holder | caption_user | witness | claimant | sponsor_audience | lawful_reader | archive_reader | artist_public | equivalent
grievance_claim: <short in-world claim>
harm_type: oxygen_loss | access_loss | miscaption | witnessed_erasure | refund_loss | false_stability | public_silencing | lawful_exclusion | sponsor_substitution | route_asset_capture | equivalent
proof_carrier_or_absence: fan_token | oxygen_row | caption_log | witness_stub | egress_row | receipt_packet | crisis_docket | explicit_absence | equivalent
represented_count_posture: named_scope | batch_scope | delegated_scope | disputed_scope | explicit_absence
merge_question:
proposed_merge_state: unmerged | merge_as_one | split_by_harm | split_by_reader | representative_lead | reject_duplicate | publish_conflict | quarantine
clean_merge_beneficiary: sponsor | management | archive | public_table | stability_table | lawful_reader | route_asset | fan_delegate | explicit_absence | equivalent
harmed_if_merged_cleanly: fan_public | oxygen_holder | caption_user | witness | claimant | lawful_reader | archive_reader | artist | route_asset | explicit_absence | equivalent
future_consumption:
future_reader_or_route: <reader route rite event ending scar or explicit_absence>
future_route_effect: apology_scoped | correction_required | oxygen_recheck | access_recheck | counterreceipt_armed | stability_relief | lawful_annex_required | public_addendum_required | hostile | recovery_only | contradiction_pending | equivalentValid register states
| State | Use | Required consequence |
|---|---|---|
unmerged | complaints remain separate because proof or harm diverges | queue pressure persists, but erasure risk falls |
merge_as_one | complaints are tied to one incident key | stability relief or desk relief rises; excluded-cohort risk is named |
split_by_harm | same incident, different harm types | multiple remedies become visible with handler cost |
split_by_reader | same proof, different future readers | route becomes lawful-only, public-only, fan-only, or archive-contested |
representative_lead | one cohort can speak first but not for all | mandate pressure and excluded-reader notice are required |
reject_duplicate | a cohort is refused as already represented | counterreceipt, hostility, or recovery-only pressure must arm |
publish_conflict | merge conflict is public/lawful/archive visible | public legitimacy may rise while sponsor or stability pressure worsens |
quarantine | merge would contaminate proof or route access | route delay and recovery cost rise |
Default posture
The broader design treats a silent collapse as a missing register. The current strict runtime does not turn that omission into an automatic event: a missing, substituted, off-hand, choiceless, or repeated rite attempt fails without arming default. The executable default is reached only after all nine exact cards are assigned and choice 7, default_clean_merge, is explicitly selected. Its later terminal must remember:
- which cohort was merged out;
- which proof carrier was treated as duplicate;
- who gained by calling it the same complaint;
- which future reader receives a false-clean incident key;
- what scar remains when the harmed cohort reappears.
Adjacency boundary
This card is adjacent to but distinct from:
- 认领人现场接待线 — intake of claimants at the floor.
- 危机台账对表线 — reconciliation of crisis ledger rows.
- 应援凭证羁押线 — custody of fan-held proof tokens.
- 被排除者反回执挑战线 — challenge after a reader has been excluded.
- 公开悔过账本 — public apology/remorse accounting.
Audience Grievance Merge Register applies at the merge edge: before a complaint cluster becomes one incident, one apology, one correction, one oxygen recheck, or one denied duplicate.
Its local authority is limited to the named incident-key grouping and preservation of the cohort, harm, and proof rows. It does not perform claimant intake, alter crisis-ledger relief/debt, stabilize audience attention, audit proof lineage or representative mandate, decide route-asset ownership, assign an answerability seat, or resolve the later counterreceipt challenge. It grants no universal merge, representation, proof equivalence, clean closure, consent, or universal route authority.
Runtime and replay evidence
The focused test lens/storyteller-audience-grievance-merge-register.runtime.test.ts proves exact card source/lens metadata, the fixed row, strict slot binding, default-only counterreceipt, and parity with public/data/storytellerCards.json5. lens/replays/audience-grievance-merge-register.split-by-harm.replay.json proves all nine cards assigned to choice 1; lens/replays/audience-grievance-merge-register.overmerged-default.replay.json proves the same packet assigned to choice 7 and terminal event option 3.