@Joseph Manion Joseph — thank you for reading the actual code rather than the README. You were right, and it's worse than an edge case, so I want to be specific. I reproduced it before changing anything: `calcVWAP` read the wall clock, so on cached history it returned null, and the assertion treated null as a pass and left VWAP out of the throw. Every run printed a green VWAP tick without comparing anything, while the README said it refused to report on divergence. I then ran the old assertion against injected faults: it didn't throw for a null VWAP, and didn't throw for a VWAP that was 50% wrong. (The underlying math turned out to be fine — 250/250 sampled points agree to floating-point precision — so the check was empty, not the calculation. But that's not much comfort for a guarantee I'd advertised.) Fixed: VWAP takes an as-of time, null counts as failure, every indicator can throw, and there are now mutation tests that break each implementation on purpose and assert the harness notices. Also fixed from your list: mark-to-market drawdown including intrabar extremes, open-position handling at end of data, timestamp-based portfolio alignment, and dividend-adjusted ETF data. On the last one, a small precision: Yahoo's plain close is already split-adjusted, so it was dividends that were missing — ~3.5pp/yr for TLT, which changed my ETF numbers materially. Neither test universe had an actual date gap, so the alignment fix changed no published figure. Your hash suggestion is in too: strategy.js's sha256 is now printed by every backtest and stamped on every live decision log, so the shared-code claim is checkable without publishing the bot. Not addressed yet: close-based stops (matches a cron-driven bot, not a resting broker stop), lot sizes, and a formal walk-forward split — all listed in the README, along with a correction log.