Default Recovery Triage Lens / 默认恢复分诊 Lens
This lens observes whether Default Recovery Triage makes one durable Storyteller default scar recoverable only by changing its shape. The pass condition is deliberately narrow: consume the Audience merge false-closure scar, keep its history visible, and produce a reader-scoped recovery result or an explicit collapse.
Fixed executable oracle
fixed_row:
row_id: default_recovery.audience_overmerge.09
source_incident: audience.merge.blackout.09
source_default: storyteller.event.overmerged_grievance_default.v1#broadcast_reality_false_closure
source_surface: audience_grievance_merge
default_narrator: blackout_system
source_state: recovery_only
harmed_party: caption_user
preserved_relief: broadcast_stability_relief
paid_cost:
broadcast_reality_contradiction: 2
future_recovery_cost: 1
later_reader: public_contrition
requested_action: convert_to_recovery_route
recoverability_class: public_only
receipt_bridge: storyteller.card.overmerged_grievance_counterreceipt.v1
handler_reference: storyteller.card.audience_grievance_merge_handler.v1
protected_boundary: caption_log_09The stable playable identity is audience.merge.blackout.09 plus the event terminal. The timestamped session is replay provenance only and must never become an in-world key, trigger, assignment, or playable condition. The lens fails if the runtime substitutes a different source terminal, hides the harmed caption user, erases relief or paid cost, upgrades public_only to universal authority, or claims the recovery lane re-decides the Audience merge.
Must pass
1. Exact runtime packet
The source packet must remain under game-content/storyteller and use source: storyteller throughout. The card file contains exactly eleven starter assignment cards plus the default-only storyteller.card.default_recovery_collapse_counterreceipt.v1 output.
The eleven exact slot/card pairs are:
| Slot | Card ID |
|---|---|
docket | storyteller.card.default_recovery_docket.v1 |
source_default | storyteller.card.default_recovery_source_default.v1 |
source_surface | storyteller.card.default_recovery_source_surface.v1 |
harmed_party | storyteller.card.default_recovery_harmed_party.v1 |
preserved_relief | storyteller.card.default_recovery_preserved_relief.v1 |
paid_cost | storyteller.card.default_recovery_paid_cost.v1 |
later_reader | storyteller.card.default_recovery_later_reader.v1 |
recoverability_class | storyteller.card.default_recovery_recoverability_class.v1 |
receipt_bridge | storyteller.card.default_recovery_receipt_bridge.v1 |
handler | storyteller.card.default_recovery_handler.v1 |
boundary | storyteller.card.default_recovery_boundary.v1 |
Every slot requires exact card identity and presence in hand.
2. Choice outcomes diverge
| Index | Choice | State after | Future effect |
|---|---|---|---|
0 | reopen_with_scar | reopened_with_scar | accepted_with_surcharge |
1 | substitute_carrier | substitute_only | substitute_route_required |
2 | convert_public_receipt | public_only | lawful_appeal_required |
3 | convert_lawful_review | lawful_only | public_addendum_required |
4 | sponsor_management_buyout | sponsor_captured | sponsor_capture_discoverability_required |
5 | quarantine_or_memorialize_close | quarantine_only | memorial_closure_reader_required |
6 | false_recovery_or_no_answer | false_recovery_pending | default_narrator_recovery_pending |
Choices 0..5 must not arm collapse. Only a complete first execution of choice 6 may arm the exact four controls default_recovery.default_pending, storyteller.event.default_recovery_collapse.v1.armed, future_route.default_recovery_collapse_pending, and broadcast_reality.false_clean_recovery_claimed.
3. Failure is strict and non-defaulting
Missing, substituted, off-hand, choiceless, and repeated hearing attempts must fail without arming storyteller.event.default_recovery_collapse.v1, without granting the collapse counterreceipt, and without manufacturing a recovery state.
4. Collapse is explicit and exclusive
The event exposes exactly five stable terminals in this order: hidden_source_default → false_recovered / source_default_audit_required; harmed_party_omitted → hostile_hardened / harmed_party_restitution_required; substitute_false_original → the same-named state / original_loss_restoration_required; reader_scope_breach → reader_scope_breached / split_reader_recovery_required; and quarantine_false_repair → the same-named state / quarantine_audit_required. Exactly one may resolve; every terminal preserves the upstream scar and grants the default-only counterreceipt.
5. Authority stays local
The packet decides only the recovery posture of default_recovery.audience_overmerge.09. It does not recreate grievance cohorts, alter incident-key grouping, choose or revise the original default terminal, erase the original relief/cost pair, settle public contrition, or grant universal merge, proof, representation, consent, lawful, sponsor, archive, or route authority.
Deterministic replay evidence
The normalized CLI lens ID is storyteller-lens-default-recovery-triage-v1; generated session IDs begin lens-storyteller-lens-default-recovery-triage-v1-.
lens/replays/default-recovery-triage.convert-public.replay.json: all eleven exact assignments, rite choice2,public_only,lawful_appeal_required, no event.lens/replays/default-recovery-triage.false-recovery-collapse.replay.json: all eleven exact assignments, rite choice6, then event option3(reader_scope_breach).
Executable evidence
- Runtime sources: the three files in front matter.
- Focused exhaustive proof:
lens/storyteller-default-recovery-triage.runtime.test.ts. - Evaluator binding:
scripts/evaluate_lenses.mjs#storyteller.lens.default_recovery_triage.v1. - Executable binding:
wiki/content/lens/storyteller/default-recovery-triage.lens.ts.
defaultRecoveryTriageProgress reaches complete only when source/runtime/public parity, exact assignment strictness, both replay paths, event exclusivity, counterreceipt custody, and the local authority boundary all pass.
Non-goals
- Not the Recovery Ward Discharge lane and not evidence from its objects or replay.
- Not a broad claim that every default family is runtime-generated.
- Not a clean undo or a silent auto-default.
- Not cross-canon content.