Confidant Repair Terms Lens / 私约修复条件 Lens
This lens observes whether 私约修复条件线 and 私约修复条件机制 correctly turn a breached private promise into character-authored repair pressure.
The current mesh can already make private promises breachable through 私约违背线. The remaining regression risk is apology laundering: after a breach, the desk files an apology, payment, public statement, legal note, sponsor-safe recap, or handler reassurance and future play treats the character as repaired.
A passing implementation proves that the harmed character names the harm, writes the repair terms, requires proof or records explicit absence, preserves a nonnegotiable limit, and changes future character or route state. A generic relationship recovery, mood change, or clean apology does not satisfy this lens.
Primary observation link
This lens observes:
- 私约修复条件线;
- 私约修复条件机制;
- 私约修复案卷;
- 私约修复面谈;
- 私约修复默认;
- upstream and adjacent pressure lines: 私约违背线, 公开悔过账本, 受保护证人薪册, 证人报复链, and 处理人负荷账本;
- named character lines including 郁蓝未授权史官线, 白鸦黑箱补丁羁押线, Shen Luo Storyline, 韩砚霜白手套例外线, Mu Ning Storyline, 艾笙海盗频段童声线, and 黎星瞳自我线;
- Route Assets and Custody, Broadcast Reality, and Producer License and Pressure.
It is observed through:
Observable promise
When a breach reaches repair pressure, the game must show:
- source promise row or explicit absence;
- harmed confidant character;
- breach state before;
- breached material;
- violated scope or explicit absence;
- breach reader;
- harm named by the character;
- demanded repair;
- proof required by the character or explicit absence;
- nonnegotiable limit or explicit absence;
- selected repair posture;
- proof of repair or explicit absence;
- character state after;
- material state after;
- future character or route effect.
The lens fails if the result is only apology accepted, trust restored, relationship repaired, public statement issued, money paid, legal settled, PR handled, or character calmed.
Entry oracle
A valid implementation opens only from live state pressure:
entry_state_required:
trigger_kind: state_pressure
source_promise_or_breach_visible: true
confidant_character_visible: true
breached_material_visible: true
violated_scope_visible_or_explicit_absence: true
breach_reader_visible: true
character_harm_claim_visible: true
demanded_repair_visible: true
proof_required_by_character_visible_or_explicit_absence: true
future_character_or_route_consumes_repair_state: true
player_can_accept_negotiate_contrit_shield_separate_refuse_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_breach_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry comes from fixed turn number, fixed day/week interval, chapter quota, raw breach count, raw relationship value, generic apology scene, dashboard state, lens health, or public contrition without a named character demand and future consumer.
Docket oracle
私约修复案卷 or equivalent must keep breach, term, and future locks separate.
docket_required:
breach_lock:
source_promise_id_or_absence: <promise id or explicit_absence>
confidant_character: yu_lan | baiya | shen_luo | han_yanshuang | mu_ning | ai_sheng | li_xingtong | equivalent
breach_state_before: breached | hostile | exposed | public_only | lawful_only | sponsor_only | missed | recovery_only | equivalent
breached_material: source_identity | private_refusal | witness_name | checksum | route_secret | selfhood_boundary | child_voice_trace | unreleased_take | equivalent
violated_scope: private_only | named_hearing_only | anonymous_public | lawful_only | route_asset_only | emergency_only | disputed | explicit_absence
breach_reader: public | lawful_table | sponsor | archive | management | route_claimant | broadcast_reality | fan_public | equivalent
term_lock:
harm_named_by_character: <one sentence harm claim>
demanded_repair: return_material | replace_proof | publish_boundary | shield_source | pay_witness | withdraw_recap | route_separation | public_contrition | handler_recusal | equivalent
proof_required_by_character: oath | receipt | checksum | public_addendum | lawful_seal | witness_payroll | route_quarantine | explicit_absence | equivalent
nonnegotiable_limit: no_public_name | no_sponsor_copy | no_archive_reuse | no_broadcast_echo | no_handler_contact | no_route_asset_use | explicit_absence | equivalent
future_lock:
selected_repair_posture: accept_terms | negotiate_restitution | public_contrition | shielded_repayment | route_separation | refuse_repair | performative_apology_default
repair_state_after: pending | accepted | partial | public_contrition | shielded | route_separated | refused | performative | hostile | missed | recovery_only | equivalent
future_character_or_route_effect: recruitable_again_with_cost | handler_unavailable | proof_replaced | public_addendum_required | route_costlier | character_hostile | route_blocked | ending_scar | equivalentThe lens fails if apology, payment, public response, legal settlement, proof replacement, and future route effect are collapsed into one forgiveness row.
Rite assignment oracle
私约修复面谈 or equivalent must require explicit assignment:
assignment_required:
docket: storyteller.card.confidant_repair_docket.v1
selected_repair_row: <row id>
source_promise_id_or_absence: <promise id or explicit_absence>
confidant_character: <named character>
breach_state_before: <state>
breached_material: <material>
violated_scope: <scope or explicit_absence>
breach_reader: <reader>
harm_named_by_character: <harm claim>
demanded_repair: <repair>
proof_required_by_character: <proof or explicit_absence>
nonnegotiable_limit: <limit or explicit_absence>
handler_or_absence: producer | shen_luo | yu_lan | han_yanshuang | baiya | ai_sheng | fan_delegate | lawful_clerk | archive_clerk | explicit_absence | equivalent
selected_repair_posture: accept_terms | negotiate_restitution | public_contrition | shielded_repayment | route_separation | refuse_repair | performative_apology_default
future_character_or_route: <future consumer>The lens fails if a famous handler, sponsor payment, public statement, legal seal, archive correction, or recap wording resolves repair without these fields.
Branch divergence oracle
A satisfying implementation must expose six constructive branch families plus default, or explicitly block unavailable families with state reasons.
| Branch family | Required relief | Required cost | Required future effect |
|---|---|---|---|
| Accept terms | demanded repair becomes legitimate | proof replacement, schedule/sponsor/archive/handler cost | recruitable again with cost, scoped route reopened, addendum required |
| Negotiate restitution | narrower repair is mutually visible | consent debt, notice burden, character route costlier | partial repair, split reader, future objection preserved |
| Public contrition | harmed reader sees public acknowledgement | license pressure, sponsor pressure, public distrust | public repair route opens, sponsor route narrowed, ending scar reduced not erased |
| Shielded repayment | source/witness gets protection or payment | payroll, anonymity, lawful delay, handler burden | protected witness state, lawful-only proof, route delay |
| Route separation | character avoids contaminated route without erasure | proof gap, missed scenes, route asset cost | character available elsewhere, this route blocked or costlier |
| Refuse repair | proof/schedule/sponsor position preserved now | hostile character, recruitability damage, ending scar risk | hostile witness, missed recruit, recovery-only branch |
| Performative apology default | desk pressure may fall briefly | false repair hardens | hostile, unavailable, missed, route blocked, recovery-only, ending scar |
No branch may make one repair acceptable for the harmed character, public, lawful table, sponsor, archive, management report, route asset, and broadcast reality at once.
Default oracle
私约修复默认 must fire or arm when:
- a breached promise is treated as repaired without a repair docket row;
- character-authored repair terms are absent or hidden;
- proof required by the character is absent or hidden;
- nonnegotiable limits are violated or softened;
- public contrition is treated as private repair without being demanded;
- payment is treated as consent;
- legal settlement is treated as character forgiveness;
- recap wording says repaired while future route consumes a false repair state.
Required payload:
default_required:
event: storyteller.event.confidant_repair_default.v1
repair_row_or_absence: <row id or explicit_absence>
source_promise_id_or_absence: <promise id or explicit_absence>
confidant_character: <named character or explicit_absence>
breached_material_or_absence: <material or explicit_absence>
violated_scope_or_absence: <scope or explicit_absence>
breach_reader: <reader>
default_repair_claim: apology_given | money_paid | public_statement | legal_settled | handler_smoothed | sponsor_cleaned | recap_says_repaired | broadcast_memory_clean | equivalent
false_repair_actor: producer | sponsor | management | archive | lawful_reader | handler | editor | public_table | broadcast_reality | equivalent
missing_inputs:
character_authored_terms: present | absent | hidden
demanded_repair: present | absent | hidden
proof_required_by_character: present | absent | hidden
proof_of_repair: present | absent | hidden
nonnegotiable_limit: present | absent | hidden | violated
future_reader_or_route: present | absent | hidden
repair_state_after: performative | false_repaired | hostile | route_separated | missed | recovery_only | ending_scar | equivalent
character_state_after: hostile | unavailable | handler_refused | public_only | lawful_only | sponsor_only | missed | recovery_only | equivalent
future_character_or_route_effect: recruit_missed | handler_unavailable | proof_rejected | public_addendum_required | route_costlier | route_blocked | ending_scar | recovery_only | equivalentA default that changes only mood, money, public approval, relationship points, or generic reputation fails.
Success cost oracle
Every non-default branch must include at least one relief, one cost, and one future mutation.
branch_result_required:
repair_state_after: accepted | partial | public_contrition | shielded | route_separated | refused | equivalent
proof_of_repair_or_absence: <proof or explicit_absence>
character_state_after: available_with_cost | handler_only | lawful_only | public_only | hostile | missed | recovery_only | equivalent
material_state_after: returned | replaced | shielded | quarantined | sponsor_only | archive_only | public_addendum_required | unusable | equivalent
counter_deltas:
relief: at_least_one
cost: at_least_one
future: at_least_oneReplay evidence expectation
lens_id: storyteller.lens.confidant_repair_terms.v1
session_id: lens-confidant-repair-terms-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
source_promise_or_breach_visible: true
confidant_character_visible: true
breached_material_visible: true
demanded_repair_visible: true
future_character_or_route_consumes_repair_state: true
no_fixed_turn_trigger: true
offered:
card: storyteller.card.confidant_repair_docket.v1
rite: storyteller.rite.confidant_repair_interview.v1
valid_branch:
selected_repair_posture: accept_terms | negotiate_restitution | public_contrition | shielded_repayment | route_separation | refuse_repair
repair_state_after: <state>
proof_of_repair_or_absence: <proof or explicit_absence>
character_state_after: <state>
material_state_after: <state>
future_character_or_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
selected_repair_posture: performative_apology_default
event_seen_or_armed: storyteller.event.confidant_repair_default.v1
default_repair_claim: <claim>
false_repair_actor: <actor>
repair_state_after: <state>
character_state_after: <state>
future_character_or_route_effect: <effect>
assertions:
primary_links_exist: true
repair_locks_are_separate: true
branch_families_diverge: true
no_universal_forgiveness: true
no_generic_affinity_meter: true
no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger: trueNon-goals
- Not a design methodology page.
- Not a raw content-count target.
- Not a generic social system.
- Not a public apology wrapper.
- Not a fixed-turn cleanup phase.
- Not valid unless future character or route play reads the repair state.