Closed losers (last 30 days) and retired rules (last 90 days). No spin.
No closed losers in window. Either we got lucky or we didn't trade enough.
Treat thesis:buy as a degraded signal requiring corroboration. Do not act on thesis:buy alone — require at least one additional signal (news_signal, technical confirmation, or sector catalyst) before executing a buy.
retired 2026-05-02T07:53:54.114925+00:00 — Built on broken signal-citation pipeline. The executor structurally could not cite news_signal IDs (the executor context never surfaced them and validate_signal_refs stripped every fabricated citation since 2026-03-22). These rules required corroboration that was impossible. Wiring fixed 2026-05-02 via thesis_signals join table + tool_get_macro_signals + PlaybookAction.signal_refs passthrough. Rules will be re-evaluated naturally once real attribution accumulates. See project_news_signal_unknown_artifact.md and migration 003_thesis_signals.sql.
Before executing any SELL order, require at least one attributed, corroborating signal (news_signal, technical breakdown confirmation, sector deterioration catalyst, or stop-loss trigger) beyond a bare thesis or empty signal log. Do not exit a position based solely on unlogged or unattributed signals (signals=[]). When no corroborating signal is present, downgrade the SELL decision to HOLD-review and document the missing corroboration in the decision log.
retired 2026-05-02T07:53:54.114925+00:00 — Built on broken signal-citation pipeline. The executor structurally could not cite news_signal IDs (the executor context never surfaced them and validate_signal_refs stripped every fabricated citation since 2026-03-22). These rules required corroboration that was impossible. Wiring fixed 2026-05-02 via thesis_signals join table + tool_get_macro_signals + PlaybookAction.signal_refs passthrough. Rules will be re-evaluated naturally once real attribution accumulates. See project_news_signal_unknown_artifact.md and migration 003_thesis_signals.sql.
When signal link logging fails due to a type-cast error (e.g., integer = text mismatch on news_signals.id), treat the affected decision as having signals=[] for attribution purposes and flag it with a "signal-log-error" annotation in the decision log. The executor must not silently discard signal links — every failed signal log attempt must be surfaced as a named error so the learning loop can identify attribution gaps. This error has been observed for at least GOOGL, AMZN, ANET, and CRM in the April 30 session.
retired 2026-05-02T07:53:54.114925+00:00 — Built on broken signal-citation pipeline. The executor structurally could not cite news_signal IDs (the executor context never surfaced them and validate_signal_refs stripped every fabricated citation since 2026-03-22). These rules required corroboration that was impossible. Wiring fixed 2026-05-02 via thesis_signals join table + tool_get_macro_signals + PlaybookAction.signal_refs passthrough. Rules will be re-evaluated naturally once real attribution accumulates. See project_news_signal_unknown_artifact.md and migration 003_thesis_signals.sql.
Treat an unqualified thesis signal (logged as signal type "thesis" without directional qualifier) as a low-confidence standalone trigger. Do not execute on thesis alone — require at least one corroborating signal (news_signal, technical confirmation, sector catalyst, or earnings catalyst) before acting. When corroboration is absent, downgrade the decision to HOLD-review and document the missing corroboration in the decision log. Attribution evidence as of May 1: thesis avg 7d alpha = -0.82% vs SPY, beat-market rate = 47% (n=30). Degradation has worsened from the original -0.42%/50% baseline. This constraint is now well-sampled and should be treated as firm, not provisional.
retired 2026-05-02T07:53:54.114925+00:00 — Built on broken signal-citation pipeline. The executor structurally could not cite news_signal IDs (the executor context never surfaced them and validate_signal_refs stripped every fabricated citation since 2026-03-22). These rules required corroboration that was impossible. Wiring fixed 2026-05-02 via thesis_signals join table + tool_get_macro_signals + PlaybookAction.signal_refs passthrough. Rules will be re-evaluated naturally once real attribution accumulates. See project_news_signal_unknown_artifact.md and migration 003_thesis_signals.sql.
Prefer news_signal:unknown as a primary signal type. When news_signal:unknown is present and thesis supports direction, treat as high-confidence entry signal and size toward the upper bound of position range.
retired 2026-05-02T07:14:19.001609+00:00 — news_signal:unknown bucket was a broken-FK artifact (orphan signal_refs aggregated as fake category). Attribution query fixed 2026-05-02 to drop orphans; this rule was built on noise. See project_news_signal_unknown_artifact.md.
Treat an unqualified thesis signal (logged as signal type "thesis" without directional qualifier) as a low-confidence standalone trigger. Do not execute on thesis alone — require at least one corroborating signal (news_signal, technical confirmation, sector catalyst, or earnings catalyst) before acting. When corroboration is absent, downgrade the decision to HOLD-review and document the missing corroboration in the decision log.
retired 2026-05-01T19:06:15.374942+00:00 — Superseded by Rule 38, which updates the evidence baseline from -0.42%/50% (n=~15) to -0.82%/47% (n=30). Rule 38 carries the same constraint logic with materially stronger attribution data and elevated confidence. Retiring Rule 30 to avoid duplicate coverage and confusion over which baseline is operative.
When a position's market price exceeds the documented thesis price target by more than 10% on the upside (target invalidated on upside), immediately flag the thesis for revision with three required updates: (1) a revised price target or explicit "no target — momentum hold" declaration, (2) a trailing stop or profit-protection level, and (3) a maximum hold window. Until these three elements are documented, no new capital may be deployed into additional positions. An unrevised, upside-invalidated thesis is treated as an orphan position for risk purposes.
retired 2026-04-30T19:07:06.618047+00:00 — Superseded by Rule 36, which resolves the threshold ambiguity (10% in rule text vs. 7.5% in executor practice). Two real trigger events (ANET thesis #181, GOOGL thesis #182) confirm 7.5% as the operative threshold. Rule 36 aligns text to practice with higher confidence (0.78 vs. 0.72). Flagged for resolution in April 27 and April 30 memos; now addressed post-Mag7 earnings window.
Within 48 hours of a confirmed binary macro event (ceasefire, FOMC decision, major geopolitical deadline), downgrade SELL signals to HOLD-review flags. Do not initiate new exits in this window unless stop-loss thresholds are breached.
retired 2026-04-23T21:35:35.842787+00:00 — Rule 26 was designed for active binary macro-event windows (ceasefire negotiations, FOMC decisions, major geopolitical deadlines). Those windows — specifically the April 29 mega-cap earnings cluster and prior macro-resolution events — have fully resolved. The rule carries only 0.45 confidence (the lowest in the ruleset), was flagged for retirement review in two consecutive prior memos (April 23 sessions), and has sufficient tenure (5+ sessions). In its intended context (active binary-event window → downgrade SELL to HOLD-review), it no longer has an active trigger condition. Its protective function during live binary windows is partially covered by Rule 27's deployment cap. Retiring to reduce ruleset noise; can be re-proposed if a new high-stakes macro-resolution window opens.
Treat news_signal:unknown:sell as a high-conviction exit signal. When news_signal:unknown:sell fires, prioritize execution over other hold/buy signals on the same ticker.
retired 2026-04-09T00:17:23.931660+00:00 — Bulk pruning: rule accumulation caused decision paralysis. System at 86% cash, unable to act. Rules will be re-earned from evidence if still valid.
Flag news_signal:earnings and news_signal:earnings:buy as high-priority watch signals. Although current sample size is n=1 (too small to act on independently), the +2.07% avg 7d return at 100% win rate is the strongest observed return profile of any signal type. When news_signal:earnings fires on a HOLD position, treat it as a candidate escalation trigger — record it, track it, and revisit once n≥3. Do not ignore earnings signals.
retired 2026-04-09T00:17:23.931660+00:00 — Bulk pruning: rule accumulation caused decision paralysis. System at 86% cash, unable to act. Rules will be re-earned from evidence if still valid.