Cost Allocation & Showback Platform  ·  View 06 of 22  ·  3 · Structure

Layered Architecture

Eight layers. Ownership sits below allocation on purpose — allocation reads a snapshot of it, never the live table.

Editable source SVG draw.io All views
Experience Team dashboard 13 months Statement viewer Drill-through explorer Dispute desk Query & export API Statement (immutable) Statement publisher freeze at close Version register Restatement controller supersede only Dispute ledger GL posting builder Analytics Unit-economics engine Budget & forecast Anomaly detection Policy what-if simulator Allocation (pure function) Run orchestrator Direct attribution Shared-cost apportioner Commitment amortiser Remainder handler Policy registry versioned Ownership Effective-dated org tree Tag & mapping resolver Exception registry Coverage scorer gap in currency Normalisation FOCUS conformer Service & SKU taxonomy FX fixing fixed at close Restatement detector Invoice reconciler Schema quarantine Ingestion Provider export readers Licence & SaaS feeds Container usage collector Business driver intake Raw landing zone as given, forever Consumed (not owned) Provider billing APIs Service catalogue Org & cost-centre system Identity provider Cluster metrics ERP general ledger version pinned allocated facts Layered Architecture — Eight Layers, Three of Them Immutable Application we own Interface / broker Data store Security / platform Risk / gap External / third party synchronous Ownership sits below allocation on purpose: allocation reads a snapshot of it, never the live table. A detected restatement re-enters at the run orchestrator, not at the statement. v 1.0 · owner Platform Architecture · date 2026-09

Why these layers

  • Normalisation is separate from ingestion so the raw form survives every schema change
  • Ownership is its own layer because it is human-authored and effective-dated, unlike everything above and below it
  • Allocation is a single layer with one entry point, which is what makes it re-runnable
  • Statement is above analytics because analytics may be approximate and the statement may not

What each layer may assume

  • Allocation assumes its three inputs are pinned and immutable for the duration of a run
  • Experience assumes every figure it renders carries the versions that produced it
  • Consumed systems are read-only and may be stale; a stale read blocks rather than degrades silently

Deliberately omitted

  • Cross-layer calls that exist only for performance — the roll-up marts in act 4 carry those