From 7c948f67357a53a0dab55bbf309964fe00f2e341 Mon Sep 17 00:00:00 2001 From: chenxi Date: Mon, 5 Oct 2026 12:20:55 +0800 Subject: [PATCH] release: v0.13.26 --- CHANGELOG.md | 4 +++- VERSION | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- web/package.json | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 720e38d8..57b9cc30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,14 @@ version in lockstep (enforced by `scripts/release/version_sync_check.py`). ## [Unreleased] +## [0.13.26] — 2026-10-05 + + ### Changed - **The data gap healer's 1,154-line `worker/jobs/data_gap_adapters.py` splits by role (Wave 7b).** `data_gap_heal_context.py` holds `RequestBudget`, `HealContext`, `HealSpec` and `_beat`; `data_gap_heal_runners.py` holds the `_run_*` writers, `_eventlog_heal` and `_replay_run_single_stock`; `data_gap_adapters.py` keeps only `HEAL_SPECS` and `run_refresh_adapters`; `data_gap_executor.py` holds `_verify_covered`, the dispatchers, `_verify_and_mark` and `execute_run`. Imports run one way (context ← runners ← adapters ← executor) and there is no re-export shim, so every importer now names the new home. The two test monkeypatches follow the module that looks the name up: `_verify_covered` on `data_gap_executor`, `_replay_run_single_stock` on `data_gap_heal_runners`. Function bodies are unchanged. No runtime behaviour changes. - The worker scheduler's last 38 inline `add_job` sites (42 jobs) moved out of `worker/scheduler.py` into four job families under `worker/schedule/`: `vrp.py` (11), `surface.py` (8), `ops.py` (5) and `market_data.py` (14: 13 jobs plus the loop that registers the 5 UW historical-alpha captures). Each block keeps its role guard, and the scheduler-jobs golden is byte-identical for every role. `scheduler.py` goes from 1115 to 191 lines; `main()` now holds only settings, the schema gate, the failure listener, the heartbeat and start. No job, trigger or schedule changed. (Wave 7a) - Docs follow the architecture remediation: README drops the removed Codex/Claude CLI prerequisites; `api/CLAUDE.md` points request/response models at `uw_scan.models` (the old `api/schemas.py` and `api/models/` are gone); `src/uw_scan/CLAUDE.md` describes the per-concern `config/` modules and `EnvVar`; the R2 boot guard and the WGC central-bank job now name the modules that hold them. - ## [0.13.25] — 2026-10-05 diff --git a/VERSION b/VERSION index 841fbff3..4485c101 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.13.25 +0.13.26 diff --git a/pyproject.toml b/pyproject.toml index 56161936..4709fadf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "uw-scan" -version = "0.13.25" +version = "0.13.26" description = "Streamlit opportunity scanner for Unusual Whales data" requires-python = ">=3.11" dependencies = [ diff --git a/uv.lock b/uv.lock index eb0e9ec4..563e9314 100644 --- a/uv.lock +++ b/uv.lock @@ -2723,7 +2723,7 @@ wheels = [ [[package]] name = "uw-scan" -version = "0.13.25" +version = "0.13.26" source = { editable = "." } dependencies = [ { name = "apscheduler" }, diff --git a/web/package.json b/web/package.json index 2992a830..4cdb898a 100644 --- a/web/package.json +++ b/web/package.json @@ -1,7 +1,7 @@ { "name": "uw-watchlist-web", "private": true, - "version": "0.13.25", + "version": "0.13.26", "type": "module", "scripts": { "dev": "next dev --port 3001",