Ogni cycle del lab non si ferma al report. Attraversa una pipeline a 4 stage che porta da scoperta scientifica a prodotto verificato empiricamente, in autonomia.
Stage 1 — Scoperta
Il cycle agente esplora una tensione, scrive un report con findings + verdict.
on_crystallize.py trasforma il report in lab-note.draft.md + cycle-report.draft.md con metadata YAML.
Status: mature_eligible · transitional · pre_discovery.
Stage 1.5 — Eligibility gate
finding_eligibility_gate.py classifica ogni finding del report con classifier multi-segnale:
applicative_finding,
literature_rediscovery,
methodology_note,
boundary_warning,
verdict_summary,
negative_result,
REVIEW_REQUIRED (ambiguo).
Niente skip silenzioso — tutto va in finding_index.draft.json.
Stage 2 — Application designer
Per ogni finding eligible, application_designer.py propone 3 candidate: library (benchmark), kernel (cognitive prompt), demo (reproduction).
Ognuno ha una verification_spec Stage 3 SPEC_ONLY (criteri success/falsification).
Skip se gate non è mature_eligible — niente prodotti su claim non maturi.
Stage 4 — PoC runner empirico
stage4_poc_runner.py chiude il loop: passa la verification_spec a un LLM (claude-cli OAuth) che scrive un poc.py standalone con metodo naive vs informed-by-finding.
Lo script viene eseguito (sandboxed, max 90s, no network), produce metrics.json, il runner confronta vs criteri e scrive verification.json reale.
Verdict: PASS (delta > 0.05), FAIL (delta < -0.05), INCONCLUSIVE (marginale), UNTESTABLE (negative_result).