Tool registry
Every quant-estate tool, one card each, from registry/tools.json. A tool that is not registered does not exist. Launch links point at local ports; the hub never executes anything on your behalf.
Engines & Pipelines
V4 (AQM-1)
L2 stateThe state engine. 16-phase DAG (P0 refresh → P11 observatory), 624-ticker nightly, artifacts to QF-STORE.
890: Task Scheduler Ben-V4-Nightly 01:30 · st3: python aqm1_production_v2_integrated.py (ADAGIO QF\V4)
Nightly ran 8/18–8/20. 8/20 allocation was degenerate (0 exposure, 623/623 risk_off) — the ledger surfaces this, dashboards must not hide it.
FUNNEL
L3 ideasUniverse cascade: 5,600-ticker FT-API → floors → z-rank → enrich → survivors → screen_selection sidecar for V4.
C:\Python314\python.exe funnel.py --source ftapi --enrich-top 40 (QF\FUNNEL) · weekly Mon 07:20
Last run 2026-08-17. Manifest carries regime gates, per-rule drop counts, source sha.
Pipeline Ledger
L9 surfacesWhich pipelines ran, when, on what book, and whether hygiene gates held. Built into this hub.
apps/ledger-api: C:\Python314\python.exe main.py (binds 127.0.0.1:4401, read-only) — QF-STORE context.json + QC files + .aqm_live (age-checked) + FUNNEL manifests + desk probes + trials.jsonl join
Timestamps lie (folders copied later; ms-clustered mtimes = flush). Derive time from run_id + internal fields, never mtime. Never trust .aqm_live status without an updated_at age check.
Surfaces
Hub Launcher
L9 surfacesConfig-as-allowlist process control: desk_config tiles as launch/stop/open with audited, evidence-based verdicts.
apps/launcher-api: C:\Python314\python.exe main.py (127.0.0.1:4402, bearer auth, never hosted)
Allowlist IS desk_config.json — no second registry to drift. Token: ~/.secrets/quant-hub-launcher.token.
Quant Desk
L9 surfaces93-tile / 9-group operator launcher, 13 freshness probes. desk_config.json is the estate's machine-readable index — the seed of this registry.
START-QUANT-DESK.bat (on demand, localhost-only, stdlib) · audit: python desk_doctor.py
Config-as-allowlist security; config re-read per request. desk_doctor exit code = broken-tile count.
Observatory (QF)
L9 surfaces23 econophysics lenses over V4 parquets — DuckDB bridge API + React/Three.js forensic terminal (phase-space, Koopman, drawdown terrain).
python -m observatory.bridge.api --port 4222 · cd OBSERVATORY\app-react && npm run dev (:4223) · refresh: python ops/daily_refresh.py
Bridge data last built 8/19; runs 8/19–8/20 not ingested. Truncated runs (7/27=17 tickers + 10 corrupt parquets; also 8/07, 8/17) poison unfiltered lenses — quarantine open. Use python -m observatory.cli.obs (obs.exe off PATH).
Adagio Platform (AQFP)
L8 researchEducation + analytics port of V4: 15 engine packages (~25K lines, real), 102 API endpoints, Next.js 16 dark UI, 42-concept curriculum.
python secrets.py run -- uvicorn apps.api.main:app --port 4240 · cd web && npm run dev (:4241)
API truth is :4240 (ontology's :4220 is only the config default; 46 web files hardcode 4240). Zero git commits. Engines + token system + V4 content-hash pin are the reusable core.
Ben-Desk Pack Observatory
L9 surfaces156 per-ticker layer stacks (RAP·SIC·Signals·Regime·Options·6Q) + nightly V4 delta, review desk, watchlists, canvas, LAB-BI.
890: schtasks /run /tn ben-desk-server · regenerated nightly by Ben-V4-Nightly 01:30
Tailnet-only bind. Liveness = HTTP probe, never Task Scheduler state (task reads Ready while dead; found down 8/22 07:48 after a ^C).
Research & Lab
Quant Lab (marimo)
L8 researchSHADOW-only reactive notebooks — throughput project t0→t5 walk, gold tables, cross-run BI. Writes C:\QF-STORE\lab (890) only.
890: Task Scheduler Ben-Quant-Lab (marimo edit, tailnet bind, headless)
Serving (verified 8/22). LAB-METHOD v1.1 invariants govern. Lab outputs live on the 890 — ST3 has no QF-STORE\lab; a ledger built on ST3 alone is blind to lab runs.
ARF — Applied Research Facility
L8 researchHypothesis-gated research engine: falsifiable intake, 5-pod AI pipeline, red-team gate, decision-tree routing, promotion guardrails.
.venv\Scripts\python.exe -m uvicorn apps.api.main:app --port 4220 (API) · scripts\start_frontend.ps1 (:4221 UI)
Ports are 4220/4221 — the remembered :4230 was stale. Data thin (3 projects, 0 promotions); weekly screen task wiped since ~6/16. The guardrails/decision-queue code is the reusable core. ⚠ .env leaks keys.
V5 parameter dashboard
L8 researchStreamlit research lab — off the daily loop by design.
streamlit run (ADAGIO QF\V5)
Data & Stores
QF-STORE
L1 PIT storeThe artifact store: 163 dirs / 13.2 GB, ~148 V4 runs + burst + spec registry. Junction target of V4\artifacts (OneDrive-eviction fix).
passive store · manifest = <run>\context.json · specs = artifacts\.spec_registry.json · fingerprint chain per stage
Nightly manifests lack: status, git sha, host, wall time — burst provenance.json is the envelope template to extend. ~488 MB/night, no retention policy yet.
PICKS returns lake
L1 PIT store548 per-ticker return CSVs + SPOT + _selections sidecars (roster_fingerprint = universe provenance), append-only.
picks-snapshot-daily · weekdays 17:30 · freshness gate hard-fails >2 stale trading days
ENGINE registries
L8 researchAppend-only jsonl court of record: trials (116 rows, auto-written by V4 P10), signals, kills, lifecycle, cycles, sealed preregs.
QF\ENGINE\registry\*.jsonl via _jsonl.py JsonlLock — no update/delete primitive; retirement = appended row
trials.jsonl run_id is the universal join key: store ↔ reports ↔ PICKS sidecars ↔ ledger.
qf-mirror (890)
L1 PIT storeOne-way read-only curated projection of the QF stack, pushed weekdays 18:00. Stale = transport failure: escalate, don't compute.
.projection metadata + .mirror-freshness UTC stamp, 30h staleness threshold
Ops & Outputs
Report Engine
L9 surfaces16 sections, 5 formats. Real and tested — dormant, awaiting consumers.
ADAGIO QF\report_engine
Macro Cockpit
L2 stateMacroState HTML from 6 sources; engine-vs-vendor divergence view. 42M IP never leaves the machine.
aqm-cadence-daily step 3 → ~/.azrfo-cockpit/latest.html