deal-v0.1 specification (IDEA-014 M2)
Written and committed before any acquire scoring, card or hindcast code exists. Pre-check counts (deal-v0.1-prechecks.md) were seen. No score and no evidence-to-label relationship was seen. Rubric file: config/rubrics/deal-v0.1.json. Rulings: decisions.md 2026-11-03 "IDEA-014" entries.
What this can show. R1 is an unvalidated read. R2 and R3 are on past data the project has already handled for other purposes, so nothing here is a skill claim. No deal outcome here measures whether a deal was worth its price.
Evidence score (rubric, one row)
evidence_points = stage points + FDA point + recent-trial point, per the rubric file, at the as-of date, through the gate. Registry status is never a feature. Rubric without economics is identical to the rubric here and is reported as one row marked identical.
R2 hindcast: "which deals worked", never "which deals to do"
- Population: targets with at least one trial posted before the deal; as-of is the day before the deal; one row per company (earliest deal).
- Primary label: a later
company_eventstrial, dated in (deal, deal+36 months], at a phase strictly above the pre-deal maximum. Deals whose 36 months pass 2026-03-31 are right-censored. - Secondaries under one Holm family: 60-month horizon; registry termination proxy (contaminated by acquirer pruning and 2026 status: named, labelled).
- Mode, fixed by M1: minimum detectable AUC 0.920 > 0.85, so descriptive; the result reads "cannot test". Scorer AUCs may be printed as description, with no claim.
- Known limit: registry sponsor is 2026 state, and acquired programmes move to the acquirer, so positives are undercounted. Intervention-name follow-forward needs a fetch (R4, owner queue).
R3 control set: acquisition, not value
- As-of T: 2020-12-31 and 2022-12-31 only; 36 months; intervals clustered by company.
- Primary pool: trial-bearing at T, with a listing row (priced_ipo, ipo_unknown, foreign_issuer, form10_8a_listing, reverse_merger) dated <= T and no delisted_acquired, delisted_failed, delisted_unknown, acquired_private or acquired_public row dated <= T.
reorg_continuingis neutral. A listing row dated after T does not count. - Claim wording: "among trial-bearing companies listed at T, acquired by an SEC-registered acquirer in a parsed filing within 36 months". Being acquired is not the same as being worth buying. It does not test private against acquired.
- Descriptive secondaries: trial-bearing any; all companies any (where stage evidence is zero for no-trial companies).
- Mode: a test needs minimum detectable AUC <= 0.75 at both dates (met: 0.647, 0.619) and an executed D3 miss-rate check at <= 20 percent. D3 is on the owner queue with default skip, so as of this commit M7 is descriptive and prints "label noise unmeasured".
- Local M6 diagnostic, before scoring: negatives with a delisted_acquired or delisted_unknown row in (T, T+36 months]. One-sided: it can show noise above 20 percent, never certify below it.
- Decision rule if D3 ever runs at <= 20 percent: test passes if the company-clustered 95 percent lower bound of AUC(rubric) - AUC(trial-count rank) is > 0 at the pooled T. Otherwise report that the rubric adds nothing over trial count; any change is
deal-v0.2.
Baselines (rule 6)
Random (seed 0); stage-only; trial-count rank (the ruled substitute for citation rank, which has no meaning here); price rank by low edge on R2 only (no price exists for R3 negatives); rubric without economics (identical row); blind LLM on condition + phase + year packs only on a local no-spend path and only if a 20-pack leak check finds no sponsor or product string, otherwise listed as not run with the reason.
Guards
No score table, ranker_scores or stored LLM score is read or joined anywhere in acquire/ (test). backtest-auditor before any number from M5 or M7 is written. A leak means fix, re-audit, rerun, and no number kept from the leaky run. No floor, cut or threshold moves after this commit; changes are a new version.