معماری چندکسبوکاری، تجاری و تجارت الکترونیک · فصل ۱ — Venture Separation، Shared Interface، Resource و Tenant · 224
Chargeback and Internal Cost Allocation
Build a cost-allocation ledger that distinguishes direct from shared cost, records allocation targets, metadata quality, driver and apportionment method, and separates showback from chargeback so every internal amount can be traced and challenged. میتواند برای «Chargeback و Internal Cost Allocation» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
Lesson summary
Build a cost-allocation ledger that distinguishes direct from shared cost, records allocation targets, metadata quality, driver and apportionment method, and separates showback from chargeback so every internal amount can be traced and challenged.
میتواند برای «Chargeback و Internal Cost Allocation» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
This lesson produces
میتواند برای «Chargeback و Internal Cost Allocation» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
Who it is for
Foundation
Use a field map, one worked scenario and explicit state vocabulary before independent construction.
Repair
Identify the failed evidence dimension, use the smallest mutated fixture and rerun only the affected gate.
Experienced
Compress definitions; require trade-off defense, counterexample analysis and changed-context transfer.
Prerequisites
1. The real failure: the bill is right, the attribution is wrong
Three ventures share observability, platform capacity and support. The source bill totals 980 units, but the hard question is who caused which cost and whether the result is only shown back or formally charged back. A flat one-third split can make the arithmetic complete while making the evidence weak. This lesson builds Internal Cost Allocation & Chargeback Policy Ledger v1 so every internal amount can be traced to a cost identity, driver, policy version and reconciliation state.
2. Lesson boundary
ARC-005 owns internal allocation, showback/chargeback and reconciliation. Quota/Reservation belongs to ARC-004 and Tenant Isolation belongs to ARC-006. The lesson does not mutate production billing, journal entries, cost centers or customer invoices. FinOps sources bound external facts; MAKNOW and organizational policy remain separate authority.
3. Mental model: cost identity before allocation
Give each cost item an identity through cost_item_id, billing_period and cost_category, then classify it as DIRECT or SHARED. Do not select a split method before classification. The core reconciliation equation is Source Cost = Allocated Amount + Unallocated Amount. If it does not hold, the ledger is not auditable.
4. Direct and shared cost are different evidence problems
A direct cost needs a traceable target such as a resource tag, account/project mapping or ownership record. A shared cost needs a pool and a defensible driver. An untagged cost is not automatically shared; it can simply be unresolved ownership and should remain unallocated until repaired.
5. Showback is not chargeback
Showback makes attributed cost visible to responsible teams. Chargeback is more formal and feeds organizational budget/accounting processes. Current FinOps guidance treats the choice as organizational policy rather than a maturity ladder. Therefore showback_chargeback_mode is a decision field, not decoration.
6. Ledger fields and typed states
Preserve Item, Period, Direct/Shared, Target, Metadata, Driver, Quantity, Method, Basis, Pool Total, Allocated, Unallocated, Mode, Policy Version, Exception, Reconciliation State and Provenance as separate fields. RECONCILED is the success state. Missing, conflicting or stale evidence remains visible as HOLD / UNKNOWN / PARTIAL / DISPUTED / STALE / BLOCKED.
| Case | Class | Method | Policy | Allocated | Unallocated | State |
|---|---|---|---|---|---|---|
| Baseline | Direct + Shared | Usage proportional | v1 | 980 | 0 | RECONCILED |
| Missing tag | Direct ownership missing | Same v1 | v1 | 730 | 250 | PARTIAL |
| Unapproved equal split | Shared | Equal split | v1 | 980 | 0 | DISPUTED |
| Policy changed, not recomputed | Direct + Shared | Old amounts | v2 | 980 | 0 | PARTIAL |
| Transfer | Direct + Shared | Traffic + Support-hours | v2 | 1140 | 0 | RECONCILED |
7. Choose a driver from the cost purpose, not convenience
A shared-cost driver should have a defensible relationship to cost causation or an explicit approved policy. Traffic may be a useful driver for observability but a poor driver for onboarding support. Fixed, proportional and proxy approaches can all be valid; the chosen basis must be recorded with its policy version.
8. Equal split is not a neutral default
Equal split is one policy choice. If ventures behave very differently, it can overcharge light users and subsidize heavy users. If policy requires a usage-proportional driver while the ledger uses equal split, the result is DISPUTED even when allocated totals still match the source bill.
9. Keep unallocated cost visible
Unallocated cost is not automatically a ledger failure; it can be the most honest state. A large direct resource without trustworthy ownership metadata must not be pushed onto a convenient target just to make allocation reach 100%. Forcing residual cost to zero without evidence is DISPUTED.
10. Policy version and reconciliation
A change in target population, driver, apportionment method or policy version can change the amounts. Old allocations do not remain valid automatically. If the policy changed but the amounts were not recomputed, the state is PARTIAL until calculation and reconciliation are rerun.
11. Worked baseline: 980 units
Direct cost is A=250, B=150, C=100. Shared observability is 300 and follows traffic 50/30/20, producing 150/90/60. Shared support is 180 and follows support-hours 20/50/30, producing 36/90/54. Final allocations are A=436, B=330, C=214. Total=980, unallocated=0, policy v1, state=RECONCILED. The success comes from traceable drivers and provenance, not arithmetic alone.
12. Four shortcuts to reject
Reject: guessing ownership after removing a large direct-cost tag; using equal split against the approved driver policy; forcing unallocated cost to zero; and changing policy version without recomputation. These produce typed non-success states such as PARTIAL or DISPUTED. Stale decisive evidence becomes STALE; an explicit finance/owner prohibition becomes BLOCKED.
13. Offline lab
The lab contains eight synthetic fixtures and requires no network or credentials. Run python run_checks.py. For every case inspect state, allocated_total, unallocated_total, per-target allocation, conservation and whether chargeback is allowed. A changed result without a changed driver explanation is incomplete.
14. Assessment bar
You must explain the showback/chargeback boundary, build the baseline ledger, diagnose the missing-tag mutation and recompute the transfer. A sufficient answer reconciles source cost, names the driver, preserves residual cost and never chooses a state stronger than the evidence.
15. Transfer: a new venture with low traffic and heavy support
Venture D joins mid-month. Direct cost is A=250, B=150, C=100, D=40. Shared platform cost=200 follows traffic 50/30/15/5. Shared support=400 follows support-hours 15/20/25/40. The recomputed totals are A=410, B=290, C=230, D=210. Equal splitting 600 shared cost would instead yield A=400, B=300, C=250, D=190. The changed driver policy materially changes the result, so the baseline must not be copied. FinOps references were rechecked on 2026-09-15; material source change requires requalification in a new lesson version.
Assessment
There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.
ARC-005-S1 retrieval
Explain the owned boundary of internal cost allocation and distinguish showback from chargeback. Name one adjacent non-goal.
ARC-005-S2 application
Build Internal Cost Allocation & Chargeback Policy Ledger v1 for the baseline synthetic fixture and reconcile source cost.
ARC-005-S3 diagnosis
Remove the allocation target metadata from the 250-unit direct item. Which state changes, what remains unallocated, and what is the minimal repair?
ARC-005-S4 transfer
A new venture joins with little traffic but heavy onboarding support. Recompute the two shared pools under the changed driver policy and compare with equal split.
Assessment rubric
A passing submission must keep the ARC-005 boundary explicit, reconcile source cost to allocated + unallocated, bind each shared pool to an explicit driver/policy, preserve typed non-success states, and recompute the transfer instead of copying the baseline. Any forced allocation that hides unresolved cost fails the bounded-decision dimension.
References & freshness
Case studies
Lesson visuals
Billing and metadata are classified as direct or shared, mapped to a target or approved driver, allocated with residue preserved, then reconciled before showback or authorized chargeback.
Lab files
دستور python run_checks.py را Offline اجرا کنید. در هر یک از هشت Fixture توضیح دهید Target، Driver، Unallocated Balance، Policy Version و Authority چگونه State را میسازند. ۱۰۰٪ Allocation اگر با حدس یا Force ایجاد شده باشد موفقیت نیست.