# Week ending 2026-07-31

<!-- LEMONADE:RUN-SNAPSHOT:START -->
_Auto-generated weekly entry (2026-07-25 to 2026-07-31), appended by `scripts/ops/append_research_journal_local_llm.py` on 7 August 2026. Only the content between the `LEMONADE:RUN-SNAPSHOT` markers is regenerated; anything I add outside them is kept._

This week the pipeline ran six times: three cycles completed and three failed, so the nightly builds were unstable and I treated the failures as the first thing to chase. The week's work concentrated on data-integrity repairs rather than new research.

**Pipeline runs this week**

- The full nightly of 31 July 2026 — failed.
- The nightly of 30 July 2026 — failed.
- The nightly of 29 July 2026 — completed.
- The nightly of 28 July 2026 — completed.
- The weekly parameter sweep of 26 July 2026 — completed.
- An off-cycle run of 26 July 2026 — completed.

**What I worked on**

The largest thread was a price-data repair. The end-of-day price feed had been pulling an endpoint that returned no adjusted close, leaving the adjusted-close column null on roughly 28% of the price fact table; I rewired it to the dividend-adjusted endpoint and its dedicated transfer object, and the one-time backfill on the corrected feed recovered the bad rows — from about 9.0 million nulls down to 275 thousand. Alongside that I hardened the nightly's end-of-day self-heal: forward gaps now take priority over deep-history extension in the gap-fill plan, and the per-night gap-fill cap was raised from 10 to 20 so a multi-day outage clears on its own.

Smaller items: I wired the earnings-surprise factor through to the backtest feature export via a point-in-time as-of join; graduated the forward-return label-mask (denominator-validity) switch to on after confirming it was a no-op on live data; added nine macro-series ingestion blocks on a shared observation transfer object and a mergers-and-acquisitions dataset; consolidated the three duplicate deep-run mode sets onto one canonical set; fixed a French-momentum reference-CSV parsing bug and a fiscal-versus-calendar quarter mis-pairing in the point-in-time filing audit; and captured the cross-check findings against the published academic factor returns. A batch of backlog items closed across documentation, tests, and chores in support of these.
<!-- LEMONADE:RUN-SNAPSHOT:END -->
