THE CANDY FACTORY
Alpha Research Pool
Running — nothing needs you
Read-only
Front Desk
Map Room
Kitchen
Q.C
Shelf
Assortment
Boiler Room
Records
Front Desk
Is it alive, what is it doing, and what needs me?
Panel state:
System state · refreshed 8s ago
SELECT worst_state, plane FROM health_rollup WHERE ts = latest_cache_tick();
Stale — last known rollup, retrying in background.
Running. Searching in context momentum-4h. Nothing needs you.
Research
nominal
Evaluation & Gate
nominal
Portfolio & Live
nominal
Infrastructure
elevated · host at 78%
No health rollup for this tick.
The cache hasn't been populated yet — check again shortly.
Could not load system state.
health_rollup query timed out after 3000ms
What it's doing now
SELECT campaign, generation, elapsed, evals_per_min FROM campaign_status WHERE active = true;
Campaign
momentum-4h
Generation
214
Elapsed
6h 12m
Throughput
1,840 /min
No active campaign
Could not load campaign status
Stale — last known status
What changed since you last looked
SELECT * FROM events WHERE ts > last_viewed_at() ORDER BY ts DESC;
3 new survivors promoted to paper
a1b2c3d4 ⧉ f00dbabe ⧉ 9c8d7e6f ⧉ 12m ago
Incident gate-timeout-217 acknowledged
41m ago
Calibration canary passed — deflation threshold recalibrated
2h ago
No events since your last visit.
Nothing has been promoted, invalidated, or flagged in the last 6 hours.
3 new survivors promoted to paper
12m ago
Data is 47 minutes old — the refresh cache is overdue. Treat this panel as historical, not live.
Could not load recent events.
events_cache query timed out after 3000ms
Open runbook: events-cache-timeout →
1 incident acknowledged
41m ago
Promotions — unavailable this refresh
3 new survivors promoted to paper
measured via fallback method 12m ago
What needs you
SELECT * FROM backlog WHERE status != 'resolved';
Nothing needs you.
Last incident acknowledged 3d ago · next postmortem review in 9 days.
Backlog table is empty
Could not load the backlog
Stale — last known backlog
Resource loops
Our usage — 24% of 30–35% budget
Whole machine — 61%, normal band
Boiler Room →
Map Room
Where has the factory prospected, how hard, and with what luck — and where hasn't it looked?
Panel state:
The Catalogue Grid
refreshed 8s ago
SELECT family, timeframe, trials, survivors, yield_per_1k, deployed FROM catalogue_coverage;
size = trials (log-scaled) color = yield (survivors / 1,000) ▨ hatched = never tried ★ = has a currently deployed survivor
No coverage recorded
The catalogue hasn't been populated for this view.
Could not load this panel
timeout · catalogue_coverage
Stale — last known data, retrying in background
Unopened Doors
SELECT region FROM catalogue_coverage WHERE trials = 0 ORDER BY neighbour_yield DESC LIMIT 5;
Stale — last known list
Unexplored, next to productive regions.
{{ door.family }} × {{ door.timeframe }}
{{ door.reason }}
No thin-but-adjacent-to-productive regions in this view.
No unopened doors right now
Everything adjacent to a productive region has been tried.
Could not load this panel
timeout · catalogue_coverage
Saturation curves
SELECT trials_cum, distinct_strategies FROM discovery_curve WHERE region IN (:selected) ORDER BY trials_cum;
● Momentum × 4h — still climbing ● Microstructure × 1m — flattened ● Volume / Flow × 15m — thin, wide projection
Dashed = projected richness · shaded band = its uncertainty (wider where data is sparse).
No discovery curve for this selection
Select a region on the map to see its saturation trend.
Could not load this panel
timeout · discovery_curve
Stale — last known data, retrying in background
The Prospect Map
SELECT trials, yield_per_1k, atoms_touched FROM catalogue_coverage WHERE trials > 0;
Rich and untouched
Hot seam
Unprospected
Mined out
Bubble size = distinct atoms touched · dashed lines = median split.
Nothing prospected yet
No regions in this view have recorded trials.
Could not load this panel
timeout · catalogue_coverage
Stale — last known data, retrying in background
The Atom Inventory
SELECT dimension, n_exist, n_tried, n_productive FROM atom_inventory;
Stale — last known inventory
Exist → ever tried → ever productive, per catalogue dimension.
{{ row.label }}
{{ row.summary }}
Atom inventory is empty
Could not load the atom inventory
timeout · atom_inventory
Kitchen
What is it cooking now, and is the search actually working?
Panel state:
The production line — generation 214
refreshed 8s ago
SELECT stage, count, pct_of_generated FROM generation_funnel WHERE generation = 214;
Stale — last known funnel, retrying in background.
{{ row.label }}
{{ row.count }}
{{ row.sub }}
→
Losses are drawn at full weight — most candidates fail here, and that is the gate working correctly.
No candidates generated this cycle
The generator hasn't produced a new batch for generation 214 yet.
Could not load this panel
timeout after 8000ms · generation_funnel
Elite fitness trajectory
SELECT generation, island, best_fitness, median_fitness FROM population_fitness ORDER BY generation;
● Island A — best (solid) / median (dashed) ● Island B ● Island C ▬ evaluation budget /gen (right axis)
No lineage recorded yet
Islands haven't reported fitness for this generation range.
Could not load this panel
timeout · population_fitness
Stale — last known data, retrying in background
Budget burn
SELECT generation, evals_cumulative, envelope FROM evaluation_budget ORDER BY generation;
Dashed line = the pre-registered evaluation envelope — a hard ceiling, not a suggestion.
No evaluations recorded yet
This generation hasn't burned budget — check back once the run starts.
Could not load this panel
timeout · evaluation_budget
Stale — last known data, retrying in background
Diversity
SELECT generation, niche_diversity_index FROM population_diversity ORDER BY generation;
How spread the population is across niches. A collapse here is a genuine pathology — premature convergence.
No diversity samples in this range
The niche index hasn't been computed for these generations.
Could not load this panel
timeout · population_diversity
Stale — last known data, retrying in background
Islands
SELECT generation, best_fitness FROM population_fitness WHERE island = :island ORDER BY generation;
Island A · 3 migrations
Island B · 2 migrations
Island C · 3 migrations
Dots mark migration events between islands.
No island activity recorded
No migrations or fitness reports yet for this generation range.
Could not load this panel
timeout · population_fitness (island)
Stale — last known data, retrying in background
Quality Control
Is what we found real?
Panel state:
The gate funnel — generation 214
refreshed 8s ago
SELECT stage, count, reject_reason FROM gate_funnel WHERE generation = 214;
{{ row.label }}
{{ row.count }}
{{ row.sub }}
→
Rejection is the gate working. A candidate surviving every check is the rare exception, not the norm.
No candidates evaluated this generation
Could not load this panel
timeout · gate_funnel
Stale — last known funnel, retrying in background
The deflation adjustment
SELECT raw_sharpe, raw_p, n_attempts, deflated_p, deflated_sharpe FROM deflation_ledger WHERE candidate = 'a1b2c3d4';
The more strategies tried, the better the best one looks by luck alone — so the bar rises with the number of attempts. This is why a candidate can post an outstanding raw number and still fail.
Raw result
Sharpe 2.14
p = 0.0002 (looks decisive)
×
Attempts judged against
214
strategies tested this generation
=
Deflated result
Sharpe 1.42
deflated p = 0.031 — PASS
No candidate awaiting judgement
Could not load this panel
timeout · deflation_ledger
Stale — last known ledger, retrying in background
Certificate of analysis — a1b2c3d4
SELECT check_name, statistic, threshold, verdict FROM certificate WHERE candidate = 'a1b2c3d4';
Checks
{{ chk.label }}
{{ chk.stat }} {{ chk.threshold }} {{ chk.verdict }}
Walk-forward folds — 6/6 passed
Equity curve — backtest / holdout
Cross-validation distribution
No candidate under review
Could not load this panel
timeout · certificate
Stale — last known data, retrying in background
The calibration canary
SELECT generation, claimed_reject_rate, actual_reject_rate FROM calibration_canary ORDER BY generation;
▬ claimed rejection rate (5%) ● actual rejection rate
Nominal — the gate is rejecting noise at the rate it claims.
No canary runs recorded
Could not load this panel
timeout · calibration_canary
Stale — last known data, retrying in background
The holdout ledger
SELECT ts, candidate, purpose, slice, pct_spent FROM holdout_access_log ORDER BY ts DESC;
Cumulative holdout spent
6.2% of budget
{{ row.ts }}
{{ row.hash }}
{{ row.purpose }}
{{ row.slice }}
{{ row.spent }}
Holdout is spent, not renewable. Every access here is permanent.
No holdout accesses recorded
Could not load the holdout ledger
timeout · holdout_access_log
Stale — last known ledger, retrying in background
The Shelf
What do we actually have, and how distinct is it?
Panel state:
The jars — survivors by behavioural class
refreshed 4m ago
SELECT behavioural_class, status, count(*) FROM survivors GROUP BY behavioural_class, status;
{{ jar.label }}
{{ jar.total }} total {{ jar.live }} LIVE
Live Paper Onramp Retired
No survivors on the shelf yet
Could not load this panel
timeout · survivor_jars
Stale — last known jar counts, retrying in background
The distinctness map
SELECT candidate, embedding_x, embedding_y, behavioural_class FROM distinctness_embedding;
Each point is a surviving strategy, positioned so near-duplicate ideas sit close together. Tight clusters are redundancy — the same idea kept multiple times; scattered points are genuinely distinct edges.
Momentum Mean Reversion Volume / Flow Breakout Volatility Arb Pairs / Relative Value
Not enough survivors yet to map distinctness
Could not load this panel
timeout · distinctness_embedding
Stale — last known positions, retrying in background
Inventory
SELECT dna_hash, behavioural_class, regime_profile, holdout_status, live_status, decay_state FROM shelf_inventory;
DNA
Class
Regime profile
Holdout
Live status
Decay
{{ row.hash }}
{{ row.cls }}
{{ row.regime }}
{{ row.holdoutLabel }}
{{ row.liveLabel }}
{{ row.decayLabel }}
No survivors recorded
Could not load the inventory
timeout · shelf_inventory
Stale — last known inventory, retrying in background
Decay watch
SELECT dna_hash, expected_metric, live_metric, drift_pct, severity FROM decay_watch ORDER BY drift_pct ASC;
DNA
Class
Expected
Live actual
Drift
Severity
{{ row.hash }}
{{ row.cls }}
{{ row.expected }}
{{ row.actual }}
{{ row.drift }}
{{ row.severityLabel }}
Drift is measured against each survivor's own certified backtest expectation, not against zero.
No survivors are currently drifting from expectation
Could not load decay watch
timeout · decay_watch
Stale — last known drift readings, retrying in background
The Assortment
Is the box better than its best single candy — and how is it doing live?
Panel state:
The box — current portfolio
refreshed 2m ago
SELECT dna_hash, behavioural_class, weight_pct FROM portfolio_members ORDER BY weight_pct DESC;
{{ member.hash }}
{{ member.cls }}
{{ member.weightLabel }}
No members currently in the portfolio
Could not load this panel
timeout · portfolio_members
Stale — last known weights, retrying in background
Portfolio versus best member
SELECT ts, portfolio_equity, best_member_equity FROM portfolio_vs_best ORDER BY ts;
● portfolio (box) ● best single member
Portfolio Sharpe 1.68 vs best member's 1.42 — the improvement is statistically significant (deflated p = 0.012). The box is genuinely better than its best part.
No live track record yet to compare
Could not load this panel
timeout · portfolio_vs_best
Stale — last known comparison, retrying in background
Why it's better — diversification
SELECT class_a, class_b, correlation FROM behavioural_class_correlation;
Cross-class correlation
{{ lbl.abbr }}
{{ row.abbr }}
{{ cell.label }}
Regime complementarity
Momentum and Breakout members lean on trending regimes; Mean Reversion and Pairs lean on range-bound ones. Low cross-correlation between these groups is what lets the box smooth over regime shifts that would otherwise hurt any single member.
Not enough members yet to estimate correlation
Could not load this panel
timeout · class_correlation
Stale — last known correlations, retrying in background
The live lifecycle board
SELECT dna_hash, behavioural_class, stage FROM deployment_lifecycle;
{{ col.label }}
{{ card.hash }}
{{ card.cls }}
No deployments currently tracked
Could not load the lifecycle board
timeout · deployment_lifecycle
Stale — last known board, retrying in background
Risk
SELECT drawdown_pct, kill_switch_pct, gross_exposure_pct, capacity_headroom_pct FROM live_risk_snapshot ORDER BY ts DESC LIMIT 1;
Drawdown vs kill-switch
-6.4%
Kill-switch trips at -18.0% — currently 36% of the way there.
Gross exposure
138%
Normal band (below 170%). Elevated and danger bands sit above.
Capacity headroom
61%
Room left before market impact degrades expected returns.
No live risk snapshot recorded yet
Could not load the risk snapshot
timeout · live_risk_snapshot
Stale — last known risk readings, retrying in background
The Boiler Room
Is the machine healthy and behaving itself?
Panel state:
The health tree — worst-of rollup
refreshed 6s ago
SELECT component, plane, state FROM health_rollup ORDER BY plane, component;
Good (Green) Warning (Amber) Unknown — More alarming than Warning Reserved for genuine danger (Red)
Alpha Research Pool {{ systemWord }}
{{ plane.name }} {{ plane.word }}
{{ comp.name }} {{ comp.word }}
No health rollup reported yet
Could not load this panel
timeout · health_rollup
Stale — last known rollup, retrying in background
The two resource dials — never merged
SELECT own_usage_pct, whole_machine_pct FROM resource_snapshot ORDER BY ts DESC LIMIT 1;
Our own usage — 24% of a 30–35% budget
"Am I greedy?" — our share of the whole machine.
Whole machine — 58%, normal band
"Is the machine in danger?" — whoever's fault, everyone's problem.
No resource reading yet
Could not load resource dials
timeout · resource_snapshot
Stale — last known readings, retrying in background
The interlock timeline
SELECT ts, interlock_state FROM interlock_history ORDER BY ts;
Normal Elevated Brake Critical
Entry threshold 80% triggers the brake; release threshold 65% lifts it — the gap keeps it from flapping.
No interlock history recorded
Could not load the interlock timeline
timeout · interlock_history
Stale — last known timeline, retrying in background
Governor decisions
SELECT generation, worker_count, reason FROM governor_decisions ORDER BY generation;
{{ step.genLabel }} {{ step.workers }} workers {{ step.reason }}
No governor decisions recorded this run
Could not load this panel
timeout · governor_decisions
Stale — last known decisions, retrying in background
Reclamation & leak watch
SELECT pass_id, mb_reclaimed FROM cleanup_passes ORDER BY pass_id; SELECT pass_id, baseline_mb FROM memory_baseline ORDER BY pass_id;
Reclamation per pass (MB)
2 of the last 7 passes reclaimed nothing — flat is a warning, not a non-event.
Leak watch — baseline after cleanup (MB)
Baseline has drifted up ~15% over 7 cleanups — a slow leak, not yet flagged.
No cleanup passes recorded yet
Could not load reclamation data
timeout · cleanup_passes
Stale — last known memory data, retrying in background
Incidents & breakers
SELECT id, kind, description, status, owner, postmortem_owed FROM incidents_and_breakers ORDER BY ts DESC;
ID
Description
Status
Owner
Postmortem
{{ row.id }}
{{ row.desc }}
{{ row.statusLabel }}
{{ row.owner }}
{{ row.postmortemLabel }}
No open incidents or tripped breakers
Could not load incidents & breakers
timeout · incidents_and_breakers
Stale — last known status, retrying in background
Actions — the only place in the product where a click changes anything
Each requires a deliberate confirmation before it takes effect.
Acknowledge this incident?
Run a cleanup pass now?
Stop research safely? The live book is unaffected.
The Records Office
Why did it decide that, and can I trust it?
Panel state:
Universal search
Returns that thing's complete life: every trial, verdict, promotion, invalidation.
Lineage — {{ rdSubjectLabel }}
SELECT dna_hash, parent_context, birth_archetype, generation FROM lineage WHERE dna_hash = '{{ rdSubjectHash }}';
{{ step.kind }}
{{ step.label }}
Birth archetype: {{ rdArchetype }}
No lineage on record for this subject
Could not load this panel
timeout · lineage
Stale — last known lineage, retrying in background
Version timeline
SELECT version, deployed_at, kind, invalidated_from, invalidated_to FROM code_versions ORDER BY deployed_at;
{{ ev.version }} {{ ev.date }} {{ ev.kindLabel }}
{{ ev.desc }}
Invalidation window: {{ ev.invalidFrom }} → {{ ev.invalidTo }}
No version history recorded
Could not load this panel
timeout · code_versions
Stale — last known timeline, retrying in background
Invalidation ledger
SELECT id, ts, scope, reason FROM invalidations ORDER BY ts DESC;
ID
Date
What it touched
Reason
{{ row.id }}
{{ row.date }}
{{ row.scope }}
{{ row.reason }}
No invalidations on record — nothing has been revoked
Could not load the invalidation ledger
timeout · invalidations
Stale — last known ledger, retrying in background
Foundations
Style foundation and component set for The Candy Factory.
Ground & brand palette — wayfinding only, never data
Ground
Sugar pink
Caramel
Pistachio
Liquorice
Data palette — colourblind-safe, never brand
Sequential (magnitude / yield)
Diverging (above / below expectation)
Categorical (series)
Type
Aa — Chakra Petch, angular tech-terminal type
13px body · dense, legible at small sizes
a1b2c3d4e5f6 — JetBrains Mono, for hashes, ids, timestamps, SQL
27
page question
21
hero sentence
17
stat value
14
panel title
13
body
11
label / caps
Spacing scale
A 4px base. Density is the point: 6 and 10 do most of the work inside panels, 18 separates panels, 22 is panel padding. Nothing larger — whitespace is spent on the hero visual, not the page.
4
6
10
14
18
22
Elevation, focus and hover
Three levels only. Hover brightens a border, never moves anything. Focus is a visible cyan ring — this instrument is driven from the keyboard as much as the mouse.
e0 · flush
Sub-panels, table rows. No shadow.
e1 · panel
The universal container.
e2 · drawer
Drill-down only. Nothing else floats.
Rows highlight on hover:
momentum-4h · 12,480 trials
Absence — drawn, never omitted
One treatment, used for every unmeasured value in the product: a 45° violet hatch on the ground. It cannot be read as a low value, and it is deliberately more arresting than amber.
Not measured
Measured, low
Inline in a series — the gap states itself
Gen 3 — no measurement recorded (reporting stopped, not zero).
Health-state tokens — unknown reads as more alarming than amber
Good
Amber
Unknown
Red — reserved for genuine danger
Panel — the universal container
Title, freshness stamp, query affordance (</>), body — every panel in the product is this same shell. Loading has nothing to be fresh about yet, so the stamp is skipped entirely; stale and error keep it front and center, because knowing when a number last actually worked is the point.
Default
Region yield
refreshed 4s ago </>
Loading — no stamp yet
Empty
Family × Operator
refreshed 4s ago </>
No trials in this view
Widen the timeframe or family filter to find something.
Stale — served, flagged
Budget burn
stale · 47m ago </>
Last known data — retrying in background.
Error
Diversity index
fetch failed </>
Could not load this panel
timeout · population_diversity
Hash chip — monospace, truncated to 8, click to copy, hover for full
a1b2c3d4 ⧉
Stat block
Caps label, monospace value, and a qualifier line that is never optional for a statistical figure — sample size, interval, or the absence treatment.
Survivors
84
counted, not estimated
Yield /1,000
3.1 ± 1.4
n = 12,480 trials
Yield /1,000
8.0 ± 7.9
n = 125 — thin evidence
Yield /1,000
unknown
never tried here
Status pill and the query affordance
The pill always carries the state in words, never colour alone. The query glyph sits in every panel corner and is identical everywhere.
Running Braked — host at 91% Unknown — not reporting Stopped — kill-switch tripped Read-only
</>
SELECT family, timeframe, trials, survivors FROM catalogue_coverage WHERE campaign = 'momentum-4h';
Data table
Caps header, 1px rules, no zebra striping — density comes from tight rows, not from fill. Numerals monospace and right-aligned. A row opens the drawer; unknown cells get the hatch inline.
DNA
Class
Trials
Yield
Live status
a1b2c3d4
Momentum breakout
12,480
3.1
LIVE
f00dbabe
Mean reversion band
6,204
1.8
PAPER
9c8d7e6f
Volume / flow divergence
418
ONRAMP
Chart style specification
Every chart in the product is built from this. It is written to be transcribable straight into an ECharts theme.
Reference chart — band, series, absence
estimate 95% band not measured
axisLine
1px oklch(35% .03 240); no arrows, no bevels.
splitLine
Horizontal only, 1px dashed oklch(28% .03 240). Never vertical — it competes with the data.
ticks
4–5 on y, 6–8 on x. 11px, oklch(58% .032 240), monospace for numerals. Log axes label decades only.
legend
Outside the plot, above it, as HTML — not ECharts' own. Keeps every panel's legend identical.
tooltip
Panel ground, 1px border, no shadow, no transition. States the sample size on any statistical value.
series
Categorical set in order; 1.5px lines, no smoothing, symbols only where points are the datum.
bands
Custom polygon series at 0.26 opacity with dotted upper and lower edges — drawn as one shape, never two stacked lines.
absence
The violet hatch, as a mark. Lines break at a missing point; they are never interpolated across it.
animation
false. Data changes; it does not move.
Confirmed-action button — Boiler Room only
Shown here as a style reference; the only place in the product where a click changes anything.
{{ drawer.family }} × {{ drawer.timeframe }}
{{ drawer.title }}
Not found
{{ drawer.label }}
{{ drawer.reason }}
Trials
{{ drawer.cell.t }}
Survivors
{{ drawer.cell.s }}
Yield /1,000
{{ drawer.yieldVal }}
{{ drawer.sampleNote }}
★ This region has a survivor currently deployed.
Never tried. No trials recorded for this region.
{{ drawer.subtitle }}
{{ drawer.body }}
No record matches {{ drawer.query }}.
Check the hash and try again, or open the Records Office for a broader search.
Exist
{{ drawer.exist }}
Tried
{{ drawer.tried }}
Productive
{{ drawer.productive }}
{{ toastText }}