Skip to content

Swing Deck v7.9.18

Latest

Choose a tag to compare

@pinoy81 pinoy81 released this 06 Jun 06:52

What changed since v7.7.1

  • chore: gitignore v7.9.x runtime corpus + state files
  • v7.9.18 — restyle the Reality-vs-Projection log to the Weekly Performance look
  • v7.9.17 — auto-fill the Reality-vs-Projection log from the Friday report
  • v7.9.16 — auto weekly performance log from the Friday report
  • v7.9.15 — harden the open-orders fetch: last-known-good cache + quiet timeouts
  • v7.9.14 — register breakout signals for the corpus soak (§A.7 + drift-whitelist + climate join)
  • v7.9.13 — breakout-screening chips (deepvue gap-fill): 5 row chips + market-env tile
  • v7.9.12 — index-trend market-environment gate (deepvue breakout gap-fill §3)
  • v7.9.11 — breakout-screening signals (deepvue gap-fill): 5 descriptive-only price-action primitives
  • v7.9.10 — widen the scanner net (russell1000 + TER/CRWD) + fix regime-gate dedup TZ bug
  • v7.9.8 — fix: regime-gate dedup now survives /admin/restart
  • v7.9.7 — Regime-adapted gate (READ-ONLY): 🔓 RELAX chip + corpus
  • v7.8.371 — Pre/post-market movers panels (Morning-Mode add-on)
  • v7.9.6 — auto-clear a broker-confirmed-gone position (#184)
  • v7.9.5 — guard stopOut against double-counting broker-executed exits (#183)
  • v7.9.4 — debounce the 7% drawdown trigger (settlement-lag phantom guard)
  • v7.9.3 — surface StorageManager read-side integrity/parse failures
  • v7.9.2 — Infinity-in-JSON guard (dashboard-breaking, caught LIVE)
  • v7.9.1 — cash-override freshness-key fix (v7.8.314 was dead since written)
  • v7.9.0 — ADR% (Average Daily Range) metric · Qullamaggie gap-close
  • v7.8.370 — 🌅 MORNING MODE: execution-window filter for the first 75 min
  • v7.8.369 — Split closed_overnight from closed_after_hours
  • v7.8.368 — Watchlist row noise cleanup (3 small fixes)
  • v7.8.367 — H2 absorption_pattern wiring + corpus persistence
  • v7.8.366 — M6 BROKER_ORDERS_LOG_PATH isolation closure (+ 860-row scrub)
  • v7.8.365 — M4 tz-pin + M5 dead preview_id guard removal
  • v7.8.364 — H1 gap_cont reader fix: read from swing_ops, not top-level
  • v7.8.363 — MED triple from 2026-06-02 live audit (M2 + M7 + M4)
  • v7.8.363 — Lower-stop pipeline + corpus + dashboard ⬇ button
  • v7.8.362 — Trap coach AVOID-bucket recalibration
  • v7.8.361 — classify_intraday_session: relax threshold to catch 3-0 unanimous
  • v7.8.360 — Pattern atlas: SVG candlestick charts + /chart endpoint
  • v7.8.359a — pattern_library endpoints: parse query directly via urlparse
  • v7.8.359 — Pattern Library Phase 1: curated atlas + IBM absorption seed
  • v7.8.358 — H1 _vote_volume_pace: time-of-day denominator fix
  • v7.8.357 — absorption_pattern primitive: opening-bar institutional read
  • v7.8.356 — H2 corpus wiring: gap_continuation + gamma_squeeze_watch states persist to firehose
  • v7.8.355 — Stop-locked Open Risk hero + heatmap
  • v7.8.351→354 — Four-chip synthesis arc (PILLAR · STOPS · READINESS · BRIEF)
  • v7.8.350 — STOP → FRAMEWORK SL on the OTHER audit card template
  • v7.8.349 — Three fixes for audit-card vs portfolio-row discrepancies
  • v7.8.348 — volume_pace hotfix: indicators key is vol_avg
  • v7.8.347 — Phase 1 accumulation/distribution day classifier
  • v7.8.346 — Audit-card label clarity: Volat vs Volume
  • v7.8.345 — guard_defend_bounds — preflight accepts defend-mode tightens
  • v7.8.344 — Defend chip → raiseStopModal (one-click to broker modify)
  • v7.8.343 — Defend Phase 1: multi-signal stop-tighten suggestion chip
  • v7.8.342 — ORB Phase 1: 15-min intraday + opening_range_break wiring
  • v7.8.341 — Document + pin v7.8.338 STOP cancel-and-replace fix
  • v7.8.340 — polygon_data AH fetcher uses MOST RECENT AH window
  • v7.8.339 — Signal cell reflects non-HOLD bias on held rows
  • v7.8.337 — Two false-positive guards on _recentlyClosedFor
  • v7.8.336 — Phases A+B+C of "exit-on-accumulated-vetoes" question
  • v7.8.335 — PM + AH chips inline on portfolio tracker row
  • v7.8.334 — 🛡 STOP CTX + 🚫 VETOES chips extend to candidates + modal
  • v7.8.333 — AH last-print persists overnight + weekend
  • v7.8.332 — 🚫 VETOES N chip on held portfolio rows
  • v7.8.331 — Stop Placement Context chip (🛡 STOP CTX) on portfolio rows
  • v7.8.325→330 — EOD bug-sweep #2: 14 real fixes across 6 batches
  • v7.8.324 — verify-tracker per-stream freshness check
  • v7.8.323 — surface v7.8.319/.320 broker events as dashboard toasts
  • v7.8.322 — Open Risk defensive whitelist + LOW cleanup
  • v7.8.321 — medium-priority audit cleanup bundle
  • v7.8.320 — reconciler robustness: suspicious-drift ceiling + shared cooldown
  • v7.8.319 — broker_state_delta_detector + cash_activity journaling
  • v7.8.318 — silent-failure guard on broker place + PLACE_STOP verify wiring
  • v7.8.317 — Open Risk hero excludes is_cash rows
  • v7.8.316 — first-poll race fix on the v7.8.315 hero NAV
  • v7.8.315 — hero NAV reads broker truth (netAccountValue), not Σ positions × Polygon
  • v7.8.314 — /portfolio/positions/sync defers to broker truth on cash
  • v7.8.313 — auto-reconcile local cash to broker truth + resolve current drift
  • v7.8.312 — Phase 0 ceiling + sl noise rejection
  • v7.8.312 — grade-boundary hysteresis + entry-recency dampener
  • v7.8.311 — first-poll false-NAKED fix
  • v7.8.310 — gap_continuation shadow-parallel capture (Option A)
  • v7.8.310 — quiet ^KS11 / intl-prefix WARN spam
  • v7.8.309 — raiseStopModal places fresh SELL STOP on naked positions
  • v7.8.308 — Phase 0 raise-stop OVERRIDE on swing-ops modal
  • v7.8.307 — NAKED chip self-heals via force-poll on render
  • v7.8.306 — corpus drift-guard: 5 options-sleeve type-flip siblings to skip-list
  • v7.8.305 — fix test-fixture leak polluting broker_orders.log
  • v7.8.304 — PM no-data renders "PM —", not misleading "PM +$0.00 · 0.00%"
  • v7.8.303 — extend PM visibility from 09:00 → 09:25 ET (per user ask)
  • v7.8.302 — premarket audit: pre_volume semantic doc drift
  • v7.8.301 — WAIT label names the failing weekly alignment leg
  • v7.8.300 — broker readiness: 2 stale-check false negatives fixed
  • v7.8.299 — broker_state_fetcher: cache-poison guard + retry on partial response
  • v7.8.298 — Catalyst gate: 1-of-3 elevation for high-conviction analyst news
  • v7.8.297 — journal: surface row.persisted=false in submit toast
  • v7.8.296 — Non-destructive avgPrice preservation in sync merge
  • v7.8.295 — Readiness color on the enriched WAIT chip
  • v7.8.294 — ⚡ Arm button suppresses when alert already armed at target
  • v7.8.293 (#4 sweep MEDs) — 8 bugs from 4-agent parallel deep audit
  • v7.8.292 (#4 sweep HIGHs) — 7 bugs from 4-agent parallel deep audit
  • v7.8.292 follow-ups — behavioral journal CHANGELOG + Reflect-button tests
  • v7.8.292 — Click-to-fill on "→ sugg $X.XX" stop hint
  • v7.8.291 — calibration review: one-shot aggregator for scheduled reviews
  • v7.8.291 — bump APP_VERSION (Phase 3 ship sync)
  • v7.8.291 — Watchlist Phase 3: ⚡ Arm-at-entry button in ACTIONS column
  • v7.8.290 — behavioral journal: prior-on-this-ticker panel
  • v7.8.289 — wash provenance badge: CSV/AUTO/MANUAL chip on each row
  • v7.8.288 — Watchlist row math triangle: suggested stop + TP1 inline
  • v7.8.287 — end-to-end smoke for the wash sale arc
  • v7.8.286 — WAIT-row chip enrichment: actionable entry price + distance
  • v7.8.285 — retire orphan wash_sale_tracker.py (465 LOC, never imported)
  • v7.8.284 — Harvest panel: click-to-sell button per candidate
  • v7.8.283 — behavioral journal: post-trade reflection capture
  • v7.8.282 — Gap 4: merge server-detected wash sales into journal
  • v7.8.281 — Gap 3: live wash-sale detection at fill time
  • v7.8.280 — Gap 2: tax-loss harvest panel + /tax/harvest endpoint
  • v7.8.279 — Gap 1: pre-trade wash sale gate
  • v7.8.277 — Path A polish: options monitor (assignment radar + roll surface)
  • v7.8.276 — Path A Phase 5: portfolio Greeks aggregation
  • v7.8.275 — Path A Phase 4: /options/order/place real-broker endpoint
  • v7.8.274 — Path A Phase 3: equity↔options integration chip
  • v7.8.273 — Path A Phase 2: options calibration view + pillar predictiveness
  • v7.8.272 — Path A Phase 1B: options outcome resolver
  • v7.8.271 — Path A Phase 1A: options corpus capture loop
  • v7.8.270 — corpus optimization for 6/11 Phase 2 review
  • v7.8.269 — fix(broker): /broker/readiness tz-naive vs tz-aware crash
  • chore(gitignore): cover v7.8.266 state files (promote_log + shadow_signals.lock)
  • v7.8.268 — L2 fix: loosen resolver guard (was deferred in v7.8.267)
  • v7.8.267 — 5 LOW-priority bugs from per-system sweep + edge tests
  • v7.8.266 — 8 MEDIUM bugs from per-system bug sweep
  • v7.8.265 — 5 HIGH-priority bugs from per-system bug sweep
  • v7.8.264 — bug sweep remainder: 7 MEDIUM + 1 LOW + 1 cleanup
  • v7.8.263 — bug sweep: 4 CSRF + path-traversal + thesis race
  • v7.8.262 — investor sleeve runway Phase 2 + log-noise cleanup
  • v7.8.261 — §A.7 promotion gate uses distinct setups, not rows (H3 dedup)
  • v7.8.260 — chore: replace deprecated datetime.utcnow() (Python 3.14)
  • v7.8.259 — cleanup: 3 bugs surfaced by the 2026-05-29 weekly audit
  • v7.8.258 — feat(alerts): per-ticker override for the §A.7 cohort soak-clocks
  • v7.8.257 — feat(alerts): setup_actionable closes the EP/BF ENTER notification gap
  • v7.8.256 — fix(catalyst): earnings_soon stuck WAITing on yesterday's print
  • v7.8.255 — fix(buy-modal): undefined t crash hung preview at "Sending…"
  • v7.8.254 — docs(legend): catch up to recent ships
  • v7.8.254 — build auto-exit RUNWAY executor (Phase 1 dry-run)
  • v7.8.253 — fix(dashboard): Legible-Veto Snapshot stuck on placeholder
  • v7.8.252 — fix(friday-report): timezone + pre-close guard
  • v7.8.251 — drift guard for shadow_signals + §A.7 docs addendum
  • v7.8.251 — corpus: ship the remaining 4 cohorts (#5, #7, #8, #9)
  • v7.8.250 — corpus: APP_VERSION bump for the 6-cohort expansion
  • v7.8.250-pre — corpus: refused_for_earnings enrichment + #4 note
  • v7.8.250-pre — corpus: orthogonal-signal enrichment fields
  • v7.8.250-pre — corpus: gap_cont narrow cohort + BF narrow geometry
  • v7.8.249 — feat(bf): symmetric BF entry-trigger capture + soak-clock
  • v7.8.248 — (A) squeeze_primed alert + (B Phase 1) gap_continuation classifier
  • v7.8.247 — feat(extended-hours): after-hours price + chip + corpus capture
  • v7.8.246 — fix(corpus): TTL-cache missed-runners + canned-name aliases
  • v7.8.245 — feat(dashboard): add SIGNAL column to the rankings table
  • v7.8.244 — feat(dashboard): compact ranking-table flags + suppress zero-CHG
  • v7.8.243 — fix(coach): show coach cost as plain dollars, not "0.30¢"
  • v7.8.242 — feat(coach): show per-call AI cost on underwrite-modal coaches
  • v7.8.241 — fix(coach): bump underwrite_skeptic max_tokens 700 -> 1100
  • v7.8.240 — fix(corpus): stack SQL examples + friendlier multi-statement hint
  • v7.8.239 — feat(corpus): time-to-resolution canned query — the censoring view
  • v7.8.238 — feat(corpus): days-open on open WAIT episodes
  • v7.8.237 — feat(corpus): missed-runner calibration view in the dashboard
  • v7.8.236 — fix(corpus): SQL console returns a clean 400 on bad SQL, not a 500
  • v7.8.235 — feat(universe): governance — throttle promotes, guard extension, evict to target
  • v7.8.234 — fix(dashboard): pre-market chip read $0.00 instead of the real gap
  • v7.8.233 — complete the investor russell1000 default (endpoint + UI fallbacks)
  • v7.8.232 — investor broad screen defaults to russell1000 + foreign large-caps
  • v7.8.231 — fix(catalyst): unify news source (Polygon+yfinance) + analyst keywords
  • v7.8.230 — fix(alerts): kill switch for the offline cloud-dispatch relay
  • v7.8.229 — feat(alerts): local ntfy phone-push (cloud-independent)
  • v7.8.228 — fix(data): Stooq apikey-gate — free quote endpoint + CSV-header guard
  • v7.8.227 — feat(investor): underwrite path from the audit-any-ticker card
  • v7.8.226 — feat(gamma): squeeze-setup watch + gamma corpus capture
  • v7.8.225 — fix(orders): send CSRF token when acknowledging an unverified order
  • v7.8.224 — feat(corpus): DuckDB query layer + dashboard console
  • v7.8.223 — feat(investor): price + margin-of-safety on the anchor/candidate cards
  • v7.8.222 — fix(server): blanket GET safety-net — graceful 500 instead of a dropped connection
  • v7.8.221 — chore: working-tree cleanup — green suite, gitignore cruft, vendor charts dep
  • v7.8.220 — feat(investor): legend covers the new screening + risk signals
  • v7.8.219 — feat(investor): legend gains the P&L color key
  • v7.8.218 — feat(investor): sleeve action-item signal on the ◈ INVEST ROOM chip
  • v7.8.217 — feat(investor): v1 polish — INTACT health coach + broad-screen theme tags
  • v7.8.216 — fix(investor): bug-sweep fixes across the sleeve (1 P0, 2 P1, 2 P2)
  • v7.8.215 — feat(investor): per-ticker anchor-screening audit card (lookup any name)
  • v7.8.214 — refactor(investor): fold cohort-concentration into the sleeve-risk panel
  • v7.8.213 — feat(investor): consolidated sleeve-risk panel (the rails at a glance)
  • v7.8.212 — feat(investor): sleeve hardening arc (coaches, living thesis, broad screen + guards)
  • v7.8.211 — feat(investor): Underwriting Skeptic — the AI coach as devil's advocate
  • v7.8.210 — feat(investor): surface the decision trail on the anchor card
  • v7.8.209 — feat(investor): decision ledger (anchor_decisions) — discipline, not calibration
  • v7.8.208 — feat(investor): "Reset card" — self-serve un-underwrite of an anchor
  • v7.8.207 — fix(investor): snapshot was on the WRONG E*TRADE account + NAV double-count
  • v7.8.206 — feat(investor): buy/add + manual trim order modals — loop closed
  • v7.8.205 — feat(investor): system-drafted thesis pre-fills the underwrite modal
  • v7.8.204 — feat(investor): underwrite flow + sizing foundation (buy/sell groundwork)
  • v7.8.203 — feat(investor): per-card action verbs in the investment room
  • v7.8.202 — feat(investor): investment room tells the story (rich cards)
  • feat(investor): enrich room data — the per-name story (signals + math)
  • v7.8.201 — feat(investor): P3-UX-c — investment-room MODE (dashboard)
  • feat(investor): P3-UX-b — GET /investor/room endpoint
  • feat(investor): P3-UX-a — investor_room.room_data() structured contract
  • v7.8.200 — feat(investor): P2-4 wired — hard-max enforced on anchor buys
  • feat(investor): P2-4 — anchor hard-max guard logic (ready, unwired)
  • fix(investor): guard PEG against TTM-only cyclical spikes
  • feat(investor): P2-3 — anchors exempt from trader auto-exits
  • feat(investor): P2-6 — investment-room v0 surface (read-only)
  • feat(investor): P2-5 — thesis-health monitor (read-only INTACT/REVIEW/BROKEN)
  • feat(investor): P2-2 — underwriting store (anchor_thesis)
  • feat(investor): P1e — investor-candidate surface (investment-room v0)
  • feat(investor): P1d — anchor_candidates selector (selection-only)
  • feat(investor): P1c — anchor_quality lens (durability re-weight)
  • feat(investor): P1b — valuation_band (Cheap/Fair/Rich/Extreme)
  • feat(investor): P1a — valuation fields in quality_fetch (P/E, PEG, earnings yield)
  • docs(investor-sleeve): lock the UX — two rooms (trading room vs investment room)
  • docs(investor-sleeve): lock the anchor-candidate rule — spec complete
  • docs(investor-sleeve): rescope Phase 1 (investor intake, not swing gate) + lock remaining Qs
  • docs(investor-sleeve): resolve the valuation leg
  • docs(investor-sleeve): resolve the hard-max numbers
  • docs: investor sleeve design memo — the compounding half of the barbell
  • v7.8.199 — feat(content): cadence covers all 4 types + channel-independent dashboard pill
  • feat(content): Phase 3 — social-snippet + Learn-lesson adapters
  • v7.8.198 — feat(content): monthly cadence — auto-draft → review queue → notify
  • feat(content): optional LLM voice-polish over locked drafts (safe by construction)
  • feat(content): blog publish adapter — md draft → AUTHORING HTML + paste snippets
  • feat(content): Phase 2 — case-study generator (one notable resolved refusal)
  • feat(content): Phase 1 — monthly "trades we refused" draft generator
  • docs(content-engine): fold in the site-content audit + sharpened scope
  • docs: content engine design memo (corpus → teaching/marketing content)
  • docs: Scout design (scanner upgrade) + tooling coverage audit
  • v7.8.197 — feat(quality/corpus): self-monitoring capture guard (quality-corpus analog of the stall guard)
  • v7.8.196 — fix(quality/corpus): capture quality into the shadow signal → outcomes carry it
  • v7.8.195 — feat(quality): Phase 1c — daily batch + corpus capture (COLLECT-NOW)
  • feat(quality): Phase 1b — fundamentals fetcher (inert, read-only)
  • feat(quality): Phase 1a — pure CAN-SLIM quality-score module (inert, capture-first)
  • v7.8.194 — feat(corpus): self-monitoring resolution-stall guard in the audit cycle
  • v7.8.193 — polish batch: tab-lock UX, FOCUS-scope guard, auto-prune proposals, lens frame-enum
  • v7.8.191 — fix(corpus): resolver no longer strands orphaned signals + soak stall-guard
  • v7.8.190 — fix(dashboard): FOCUS mode was blanking the entire Options tab
  • chore(universe): prune 5 stale auto-promoted candidates
  • v7.8.189 — fix(dashboard): UX polish — FOCUS banner, card summaries, Risk Pulse, index cold-start
  • chore(universe): pin VRT + CEG anchors — exempt from score-based prune
  • v7.8.187 — perf: gate Alpha Vantage out for index/futures (completes v7.8.184)
  • v7.8.186 — feat(shadow-corpus): capture authorized signals + fix chronological resolver plumbing
  • v7.8.184 — perf: Alpha Vantage rate-limit breaker + watcher verbose=False
  • v7.8.183 — fix(dashboard): stop the FOCUS loading banner getting stuck
  • v7.8.182 — feat(corpus): persist within-sector RS rank (promote from skip-list)
  • test(corpus): union-sample the drift guard across all rows (fixes eff1348 intermittency)
  • v7.8.181 — feat(corpus): persist news-sentiment derived scalars (collect-now)
  • v7.8.180 — feat(scanner): propose sector-map at promote time (retires the auto-promote→sector-map loop)
  • chore(sector-map): map UNH/SNDK/IBM/CPRT + RL allow-list (2026-05-22 promotes)
  • v7.8.179 — fix(catalyst): unify volume-spike on canonical projected vol_ratio
  • v7.8.178 — fix(swing-ops): full-history feed for bull-flag/EP detectors
  • fix(corpus): classify informational 'sentiment' field in v7.8.174 drift guard
  • v7.8.177 — feat(tools): missed-runner corpus scan (WAIT-then-TP1-hit finder)
  • v7.8.175 — fix(shadow): chronological TP/SL resolution (was order-blind)
  • v7.8.174 — fix(corpus): close whitelist drift + add structural drift guard
  • chore(git): retro-commit v7.8.170-171 source + corpus gitignore + brief
  • v7.8.173 — cleanup: sector map for DELL+COHR + fix time-of-day-dependent freshness test
  • v7.8.172 — feat(stage2): Phase 2.0 dry-run executor for 5 auto-defend actions
  • v7.8.169 — fix(buy-modals): reject entry ≤ stop in local-only paths
  • v7.8.168 — fix(sort): apply triage tier to actual Position Sizer (was missed)
  • v7.8.167 — feat(sort): action-first triage tier sort across all card surfaces
  • v7.8.166 — fix(buy-modals): inherit position sizer's planned-entry override
  • v7.8.165 — feat(ux): 5 UX-embed features merged from 4 parallel chips
  • Merge feat/legend-modal into main
  • Merge feat/first-time-tour into main
  • Merge feat/swing-ops-modal-enhancements into main
  • Merge feat/wait-chip-popover into main
  • feat(ux): Legend modal — in-dashboard chip vocabulary catalog
  • feat(ux): first-time tour — 5-step onboarding for new users
  • feat(ux): WAIT chip popover — explain partial-trigger state inline
  • feat(ux): Swing Ops modal — AUDIT GATE REFUSES banner + decision pipeline visualizer
  • docs: fix 11-point audit vs 13 pillars conflation
  • docs(blog): commit blog/images/ directory placeholder
  • docs(blog): casual-voice blog posts — DXCM walkthrough + reading-the-cards
  • docs: DXCM walkthrough + entry signal badges reference
  • v7.8.164 — fix(polygon): auth_disabled endpoint-group for 401/403 (subscription-tier gap)
  • v7.8.163 — feat(card): diagnostic tooltip on "WAIT — Weekly Unconfirmed" badge
  • v7.8.162 — fix(rr): upper sanity ceiling (DXCM 41.6:1 → 3.51:1) + lens-value-quality sub-class documented
  • v7.8.161 — fix(polygon): dedupe circuit-OPEN warning during concurrent-burst
  • v7.8.160 — feat(observability): record_compute_failure for try/except-wrapped meta computes
  • v7.8.159 — fix(tests): isolate test logging from production audit_dashboard.log
  • v7.8.158 — feat(polygon): retry + circuit-breaker on _http_get_json
  • v7.8.157 — fix(sector-map): CF + CIEN coverage for 2026-05-20 daemon promotions
  • v7.8.156 — fix(legible-veto): rs/rb NameError + restore calibration corpus flow
  • v7.8.155 — fix(bf): bull_flag phantom-reader-path closed in shadow tracker
  • v7.8.154 — feat(lens-drift): AST writer-side R:R scan + frame-marker backfill (Tier 1 of universal-fix plan)
  • v7.8.153 — fix(release-paths): gate-aware emission — R:R RELEASE chip now fires on Gate-blocker case (DXCM repro)
  • v7.8.152 — fix(ep): phantom-reader-path closed in shadow + alerts
  • v7.8.151 — fix(corpus): EP-empty cohort callout + late-feature corpus wiring
  • v7.8.150 — fix(sweep): 4 cross-process race + symmetric-pending fixes from comprehensive bug sweep
  • v7.8.149 — fix: 3 latent issues closed — R:R canonical reader, synced_at root cause, Python drift checker
  • v7.8.148 — fix(alerts): watermark-after-dispatch + absurd-positions-age defensive clamp
  • v7.8.147 — fix(regime-overlay): Yahoo-symbol key translation — regime read now matches audit_framework
  • v7.8.146 — fix(alerts): entry_armed R:R now mirrors _rrCanonical — 4th hit of same-field-different-writers closed on alerts surface
  • v7.8.145 — chore(sector-map): add DXCM (healthcare) — clears daemon-promotion test failure
  • v7.8.144 — fix(dashboard): tighten cash double-count warning — suppress false positive on real post-trade cash
  • v7.8.143 — fix(market-hours): test fixture aging + sector map for daemon auto-promotes
  • v7.8.142 — fix(broker-guard): honest divergence message — stop claiming card and broker 'SAME gate'
  • v7.8.141 — fix(hardening): pre-market defensive hardening — 4 lower-tier bug-sweep findings closed
  • v7.8.140 — fix(consideration): concurrency hardening + AZ day boundary + bulk idempotency
  • v7.8.139 — feat(consideration): install-wizard bulk-gate — opt-in framework review path for batch additions
  • v7.8.138 — feat(friday): consideration activity panel — weekly accountability for the gate
  • v7.8.137 — feat(consideration): decisions_log BUY-side join — stamp via_consideration on BUYs of promoted tickers
  • v7.8.136 — feat(consideration): retire raw-add path, gate ticker requests through framework
  • v7.8.135 — feat(alerts): entry_armed_ep alert wiring (Addendum A follow-up)
  • v7.8.134 — refactor(lens-arch): drift 21→0 + flip pre-commit to --strict
  • v7.8.133 — feat(pyramid): Addendum G Phase 1 — shadow capture for pyramid-in advisories
  • v7.8.132 — fix(regime-overlay): 4 remove guards — don't advise removing winners
  • chore(gitignore): ignore regime_overlay_preview.json — daemon-regenerated state
  • v7.8.131 — feat(regime-overlay): Addendum D — regime-aware universe overlay (Phase A preview-only)
  • v7.8.130 — feat(ep-trigger): Addendum A — EP entry-trigger inert mode + shadow corpus aggregator
  • docs(v7.9.x): Addendum G — pyramid-in design memo (4 decisions answered)
  • v7.8.129 — refactor(lens-arch): Phase 3 batch — 5 t.structure migrations + fix v7.8.117 test-stub regression
  • v7.8.128 — feat(tooling): lens-drift snapshot in pre-commit hook — informational visibility, --strict deferred until drift=0
  • v7.8.127 — refactor(lens-arch): Phase 3 batch — 5 getTradeRecommendation calls migrated to actionFor
  • v7.8.126 — refactor(lens-arch): Phase 3 batch — 5 t.tp1 text-render sites migrated to tpForDisplay
  • v7.8.125 — refactor(lens-arch): Phase 3 migrations — card SWING LEVELS TP1 + ladder-button fallback now use tpForDisplay helper
  • v7.8.124 — feat(lens-arch): Phase 3 kickoff — first renderer migration (convictionMultiplierFor) + Addendum F (sprint progress memo)
  • v7.8.123 — feat(tooling): lens_drift_check.py — programmatic guardrail for v7.9.x lens-architecture contract
  • v7.8.122 — feat(lens-arch): actionFor(t) — biggest helper, composes all action-lens info into one call
  • v7.8.121 — feat(lens-arch): tpForDisplay(t, role) canonical reader — kills v7.1.81 dual-writer
  • v7.8.120 — feat(lens-arch): Phase 2 helpers batch — convictionFor + triggerStateFor + targetSharesFor
  • v7.8.119 — refactor(lens-arch): Phase 2 migration — structure render sites use structureFor() canonical helper
  • v7.8.118 — feat(lens-arch): Phase 1 — first canonical reader helpers (structureFor) per v7.9.x Addendum E
  • v7.8.117 — chore(audit-cleanup): regime hysteresis on $100 oil boundary + intl-quiet symbol log gating + CBRS warn→info
  • v7.8.116 — fix(layout): widen audit cards so v7.8.115 'D · W:' badges fit one line — gap+padding tighten + grid breakpoint bump
  • v7.8.115 — fix(label): structure badge in PROMINENT header row gets 'D' prefix + 'W:' weekly surfacer
  • v7.8.114 — fix(label): structure badge prefixes timeframe (D · HH/HL); weekly badge surfaces actual weekly structure
  • v7.8.113 — fix(action-rec): BUY chip honors entry_trigger.ready — universal trigger-pending downgrade + v7.9.x lens-architecture memo
  • v7.8.112 — fix(modal): BUY + bracket modals default qty applies weekly-alignment reduction — match card sizer
  • v7.8.111 — fix(macro): outlier sanity gate on VIX/oil/futures — rejects spurious 4× spikes, prevents false regime transitions
  • v7.8.110 — fix(chip): R:R RELEASE relabels to TP1 TIGHT (cyan) when canonical Gate R:R already cleared — XOM repro
  • v7.8.109 — fix(action-rec): BUY chip downgrades to DAILY ONLY when weekly not aligned — XOM split-voice fix
  • universe + docs: add 5 regime-favored cohort tickers + v7.9.x Addendum D (regime-aware universe scan memo)
  • v7.8.108 — fix(journal): ST/LT classifier falls back to wt_pos3 entryDate — '?' badge on auto-logged AAPL stop-out
  • v7.8.107 — feat(alerts): held-aware tier resolution — defensive on watch downgrades to info
  • v7.8.106 — feat(action-rec): structure-intact softener for Chop Zone trim + sector-map coverage for 5 new universe tickers
  • v7.8.105 — fix(cash-events): render existing events list at top of Manage Events modal — users couldn't verify what was imported
  • v7.8.104 — feat(journal): cash events ledger — CSV import + manual entry + Cash Flows YTD tile (separate deposits from P&L)
  • v7.8.103 — feat(journal): wash-sale entries collapsable — keep at-a-glance tiles, hide row-by-row breakdown behind
  • v7.8.102 — feat(tax): inline rate editor in Tax Liability panel — adjust ordinary/LT/state without editing settings.json
  • v7.8.101 — feat(settings): GET /config/settings safe-whitelist + dashboard bootstrap — tax rates flow client-side
  • v7.8.100 — feat(journal): YTD tax-liability estimator + tax-loss harvest candidates panel
  • v7.8.99 — fix(tooltip): escape literal " in PULLBACK PLAN tooltip — Raschke 'Holy Grail' truncated at first inner quote
  • docs(blog): the Swing Deck identity — comprehensive elaboration of the four-trader synthesis
  • v7.8.98 — feat(velocity): conditional hero-strip unlock chip (Phase B of 2026-05-16 UX rework)
  • chore(repo): remove tauri-app — abandoned standalone-app build, returning to Chrome app as canonical surface
  • v7.8.97 — test(pullback): Raschke ADX gate test coverage + comment label sync
  • v7.8.96 — feat(rs): sector-relative-strength ranking — O'Neil 'L = Leader' pillar
  • docs(v7.9.x): trader-synthesis backlog — Addendum C captures Swing Deck identity + historical-data-pending items
  • v7.8.94 — fix(setup-perf): include broker-truth SELLs in Setup Performance stats
  • v7.8.93 — fix(velocity): align buy modal cap to per-card sizer + persist velocity to corpus + drop phantom 'Defensive Protocols' label
  • v7.8.93 — fix(recalc): ↻ Recalc P&L skips broker-truth entries (G&L imports / reconciled / synced)
  • v7.8.92 — feat(journal): short-term + long-term capital gains classification — ST/LT YTD tiles + per-row term badge
  • v7.8.91 — fix(dashboard): P&L renderers dropped minus sign on negatives — 7 surfaces fixed + pin test bans the pattern
  • v7.8.90 — feat(journal): decision-time intent capture (Phase A) — buy/sell/raise-stop modals gate on user_intent + auto-snapshot framework state
  • v7.8.89 — fix(dashboard): Reconcile modal "t.ts.slice is not a function" — format ms-epoch ts via helper
  • v7.8.88 — feat(slippage-corpus): server capture + aggregator for journal-broker reconciliation events
  • v7.8.87 — feat(slippage): journal-broker reconciliation pass — capture stop-fill slippage + basis drift
  • v7.8.86 — fix(dashboard): Reconcile modal stuck on "Loading snapshot…" — decouple fetch from pill paint
  • v7.8.85 — feat(friday-ritual): in-modal history browser — filter by keyword, click any past report to view/edit
  • v7.8.84 — feat(dashboard): recently-closed-ticker cooldown chip + soft buy-modal veto — defensive bias check
  • v7.8.83 — fix(dashboard): reconcile two Bull Flag detectors — relabel old chart chip + add v7.8.80 setup chip
  • v7.8.82 — fix(audit): wire regime-modifier delta + log into audit row — kill the score-modifier invisibility
  • v7.8.84 — fix(sync): per-symbol freshness guard blocks dashboard from overwriting router auto-applies
  • v7.8.83 — feat(calibration-corpus): two more capture modules — pattern_clusters_log + regime_transitions
  • v7.8.81 — feat(calibration-corpus): three new capture modules — stops_history + positions_snapshots + equity_curve
  • v7.8.81 — feat(defense): parabolic extension detection — sharpen chase_the_top trap with Kullamägi-rigorous criteria
  • v7.8.80 — feat(setup): Bull Flag / High-Tight-Flag detection (Kullamägi) — second Tier 1 setup, mirrors EP architecture
  • v7.8.80 test fix — override ROUTING_FAILURES_LOG in _reload_router so CrashRecoveryTest doesn't pollute prod
  • v7.8.80 — fix(transactions-router): SELL routing accepts signed qty + adds per-failure log + chronological batch order
  • v7.8.79 — fix(friday-ritual): read broker_snapshot.transactions_recent as second source — surface SELLs even when transactions_router silently fails
  • v7.8.79 — feat(scanner): EP-aware scanning pass — close the discovery loop for Episodic Pivot setups
  • v7.8.78 — feat(friday-ritual): surface stops + sells + raises in week activity — typed event list with per-event review judgment slots
  • v7.8.77 — feat(friday-ritual): weekly LOG/PLAN/ASSESS report — auto-data scaffold + blank judgment slots + cross-week corpus
  • v7.8.75 — feat(setup): Episodic Pivot detection (Kullamägi) — first concrete entry-trigger work per v7.9.x design memo addendum A
  • docs: addendum A to v7.9.x design memo — Episodic Pivot (Kullamägi) spec
  • v7.8.76 — cleanup(dashboard): rename pattern-cluster banner (disambiguate from per-card comparable_setups) + extract cluster thresholds to named constants
  • v7.8.75 — fix(etrade-client): force fresh TCP for OAuth flow — same bug class as v6.7.39 (/orders/preview's stale-pool 404)
  • v7.8.74 — feat(launchd): macOS LaunchAgent keeps control_server (+ audit watcher + index fetcher) running 24/7 — Day 2 complement to the Safari Add-to-Dock pivot
  • v7.8.73 — fix(etrade-client): /v1/accounts/list → /v1/accounts/list.json — E*TRADE retired the suffix-less route + broker reconcile has been silently 404ing for weeks
  • v7.8.72 — pivot(standalone-app): Safari "Add to Dock" PWA support — native Mac feel without Tauri's browser-API divergence cost
  • v7.8.71 — fix(tauri-app): on_navigation interceptor routes external links + window.location.href to system browser
  • v7.8.70 — fix(tauri-app): switch from tauri-plugin-shell to tauri-plugin-opener for window.open routing — bypasses the shell ACL scope landmine
  • v7.8.69 — debug(tauri-app): auto-open DevTools at startup so we can see the OAuth console output
  • v7.8.68 — debug(tauri-app): DevTools + on_page_load re-inject + console tracing for the OAuth flow
  • v7.8.67 — fix(tauri-app): window.open() → system browser for E*TRADE OAuth + all 7 external link sites
  • v7.8.62 — feat(tauri-app): scaffold the standalone-app shell (Day 1 — minimal Tauri 2 wrapper, 2.9 MB .app, builds in 1m 47s)
  • v7.8.66 — chore(version): catch up APP_VERSION stamp to match shipped framework state
  • v7.8.65 — feat(regime): 5-band VIX classifier + realized-vol divergence escalation — kill the CALM TRAP theater
  • v7.8.64 — feat(alerts): grade-transition Schmitt cushion — kill the 53% alert-noise from grade churn
  • docs: v7.9.x entry-trigger design memo — pin the design seed from the 2026-05-16 conversation
  • v7.8.63 — feat(regime): close stagflation framework gaps — wire DEFENSE/ENERGY/TECH_PE lists + rotation alert
  • v7.8.62 — feat(shadow): historical-backfill resolver — catch intraday TP/SL crosses sparse audit snapshots miss
  • v7.8.61 — feat(classifier): Schmitt-trigger hysteresis on setup_type — kill the AMAT flip-storm
  • v7.8.60 — feat(universe): MIN_UNIVERSE_SIZE floor in prune_universe_ticker — kill the over-prune class
  • v7.8.59 — fix(alerts): cash-inclusive concentration denominator (kills the 'AAPL 35% of portfolio' misleading copy)
  • v7.8.62 — test(dashboard-lint): widen the etradeSyncBalance window + anchor the helper-call check inside the function body, not against the button
  • v7.8.62 — polish(dashboard): tone down Portfolio Cash headline — 20px → 14px to match the Control Panel's compact aesthetic
  • v7.8.61 — fix(dashboard): Balance card restructured — Portfolio Cash is now the headline, raw ETRADE fields demoted to "Raw ETRADE fields" details
  • v7.8.60 — fix(dashboard): "Apply Cash" reads broker_cash_only from /reconcile/state, not /etrade/balance alone — handles PDT_ACCOUNT totalLongValue=null
  • v7.8.59 — fix(dashboard): "Apply Cash" writes portfolio cash, not "available for investment" — kills the ~$2.4k phantom gap
  • v7.8.58 — fix(dashboard): tracker-row day-change chip refreshes under live quotes — kills the half-stale "$428.49 +0.90%" row
  • v7.8.57 — feat(dashboard): framework-vetoes friction on Path 1 buy modal — match the broker's discipline client-side
  • v7.8.56 — fix(broker-guard): align R:R gate with the card — broker now matches the framework's NO ENTRY verdict
  • v7.8.55 — fix(transactions-router): stop the dedup-index TypeError that was re-applying historical BUYs every cycle
  • v7.8.54 — fix(positions-sync): stop clobbering daemon-stamped entryDate on every dashboard sync
  • v7.8.53 — fix(dashboard): render post-catalyst whale read chip on the audit card (not just held-positions table)
  • v7.8.52 — feat(whale-read): price-action gate replaces earnings-date gate — kills the Tradier field-rotation outage
  • v7.8.51 — feat(daemon-health): tripwire alert + CP fail-streak chip — close the silent-degradation gap
  • v7.8.50 — fix(broker-state): kill the 133-consecutive-fail TypeError in _digest_transactions
  • v7.8.49 — fix(entryDate-backfill): self-heal — own-fetch fallback + move call outside routing gate
  • v7.8.48 — feat(audit): post_earnings_whale_read synthesizer — integrate 6 flow votes into one verdict
  • v7.8.47 — fix(audit): kill the phantom indicators sub-dict — readers now point at row-level fields
  • v7.8.46 — fix(dashboard): kill the false "FEED DEGRADED: T2 Finnhub" badge — reclassify deep-cascade tiers + add sample floor
  • v7.8.45 — fix(audit): wrap portfolio loop in per-ticker try/except — one bad ticker can no longer abort the whole cycle
  • v7.8.44 — fix(audit-cadence): AUTO_REFRESH_MIN 0→1 — give the data tiers a floor; + add CBRS to universe
  • v7.8.43 — fix(audit): compute_daily insufficient-history guard — stops the cycle-killer crash loop
  • v7.8.42 — fix(data-providers): gate equity tiers for index/futures symbols — kills the false "FEED DEGRADED" badge
  • v7.8.41 — feat(regime): INTL/US divergence chip — overnight international vs US futures
  • v7.8.40 — feat(regime): thread oil_tier through score_13pt_options energy penalty
  • v7.8.39 — feat(regime): two-tier oil regime — acute OIL_SHOCK vs chronic OIL_ELEVATED
  • v7.8.38 — refactor(open-orders): remove redundant Phase 3 strip; keep existing PENDING @ ETRADE widget
  • v7.8.37 — fix(open-orders): STOP orders rendering as 'LMT $0.00' + placed_at digging
  • v7.8.36 — feat(held-card): disambiguate framework entry vs user basis
  • v7.8.35 — fix(reconcile): account-picker heuristic + balance field-name fallbacks
  • v7.8.34 — feat(diagnostic): score-momentum disconnect chip on held rows
  • v7.8.33 — feat(setup-classifier): consolidation_breakout_pending overlay
  • v7.8.32 — feat(portfolio-truth): Phase 4 — paranoid-mode order verify
  • v7.8.31 — docs(changelog): portfolio-truth arc + 03babc0 bundling note
  • v7.8.29 — feat(positions): back-fill entryDate from broker transaction history
  • v7.8.29 — feat(portfolio-truth): Phase 2C — auto-adjust drawdown baseline on DEPOSIT/WITHDRAW
  • v7.8.28 — feat(portfolio-truth): Phase 2B — auto-apply toasts + Pending Confirmations + Cash Activity
  • v7.8.27 — feat(portfolio-truth): Phase 2A — transaction router auto-applies BUY/SELL/DIV/INT/FEE
  • v7.8.26 — chore(precommit): lint hook to block JS template-literal regressions
  • v7.8.25 — feat(portfolio-truth): Phase 1B — Reconcile pill + modal + cash-edit prompt
  • v7.8.24 — feat(portfolio-truth): Phase 1A — broker_state daemon + reconcile endpoints
  • v7.8.23 — feat(shadow-tracker): second capture path — score-cleared-setup-blocked
  • v7.8.22 — fix(alerts): entry_armed gate stack — score + R:R + trap check before firing
  • v7.8.21 — feat(phase): Layer C — phase_advanced alert + entry_armed_add suppression
  • v7.8.20 — feat(phase): Layer B — phase-aware _protectiveStopForRaise dispatcher
  • v7.8.19 — feat(phase): Layer A — position-phase detection + chip (read-only)
  • v7.8.18 — test(news-sentiment): regression for the v7.8.17 provenance promotion
  • v7.8.17 — fix(rr-data-quality): split support_noise_inflated out of below_min_floor
  • v7.8.16 — feat(alerts): entry_armed_add — held-position re-arm alert with position-size suggestion
  • v7.8.15 — feat(journal): one-click sync recent broker trades — closes the V recovery loop
  • v7.8.14 — fix(fill-detect): track cancellations explicitly + journal every detected fill + recover zero-diff SELLs
  • v7.8.13 — fix(trade-rec): extend score≥80 entry gate to honor setup/weekly/pullback vetoes
  • v7.8.12 — fix(broker): fast-fill race — pre-seed _prevPendingOrderIds so instant-fill orders trigger reconciliation
  • v7.8.11 — fix(topbar-dropdown): viewport-aware anchor flip — fixes left-edge clipping on narrow viewports
  • v7.8.10 — feat(@ Exits + DIT): combined stop/TP cell + auto-stamp entryDate on manual fills
  • v7.8.9 — fix(held-row): LOCKED state for stop-above-basis; locked-stop-aware R:R + Risk-at-Stop columns
  • v7.8.8 — fix(dd-tooltips): cross-link Cur DD ↔ DD Guard with explicit window labels
  • v7.8.7 — fix(dd-anchor): skip first perfLog entry from high-water (Option C)
  • v7.8.6 — feat(dd-windowing): Cur DD + Max DD chips use 6-month rolling baseline · all-time in tooltip
  • v7.8.5 — fix(sharpe): weekly resample before Sharpe math · same fix in 2 call sites
  • v7.8.4 — fix(win-rate): canonical helper · STOPPED-at-profit now counted as wins
  • v7.8.4 — feat(legible-veto): observability stack (cycle JSONL + CP widget + cron wrapper)
  • v7.8.3 — fix(feed-badge): silence optional tiers with 0 successes (not degraded, just unexercised)
  • v7.8.3 — tool(legible-veto): tools/legible_veto_summary.py for eyeball week
  • v7.8.2 — fix(feed-badge): stop firing red 'PRIMARY FEED DOWN' on stale E*TRADE counter
  • v7.8.1 — refine(legible-veto): held-position render semantics + corpus enrichment
  • v7.8.0 — feat(legible-veto): Phase 1 ships rr_release + pullback_plan
  • v7.7.25 — feat(macro): background macro_fetcher daemon decouples fetches from audit hot path
  • v7.7.25 — fix(shadow-tracker): endpoint NameError + post-resolution capture suppression
  • v7.7.24 — fix(slStatus): ATR-aware thresholds + canonical helper
  • v7.7.23 — fix(cash): atomic deduct on broker-reconcile fills + margin-account flag
  • v7.7.22 — HOTFIX: UnboundLocalError on every SELL order preview
  • v7.7.21 — feat(daily-Δ): pre-market gap label (PM prefix, 04:00-08:59 ET)
  • v7.7.20 — feat(daily-Δ): pre-open reset window (9:00-9:30 ET weekdays)
  • v7.7.19 — feat(daemons): surface auto-scanner on the Control Panel health board
  • v7.7.18 — fix(config): load_dotenv(override=True) so .env edits survive os.execv
  • v7.7.17 — fix(local_email): strip whitespace from SMTP password
  • v7.7.16 — feat(alerts): local SMTP email delivery + morning brief routing
  • v7.7.15 — fix(topbar): System dropdown menu clipped at right viewport edge
  • v7.7.14 — fix(alerts): migrate to canonical positions.json + 24h staleness gate
  • v7.7.13 — fix: kill Polygon /v3/trades/ 403 spam + warn-once on mute cloud alerts
  • v7.7.12 — fix(daily-Δ): unbreak E3 catalyst alarm + sign-align near-zero chip
  • v7.7.11 — feat(shadow-tracker): instrument the silence — capture vetoed-ready signals for empirical gate calibration
  • v7.7.10 — fix(broker-parity): accept dashboard claim against EITHER chandelier or structural sl
  • v7.7.9 — feat(ux): close the add-ticker feedback loop (toast + TRACKED chip + universe.txt viewer)
  • v7.7.8 — refactor(raise-stop): single resolver across all 4 consumer surfaces
  • v7.7.7 — fix(raise-stop-chip): gate on max(chandelier, sl) — 9th hit of same-field-different-writers
  • fix(arch): migrate UI candidate flow to universe.txt (single source of truth)
  • v7.7.5 — fix(audio-market-hours): module-level wrappers + endpoint dispatch
  • v7.7.4 — feat(audio): market-hours-only mode — silent outside US regular session
  • v7.7.3 — fix(auto-scanner tooltip): pass \n not via setAttribute
  • v7.7.2 — feat(auto-scanner): dynamic tooltip + spinning chip during active scans

Full diff: pinoy81/swing-audit@v7.7.1...v7.9.18


Built from pinoy81/swing-audit@559935a.