Follow-up to #501 (Track A of the backtest speed-and-trust design). The plan's
Final verification tables have their local columns filled and their prod
columns deliberately blank, because prod is the only place Neon DDL and
connection setup exist at all — locally every store resolves to its SQLite twin,
which nothing in that PR guards, so a local before/after of ATL_BACKTEST_WORKER
measures exactly zero.
Two readings, both from the deploy that ships #501.
1. Pre-change baseline — the parent's own boot. Open the Render deploy log for
srv-d7lbmpjbc2fs73bcr6t0 and grep 'backend: schema init'. The parent is never a
worker, so it runs every store's DDL against the same Neon databases the child used
to: eleven timed lines, six of which name the twins a child constructs. Those six are
the round trips the child no longer pays. Note which line is preceded by
🏊 pg pool created for … — that store's figure carries the cold handshake for its
URL and the later stores on the same URL do not.
2. After — the child. Launch one onboarding backtest and grep the same log for the
child's schema init skipped (backtest worker) lines and its ⏱ phase /
spawn+interpreter … lines. Expect six skip lines (the six twins its import graph
builds, not eleven) and schema DDL 0.00s in the starting split.
⚠ Do not race a live poll for the phases: /backtest/status exposes phases[]
only while the run is in flight, and the parent unlinks the progress file the moment
it ends (backtests.py:1993). The child prints every transition to stdout and the
parent dumps that into the service log under === BACKTEST SCRIPT OUTPUT ===
(backtests.py:1773), head+tail bounded at 32k each — these lines are at the head, so
truncation cannot eat them.
How to read the result: the child's zero is a check, not a saving — it says the
flag fired. The saving is the parent-boot column. Five skips plus a sixth timed line
means the flag failed to reach one twin, which is exactly the case the timed direction
exists to make visible.
Local numbers already recorded, for comparison: the import probe counts 107
statements over 6 _init_schema calls before vs 0/0 after; and the dark window
is ~21s of which ~86% is loading_bars, not schema — so do not expect this to be
large in wall-clock terms. The point is to confirm the flag fires in production and to
put a real number on what the parent pays.
Fill both tables in docs/superpowers/plans/2026-09-20-backtest-visible-start.md and
commit on a fresh branch — never on feat/backtest-visible-start after #501 merges
(commits behind a merged PR orphan silently).
Follow-up to #501 (Track A of the backtest speed-and-trust design). The plan's
Final verification tables have their local columns filled and their prod
columns deliberately blank, because prod is the only place Neon DDL and
connection setup exist at all — locally every store resolves to its SQLite twin,
which nothing in that PR guards, so a local before/after of
ATL_BACKTEST_WORKERmeasures exactly zero.
Two readings, both from the deploy that ships #501.
1. Pre-change baseline — the parent's own boot. Open the Render deploy log for
srv-d7lbmpjbc2fs73bcr6t0andgrep 'backend: schema init'. The parent is never aworker, so it runs every store's DDL against the same Neon databases the child used
to: eleven timed lines, six of which name the twins a child constructs. Those six are
the round trips the child no longer pays. Note which line is preceded by
🏊 pg pool created for …— that store's figure carries the cold handshake for itsURL and the later stores on the same URL do not.
2. After — the child. Launch one onboarding backtest and grep the same log for the
child's
schema init skipped (backtest worker)lines and its⏱ phase/spawn+interpreter …lines. Expect six skip lines (the six twins its import graphbuilds, not eleven) and
schema DDL 0.00sin thestartingsplit.⚠ Do not race a live poll for the phases:
/backtest/statusexposesphases[]only while the run is in flight, and the parent unlinks the progress file the moment
it ends (
backtests.py:1993). The child prints every transition to stdout and theparent dumps that into the service log under
=== BACKTEST SCRIPT OUTPUT ===(
backtests.py:1773), head+tail bounded at 32k each — these lines are at the head, sotruncation cannot eat them.
How to read the result: the child's zero is a check, not a saving — it says the
flag fired. The saving is the parent-boot column. Five skips plus a sixth timed line
means the flag failed to reach one twin, which is exactly the case the timed direction
exists to make visible.
Local numbers already recorded, for comparison: the import probe counts 107
statements over 6
_init_schemacalls before vs 0/0 after; and the dark windowis ~21s of which ~86% is
loading_bars, not schema — so do not expect this to belarge in wall-clock terms. The point is to confirm the flag fires in production and to
put a real number on what the parent pays.
Fill both tables in
docs/superpowers/plans/2026-09-20-backtest-visible-start.mdandcommit on a fresh branch — never on
feat/backtest-visible-startafter #501 merges(commits behind a merged PR orphan silently).