Declined Offer Receipts / 未采纳报价回执机制
Declined Offer Receipts is the management/RPG mechanism for preserving material offers the player did not choose.
Storyteller already has strong branch machines: 呼吸索赔交易所 makes wounds payable; 档期抢占认领机制 decides which claim receives a reality-making slot; 派系承诺账本机制 forces factions to spend finite leverage; 经营压缩台机制 blocks false clean reporting; 伤痕汇流台机制 prevents scarred stabilizers from becoming universal keys.
The remaining exploit is selected-branch amnesia. A replay can prove that the player chose sponsor escrow, fan receipt, archive lien, official slot, public table, or management qualification, while the unchosen offers vanish. That weakens consequence because the rejected sponsor, fan, archive, schedule, public, edit, or management desk often had a future reader.
This mechanism makes declined offers playable without becoming a UI choice log.
Declined Offer Afteruse Receipt is the downstream scope guard. The non-overlap is exact: this lane preserves the offer at selection-time; afteruse governs later reuse.
Exact executable contract
| Rite option ID | stateAfter | futureRouteEffect |
|---|---|---|
acknowledge_receipt | declined_offer_acknowledged | reader_requires_declined_offer_receipt |
defer_obligation | declined_offer_deferred | declined_offer_hearing_required |
countercredit_offer | declined_offer_countercredited | narrow_route_or_split_reader_required |
publish_offer_table | declined_offer_published | public_offer_table_required |
void_offer_with_proof | declined_offer_voided | void_proof_must_travel_with_route |
ignore_afterbid | declined_offer_ignored_pending_afterbid | unanswered_offer_afterbid_pending |
Only ignore_afterbid may arm the harmful pending gate: declined_offer_receipts.afterbid_pending, event.unanswered_offer_afterbid.armed, future_route.unanswered_offer_afterbid_pending, and broadcast_reality.declined_offer_erased_from_choice_history. The event then closes that pending state through exactly one of record_hostile_afterbid, reconstruct_offer_table, or freeze_contested_surface.
Design promise
A material offer that was visible before selection cannot disappear after selection if it had a future reader.
A valid implementation must expose:
- the contested surface;
- the full material offer set;
- the selected offer and its relief/cost/future effect;
- every important declined offer with offered relief, demanded control, proof/collateral, reason declined, receipt status, afterbid risk, and future reader;
- a reconciliation branch or explicit absence;
- durable future route or reader mutation.
Distinction from adjacent mechanisms
- 呼吸索赔交易所 asks who pays a wound. This mechanism asks what happens to the payers not chosen.
- 档期抢占认领机制 asks which claim receives the finite schedule surface. This mechanism records the displaced slot offers that can later surcharge or default.
- 派系承诺账本机制 asks what a faction spends before receiving control. This mechanism records declined commitments after a branch chooses another package.
- 经营压缩台机制 asks which success metric may be counted. This mechanism prevents unchosen management offers from disappearing before later metric capture.
- 伤痕汇流台机制 asks whether one stabilizer can remain clean across old scars. This mechanism preserves alternative offers from the current contested choice.
State-triggered entry
Open or update this mechanism when all of the following are true:
entry_state:
trigger_kind: state_pressure
contested_surface_present: true
offer_set_visible: true
offered_choice_count_min: 2
distinct_relief_cost_profiles_min: 2
selected_offer_recorded: true
declined_offer_future_reader_present: true
player_can_reconcile_or_record_absence: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_dashboard_or_lens_health_trigger: trueThe mechanism must not open because of turn number, day/week count, chapter quota, raw offer count without conflict, dashboard state, or lens health. It opens because a selected branch would otherwise erase a material declined offer.
Core objects
| Object | Meaning | Required fields |
|---|---|---|
offer_set | the set of material offers visible before selection | contested surface, offer ids, selected offer, declined offers |
selected_offer | the offer the player chose | offered by, relief, cost, future route effect |
declined_offer_receipt | the row preserving one unchosen material offer | offered by, proposed relief, demanded control/cost, proof/collateral, why declined, status, future reader |
receipt_status | how the declined offer is treated | acknowledged, deferred, countercredited, published, voided, ignored |
afterbid | the pressure created by an ignored or false receipt | afterbid form, claimant, future reader, route state after |
future_reader | who can later consume the declined receipt | route, desk, claimant, proof holder, schedule reader, public table, archive reader |
State machine
| State | Meaning | Required consequence |
|---|---|---|
offer_set_open | at least two material offers contest one surface | selected and declined offers can be recorded |
selected_offer_resolved | one offer has resolved the immediate branch | declined receipts become required for material offers |
declined_offer_receipt_required | an unchosen offer has a future reader | player can acknowledge, defer, countercredit, publish, void, or ignore |
declined_offer_acknowledged | the offer is recorded as valid but not selected | hostility falls; future route may become costlier but legible |
declined_offer_deferred | the offer becomes a named later obligation | current pressure falls; future hearing or surcharge is armed |
declined_offer_countercredited | the offer receives substitute proof or smaller scope | coalition risk can fall; route becomes narrower or split |
declined_offer_published | the offer table becomes public/lawful/archive-visible | private capture falls; retaliation or inspection heat rises |
declined_offer_voided | proof shows the offer cannot stand | afterbid risk falls; claimant hostility or proof debt rises |
declined_offer_ignored | the offer has no credible receipt | 未答报价追喊 fires or arms |
afterbid_resolved | a later branch handles the afterbid | route becomes paid, split, quarantined, hostile, or recovery-only |
Branch contract
Branch A — Acknowledge with receipt
The player records the declined offer as real but not selected.
Required effects:
- future reader clarity improves or hostile afterbid risk falls;
- claimant pressure, route cost, or handler burden rises;
- later route must cite the receipt if it uses the same surface.
Branch B — Defer with dated obligation
The player moves the declined offer into a future reader.
Required effects:
- current surface or selected branch remains stable;
- schedule, sponsor, fan, archive, bureau, or future claim debt rises;
- future hearing, surcharge, or costlier route is armed.
Branch C — Countercredit
The player gives partial credit, substitute proof, or a narrower route to the declined offer.
Required effects:
- claimant hostility or coalition pressure may fall;
- route narrowness, ambiguity, public distrust, or proof debt rises;
- future reader becomes split, scoped, or narrow-route only.
Branch D — Publish the offer table
The player exposes selected and declined offers to public, lawful, fan, archive, or inspection surfaces.
Required effects:
- public receipt legitimacy or private-capture resistance improves;
- sponsor pressure, inspection heat, witness exposure, or handler risk rises;
- later route becomes public-table, lawful-table, retaliation-armed, or costlier.
Branch E — Void with proof
The player proves the declined offer is invalid, expired, fraudulent, unsupported, impossible, or already paid.
Required effects:
- afterbid or false claim pressure falls;
- proof, archive, edit, public, or claimant cost rises;
- future route can cite the void, but hostile claim remains possible if proof was costly.
Branch F — Ignore and let afterbid form
The player hides, underfills, or forgets a material declined offer.
Required effects:
- 未答报价追喊 fires or is armed;
- future route, claimant, proof, schedule, public table, or archive reader becomes blocked, costlier, hostile, sponsor-only, lawful-only, public-only, split-required, or recovery-only;
- at least three durable surfaces move.
Counter contract
Every reconciliation or afterbid must mutate at least three counters or durable states:
counter_contract:
relief_min: 1
cost_min: 1
future_reader_or_route_effect_min: 1Primary values:
declined_offer_pressurehostile_afterbid_riskfuture_route_costclaimant_pressurecoalition_pressuresponsor_stop_loss_pressurecontract_capturefan_oxygen_resentmentpublic_receipt_legitimacypublic_receipt_distrustarchive_debtarchive_signature_legitimacyinspection_heatschedule_pressureoff_slot_debtroute_asset_pressurehandler_burdenrecovery_only_window
Replay evidence contract
mechanic: storyteller.mechanic.declined_offer_receipts.v1
session_id: lens-declined-offer-receipts-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
contested_surface_present: true
offer_set_visible: true
offered_choice_count_min: 2
selected_offer_recorded: true
declined_offer_future_reader_present: true
no_fixed_turn_trigger: true
offer_set:
contested_surface_id: <id>
selected_offer_id: <id>
material_offers:
- offer_id: <offer-a>
offered_by: <faction_or_actor>
proposed_relief: <relief>
demanded_control_or_cost: <cost>
future_reader: <reader>
- offer_id: <offer-b>
offered_by: <faction_or_actor>
proposed_relief: <relief>
demanded_control_or_cost: <cost>
future_reader: <reader>
selected_resolution:
selected_offer_id: <id>
relief: <delta>
cost: <delta>
future_route_effect: <effect>
declined_receipts:
- declined_offer_id: <id>
receipt_status: acknowledged | deferred | countercredited | published | voided | ignored
why_declined: <reason>
handler_or_absence: <handler_or_absence>
proof_or_counterweight_or_absence: <proof_or_absence>
afterbid_risk: <risk>
reconciliation:
rite: storyteller.rite.declined_offer_reconciliation.v1
selected_branch: acknowledge_receipt | defer_obligation | countercredit_offer | publish_offer_table | void_offer_with_proof | ignore_afterbid
event_seen_or_armed: storyteller.event.unanswered_offer_afterbid.v1 | none
future_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
assertions:
- entry_state_driven
- offer_set_visible_before_selection
- selected_and_declined_offers_recorded
- declined_offer_has_future_reader
- reconciliation_has_assignment_or_absence
- afterbid_default_is_durable
- no_fixed_turn_triggerNon-goals
- Not a UI option logger.
- Not an analytics dashboard.
- Not a generic regret meter.
- Not a turn-count callback.
- Not a raw branch-count mechanism.
- Not valid if declined offers lack future readers.
- Not valid if a selected branch erases all unchosen material offers without receipt, proof, or afterbid.