Cascadia Portfolio · Build by Build
Nine Cascadia modules, built one after another over four months, and the tests each one could carry when it shipped. Every filled cell links to the file on GitHub that it names. An empty cell says the build did not carry that surface, and nothing is owed on it.
Nine portfolio modules (independent projects, not client work) by fourteen test surfaces, read from disk on 2026-09-16. Rows in first-commit order, grouped by era. A square marks a surface the build carries and links to the file; a diamond marks the first build to carry it, so there are fourteen diamonds in the table, one per surface. Count them to check the title.
The table is wider than this screen and scrolls sideways. All fourteen columns are there.
A table of 9 builds, one per row, oldest at the top, by 14 test surfaces, one per column, in four bands: Data, Numbers, Presentation, Operation. A square marks a surface the build carries; a diamond marks the first build to carry it; an empty cell means the build does not carry it. Surfaces carried per build: 2 at build 1, 2 at build 2, 3 at build 3, 6 at build 4, 6 at build 5, 10 at build 6, 9 at build 7, 8 at build 8, 10 at build 9. First appearances: 2 at build 1, 1 at build 3, 5 at build 4, 3 at build 6, 2 at build 7, 1 at build 9. Surfaces seen so far, build by build: 2 by build 1, 2 by build 2, 3 by build 3, 8 by build 4, 8 by build 5, 11 by build 6, 13 by build 7, 13 by build 8, 14 by build 9. Rows between the builds mark the design standard's versions by date: 7 dated versions from v2.2 on 2026-08-05 to v2.8 on 2026-08-29; v1.0, v2.0, v2.1 are undated. The marks thicken down the table, and the diamonds step to the right as the rows descend: the first two columns fill from the top, the middle columns from the fourth row, and the last two columns from the seventh.
| Era | Build | Data | Numbers | Presentation | Operation | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1One-command rebuild | 2Frozen source | 3Source register | 4Row-count validation | 5Validation report | 6Tests as code | 7Independent re-derivation | 8Golden fixture | 9Negative controls | 10Chart review | 11Reading panel | 12Metric register | 13Scheduled run with health | 14Reconciliation published | ||
Design standard VIZ-PRINCIPLES v1.0, v2.0 and v2.1: undated, before the standard had a repository. | |||||||||||||||
Enterprise-shaped | |||||||||||||||
| Enterprise-shaped | Cascadia Medical Devices | ||||||||||||||
| Cascadia Pharmacy | |||||||||||||||
| Cascadia Staffing | |||||||||||||||
Frozen and validated | |||||||||||||||
| Frozen and validated | Cascadia Finance | ||||||||||||||
Build four, the first Python build: five surfaces appear at once. | |||||||||||||||
Reviewed and registered | |||||||||||||||
| Reviewed and registered | Cascadia Deal Desk | ||||||||||||||
Design standard VIZ-PRINCIPLES v2.2 2026-08-05 | |||||||||||||||
| Cascadia Control Tower | |||||||||||||||
Design standard VIZ-PRINCIPLES v2.3 2026-08-10 v2.4 2026-08-10 v2.5 2026-08-10 v2.6 2026-08-24 v2.7 2026-08-25 | |||||||||||||||
Operated | |||||||||||||||
| Operated | Cascadia Matter Ledger | ||||||||||||||
Design standard VIZ-PRINCIPLES v2.8 2026-08-29 | |||||||||||||||
| Cascadia Fee Examiner | |||||||||||||||
Re-derived | |||||||||||||||
| Re-derived | Cascadia Revenue Assurance | ||||||||||||||
Build nine: the golden fixture (column eight) is the last of fourteen to appear. | |||||||||||||||
D Data: 1 One-command rebuild 2 Frozen source 3 Source register
N Numbers: 4 Row-count validation 5 Validation report 6 Tests as code 7 Independent re-derivation 8 Golden fixture 9 Negative controls
P Presentation: 10 Chart review 11 Reading panel 12 Metric register
O Operation: 13 Scheduled run with health 14 Reconciliation published the build carries the surface; the cell links to the file the first build to carry it a design-standard version, placed by date
Cascadia Medical Devices, Cascadia Pharmacy, Cascadia Staffing
Cascadia Deal Desk, Cascadia Control Tower
Cascadia Matter Ledger, Cascadia Fee Examiner
The first three builds were shaped like enterprise work: a SQL Server star schema, a Power BI report, and one script that rebuilt the whole thing and printed a row-count table at the end. What could be checked was the load. What was published was trusted. Cascadia Staffing put one crack in that: the KPIs the report showed were re-derived in SQL and compared.
Cascadia Finance moved the work to Python and a static page, and with it came what a static page makes possible: a frozen source with a date on it, a validation report committed beside the data, a proof that the checks reject corrupted input, a chart review against a written standard, and a panel of readers who did not know the finding. five surfaces appeared in one build.
Cascadia Deal Desk and Cascadia Control Tower kept those and registered what they published: a metric register generated from the model, tests in the warehouse layer, and a source register with a hash per file.
Cascadia Matter Ledger and Cascadia Fee Examiner ran on a schedule and published what running looks like: health, history, a reconciliation that records its own failures, and every published cell re-derived a second way.
Cascadia Revenue Assurance wrote the rules first, the golden fixture second and two engines third, and published nothing until all of them agreed.
Nine modules, oldest first.
From here the walk is a conversation. Pick a module; its row is where it starts.
An independent portfolio project by Aaron Robbins. This page is generated from two data files, data/builds.json and data/standard.json, in the repository linked below; the inventory script that writes them reads the nine module repositories and never writes in one. No score, level, weight or percentage exists in the data. A cell is a path or it is empty. Older modules are not retrofitted; an empty cell is a fact about what a build carried, never a debt.
Source, the inventory script, the surface definitions and the two data files:
github.com/RobbinsAnalytics/cascadia-build-by-build. How a cell is filled or left empty is a written rule per column, in governance/surfaces.md. Inventory read 2026-09-16; data frozen at commit d967ff5.