From 5399e981530b49d8885506aa893235f0610febc0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 17 May 2026 07:28:43 +0000 Subject: [PATCH] docs(post-v1.2): record v1.2.0-phase4.5 ship + next-deliverable triage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the two header docs (CLAUDE.md + PHASE_STATUS.md) that contributors and Claude alike read first, so post-v1.2 context is current: - Latest release tag: 1.0.0 (stale) → v1.2.0-phase4.5 - Production commit: e57f09cb (incorrect — that was a chore commit; the ship commit is b1588b2a) → b1588b2a - "Next deliverable: tag v1.2.0-phase4.5" → tag is shipped; next is now a triage between 4.5e / 4h-4k / Phase 5 with effort estimates and which slots are already reserved PHASE_STATUS.md header section trimmed from "current focus = Phase 4 4f-implementation-next" to the post-v1.2 state with a 6-line header pointing at issue numbers + the per-phase blocks below for detail. Mirrors the same tightening done in CLAUDE.md. Two new issues filed post-tag (Phase 4.5 follow-ups, both non-blocking): - #103 — loss_avoidance_pattern fires 0% on S&P 500 (Burgstahler- Dichev 1997 cohort thresholds too tight for large-cap universe); follow-up to PR #97 (Phase 4.5d). Recommended fix: Option A (universe-scaled thresholds: NI ≤ $25M, EPS ≤ $0.25) once PR 4b §2 PBO/DSR backtest harness is wired into a calibration loop. - #104 — Tag-naming inconsistency: 1.0.0 sits off-pattern relative to the v0.X-phaseN / v1.2.0-phase4.5 family; recommended fix: Option A (add v1.0.0-phase3e as a sibling alias tag, do not delete 1.0.0). Pure housekeeping. No code changes — pure docs / metadata. Verification: - ruff check . → All checks passed - pytest -m "not network" → 856 passed (no regressions) https://claude.ai/code/session_015649aRyi2bvciQYZVNACd2 --- CLAUDE.md | 34 +++++++++++++++------------------- PHASE_STATUS.md | 40 +++++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 150c1fbb8..abcb22d97 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,25 +97,21 @@ version caveats. ## Phase status -Current schema: **`0.8.0-phase4.5f`** (4.5f bumped via 5 additive -optional fields: `manipulation_index` + `composite_score_adjusted` -on `StockSummary` + `StockDetail` + `manipulation_components` dict -on `StockDetail`). Defense layer: **17** (7 active vetoes + 10 -annotates + 5 numerical guards + `manipulation_index` rollup). -Latest release tag: `v1.0.0` (2026-05-14); **tag `v1.2.0-phase4.5` -ready to cut**. Phase **4.5f merged 2026-05-17** (PR #100) — -**Phase 4.5 cluster ✅ complete**. Production verified run #51 -(commit `e57f09cb`, warm-cache 5m14s). Test suite: 856 offline + -17 `@network`. - -**Next deliverable**: tag `v1.2.0-phase4.5` → then **Phase 4.5e** -(Form 4 insider clustering — `insider_sell_cluster` + -`c_suite_unusual_sell`, ~420 LOC, new SEC parser, ~3 weeks; reserved -weight slots already declared in `FLAG_WEIGHTS` so the integration -is a one-line uncomment). Factor integrations **4h/4i/4j/4k** -(OSAP / JKP / Qlib / IPCA) run in parallel — disjoint code paths, -share the PR 4b §2 PBO/DSR gate. Tag `v1.1.0-phase4` after 4h-4k -land; `v1.3.0` after 4.5e. +Current schema: **`0.8.0-phase4.5f`** · Defense layer: **17** +(7 active vetoes + 10 annotates + 5 numerical guards + +`manipulation_index` rollup). Latest release tag: +[**`v1.2.0-phase4.5`**](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) +**SHIPPED 2026-05-17** at commit `6d414a9b` — **Phase 4.5 cluster +✅ complete** (6 sub-PRs). Production verified run #51 +(`b1588b2a`, 5m14s warm-cache). Test suite: 856 offline + 17 +`@network`. + +**Next deliverable** (pick by appetite — three tracks parallelize): +**4.5e** (Form 4 insider, ~3w → v1.3.0) · **4h/4i/4j/4k** factor +integrations (OSAP / JKP / Qlib / IPCA, ~6w total → v1.1.0-phase4) · +**Phase 5** ML meta-learner (~10-12w, unblocks PR 4b §3 IC-decay +writer). 4.5e weight slots already declared in +`FLAG_WEIGHTS` so integration is a one-line uncomment. See [`PHASE_STATUS.md`](PHASE_STATUS.md) for the canonical chronological tracker — keep this section under 15 lines and let diff --git a/PHASE_STATUS.md b/PHASE_STATUS.md index 4cedd0ae2..80c03f0ea 100644 --- a/PHASE_STATUS.md +++ b/PHASE_STATUS.md @@ -7,22 +7,40 @@ | 2 | Fundamentals via SEC EDGAR | ✅ DONE — 2026-05-08 | | 3 | Classical features + composite + **defenses** → **v1.0** | ✅ **DONE — 2026-05-14** (v1.0.0 tagged + GitHub release) | | 4 | Factor consolidation (OSAP + JKP + Qlib + IPCA) → **v1.1** | 🟡 IN PROGRESS — 4a-4g + 4c.1/4c.2/4c.3 + PR 4b §1+§2 all merged; PR 4b §3 IC-decay output deferred to Phase 5; **next: 4h / 4i / 4j / 4k factor integrations** (PBO/DSR gate ready), can run in parallel with Phase 4.5 | -| **4.5** | **Earnings-manipulation defense cluster** → **v1.2** | ✅ **DONE 2026-05-17** (PRs #89/#90/#91 + #93 + #95 + #97 + #100). Active vetoes **5 → 7**; defense layer **9 → 17** (= 7 vetoes + 10 annotates). 4.5f adds `manipulation_index` (0-100 rollup) + `composite_score_adjusted` (soft penalty, max 10 pts, informational only) + `ManipulationRiskCard` UI + schema bump **`0.7.1-phase4g` → `0.8.0-phase4.5f`**. Production verified run #51 (`e57f09cb`, 5m14s warm-cache): card fires on 158/502 (31.5%); HIGH band 2 (SMCI=84 · WAT=64), MODERATE 60, LOW 96. Tag **`v1.2.0-phase4.5`** ready to cut. | +| **4.5** | **Earnings-manipulation defense cluster** → **v1.2** | ✅ **DONE 2026-05-17** — **tag [`v1.2.0-phase4.5`](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) cut** at commit `6d414a9b`. 6 sub-PRs (#89/#90/#91 + #93 + #95 + #97 + #100). Active vetoes **5 → 7**; defense layer **9 → 17** (= 7 vetoes + 10 annotates). 4.5f adds `manipulation_index` (0-100 rollup) + `composite_score_adjusted` (soft penalty, max 10 pts, informational only) + `ManipulationRiskCard` UI + schema bump **`0.7.1-phase4g` → `0.8.0-phase4.5f`**. Production verified run #51 (`b1588b2a`, 5m14s warm-cache): card fires on 158/502 (31.5%); HIGH band 2 (SMCI=84 · WAT=64), MODERATE 60, LOW 96. 4.5e Form-4 insider clustering **deferred to v1.3.0** — reserved-slot weights already declared in `FLAG_WEIGHTS`. | | 5 | ML meta-learner (Triple-Barrier + Meta-Labeling + Conformal) + SHAP | ⚪ not started | | 6 | Sentiment v2 (FinBERT + Whisper + 8-K Lazy Prices) | ⚪ not started | | 7 | Regime + portfolio (Student-t HMM + NCO + TDA) → **v1.5** | ⚪ not started | | 8 | Universe expansion (S&P 1500) | ⚪ not started | -**Current focus**: Phase 4 in flight — **4a → 4e merged** (cache + -ROE fix + UX trio backend) across PRs #58-72; **4f price-chart-enhancements -implementation** next per locked sequencing in -[`.claude/skills/phase-4/v1-to-v1-1-migration/PLAN.md`](.claude/skills/phase-4/v1-to-v1-1-migration/PLAN.md). -Production data still on schema `0.6.0-phase3d` (4d / 4e additive -schema fields didn't bump the constant — `recommendation` + `loss_chance_pct` -ride at the existing version per `v1-to-v1-1-migration/PLAN.md`'s -additive-only-within-major rule). Run #32 `b5bc65f3` was the v1.0.0 -shipping snapshot; latest production run is `e47fa37e` (2026-05-15 -weekly compute reflecting 4d + 4e fields). +**Current focus**: **🎉 v1.2.0-phase4.5 SHIPPED 2026-05-17** — +[release](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) +at commit `6d414a9b`. Production schema `0.8.0-phase4.5f`; latest +production run is `b1588b2a` (run #51, 5m14s warm-cache). + +**Next deliverables** (parallelizable, pick by appetite): + +1. **4.5e — Form 4 insider clustering** (~420 LOC, ~3 weeks) — + `insider_sell_cluster` + `c_suite_unusual_sell` annotates; + reserved-slot weights already in `compute/scoring/manipulation_ + index.py::FLAG_WEIGHTS` so integration is a one-line uncomment. + Tag `v1.3.0` after merge. +2. **4h / 4i / 4j / 4k — Factor integrations** (OSAP / JKP / Qlib / + IPCA, ~6 weeks total) — each gated by PR 4b §2 PBO/DSR. + Disjoint code paths from 4.5e so can ship in parallel. Tag + `v1.1.0-phase4` after all four merge (back-numbered relative to + v1.2.0 since factor work was originally Phase 4 scope). +3. **Phase 5 — ML meta-learner** (~10-12 weeks) — LightGBM + + Triple-Barrier + Meta-Labeling + Conformal Prediction; also + unblocks PR 4b §3 IC-decay writer (issue #75). + +**4 open Phase 4+ issues**: #15 (fundamentals throttling) · #41 +(Next.js 14 → 16 CVEs) · #67 (Damodaran CoE Phase 5+) · #75 (PR 4b +§3 — Phase-5-blocked) · #103 (loss_avoidance universe mismatch, +filed post-v1.2) · #104 (tag-naming inconsistency, filed post-v1.2). + +**Earlier phase history below** — keep this header section under +20 lines and let the per-phase blocks own the detail. **Phase 4 sub-PR progress** (2026-05-14 → 2026-05-15):