StacksShared across all subject areas

Circa 2015

What this product would actually have been built with a decade ago — the historical baseline.

Context

Java or Python on VMs or early containers, Oracle or SQL Server, Angular 1.x, Jenkins, Nagios. Included because the comparison shows which decisions genuinely changed and which did not: relational modelling, batch ETL and audit requirements barely moved, while deployment, frontend and anything involving machine learning transformed completely.

Stack fit96
  • Exact decimal arithmetic end to end — database column, ORM mapping, API serialisation and client. Floating point anywhere in the chain is disqualifying.
  • Certified periods must be immutable at the storage layer, not by application convention. No in-place update, no soft delete, and reopening must itself be an audited event.
  • Append-only, tamper-evident audit log with retention measured in years, held separately from application logging.
  • Authorisation must evaluate rules against the record's own history, not only the user's role. Plain RBAC is structurally insufficient.
  • Exchange rates must be effective-dated and keyed by convention. There is no single current rate.
  • Accounting date and system timestamp must be separate fields. The period an entry belongs to cannot be derived from when it was recorded.
  • Tolerance models must be trained per tenant. One tenant's variance distribution cannot inform another's.
  • Risk scoring models must be per tenant, with model artefacts and training data isolated to the same boundary as the tenant's transactional data.
  • Document-reading model calls must route to an endpoint in the tenant's permitted jurisdiction under a contractual no-retention guarantee.
  • Machine-generated narrative must carry provenance metadata and require human approval before it becomes part of the record.
  • Approval workflows must be durable and resumable across days, surviving restarts, deployments and approver absence without losing state.
  • State transitions that constitute controls must be enforced below the application layer.
  • and 84 more