QUANT HUB
LOCAL-FIRSTSHADOW

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 state
The 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)
BOTHLIVESHADOW
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 ideas
Universe 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
ST3LIVESHADOW
Last run 2026-08-17. Manifest carries regime gates, per-rule drop counts, source sha.

Pipeline Ledger

L9 surfaces
Which 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
ST3:4401MANUALOPEN
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 surfaces
Config-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)
ST3:4402MANUALOPEN
Allowlist IS desk_config.json — no second registry to drift. Token: ~/.secrets/quant-hub-launcher.token.

Quant Desk

L9 surfaces
93-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
ST3:4300MANUALOPEN
Config-as-allowlist security; config re-read per request. desk_doctor exit code = broken-tile count.

Observatory (QF)

L9 surfaces
23 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
ST3:4223STALEOPEN
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 research
Education + 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)
ST3:4241DORMANTOPEN
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 surfaces
156 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
890:4640LIVEOPEN
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 research
SHADOW-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)
890:4650LIVESHADOWOPEN
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 research
Hypothesis-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)
ST3:4221LIVEOPEN
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 research
Streamlit research lab — off the daily loop by design.
streamlit run (ADAGIO QF\V5)
ST3:4210MANUALOPEN
Data & Stores

QF-STORE

L1 PIT store
The 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
BOTHLIVEN/A
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 store
548 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
ST3LIVEN/A

ENGINE registries

L8 research
Append-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
ST3LIVE
trials.jsonl run_id is the universal join key: store ↔ reports ↔ PICKS sidecars ↔ ledger.

qf-mirror (890)

L1 PIT store
One-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
890LIVEN/A
Ops & Outputs

Report Engine

L9 surfaces
16 sections, 5 formats. Real and tested — dormant, awaiting consumers.
ADAGIO QF\report_engine
ST3DORMANT

Macro Cockpit

L2 state
MacroState HTML from 6 sources; engine-vs-vendor divergence view. 42M IP never leaves the machine.
aqm-cadence-daily step 3 → ~/.azrfo-cockpit/latest.html
ST3LIVE