The modules behind the engagements
Every module is build-once / config-many: a new firm is a configuration seed, never a fork. Each panel below is one module, configured for a synthetic manager.
ModulePipes — data ingestionevery source declared as data · pipes.tenant.json
| Pipe | Schedule | Last run | Validation at the door | State |
| Bloomberg back-office | daily 06:00 ET | 06:02 · run 8841 | shape ✓ · 12,412 rows vs 12,380±5% ✓ | LOADED |
| Custodian — Schwab positions | daily 05:45 ET | 05:48 · run 8842 | shape ✓ · account set complete ✓ | LOADED |
| Fund admin — SS&C NAV pack | daily 06:15 ET | 06:20 · run 8844 | expected 4 files · got 3 ✗ | HELD — QUARANTINED |
| FactSet prices | daily 05:30 ET | 05:30 · run 8845 | 8,110/8,114 ids · 4 mapped-out ✓ | LOADED |
A pipe is a declaration, not a script: source, schedule, expected shape, and tolerance live in the tenant seed. The held SS&C pack is the module doing its job — yesterday's good data stands until today's arrives whole.
ModuleSentinel — alarms & run-healththree axes, alarmed separately · nothing fails silently
| Rule | Axis | Threshold | On breach | Now |
| Feed freshness | freshness | > 30 min past schedule | notify ops · page after 2h | 6/6 FRESH |
| Delivery completeness | coverage | any short delivery | hold load · quarantine · notify | 1 HELD (SS&C) |
| Job success | run-health | non-zero exit | retry ×2 · then escalate | 14/14 GREEN |
| Backup freshness | freshness | > 26h since last good | alarm — a stale backup is an incident | 8h AGO |
The incident feed shows the SS&C hold at 06:20 with who was told and when. An alarm that fires into a log nobody reads is the same as no alarm — every rule names a person-visible destination.
ModuleRecon — agreement checksboth sides shown · aging escalates
| Check | Sides | Cadence | Open breaks | State |
| Positions | custodians vs. books | daily 06:30 | 1 · aged 3 days | ESCALATED |
| Cash | custodians vs. books | daily 06:30 | 1 · $1,500.00 | OPEN |
| Trades captured | OMS vs. custodian activity | daily 06:35 | 0 | CLEAN |
| NAV tie-out | admin pack vs. internal | monthly | held — awaiting full SS&C pack | WAITING |
A break carries its two sides and its age. Three days old, it stops being a line item and becomes somebody's morning — the escalation is in the module, not in someone's memory.
ModuleProvenance — lineage explorerany figure, traced to its source
$412,882,116
Firm AUM · Capital Account Summary p.1 · as of Jun 30 TRACED
- Report
Capital Account Summary · rpt_cas_2026-06-30.pdf · built 06:41 ET
- Dataset
positions_eod · as_of 2026-06-30 · 17,522 rows · schema v12
- Files
3 custodian + 1 admin · bbo_20260630.csv · pos_0630.csv · hold_0630.psv · nav_0629.xlsx
- Runs
8841 · 8842 · 8843 · 8844 — all green except the held SS&C load, noted on the report face
The trace is generated from the run record, never typed. If a figure cannot produce this chain, the report build refuses it — a number that cannot name its source does not ship.
ModuleRailkeep — backup & demonstrated restorean instance is a row · present is not matching
| Instance | Last backup | Last demonstrated restore | Key custody | State |
| Research warehouse | today 01:10 · 4.2 GB | Jun 28 · drill #31 · byte-for-byte ✓ | key matches escrow ✓ | COVERED |
| Reporting store | today 01:25 · 1.1 GB | Jun 28 · drill #31 · byte-for-byte ✓ | key matches escrow ✓ | COVERED |
| Document vault | today 01:40 · 9.8 GB | May 30 · drill #30 · byte-for-byte ✓ | key matches escrow ✓ | COVERED |
| Wrong-key control | — | Jun 28 · drill #31b | retired key presented | REFUSED BY NAME |
Coverage is judged from the registry, so a system missing from the list is a visible gap, not an invisible one. Key custody checks the backup key matches escrow — a stale key restores an identity everyone already stopped trusting.
ModuleRegistry — model & config governanceversioned · validated · approved
| Item | Version | Change | Validation | Approval |
| Risk model — Axioma AXWW4 | v4.2 | vendor v4.1 → v4.2 · Jun 12 | parallel run 10 days · drift within tolerance | CIO-mem 26-014 |
| Pricing waterfall | v9 | muni fallback source added · May 03 | back-compare 90 days · 0 breaks introduced | ops-mem 26-011 |
| Security master mapping | v31 | 14 new listings mapped · Jun 27 | identifier cross-check clean | auto · rules v7 |
| Tenant seed | v18 | new custodian pipe declared · Jun 20 | preflight ✓ · staged → promoted | ops-mem 26-016 |
Which model, which version, what changed, who signed — answered from the log, not from memory. Configuration changes ride the same rail as model changes, because a config change can move a number just as far.
ModuleReports — scheduled productionbuilt from governed data · holds are honest
| Report | Schedule | As-of | Status | Distribution |
| Capital Account Summary | daily 06:40 | Jun 30 | BUILT · 06:41 | portal · 3 recipients |
| Exposure & concentration pack | daily 06:45 | Jun 30 | BUILT · 06:46 | portal · risk seat |
| Admin NAV tie-out | monthly | Jun 30 | HELD — short SS&C pack | held with reason shown |
| Trustee reporting pack | quarterly | Q2 | BUILT · Jul 02 | vault · trustee seat |
A held report says why, on its face. Shipping a report built on a short delivery would be the silent failure every other module exists to prevent.
ModuleRecords — documents & audit trailfiled to entities · append-only
| Document | Filed to | Added | Trail (latest) |
| Custody agreement — Schwab | entity: master fund | Jan 12 | viewed · trustee seat · Jun 29 |
| Q2 admin NAV pack | entity: master fund · period: Q2 | Jul 02 | filed by pipes · run 8844 |
| Restore drill log #31 | system: railkeep | Jun 28 | generated · immutable |
| Valuation policy v9 | policy register | May 03 | superseded v8 · archived, not deleted |
The trail is append-only: who filed, who viewed, what superseded what. Nothing is deleted — a superseded policy is archived with its history, which is exactly what a due-diligence exam wants to walk.
ModuleAccess — seats & capabilitiesleast privilege · reviewed on a date, not "eventually"
| Seat | Role | Capabilities | Last review | State |
| coo@firm | owner | full · 41 capabilities | Jun 01 | REVIEWED |
| analyst@firm | research | read: platform, reports · 12 | Jun 01 | REVIEWED |
| trustee seat | viewer | read: trustee pack only · 3 | Jun 01 | REVIEWED |
| backup service | backup | doc_view_all · write: nothing | Jun 01 | LEAST-PRIVILEGE |
Service accounts get the narrowest role that works — the backup seat reads everything and writes nothing. The review column carries a date because "we review access" without a date is a sentence, not a control.