معماری چندکسب‌وکاری، تجاری و تجارت الکترونیک · فصل ۱ — 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 طراحی کند.

Chargeback و Internal Cost Allocation — fa-IR

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.

CaseClassMethodPolicyAllocatedUnallocatedState
BaselineDirect + SharedUsage proportionalv19800RECONCILED
Missing tagDirect ownership missingSame v1v1730250PARTIAL
Unapproved equal splitSharedEqual splitv19800DISPUTED
Policy changed, not recomputedDirect + SharedOld amountsv29800PARTIAL
TransferDirect + SharedTraffic + Support-hoursv211400RECONCILED

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.

lesson ✗AI ✗notes ✗

ARC-005-S2 application

Build Internal Cost Allocation & Chargeback Policy Ledger v1 for the baseline synthetic fixture and reconcile source cost.

lesson ✗AI ✗notes ✗

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?

lesson ✗AI ✗notes ✗

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.

lesson ✗AI ✗notes ✗
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

FinOps Framework — Allocation capability
·
FinOps Framework — Invoicing & Chargeback capability
·

Case studies

Lesson visuals

ARC-005-ALLOCATION-FLOW

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 ایجاد شده باشد موفقیت نیست.