No Strategy Factory campaign artifacts in this checkout — the A6+ campaigns are produced by the multi-market research lane and will be indexed here automatically once their artifacts are present.
Blocker resolved
9 of 9 shown, newest firstBlocker resolvedBLOCKER-5 resolved2026-09-12
Three separate, real bugs, all the same root pattern (recompute a zone's full since-creation/since-confirmation history from scratch on every call instead of resuming from the last evaluation), found via a local synthetic profiling script (scripts/profileFeedCandleBreakdown.ts, method-level timing on StrategyEngine.prototype) rather than more inference from production logs alone: (1) StrategyEngine.findMeaningfulTou…
research-output/campaign-state.json
Blocker resolvedBLOCKER-6 resolved2026-09-12
(1) Confirmed via both runs' real job logs that chunk4 genuinely ran as its own separate, successful GitHub Actions run (34671642560, not 34671641610) -- 13/150/93 rows persisted under sourceRunLabel=phase-c-backfill-chunk4, own checkpoint saved. No data was ever missing; purely a display bug, now corrected in campaign-queue.json. (2) Real gap confirmed: chunk3 (55min) and chunk4 (51min) both cold-bootstrapped and s…
research-output/campaign-state.json
Blocker resolvedBLOCKER-7 resolved2026-09-12
It is NOT a fixed constant -- it must exactly match whatever RESEARCH_BIAS_MAP_END_DATE the specific checkpoint being restored FROM used when it was saved. fingerprintManualBias (engine.ts) hashes every [date, bias] entry in the manualBiasByDate map built by buildLliterHEngineBiasMap (lib/sessionBias/litterhDailyBias.ts) over ALL candles up to that cutoff -- a wider or narrower cutoff strictly changes the map's entr…
research-output/campaign-state.json
Blocker resolvedBLOCKER-8 resolved2026-09-12
Root cause: biasMapEndDate=2024-03-26 (chunk6's own real cutoff, per BLOCKER-7's fix) meant every day in chunk7 onward's OWN date range (2024-03-27+) had no manualBiasByDate entry -- manualSessionBias is null for a day with no entry, and sessionStatus fails closed to WAITING_FOR_SESSION_BIAS, which blocks all setup discovery for that day (engine.ts's own doc comment on manualSessionBias/sessionStatus). The chunks we…
research-output/campaign-state.json
Blocker resolvedBLOCKER-9 resolved2026-09-12
Root cause CONFIRMED via direct heap measurement (scripts/profileCheckpointMemory.ts, a new local-only read-only diagnostic script), not just static code reading. `SetupRecord.research.selection.byTimeframe` (LiquidityTargetSelection's per-timeframe search detail, from selectLiquidityTarget/select.ts) retains EVERY pivot-derived liquidity pool ever detected for that timeframe, swept or not -- an unbounded list whose…
research-output/campaign-state.json
Blocker resolvedBLOCKER-2 resolved2026-09-11
Partially resolved: detectPivots() re-scanning the entire closed-bar history from scratch on every one of ~8 calls/setup was a real, verified inefficiency (128.6x speedup fixed with detectPivotsIncremental), but the retry still crashed with a genuine heap OOM -- the pivot-detection fix was NOT the actual root cause of the crash. See BLOCKER-3 for the real cause (setup.research memory retention). — Phase C chunk1 fai…
research-output/campaign-state.json
Blocker resolvedBLOCKER-3 resolved2026-09-11
Yes on both counts. StrategyEngine.setups (engine.ts:1005) is append-only and never pruned, and every setup's .research field permanently retains a full copy of the current liquidity-pool lists, which grow as history accumulates -- genuine O(setups x pools-at-time) memory growth. Fixed with an opt-in pruneOutOfRangeResearch flag on computeHistoricalAuditReport that nulls a terminal setup's .research once its session…
research-output/campaign-state.json
Blocker resolvedBLOCKER-4 resolved2026-09-11
Yes. aggregateClosedBars() (lib/strategy-engine/aggregation/timeAggregate.ts) returned `entry.closed.slice()` -- a full defensive copy of the entire accumulated closed-bucket array on every call, even though the incremental aggregation itself was already correctly cached by array identity. This function is called every candle, per structure timeframe (2M/3M/5M), for every candidate in WAITING_FOR_DISPLACEMENT/WAITIN…
research-output/campaign-state.json
Blocker resolvedBLOCKER-1 resolved2026-09-10
1,513,220 rows, June 2022 through 2026-09-10 (present), continuous across all 5 years — see marketCandleCoverage above. No import gap; Phase C is a replay/extraction question, not a data-acquisition question. — How much historical 1-minute MNQ data actually exists / is importable beyond the ~2022-06 to 2023-07 window prior research had reached?
research-output/campaign-state.json