Pricing, package, and existing-customer migration pack
最終確認: 2026-08-03
用途: 一つの current offer と既存顧客 cohort について、価格、package、entitlement、契約、channel、notice / consent、billing、cash、renewal を分離し、KEEP_CURRENT / NEW_CUSTOMERS_ONLY / VOLUNTARY_UPGRADE / TIME_BOUND_GRANDFATHER / APPLY_AT_RENEWAL / PACKAGE_REDESIGN / SUNSET_WITH_CLOSEOUT のどれを選ぶかを、成熟後の完全負荷後 contribution と顧客保護を同じ判断契約で運用する
この pack は一般的な product、pricing、billing、計測、運用、証拠管理の教材・判断補助・引継ぎ書式であり、法律、契約、消費者保護、税務、会計、App Store / Google Play policy、card-scheme rule その他の個別助言ではない。seller、entity、customer、contract、channel、storefront / region、currency、商品、時点ごとに current な一次情報と、必要な専門家へ確認する。
このファイルを埋めても live billing の実行権限にはならない。 Codex や自動処理に、production の Price 作成・変更・archive、subscription 更新、legacy cohort migration、App Store Connect / Play Console 操作、customer notice 送信、同意推測、invoice 確定、charge、cancel、refund、entitlement 変更を自律実行させない。live action は exact customer / cohort、old / new state、amount、currency、effective time、idempotency、rollback / remediation を限定した人の承認を別に必要とする。
BOUNDED_MIGRATE / EXPAND_MIGRATIONのnext_cohort_nはNEXT_CONTRACT_PROPOSAL_ONLYとする。current frozen cohort への追加実行権限ではなく、新しい contract version、cohort、provider policy、path、cap、maturity chain と人の承認を起票する上限付き提案である。書式 1〜14 は空欄コピー用である。末尾の記入例は、架空 product、架空 account、架空 Price ID、任意に選んだ数値だけからなる fully synthetic TEST fixture であり、実績、benchmark、推奨価格、許容 churn、通知期間、法的結論、provider の実 API response ではない。例の金額・率・日数・decision を実サービスへ移植しない。
氏名、email、電話、住所、raw IP、cookie、device fingerprint、card / bank data、契約全文、invoice 原本、customer support 全文、App Store receipt、Play purchase token、Stripe / Paddle payload 全文、password、API key、OAuth token、session、private key、webhook secret を、この公開書式や生成 AI prompt へ貼らない。実運用では opaque ID、redacted summary、必要最小限の集約、hash、権限制御された正本 reference を使う。
章との責任境界
Section titled “章との責任境界”- 23 章: value / offer、package、existing-customer migration、notice / consent、billing release、mature contribution の判断原則。
- 02 章: value metric、pricing model、P&L、cash flow、unit economics の基礎。
- 03 章: transparent pricing、reference transaction、choice architecture、cancel / refund UX。
- 06 章: 日本の通信販売、契約、privacy、security、法務確認の共通入口。
- 10 章: PSP、store、MoR、platform fee、channel economics。
- 11 章: B2B agreement、quote、invoice、renewal authority。
- 12 章: AI feature value、accepted outcome、provider cost。AI cost 上昇を値上げの十分条件にしない。
- 19 章: pre-outcome assignment、comparison、maturity、small-sample claim cap。
- 21 章: invoice、provider、refund、bank cash、reserve。
- SQLite companion: price / package / cohort / notice / consent / billing / cash / maturity invariant を fully synthetic data で検査する参考実装。
本 pack は「いくらにすべきか」を市場 benchmark から決めない。current customer job と反復価値、current commercial state、exact migration path、顧客への影響、完全負荷後 contribution を pricing_change_contract_id へ結び、既存顧客を新規 acquisition experiment の分母へ混ぜない。
Current official source anchors
Section titled “Current official source anchors”source snapshot は、URL、claim、適用 object、region、checked_at、valid_until、superseded state を保存する。公式 docs は provider mechanics の source であり、特定顧客への契約上・法律上の適用、customer understanding、同意、cash、最適価格を単独では証明しない。
Stripe
Section titled “Stripe”STRIPE_PRICE_VERSION_2026_08_03: Manage products and prices。Price amount の変更は新 Price を作り旧 Price を inactive にする。旧 Price を archive しても、その Price を使う existing subscription は継続する。STRIPE_SUBSCRIPTION_CHANGE_2026_08_03: Change the price of existing subscriptions。subscription item ID、new Price、quantity、billing interval、proration を別に扱う。item ID を省くと旧新 item が併存し得る。STRIPE_SCHEDULE_2026_08_03: Subscription schedules。current / future phase、phase transition、proration、release / cancel の効果を区別する。STRIPE_PREVIEW_2026_08_03: Create a preview invoice。preview は invoice を作らず、actual update と同じproration_date等を使う必要がある。STRIPE_PENDING_2026_08_03: Pending updates。対応する automatic collection では、支払成功時だけ変更を適用する path がある。STRIPE_PORTAL_2026_08_03: Configure the customer portal。customer-initiated plan switch、proration、限定された end-of-period downgrade を設定できる。STRIPE_QUOTES_2026_08_03: How quotes work。accepted quote は invoice、subscription、または schedule を生成するが、既存 subscription の amendment consent を自動証明しない。
Apple App Store
Section titled “Apple App Store”APPLE_PRICE_MANAGEMENT_2026_08_03: Manage pricing for auto-renewable subscriptions。storefront ごとの preserve / apply、notice / consent path、発効、planned change、値下げを確認する。APPLE_THRESHOLD_2026_08_03: Auto-renewable subscription price increase thresholds。checked rule では日本は、値上げ率が >50% かつ absolute difference が >JPY 800(非年額)/ >JPY 8,000(年額) の場合に threshold 起因の consent が必要になる。JPY 800 / JPY 8,000 ちょうどはexceedsではない。判定は renewal 時に行われ、threshold は税・為替などにより変更され得る。地域ごとの全値上げ consent や 12 か月内の再値上げなど、独立した条件も別に確認する。APPLE_STATUS_2026_08_03: Managing Price Increases for Auto-Renewable Subscriptions と App Store Server Notification subtype。App Store Server Notifications V2 ではnotificationType=PRICE_INCREASE, subtype=PENDING | ACCEPTEDとnotificationType=EXPIRED, subtype=PRICE_INCREASEを区別し、自社 notice 送信を consent / renewal outcome にしない。APPLE_ACA_PRICE_2026_08_03: Change Subscription Price と Handling subscription price changes。Advanced Commerce API の transaction / item 単位、eligibility、next renewal、consent communication、sandbox limitation を通常 App Store Connect path と分ける。
Google Play
Section titled “Google Play”GOOGLE_PRICE_CHANGE_2026_08_03: Change subscription prices。new-purchase propagation、legacy cohort、opt-in / opt-out、notice、overlap、accidental change、test path を確認する。default opt-in はtrigger後7日間のdeveloper communication windowとGoogleの30日前通知を分け、最短約37日を全path・全地域の保証値や法定日数にしない。GOOGLE_SUBSCRIPTION_RULE_2026_08_03: Understanding subscriptions。base plan / offer、legacy cohort、region、decrease、opt-out eligibility / frequency / amount / in-app notice を確認する。GOOGLE_MIGRATE_API_2026_08_03: basePlans.migratePrices。legacy cohort を current base-plan price へ移す API object を確認する。GOOGLE_PURCHASE_STATE_2026_08_03: SubscriptionPurchaseV2 と RTDN reference。OUTSTANDING / CONFIRMED / APPLIED / CANCELEDと RTDN 後の authoritative fetch を確認する。
Paddle Billing
Section titled “Paddle Billing”PADDLE_PRICE_SNAPSHOT_2026_08_03: Subscription item Price snapshot。catalog Price 更新後も existing subscription item は追加時 snapshot を保持する。PADDLE_SUB_UPDATE_2026_08_03: Update a subscription。残す item を含む完全リスト、proration mode、payment-failure behavior を確認する。PADDLE_PREVIEW_2026_08_03: Preview an update to a subscription。immediate / next / recurring transaction details、tax、credit / charge summary を確認する。PADDLE_COMMUNICATION_2026_08_03: Customer emails と Paddle Buyer Terms。price-changed email と、法が要求する場合の consent boundary を確認する。PADDLE_HISTORY_2026_08_03: Subscription History。2026-06-29 以後の change history と、それ以前の inferred history を区別する。
14 書式を使う順序
Section titled “14 書式を使う順序”- decision、exact unit、baseline、claim cap、損失上限を固定する。
- current customer job、反復価値、current / proposed offer を価格より先に固定する。
- package と entitlement の added / retained / removed / limited scope を version 化する。
- amount、currency、interval、quantity、usage、discount、tax、fee、proceeds を別 object にする。
- channel、storefront / region、contract / terms、Price snapshot、renewal state で existing cohort を outcome 前に凍結する。
- current official source、current agreement、customer state から applicability、notice、consent を fail closed で解く。
- value、理由、選択肢、cancel / support、reference transaction、fairness を communication contract にする。
- preview、schedule、proration、payment-failure behavior、idempotency を SANDBOX で検証する。
- commercial state、entitlement、invoice、payment を release 後に exact ID で照合する。
- assignment から cash / refund / cancel まで append-only event ledger を作る。
- invoice、provider、payout、bank、credit、refund、dispute を二重計上せず照合する。
- renewal、accepted value、retention、support、完全負荷後 contribution を maturity 後に読む。
- wrong cohort、unexpected charge、missing notice / consent、entitlement mismatch の incident を rehearsal する。
- weekly decision、Codex handoff、independent review、人の live authority を閉じる。
共通 pricing change contract
Section titled “共通 pricing change contract”すべての書式、event、source snapshot、preview、schedule、receipt、ledger、decision は同じ stable key pricing_change_contract_id / contract_version を持つ。contract ID だけで多件を join せず、account、subscription、item、notice、consent、invoice、payment、cash の exact ID chain を使う。
ID、version、environment
Section titled “ID、version、environment”contract_family_id:pricing_change_contract_id / contract_version:supersedes_contract_id: N/A | exact prior contract ID
decision_id / decision_version:value_offer_contract_id / offer_revision:package_contract_id / package_revision:entitlement_contract_id / entitlement_revision:commercial_cohort_id / cohort_revision:cohort_assignment_id / assignment_revision:channel_contract_id / channel_revision:applicability_contract_id / applicability_revision:communication_contract_id / communication_revision:billing_change_plan_id / plan_revision:release_candidate_id / release_revision:event_ledger_id / ledger_revision:maturity_snapshot_id / snapshot_revision:incident_id / remediation_id: N/A | opaqueevidence_id / evidence_revision:supersedes_evidence_id: N/A | exact prior evidence ID
environment: SYNTHETIC | SANDBOX | LIMITED_LIVE | LIVEaccounting_environment: TEST | REALprovider_environment: TEST | LIVE | N/Aenvironment_mapping_revision:seller_entity_ref: opaquebase_currency:owner / independent_reviewer:retention_policy_id / retention_due_at:SYNTHETIC / SANDBOXはTEST、LIMITED_LIVE / LIVEはREALにだけ写像する。不一致 row を reject する。- TEST Price、test clock、sandbox notification、license tester、synthetic acceptance、simulated cash を REAL KPI、customer state、revenue、cash、consent へ昇格しない。
- environment を失った provider export は
UNKNOWNとし、REAL へ既定しない。 - 過去 row を静かに update せず、新 revision と exact supersession を作る。
- opaque ID、hash、provider status、email open は、本人性、理解、同意、法的効力、accepted value、cash を単独で証明しない。
designed_at / approved_at:source_checked_at / source_valid_until:cohort_assigned_at / cohort_frozen_at:agreement_accepted_at:notice_planned_at / sent_at / delivered_at / viewed_at:consent_requested_at / consent_accepted_at / consent_declined_at:platform_scheduled_at / platform_effective_at:subscription_effective_renewal_at:previewed_at / schedule_created_at / schedule_released_at:entitlement_changed_at:invoice_created_at / finalized_at / due_at:payment_attempted_at / paid_at:provider_available_at / payout_paid_at / bank_observed_at:refund_requested_at / refund_settled_at:occurred_at / recorded_at:outcome_cutoff_at / snapshot_as_of / maturity_at:decision_due_at / decided_at:recheck_due_at:occurred_at <= outcome_cutoff_atとrecorded_at <= snapshot_as_ofを別に判定する。- catalog effective、subscription renewal、entitlement、invoice、payment、bank cash の時計を相互に代用しない。
- notice
sent_atを delivered、viewed、understood、consented に昇格しない。 - provider が表示する scheduled date と、個別 account が最初に new price を支払う renewal date を分ける。
NOT_DUEは failure、zero、unknown ではない。late event は後の snapshot を変え得るが、過去 decision を書き換えない。
状態を混ぜない
Section titled “状態を混ぜない”| state | 意味 |
|---|---|
N/A |
contract 上存在しない。理由、決定者、再確認 trigger がある |
UNKNOWN |
必要だが未確認、矛盾、期限切れ、join 不能、authority 不足 |
0 |
対象、分母、期間、coverage が確定した測定ゼロ |
FAILED |
実行した検査、照合、条件が明示的に不合格 |
OBSERVED |
stage に必要な authority を満たす肯定観測 |
NOT_DUE |
notice、renewal、invoice、cash、refund、maturity 等の期限前 |
数値 0 と categorical state は別列にする。UNKNOWN / FAILED / NOT_DUE / N/A をゼロへ変換しない。
consent は次を分ける。
NOT_REQUIRED_VERIFIEDREQUIRED_NOT_REQUESTEDREQUIRED_PENDINGACCEPTED_AUTHORITATIVEDECLINED_AUTHORITATIVEEXPIRED_WITHOUT_ACCEPTANCEOPT_OUT_ELIGIBLE_VERIFIEDOPT_OUT_NOT_ELIGIBLEUNKNOWNN/ANOT_REQUIRED_VERIFIED は「同意を取らなかった」と同義ではない。non-response を consent に変換できるのは、exact channel、region、contract、provider workflow について opt-out applicability が current evidence で確認された場合だけである。
Commercial object ontology
Section titled “Commercial object ontology”次を別 object として保存する。
CUSTOMER_JOBACCEPTED_RECURRING_VALUEOFFERPACKAGEENTITLEMENTCATALOG_PRODUCTCATALOG_PRICESUBSCRIPTION_PRICE_SNAPSHOTDISCOUNT_OR_OFFER_PHASEAGREEMENT_OR_TERMSCOMMERCIAL_COHORTNOTICECONSENTQUOTE_OR_ORDERSUBSCRIPTION_SCHEDULEACTIVE_SUBSCRIPTION_STATEENTITLEMENT_STATEINVOICE_OR_TRANSACTIONPAYMENT_ATTEMPTPROVIDER_SETTLEMENTBANK_CASHREFUND_CREDIT_OR_DISPUTEMATURE_CONTRIBUTION価格表を変えても existing subscription snapshot、agreement、entitlement、invoice、cash は自動的に変わらない。provider event が変わっても customer job と accepted recurring value は自動的に増えない。
Change component と migration path
Section titled “Change component と migration path”変更 component は複数選択し、それぞれ old / new revision を持つ。
AMOUNTCURRENCYBILLING_INTERVALQUANTITYVALUE_METRICUSAGE_UNITTIER_OR_VOLUME_RULEPACKAGE_SCOPEENTITLEMENTSUPPORT_OR_SLADISCOUNT_OR_TRIALTAX_TREATMENTPAYMENT_TERMSCANCEL_OR_REFUND_TERMSCHANNEL_OR_MERCHANTOTHER_MATERIAL_TERMmigration path は一 account / assignment につき一つに固定する。
KEEP_CURRENTNEW_CUSTOMERS_ONLYVOLUNTARY_UPGRADETIME_BOUND_GRANDFATHERAPPLY_AT_RENEWALPACKAGE_REDESIGNSUNSET_WITH_CLOSEOUTPRICE_DECREASEPACKAGE_REDESIGN は単なる amount change ではない。customer job、accepted outcome、entitlement、comparison を新 intervention version として再定義する。SUNSET_WITH_CLOSEOUT は pricing optimization ではなく、export、refund / credit、support、data、contract closeout を伴う終了責任である。
Channel class
Section titled “Channel class”DIRECT_WEB_STRIPEAPPLE_APP_STORE_CONNECTAPPLE_ADVANCED_COMMERCE_APIGOOGLE_PLAYPADDLE_BILLINGDIRECT_B2B_INVOICEOTHER_VERIFIED_CHANNELchannel が違えば、catalog object、legacy / preserve behavior、notice / consent、effective date、preview、rollback、fee、tax、cash path も別 contract にする。同じ customer が複数 channel を持つ場合、duplicate entitlement と二重請求を別 gate で止める。
Evidence class
Section titled “Evidence class”| class | evidence | 主な用途 | 単独では証明しないもの |
|---|---|---|---|
E0_INFERENCE |
仮説、scenario、sensitivity | option 検討 | current rule、customer value、cash |
E1_MANUAL_OBSERVATION |
interview、support summary、手動観測 | value / fairness の補助 | consent、payment、causality |
E2_VERSIONED_CONTRACT_OR_POLICY |
offer、package、terms、approved notice、decision | intended commercial state | delivery、理解、cash |
E3_VERIFIED_PROVIDER_EVENT |
provider preview、schedule、subscription、invoice、webhook | provider state、calculation | contract authority、bank cash |
E4_FIRST_PARTY_AUTHORITATIVE |
assignment、entitlement、delivery、acceptance、support ledger | cohort、value、内部 cost | provider・銀行・法律上の外部 fact |
E5_CUSTOMER_BANK_LEGAL_AUTHORITATIVE |
customer acceptance、bank、current official / legal evidence | consent、cash、current rule | 将来 outcome、最適価格 |
source class の数字が高いだけで stage に適切とは限らない。current provider docs は provider rule の source であり、自社 account の actual state は provider object / console receipt、customer acceptance は customer-authoritative receipt、cash は bank evidence を必要とする。
Decision priority と live boundary
Section titled “Decision priority と live boundary”STOP_AND_REMEDIATE > PAUSE > UNKNOWN > KEEP_CURRENT / NEW_CUSTOMERS_ONLY / VOLUNTARY_UPGRADE > BOUNDED_MIGRATE > EXPAND_MIGRATION- wrong customer / cohort、unauthorized contract change、missing required notice / consent、unexpected charge、wrong tax / currency、duplicate invoice、access loss、security / privacy breach は revenue uplift で相殺しない。
UNKNOWNが applicability、consent、amount、cohort、entitlement、invoice、cash の live-critical field に残るなら migrate しない。BOUNDED_MIGRATE / EXPAND_MIGRATIONは exact offer、channel、region、contract、cohort、renewal window、account cap、cash exposure、support capacity のうち evidence が支える範囲だけを広げる。- provider の update success は customer notice、consent、accepted value、retention、cash の success ではない。
- Codex は source diff、schema、redacted draft、synthetic fixture、preview parser、reconciliation query、negative test、decision memo まで。production mutation、communication、consent、charge、cancel、refund、entitlement release は人が実行する。
書式 1 — Decision / scope / baseline / loss-limit contract
Section titled “書式 1 — Decision / scope / baseline / loss-limit contract”価格や uplift scenario を見る前に、一つの decision unit と停止条件を固定する。
pricing_change_contract_id / contract_version:decision_id / decision_version:environment / accounting_environment / provider_environment:owner / independent_reviewer:created_at / decision_due_at:outcome_cutoff_at / snapshot_as_of / maturity_at:
decision question:seller / product / customer job:channel / storefront-or-region / currency:current offer / package / price revisions:proposed offer / package / price revisions:exact existing-customer cohort:current contract / terms revision:candidate migration paths:one action this decision may change:
baseline action and frozen comparison:claim type: DESCRIPTION | ASSOCIATION | SCENARIO | OPERATIONAL_DECISION | CAUSALclaim cap:claim explicitly prohibited:time horizon / maturity rule:
primary KPI: matured_realized_recurring_contribution_deltadriver metrics:customer guardrails:commercial / cash guardrails:data-quality guardrails:baseline source / state:target state: TBD_BASELINE | exact approved threshold
maximum assigned accounts:maximum new recurring amount exposure:maximum one-time proration / invoice exposure:maximum refund / credit / dispute exposure:maximum customer harm / access-loss exposure:maximum founder / support minutes:maximum elapsed rollout window:maximum unresolved UNKNOWN accounts:
hard vetoes:human action approver:live actions explicitly prohibited:kill-switch / pause owner:remediation / reversal path:next cheapest evidence:
decision: STOP_AND_REMEDIATE | PAUSE | UNKNOWN | KEEP_CURRENT | NEW_CUSTOMERS_ONLY | VOLUNTARY_UPGRADE | BOUNDED_MIGRATE | EXPAND_MIGRATIONdecision scope / evidence / expiry:execution scope: NO_EXECUTION_AUTHORITY | NEXT_CONTRACT_PROPOSAL_ONLYDecision gate
Section titled “Decision gate”- unit は seller × channel × region × current offer / terms / price × pre-outcome cohort × proposed revision × path × effective window である。
- new-customer acquisition と existing-customer renewal の分母を分けた。
- amount 以外の package、entitlement、interval、quantity、discount、tax、terms change を列挙した。
- no-change baseline と maturity を outcome 前に固定した。
- customer、cash、support、refund、unknown の loss limit がある。
- live billing を Codex や batch job の暗黙権限にしていない。
書式 2 — Customer value / offer evidence contract
Section titled “書式 2 — Customer value / offer evidence contract”価格ではなく、誰のどの反復 job に何を約束し、どの outcome を recurring value と認めるかを固定する。
pricing_change_contract_id / contract_version:value_offer_contract_id / offer_revision:effective_from / effective_until:owner / customer-domain reviewer:
customer segment / job:job trigger / frequency:current alternative / switching constraint:harm if job fails:
current offer promise:current value metric:current accepted recurring outcome:current rejected / partial / safe outcome:current evidence source / period / coverage:current value uncertainty:
proposed offer promise:proposed value metric:proposed accepted recurring outcome:what is genuinely new or improved:what is unchanged:what becomes worse / constrained / removed:customer effort / switching / learning cost:
value evidence IDs: repeated usage / delivery: customer-authoritative acceptance: support / complaint: willingness-to-pay interview or choice: actual paid renewal: NOT_DUE | opaqueevidence environment / accounting environment:
offer hypothesis:no-change counterfactual:new-customer evidence allowed use:new-customer evidence prohibited extrapolation:existing-customer evidence gap:
value claim: DESCRIPTION | ASSOCIATION | OPERATIONAL_DECISIONclaim cap / expiry / recheck trigger:Value gate
Section titled “Value gate”- value を feature count、usage、stated willingness、price だけで置換していない。
- recurring value は反復可能な accepted outcome として定義した。
- package removal、customer effort、switching cost、support impact を downside に入れた。
- acquisition conversion を existing-customer retention / elasticity へ外挿していない。
- AI / infrastructure cost 上昇を顧客価値の増加と呼んでいない。
書式 3 — Package / entitlement version and compatibility map
Section titled “書式 3 — Package / entitlement version and compatibility map”amount change とサービス内容 change を分離し、commercial promise と provisioned entitlement を照合する。
pricing_change_contract_id / contract_version:package_contract_id / package_revision:entitlement_contract_id / entitlement_revision:current offer revision / proposed offer revision:effective_from / effective_until:owner / engineering owner / support owner:
package component row ID:component class: CORE | LIMIT | ADD_ON | SUPPORT | SLA | DATA | EXPORT | INTEGRATION | OTHERcomponent name / opaque code:current included scope:proposed included scope:change: ADDED | RETAINED | EXPANDED | REDUCED | REMOVED | REPLACEDcustomer-visible promise:entitlement rule / technical flag:quantity / usage / reset rule:overage / degradation / hard-stop behavior:support / response boundary:data retention / export boundary:dependency / compatibility:grandfather behavior:evidence / owner / checked_at:package-level reconciliation:current package hash:proposed package hash:current entitlement set hash:proposed entitlement set hash:customer-facing catalog matches package?:package matches provisioning config?:removed entitlement migration / export / credit:legacy client / API compatibility:multi-channel duplicate entitlement check:support runbook revision:rollback entitlement target:unresolved mismatch:Package-entitlement gate
Section titled “Package-entitlement gate”- Product / package / Price / entitlement を別 revision にした。
- removed / reduced / limited item を「値上げだけ」に隠していない。
- promise、technical flag、usage reset、overage、support が一致する。
- grandfathered commercial state と grandfathered entitlement state を別に照合した。
- rollback は Price だけでなく entitlement、limit、support、export を戻す。
書式 4 — Price / fee / tax / proceeds snapshot
Section titled “書式 4 — Price / fee / tax / proceeds snapshot”一つの Price row を一つの amount とせず、課金計算と seller proceeds を current source で再構成する。
pricing_change_contract_id / contract_version:price_snapshot_id / snapshot_revision:catalog_product_id / product_revision:catalog_price_id / price_revision:subscription_price_snapshot_id / snapshot_revision: N/A | opaquechannel / provider / provider environment:storefront-or-region / customer tax location:checked_at / valid_until / source anchor IDs:
price role: CURRENT | PROPOSED | GRANDFATHERED | DISCOUNT | TRIAL | OVERAGE | ADD_ONamount in minor units:currency:billing interval / interval count:quantity / seat rule:usage unit / meter revision:tier / volume / credit rule:minimum / maximum / cap:discount / coupon / offer phase:trial / step-up:tax behavior: INCLUSIVE | EXCLUSIVE | LOCATION | UNKNOWNtax category / authority source:displayed total / unit price:
provider / store fee basis:fixed fee:percentage fee:commission / program:tax collected for others:FX source / rate / timestamp:expected provider proceeds:expected seller proceeds:variable COGS:support / founder-time cost allocation:one-time migration cost allocation:expected full-loaded contribution:
rounding / minimum-charge rule:preview required?:price object mutability / snapshot rule:archive / preserve behavior:source conflict / UNKNOWN:Price gate
Section titled “Price gate”- minor units、currency、interval、quantity、usage、discount、tax、fee を別 field にした。
- catalog Price と subscription Price snapshot を混ぜていない。
- displayed customer amount と seller proceeds を分けた。
- provider fee / tax / FX を古い memory や universal percentage にしていない。
-
price × accountsを contribution と呼んでいない。 - Stripe の amount change、Paddle の snapshot、storefront / region price を channel 固有 source で確認した。
書式 5 — Existing cohort / contract / channel / migration assignment
Section titled “書式 5 — Existing cohort / contract / channel / migration assignment”outcome を見る前に commercial state を凍結し、誰をどの path へ割り当てたかを exact account / subscription で残す。
pricing_change_contract_id / contract_version:commercial_cohort_id / cohort_revision:cohort_assignment_id / assignment_revision:assigned_at / cohort_frozen_at:environment / accounting_environment / provider environment:
seller / channel / provider:storefront-or-region / currency:customer account ID: opaquesubscription ID / item ID: opaquecurrent product / package / entitlement revision:current catalog Price / subscription Price snapshot:current quantity / interval / discount / offer phase:current agreement / terms / final-confirmation revision:agreement acceptance evidence:current renewal / commitment / cancel state:payment / grace / retry / hold state:current legacy / preserved cohort ID:customer support / dispute state:
eligibility rule revision:eligible at assignment?: YES | NO | UNKNOWNineligibility / exclusion reason:assigned migration path:proposed product / package / Price / terms revisions:earliest permissible effective window:comparison group / no-change baseline:assignment authority / evidence:
duplicate customer / channel check:overlapping migration check:prior pending price change:late state change policy:withdraw / pause reason:Cohort gate
Section titled “Cohort gate”- cohort は outcome、renewal、complaint、payment を見る前に固定した。
- channel、region、contract、Price snapshot、offer、renewal、payment state を含む。
- eligibility UNKNOWN を分母から消していない。
- offer phase、installment / commitment、grace / retry、pending change を確認した。
- 同一 customer の重複 channel、duplicate entitlement、overlapping migration を止めた。
- Google legacy cohort、Apple preserved price、Stripe / Paddle subscription snapshot を同じ概念に潰していない。
書式 6 — Applicability / notice / consent determination
Section titled “書式 6 — Applicability / notice / consent determination”provider capability、current rule、current agreement、customer state を照合し、未確認なら live migration を止める。
pricing_change_contract_id / contract_version:applicability_contract_id / applicability_revision:customer account / subscription / assignment IDs: opaquechannel / storefront-or-region / currency:proposed change components:proposed migration path:intended platform / subscription effective time:owner / legal-or-policy reviewer:
provider source snapshot IDs:provider rule checked_at / valid_until:current agreement / terms revision:agreement change authority evidence:consumer / business customer classification:jurisdiction / tax location confidence:current customer state / renewal date:prior price change / notice / consent history:offer / trial / commitment / grace / retry state:
applicability result: APPLIES | DOES_NOT_APPLY | UNKNOWNgrandfather / preserve option:notice required?: YES | NO_VERIFIED | UNKNOWNnotice minimum lead / calculation source:notice channels required:developer in-app notice required?:notice content requirements:consent state:opt-out eligibility / certification:non-response treatment:effective-date calculation:failure if no acceptance:cancel / expiry / retain behavior:
notice artifact ID / revision:notice planned_at / sent_at / delivered_at / viewed_at:consent request ID:consent accepted / declined / expired receipt:provider status / webhook / server notification:customer-authoritative acceptance:
conflict among source / agreement / provider state:first UNKNOWN field:decision: STOP_AND_REMEDIATE | PAUSE | UNKNOWN | KEEP_CURRENT | NEW_CUSTOMERS_ONLY | VOLUNTARY_UPGRADE | BOUNDED_MIGRATErecheck trigger / expiry:Provider-specific applicability prompts
Section titled “Provider-specific applicability prompts”Stripe: Is this seller-initiated update or customer portal choice?: Does current agreement permit the exact change?: What notice / consent evidence exists outside subscription.updated?: Is Price replacement, quantity, interval, proration, payment behavior exact?:
Apple App Store Connect: Preserve current price or apply to existing?: Storefront / duration / percentage / absolute delta / prior-12-month state?: Consent-needed or notice-only path at renewal?: Planned change removable before effective?:
Apple ACA: Active, auto-renew on, not grace/retry, not offer, supported storefront?: transaction / item / dependent SKU scope?: SCHEDULED / PENDING / ACCEPTED status?:
Google Play: Exact base plan / region / legacy cohort / current price?: Decrease, opt-in increase, or eligible opt-out?: 365-day frequency / amount / good-standing / terms / in-app notice verified?: Overlapping migration / OUTSTANDING / CONFIRMED / APPLIED / CANCELED?:
Paddle: Catalog Price or subscription snapshot is being changed?: Price-changed email and jurisdictional consent path verified?: No bulk cohort API assumed?: Item effective timing vs billing timing independently verified?:Applicability gate
Section titled “Applicability gate”- source URL、claim、object、region、checked_at、valid_until がある。
- Console / API が許可したことを contract authority / legal validity と呼んでいない。
-
sent、delivered、viewed、acceptedを分けた。 - non-response は verified opt-out path 以外で consent にしていない。
- threshold / UI / country list を release 日に再確認する。
- required consent が pending / unknown なら new price を charge しない。
書式 7 — Communication / reference transaction / fairness review
Section titled “書式 7 — Communication / reference transaction / fairness review”顧客が旧新 state、理由、選択肢、取り消し方法を比較できる communication を、conversion copy と分けて作る。
pricing_change_contract_id / contract_version:communication_contract_id / communication_revision:applicability contract / cohort assignment IDs:language / locale / accessibility revision:owner / customer-support reviewer / approver:
audience / channel / delivery method:subject / heading:current offer / package / amount / interval:proposed offer / package / amount / interval:exact effective date or customer-specific method to obtain it:what changes:what stays the same:what is reduced / removed:reason stated as verifiable fact:customer value explanation:
customer options: keep current / grandfather: voluntary upgrade / accept: downgrade / alternate package: cancel / non-renew: export / closeout: contact support:deadline / no-action consequence:refund / credit / proration explanation:tax / fee / currency disclosure:
reference transaction:reference price customer was entitled to expect:procedural fairness check:distributive impact / vulnerable user check:switching / learning / data-export cost:loss framing / urgency / scarcity used?:default / preselection / forced choice:dark-pattern negative review:
plain-language test:mobile / TV / web / email parity:screen-reader / localization test:support script / escalation path:complaint taxonomy / owner:artifact hash / approved_at / expiry:Communication and fairness gate
Section titled “Communication and fairness gate”- benefit だけでなく amount、interval、effective、removed scope、no-action consequence を同じ prominence で示した。
- consent-required path で preselected acceptance や silence を使っていない。
- cancel / decline / keep-current option を隠したり、余分な摩擦を加えていない。
- cost increase を customer blame、false scarcity、shaming に変換していない。
- support、accessibility、localization、device coverage を確認した。
- provider email がある場合も、自社 communication と legal / platform requirement を別 receipt にした。
書式 8 — Billing preview / schedule / proration / failure contract
Section titled “書式 8 — Billing preview / schedule / proration / failure contract”live update の前に、同じ input と time で preview、schedule、invoice、failure behavior を SANDBOX で固定する。
pricing_change_contract_id / contract_version:billing_change_plan_id / plan_revision:preview_id / preview_revision:environment / provider environment:provider / account / API version / billing mode:customer / subscription / item IDs: opaque test refscurrent Price snapshot / quantity / interval:proposed Price / quantity / interval:discount / trial / offer phase:tax location / tax behavior:currency / FX snapshot:previewed_at / proration_date:source anchor IDs:
change timing: IMMEDIATE | PERIOD_END | CUSTOMER_RENEWAL | PLATFORM_CALCULATED | UNKNOWNschedule ID / phase revision: N/A | opaqueschedule start / transition / end behavior:catalog effective time:customer-specific subscription effective time:proration behavior / billing mode:credit for unused service:immediate charge:next invoice adjustment:recurring amount after change:tax / fee / discount / rounding:preview total / currency:
payment behavior on immediate charge:payment failure behavior:authentication / mandate required:pending update / state:retry / expiry / void behavior:metered usage / unbilled usage handling:unpaid current invoice handling:
idempotency key / request reference: opaqueexpected webhook / RTDN / notification sequence:duplicate request negative test:stale Price / quantity negative test:wrong interval / anchor negative test:schedule-overwrite negative test:TEST-to-LIVE isolation test:preview vs actual sandbox reconciliation:unresolved difference / tolerance authority:
human-approved exact live tuple: N/A | opaque approval refapproval expires_at:Billing gate
Section titled “Billing gate”- preview は actual invoice、charge、consent、cash ではないと表示した。
- current item ID と quantity を省略して duplicate / reset を起こさない。
- proration、tax、discount、fee、rounding、billing anchor を確認した。
- payment failure で commercial state と entitlement が先行しない path を検討した。
- schedule
releaseとcancel、overlapping migration、latest-wins behavior を provider ごとに確認した。 - live credential、production ID、actual customer data を fixture / Codex prompt に入れていない。
書式 9 — Release / entitlement / invoice reconciliation
Section titled “書式 9 — Release / entitlement / invoice reconciliation”commercial state、entitlement、invoice を一つの success flag にせず、bounded release と exact reconciliation を行う。
pricing_change_contract_id / contract_version:release_candidate_id / release_revision:billing plan / package / entitlement / communication revisions:commercial cohort / assignment revision:environment / accounting environment / provider environment:owner / engineering / support / billing / independent reviewer:
release scope:exact eligible account cap:channel / region / renewal window:feature flag / batch boundary:human approval tuple / approved_at / expires_at:execution actor: HUMAN | APPROVED_AUTOMATIONexecution command or console receipt reference: opaqueidempotency / dedupe key:kill-switch / pause control:rollback / remediation target:
per-account reconciliation: account / subscription / item IDs: opaque assigned path: applicability state: notice / consent state: provider commercial state: subscription Price snapshot: package / entitlement expected: package / entitlement observed: invoice / transaction expected: invoice / transaction observed: payment expected / observed: refund / credit / dispute: support / complaint: reconciliation state: first mismatch / owner / due_at:
aggregate assigned:eligible / ineligible / UNKNOWN:scheduled / applied / canceled / failed:entitlement matched / mismatched / UNKNOWN:invoice matched / mismatched / NOT_DUE:unexpected charge count / amount:duplicate invoice / entitlement count:pause trigger matched?:new exposure stopped_at:Release gate
Section titled “Release gate”- exact cohort cap と人の approval tuple が一致する。
- commercial update 前に applicability、notice、consent、preview が closed である。
- provider state、entitlement、invoice、payment を別に観測した。
- mismatch / UNKNOWN を success denominator から消していない。
- wrong account、unexpected charge、missing access、duplicate action で自動 pause する。
- release receipt は approval や customer acceptance を置換しない。
書式 10 — Append-only pricing migration event ledger
Section titled “書式 10 — Append-only pricing migration event ledger”assignment から maturity までの状態遷移を immutable event として残す。current state は ledger から導出する。
pricing_change_contract_id / contract_version:event_ledger_id / ledger_revision:event_id / event_revision:supersedes_event_id: N/A | exact prior event IDenvironment / accounting_environment / provider_environment:account / subscription / item / assignment IDs: opaque
event_type: COHORT_ASSIGNED | APPLICABILITY_RESOLVED | NOTICE_PLANNED | NOTICE_SENT | NOTICE_DELIVERED | NOTICE_FAILED | CONSENT_REQUESTED | CONSENT_ACCEPTED | CONSENT_DECLINED | CONSENT_EXPIRED | PRICE_SCHEDULED | PRICE_CHANGE_CANCELED | PRICE_EFFECTIVE | COMMERCIAL_STATE_CHANGED | ENTITLEMENT_CHANGED | INVOICE_CREATED | INVOICE_FINALIZED | PAYMENT_ATTEMPTED | PAYMENT_PAID | PAYMENT_FAILED | PROVIDER_AVAILABLE | PAYOUT_PAID | BANK_CASH_OBSERVED | CREDIT_CREATED | REFUND_REQUESTED | REFUND_SETTLED | DISPUTE_OPENED | SUBSCRIPTION_CANCELED | SUBSCRIPTION_EXPIRED | VALUE_ACCEPTED | VALUE_REJECTED | MATURITY_REACHED | INCIDENT_OPENED | REMEDIATION_APPLIED | INCIDENT_CLOSED
event state: N/A | UNKNOWN | 0 | FAILED | OBSERVED | NOT_DUEoccurred_at / recorded_at:source system / source event ID:source evidence class / source hash:actor type / actor ref:old state hash / new state hash:amount / currency: N/A | exactpackage / Price / terms / notice revisions:causation / correlation link: N/A | exact predecessor IDidempotency / dedupe key:late / duplicate / correction flag:reason / redacted note:Ledger invariants
Section titled “Ledger invariants”- event type、actor、occurred_at、recorded_at、environment、source が必須である。
- accepted consent は required request、exact account、exact change、effective window に結ぶ。
- event 順序を一律に仮定せず、frozen billing-change path ごとの provider contract と照合する。たとえば Stripe
pending_if_incompleteは invoice 作成・支払成功の後に commercial change が適用される。選んだ path と矛盾する順序だけを reject / investigate し、invoice、effective、payment、entitlement、bank の各時計を保存する。 - late event は current snapshot を再計算するが、過去 event / decision を update しない。
- duplicate provider event と retry を一つの business outcome に dedupe する。
- TEST event は REAL chain の predecessor / cash / consent にならない。
- one account / renewal に competing active migration がある場合
UNKNOWNまたは incident にする。
書式 11 — Invoice / cash / refund / dispute bridge
Section titled “書式 11 — Invoice / cash / refund / dispute bridge”表示価格から bank cash までを橋渡しし、refund、credit、fee、tax、FX を mature contribution へ反映する。
pricing_change_contract_id / contract_version:cash_bridge_id / bridge_revision:account / subscription / assignment IDs: opaqueenvironment / accounting environment / provider environment:base currency / FX source / timestamp:owner / finance reviewer:
invoice / transaction ID:invoice created / finalized / due:gross billed amount / currency:discount / credit applied:tax collected for others:provider / store fee:net invoice receivable:
payment attempt ID / state:paid amount / paid_at:provider pending / settled / available:payout ID / paid_at:bank statement line / observed_at:allocated authoritative bank cash:gross provider-settled recurring consideration allocated:
refund / credit / adjustment ID:refund reason / amount / state:dispute / chargeback ID / amount / state:FX gain / loss:duplicate / partial / failed allocation:reconciliation difference:
recognized recurring value amount:variable delivery / infra / AI cost:support / founder-time cost:allocated migration / communication cost:incident / remediation cost:recurring contribution before one-time migration / remediation:matured realized recurring contribution after allocated one-time cost:
cash maturity state:refund / dispute maturity state:unresolved amount / owner / due_at:Cash gate
Section titled “Cash gate”- catalog amount、invoice、payment、provider balance、payout、bank cash を分けた。
- tax collected for others と fee を seller revenue / contribution から分けた。
- credit、refund、dispute、partial payment、FX を反映した。
- provider
paidと bank cash を二重計上していない。 - gross provider-settled recurring consideration は fee / tax 控除前の顧客対価として provider statement から復元し、bank cash と二重加算していない。net payout しか解けない場合は feeを再控除せず
UNKNOWNを残した。 - TEST payment / simulated cash は REAL contribution に入らない。
- bank 未照合、refund / dispute 未成熟をゼロにしていない。
書式 12 — Renewal / accepted value / contribution / maturity snapshot
Section titled “書式 12 — Renewal / accepted value / contribution / maturity snapshot”全 assigned account を同じ cutoff で閉じ、価格上昇ではなく mature retained value と contribution を読む。
pricing_change_contract_id / contract_version:maturity_snapshot_id / snapshot_revision:commercial cohort / assignment / comparison revisions:environment / accounting environment:outcome_cutoff_at / snapshot_as_of / maturity_at:owner / independent reviewer:
assigned existing accounts:eligible / ineligible / applicability UNKNOWN:notice-required / delivered / failed / UNKNOWN:consent-required / accepted / declined / pending / expired:migration scheduled / effective / failed / canceled:entitlement matched / mismatched / UNKNOWN:
renewal due / NOT_DUE:renewed paid / canceled / expired / payment-failed / UNKNOWN:accepted recurring value / rejected / unobserved:support contact / complaint / unexpected-charge accounts:refund / credit / dispute accounts and amount:cash matured / refund-dispute matured:
notice delivered rate:consent completion rate:effective migration rate:maturity coverage:mature retained rate:accepted recurring value rate:gross recurring amount:gross provider-settled recurring consideration:migrated matured realized recurring contribution, including allocated one-time cost:comparison matured realized recurring contribution:realized contribution delta:primary KPI — matured_realized_recurring_contribution_delta:
new-customer evidence excluded?:package / entitlement parity or intentional difference:channel / region / interval / discount mix:late / duplicate / stale / cross-version events:TEST-in-REAL count:first failed / unknown / not-due stage:
claim type / comparison design:claim cap / uncertainty:decision: STOP_AND_REMEDIATE | PAUSE | UNKNOWN | KEEP_CURRENT | NEW_CUSTOMERS_ONLY | VOLUNTARY_UPGRADE | BOUNDED_MIGRATE | EXPAND_MIGRATIONdecision scope / expiry / next cheapest evidence:Metric contracts
Section titled “Metric contracts”notice delivered rate = authoritative delivered receipts / notice-required eligible existing accounts
consent completion rate = authoritative accepted consent receipts / consent-required eligible existing accounts
effective migration rate = exact new commercial state + matched entitlement accounts / migration-assigned eligible existing accounts
maturity coverage = accounts whose predeclared renewal + cash + refund/dispute + value maturity is resolved / migration-assigned eligible existing accounts
mature retained rate = accounts past the predeclared cutoff with paid renewal + retained entitlement + resolved value state / migration-assigned eligible existing accounts
matured realized recurring contribution = gross provider-settled recurring consideration allocated to the cohort - refund / credit / dispute - provider / store fee and tax collected for others - variable delivery / infra / AI / data cost - support / founder-time cost - allocated one-time migration / communication / incident / remediation cost
matured_realized_recurring_contribution_delta = migrated cohort matured realized recurring contribution - frozen no-change comparison matured realized recurring contributiongross provider-settled recurring consideration は provider がsettleした顧客対価のfee・預りtax控除前grossで、authoritative provider statementからbank movementへ照合する。bank cashを追加収益として足さない。provider / bank資料がnetしか示さずgrossと控除を一意に復元できない場合、feeを推測して再控除せず UNKNOWN にする。
Maturity gate
Section titled “Maturity gate”- denominator は assigned existing cohort から始まり、unsupported / unknown / failed を消していない。
- renewal due 前、cash 前、refund / dispute window 前を
NOT_DUEにした。 -
NOT_DUEを mature-retained denominator から落とさず maturity coverage を併記し、coverage未完了のrateを成功判定へ昇格していない。 - new-customer conversion と existing renewal outcome を別にした。
- amount uplift、ARPA、MRR だけで contribution 成功としない。
- package / entitlement change を price elasticity と誤認していない。
- causal claim は predeclared comparison と十分な識別がある場合だけに限定した。
書式 13 — Incident / pause / remediation / customer repair
Section titled “書式 13 — Incident / pause / remediation / customer repair”wrong cohort、unexpected charge、notice / consent failure、entitlement mismatch を revenue incident として即時封じ込める。
pricing_change_contract_id / contract_version:incident_id / incident_revision:remediation_id / remediation_revision:opened_at / detected_at / owner:environment / accounting_environment / provider_environment:affected channel / region / cohort / renewal window:
trigger: WRONG_COHORT | MISSING_NOTICE | MISSING_CONSENT | WRONG_AMOUNT_OR_CURRENCY | WRONG_TAX_OR_FEE | DUPLICATE_CHARGE | PRORATION_MISMATCH | COMMERCIAL_ENTITLEMENT_MISMATCH | ACCESS_LOSS | OVERLAPPING_MIGRATION | PROVIDER_STATE_DRIFT | UNEXPECTED_CANCEL_OR_EXPIRY | REFUND_FAILURE | DATA_OR_SECURITY_EVENT | OTHERseverity / customer harm:first bad event / source:predeclared pause trigger matched?:
new schedule / migration stopped_at:new invoice / charge stopped_at:entitlement change stopped_at:automation / feature flag disabled:provider support / specialist escalation:affected accounts frozen:
affected-account reconciliation:wrong commercial state:wrong entitlement state:wrong invoice / payment / cash:notice / consent gap:refund / credit / fee repair:access restoration / export / extension:customer communication draft / approval / receipt:support / complaint owner:
rollback or forward-fix target:provider limitation / irreversible event:remediation executed_at / by:idempotency / duplicate repair:reconciliation receipt:customer repair completed:
root cause:source / test / review gap:decision and process superseded:negative regression tests:independent review:resume requirements:resume decision / exact scope / approved_at:post-incident maturity / recheck due_at:Incident drill receipt
Section titled “Incident drill receipt”pricing_change_contract_id / contract_version:drill_id / synthetic scenario:environment: SYNTHETIC | SANDBOXstarted_at / contained_at:new exposure stopped:affected accounts enumerated:commercial / entitlement / invoice reconciliation:refund / credit path tested without live effect:customer draft held for human approval:rollback limitation observed:resume blocked until independent approval:drill state: N/A | UNKNOWN | 0 | FAILED | OBSERVED | NOT_DUEgap / owner / next drill due_at:- kill-switch は必要な evidence、invoice、consent、cash ledger を自動削除しない。
- irreversible provider event を「元に戻した」と記録せず、新 price change、refund、credit、access extension 等の forward repair とする。
- customer communication、refund、cancel、resume は exact human approval と result receipt を持つ。
書式 14 — Weekly decision / Codex handoff / independent review
Section titled “書式 14 — Weekly decision / Codex handoff / independent review”同じ cutoff で source、cohort、notice、consent、billing、cash、maturity、incident を閉じ、次の一 action を決める。
pricing_change_contract_id / contract_version:weekly_review_id / review_revision:review period:outcome_cutoff_at / snapshot_as_of / maturity_at:owner / independent reviewer / reviewed_at:
current / proposed offer-package-price revisions:channel / region / cohort / assignment revisions:source snapshots checked / expired / conflicting:applicability resolved / UNKNOWN:notice required / delivered / failed:consent required / accepted / declined / pending:scheduled / effective / canceled / failed migrations:commercial-entitlement-invoice reconciliation:paid / provider available / bank cash:refund / credit / dispute / complaint:renewal / accepted value / maturity:full-loaded contribution / comparison / uncertainty:
open incident / wrong-customer exposure:late / duplicate / stale / cross-version event:TEST-in-REAL contamination:first failed / unknown / not-due stage:loss limit consumed / remaining:
decision: STOP_AND_REMEDIATE | PAUSE | UNKNOWN | KEEP_CURRENT | NEW_CUSTOMERS_ONLY | VOLUNTARY_UPGRADE | BOUNDED_MIGRATE | EXPAND_MIGRATIONdecision scope / claim cap:execution scope: NO_EXECUTION_AUTHORITY | NEXT_CONTRACT_PROPOSAL_ONLYone action / owner / due_at:requested next-cohort cap:proposed exact next-contract cohort cap:cash / refund / support / customer exposure cap:human approval required for new contract:pause / remediation / recheck trigger:next cheapest evidence:Codex handoff ID / revision:pricing_change_contract_id / contract_version:task / expected artifact:allowed files / sources / systems:forbidden files / data / systems:environment: SYNTHETIC | SANDBOX | LIMITED_LIVE | LIVEaccounting_environment: TEST | REALsource cutoff / snapshot / maturity:
exact offer / package / entitlement / Price revisions:exact channel / region / cohort / assignment revisions:exact applicability / notice / consent / billing plan revisions:
allowed work: official-source diff | redacted customer-state matrix | communication draft | preview parser | schema / query | synthetic fixture | negative test | reconciliation | DQ report | bounded decision memoprohibited autonomous work: create / update / archive production Price | update subscription or legacy cohort | schedule / release / cancel live billing | send notice or infer consent | finalize invoice / charge / refund / credit | change entitlement / access / terms | use production credential or customer payload
required positive tests:required negative tests:wrong-cohort / duplicate-account tests:notice / consent missing / expiry tests:Price / quantity / interval / proration tests:commercial-entitlement-invoice mismatch tests:payment-failure / refund / overlap tests:TEST-to-REAL isolation tests:PII / credential / secret scan:bounded output / redaction rule:
draft artifact hash:test receipt / result:unresolved assumptions / unknowns:human reviewer / approval scope:approved exact live-effect tuple: N/A | opaqueapproval expires_at:release / pause / remediation reference:Independent review ID / revision:reviewer independence / conflict:official source freshness / exact claim checked:TEST / REAL boundary checked:decision unit / baseline / claim cap checked:value / offer evidence checked:package / entitlement diff checked:Price / fee / tax / proceeds checked:cohort / contract / channel assignment checked:applicability / notice / consent checked:communication / fairness / accessibility checked:preview / schedule / proration / failure checked:commercial / entitlement / invoice reconciliation checked:event ordering / duplicate / late event checked:cash / refund / dispute checked:renewal / maturity / contribution checked:incident / remediation / resume checked:Codex scope / live authority / redaction checked:
review decision: PASS | PAUSE | UNKNOWN | STOPfindings / severity / owner / due_at:accepted residual risk / human authority:reviewed_at / expires_at / recheck trigger:Weekly and release gate
Section titled “Weekly and release gate”- precedence は
STOP_AND_REMEDIATE > PAUSE > UNKNOWN > KEEP_CURRENT / NEW_CUSTOMERS_ONLY / VOLUNTARY_UPGRADE > BOUNDED_MIGRATE > EXPAND_MIGRATIONで、revenue upside が veto を上書きしない。 - source、cohort、notice、consent、billing、cash を同じ cutoff で読んだ。
-
BOUNDED_MIGRATE / EXPAND_MIGRATIONは exact channel / region / contract / cohort / renewal / exposure に限定した。 -
next_cohort_nはNEXT_CONTRACT_PROPOSAL_ONLYで、current frozen cohort への追加 assignment / effect に使えない。 - Codex output を production mutation、communication、consent、charge、refund、entitlement へ自動昇格していない。
- independent reviewer が wrong cohort、silent opt-out、duplicate charge、package mismatch、maturity を確認した。
- approval は exact tuple と expiry を持ち、一般的な「価格改定OK」ではない。
Fully synthetic TEST example — Moonlit Memo
Section titled “Fully synthetic TEST example — Moonlit Memo”以下は書式間の join と fail-closed behavior を示すだけの完全架空例である。Moonlit Memo、account、ID、金額、日付、件数、結果はすべて存在しない。provider API を呼んでおらず、通知日数・価格・率・decision の推奨ではない。
Synthetic boundary
Section titled “Synthetic boundary”fixture_id: FIXTURE_PC_001fictional product: Moonlit Memopricing_change_contract_id / contract_version: pc_TEST_moonlit_001 / 1environment: SANDBOXaccounting_environment: TESTprovider_environment: TESTbase_currency: JPYall accounts: acct_TEST_001 ... acct_TEST_008all Price IDs: price_TEST_current / price_TEST_candidateall cash: SIMULATED_ONLYlive authority: NONEfixture generated_at: 2031-02-01T00:00:00Z (fictional clock)1. Synthetic decision
Section titled “1. Synthetic decision”decision question: eight synthetic existing accountsをcandidate packageへ移せるかcurrent offer: Fog / JPY 700 monthly / 100 synthetic notescandidate offer: Lantern / JPY 950 monthly / 300 synthetic notes + fictional exportpaths: NEW_CUSTOMERS_ONLY | VOLUNTARY_UPGRADE | APPLY_AT_RENEWALfrozen no-change comparison: all eight synthetic accounts remain on Fogmaximum accounts: 8 syntheticmaximum real cash / customer exposure: 0hard veto: any REAL ID, missing applicability, missing consent, preview mismatchdecision before evidence: UNKNOWN2. Synthetic value / offer
Section titled “2. Synthetic value / offer”customer job: fictional weekly research memoを保存・exportするcurrent accepted outcome: synthetic memo saved and retrievedcandidate added outcome: synthetic export completedevidence: 8 scripted TEST sessions; no real customer observationclaim cap: sandbox workflow description onlyprohibited claim: willingness to pay, retention, elasticity, optimal price3. Synthetic package / entitlement
Section titled “3. Synthetic package / entitlement”current package: pkg_TEST_fog_v1candidate package: pkg_TEST_lantern_v1retained: save, retrieveexpanded: note limit 100 -> 300added: fictional exportremoved: noneentitlement flags: ent_TEST_fog_v1 -> ent_TEST_lantern_v1rollback target: ent_TEST_fog_v14. Synthetic Price / fee / tax
Section titled “4. Synthetic Price / fee / tax”current catalog Price: price_TEST_current / JPY 700 / monthcandidate catalog Price: price_TEST_candidate / JPY 950 / monthquantity: 1tax behavior: UNKNOWNprovider fee: UNKNOWNseller proceeds: UNKNOWNcontribution: UNKNOWNmeaning: arbitrary fixture amounts; not a benchmark or quote5. Synthetic cohort assignment
Section titled “5. Synthetic cohort assignment”cohort: cohort_TEST_fog_renewal_Aassigned: acct_TEST_001 ... acct_TEST_008 before outcomeschannel: DIRECT_WEB_STRIPE-shaped simulator, not Stripecontract revision: terms_TEST_1contract change authority: UNKNOWNassigned path: VOLUNTARY_UPGRADE rehearsal onlyREAL eligibility: NO6. Synthetic applicability / notice / consent
Section titled “6. Synthetic applicability / notice / consent”provider source snapshot: STRIPE_SUBSCRIPTION_CHANGE_2026_08_03provider mechanics applicability: simulated onlyagreement authority: UNKNOWNnotice required: UNKNOWNconsent state: UNKNOWNnon-response treatment: never consentresult: PAUSE before any live migration7. Synthetic communication / fairness
Section titled “7. Synthetic communication / fairness”draft shows: old JPY 700 monthly, new JPY 950 monthly, package diff, fictional effective methodoptions shown: keep Fog, volunteer for Lantern, cancel rehearsaldark-pattern test: no preselection, countdown, shame, hidden canceldelivery: local snapshot only; not sentapproval: NONE8. Synthetic billing preview
Section titled “8. Synthetic billing preview”preview ID: preview_TEST_001input: price_TEST_current -> price_TEST_candidate, quantity 1proration date: fictional 2031-02-15T00:00:00Zsimulated immediate adjustment: JPY 125simulated recurring next amount: JPY 950tax / fee: UNKNOWNactual provider invoice: nonepreview state: TEST OBSERVED; live validity: NONE9. Synthetic release reconciliation
Section titled “9. Synthetic release reconciliation”release scope: SANDBOX state-machine rehearsal, 8 synthetic accountscommercial state matched: 8entitlement matched: 8invoice matched: N/A; no provider invoicepayment / cash: N/A TESTlive release cap: 010. Synthetic event ledger
Section titled “10. Synthetic event ledger”evt_TEST_001 | COHORT_ASSIGNED | acct_TEST_001 | TESTevt_TEST_002 | APPLICABILITY_RESOLVED | acct_TEST_001 | UNKNOWNevt_TEST_003 | NOTICE_PLANNED | acct_TEST_001 | TEST onlyevt_TEST_004 | INCIDENT_OPENED | reason=live applicability unknownevt_TEST_005 | REMEDIATION_APPLIED | action=live path remains disabled同じ pattern を残り7 synthetic account にだけ生成する。CONSENT_ACCEPTED / INVOICE_FINALIZED / PAYMENT_PAID / BANK_CASH_OBSERVED は存在しない。
11. Synthetic cash / refund
Section titled “11. Synthetic cash / refund”gross billed: N/Apayment: N/Abank cash: N/Arefund / dispute: N/Asimulated amount fields: TEST scenario onlyrealized contribution: UNKNOWN, not zero12. Synthetic renewal / maturity
Section titled “12. Synthetic renewal / maturity”assigned: 8 syntheticapplicability UNKNOWN: 8live eligible: 0renewal due: NOT_DUEaccepted recurring value: TEST script onlycash maturity: NOT_DUEdecision: UNKNOWNreason: contract / notice / consent / tax / fee / cash authority absent13. Synthetic incident drill
Section titled “13. Synthetic incident drill”scenario: one synthetic account is mistakenly marked LIVEtrigger: TEST-to-REAL contaminationcontainment: reject row, stop batch, enumerate affected IDscustomer communication / refund: not executedresume: prohibited until mapping fixed and independent negative test passesdrill result: OBSERVED in TEST only14. Synthetic weekly / Codex review
Section titled “14. Synthetic weekly / Codex review”weekly decision: UNKNOWNauthorized next live cohort: 0Codex allowed: source diff, schema, synthetic tests, redacted draftCodex prohibited: production Price / subscription / notice / consent / charge / refundindependent review: PASS for TEST fixture; NO LIVE APPROVALnext cheapest evidence: human review of exact real contract and channel, outside fixtureこの例の JPY 700 / 950、8 account、scripted outcome、decision は任意の fixture であり、価格研究、顧客調査、provider response、法律上の notice / consent を示さない。
Pack 完了チェック
Section titled “Pack 完了チェック”-
## 書式 1から## 書式 14までが一度ずつ存在する。 - 14 書式すべてが stable key
pricing_change_contract_id / contract_versionを持つ。 - blank form と fully synthetic example を視覚的・意味的に分離した。
- example は TEST / SANDBOX だけで、REAL revenue、cash、consent、customer outcome に混ぜていない。
- live billing を実行しない注意と、人の exact approval boundary がある。
- Price、package、entitlement、terms、cohort、notice、consent、schedule、invoice、payment、cash を別 object にした。
- current catalog Price と existing subscription Price snapshot を分けた。
- change component は amount 以外の interval、quantity、usage、discount、tax、package、terms を含む。
- existing cohort は outcome 前に channel、region、contract、renewal、payment state で凍結した。
- new-customer evidence を existing-customer retention / elasticity に外挿していない。
- Stripe Price replacement、subscription item、quantity、schedule、preview、pending update の source anchor がある。
- Apple preserve / apply、threshold、notice / consent、renewal、ACA item state の source anchor がある。
- Google legacy cohort、current base-plan migration、opt-in / constrained opt-out、RTDN state の source anchor がある。
- Paddle subscription Price snapshot、complete item list、preview、email / consent boundary、history の source anchor がある。
- current official source を particular-customer applicability や legal advice に昇格していない。
- notice
sent / delivered / viewedと consentrequired / pending / accepted / declined / expiredを分けた。 - non-response を verified opt-out path 以外で consent にしていない。
- provider scheduled date と customer-specific charged renewal を分けた。
- preview、schedule、commercial state、entitlement、invoice、payment、cash の時計を分けた。
- schedule release / cancel、overlap、irreversibility を generic rollback にしていない。
- wrong cohort、unexpected charge、duplicate invoice、access loss、missing notice / consent を incident trigger にした。
- invoice、provider balance、payout、bank cash、refund、credit、dispute を二重計上していない。
- full-loaded contribution に fee、tax collected for others、variable cost、support、migration、incident cost を含めた。
-
N/A / UNKNOWN / 0 / FAILED / OBSERVED / NOT_DUEを数値ゼロへ潰していない。 - primary KPI
matured_realized_recurring_contribution_deltaを、maturity 後の settled cash と full-loaded cost から算定した。 - decision precedence
STOP_AND_REMEDIATE > PAUSE > UNKNOWN > KEEP_CURRENT / NEW_CUSTOMERS_ONLY / VOLUNTARY_UPGRADE > BOUNDED_MIGRATE > EXPAND_MIGRATIONを revenue upside より優先した。 -
BOUNDED_MIGRATE / EXPAND_MIGRATIONは exact offer、channel、region、contract、cohort、renewal、exposure に限定される。 -
EXPAND_MIGRATION / next_cohort_nはNEXT_CONTRACT_PROPOSAL_ONLYで、新しい contract version と human approval なしに実行できない。 - Codex handoff は credential、PII、live customer payload、production mutation を禁止する。
- independent review が source freshness、cohort、consent、billing、cash、maturity、incident、TEST / REAL を確認する。
この pack を埋めても、customer value、willingness to pay、contract change authority、notice / consent の十分性、provider acceptance、retention、causal price elasticity、seller proceeds、bank cash、positive contribution は自動的に証明されない。最終 action は current source、actual agreement、exact customer / channel / region state、provider evidence、必要な専門家 review、人の責任に基づいて決める。