Audience Grievance Merge Review / 观众申诉并案复核
Audience Grievance Merge Review is the rite that lets the producer decide how a cluster of similar audience grievances should be carried forward.
It is not a customer-service action. It is a management rite that changes route pressure. Merging complaints can buy stability, but it can also erase a harmed cohort. Splitting complaints can preserve truth, but it creates handler burden, remedy cost, and future reader conflict.
Entry requirements
entry_state_required:
trigger_kind: state_pressure
register_present: storyteller.card.audience_grievance_merge_register.v1
grievance_cohorts_min: 2
incident_key_or_explicit_absence_present: true
harm_types_visible_or_explicit_absence: true
proof_carrier_visible_or_explicit_absence_for_each_cohort: true
clean_merge_beneficiary_visible_or_explicit_absence: true
harmed_if_merged_cleanly_visible_or_explicit_absence: true
future_reader_or_route_consumes_merge_state: true
player_can_merge_split_lead_reject_publish_quarantine_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_complaint_count_trigger: true
no_dashboard_or_lens_health_trigger: trueAssignments
The executable rite has exactly nine required slots. Every slot accepts only the named card, and every assigned card must be present in the player’s hand:
assignment_required:
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
handler: storyteller.card.audience_grievance_merge_handler.v1
exact_required_slot_count: 9
all_slots_required: true
exact_accepts_required: true
assigned_cards_must_be_in_hand: true
selected_choice_required: trueA famous handler, sponsor payment, public apology, stability table, or duplicate card cannot skip or substitute for these assignments. A missing slot, wrong-card substitution, assigned card absent from hand, or omitted choice returns an unsuccessful resolution and does not arm default. Because the rite is non-repeatable and its conditions reject review_resolved or default_resolved, a second resolution attempt also fails without arming default.
The assigned register carries one fixed runtime row: audience.merge.blackout.09, sourced from crisis_ledger under blackout.incident.09, with caption_access_row_09 / miscaption / caption_log_09 and fan_oxygen_row_09 / oxygen_loss / oxygen_row_09. It names stability_table as beneficiary, caption_user as harmed reader, and public_contrition as future reader. The broader field alternatives in the Wiki packet remain a design envelope rather than claims about dynamically generated current rows.
Exact choice order
| Index | Option ID | Merge state after | Future effect |
|---|---|---|---|
0 | merge_as_one_scoped | merge_as_one_scoped | public_addendum_required |
1 | split_by_harm | split_by_harm | multiple_remedies_visible |
2 | split_by_reader | split_by_reader | reader_specific_routes_required |
3 | representative_lead | representative_lead_scoped | counterreceipt_rights_reserved |
4 | reject_duplicate_with_scar | rejected_duplicate_with_scar | counterreceipt_armed |
5 | publish_conflict | conflict_published | correction_conflict_note_required |
6 | quarantine_proof | quarantined_for_proof_recheck | oxygen_and_caption_recheck_required |
7 | default_clean_merge | false_clean_pending | recovery_only |
These are eight explicit choices, not a fallback index. Only choice 7 sets audience_grievance_merge.default_pending, storyteller.event.overmerged_grievance_default.v1.armed, and future_route.overmerged_grievance_recovery_pending. Choices 0..6 leave all three markers false and cannot trigger the event.
Branches
Merge as one
Use when cohorts share an incident key and the producer chooses speed, legibility, or stability.
Relief: queue_pressure_down, audience_stability_up, or management_pressure_down.
Cost: excluded_cohort_pressure_up, public_receipt_distrust_up, or counterreceipt_risk_up.
Future: apology, correction, oxygen recheck, or access row becomes one scoped incident with addendum required.
Split by harm
Use when the same incident created different injuries.
Relief: erasure_risk_down or public_legitimacy_up.
Cost: handler_burden_up, remedy_cost_up, or sponsor_stop_loss_pressure_up.
Future: multiple remedies stay visible; at least one route becomes costlier.
Split by reader
Use when lawful, archive, public, fan, caption, access, or sponsor readers cannot accept the same merge.
Relief: reader_confusion_down.
Cost: route_complexity_up, archive_debt_up, or public_addendum_pressure_up.
Future: one path may be lawful-only, public-only, fan-only, archive-contested, or sponsor-only.
Representative lead
Use when one cohort can speak first without erasing others.
Relief: hearing_speed_up or claimant_floor_pressure_down.
Cost: mandate_pressure_up, notice_service_pressure_up, or excluded_reader_pressure_up.
Future: representative statement is scoped and later cohorts retain counterreceipt rights.
Reject duplicate
Use when a cohort is treated as already represented.
Relief: queue_pressure_down.
Cost: hostile_cohort_pressure_up or false_duplicate_risk_up.
Future: counterreceipt, route hostility, public challenge, or recovery-only branch is armed.
Publish conflict
Use when the merge conflict itself must be visible.
Relief: public_receipt_legitimacy_up or archive_legibility_up.
Cost: sponsor_pressure_up, audience_churn_up, or stability_debt_up.
Future: correction or apology requires conflict note; clean closure becomes invalid.
Quarantine
Use when merging would contaminate proof.
Relief: proof_integrity_up.
Cost: route_delay_up, future_recovery_cost_up, or fan_oxygen_resentment_up.
Future: affected route requires recheck, addendum, or recovery-only posture.
Default clean merge
Use only when the player completes all nine exact assignments and explicitly selects choice 7. Hiding, skipping, underfilling, substituting, assigning off-hand, omitting the choice, or repeating the rite is rejected without default arming.
Immediate relief: fastest stability or management pressure falls. Durable cost: a later event treats the clean merge as false, overbroad, or hostile to the merged-out cohort.
The armed event has exactly five exclusive terminals: false_duplicate_denial, universal_representative_closure, public_apology_overreach, proof_carrier_contamination, and broadcast_reality_false_closure. Each terminal clears the pending triple, records a distinct scar/state/future effect, and gains storyteller.card.overmerged_grievance_counterreceipt.v1.
Counter contract
counter_deltas_required:
relief: at_least_one
cost: at_least_one
future_reader_or_route_effect: at_least_oneCandidate surfaces:
grievance_queue_pressureaudience_stabilitypublic_receipt_legitimacypublic_receipt_distrustexcluded_cohort_pressurefalse_duplicate_riskcounterreceipt_riskfan_oxygen_balancefan_oxygen_resentmentcaption_access_pressureclaimant_floor_pressurehandler_burdensponsor_stop_loss_pressurearchive_debtroute_asset_integritybroadcast_reality_contradictionfuture_recovery_cost
Evidence shape
rite_id: storyteller.rite.audience_grievance_merge_review.v1
register: storyteller.card.audience_grievance_merge_register.v1
selected_posture: merge_as_one | split_by_harm | split_by_reader | representative_lead | reject_duplicate | publish_conflict | quarantine | default_clean_merge
cohorts_seen:
- <cohort id>
- <cohort id>
future_reader_or_route: <reader or route>
merge_state_after: <state>
harmed_or_excluded_cohort_after: <cohort or explicit_absence>
counter_deltas:
relief: []
cost: []
future: []
assertions:
- merge_question_is_state_triggered
- cohort_harm_types_visible
- clean_merge_beneficiary_visible_or_explicit_absence
- harmed_if_merged_cleanly_visible_or_explicit_absence
- future_reader_consumes_merge_state
- no_raw_complaint_count_or_fixed_turn_triggerAuthority and non-overlap boundary
This rite decides only how the named incident key groups the two fixed cohort rows. It preserves their harm and proof carriers. It does not perform claimant intake, convert crisis-ledger relief or debt, stabilize audience attention, audit proof lineage, grant or audit representative mandate, decide route-asset ownership, assign an answerability seat, or resolve a downstream counterreceipt challenge. It grants no universal merge, representation, proof equivalence, clean closure, consent, or universal route authority.
Runtime and replay evidence
The rite source is game-content/storyteller/rites/audience-grievance-merge-review.json5; its supporting card and event sources are game-content/storyteller/cards/audience-grievance-merge-register-runtime.json5 and game-content/storyteller/events/overmerged-grievance-default.json5. lens/storyteller-audience-grievance-merge-register.runtime.test.ts resolves all eight indexes from reset states, rejects missing/substituted/off-hand/choiceless/repeated attempts, proves choice-7-only arming, and covers all five terminals.
lens/replays/audience-grievance-merge-register.split-by-harm.replay.json proves the exact nine assignments with choice 1. lens/replays/audience-grievance-merge-register.overmerged-default.replay.json proves the same assignments with choice 7, followed by default event option 3.