Reviewed: 2026-09-18 (MYT), against [EXECUTION-PLAN.md](EXECUTION-PLAN.md) and [community review findings](reports/kaggle-community-review-findings-2026-09-17.md).
The priority order is deliberate: establish trustworthy evaluation, expand candidate coverage, then learn to rank. Community methods are hypotheses, not validated improvements. This review updates the backlog; it does not mark unrun experiments complete.
Next execution order
1. P0 โ Correct and audit G1 evidence. Preserve the current all-spectrum run as diagnostic evidence; verify query masks, aggregation, metric definitions, provenance, submission contract and resources before accepting its output. Process completion alone is not gate closure.
2. Lock a qualified local retrieval baseline, then run bounded mass-window, candidate-cap and multi-spectrum ablations on development folds. Keep an untouched report partition.
3. Promote Phase 3A/3B ahead of learned ranking: pinned COCONUT/eligible PubChem structures, mass/formula indexing, candidate recall and a non-neural fingerprint-transfer baseline. A ranker cannot recover an answer absent from its pool.
4. Phase 2 + Phase 3C: leakage-safe spectrum-to-fingerprint/ranking experiments and a separate mass-shifted analogue-propagation benchmark. The analogue experiment may run alongside bounded ranking once both use the same frozen candidate pool and folds; it is not a prerequisite for starting every ranker experiment.
5. Keep de novo generation and cross-route fusion deferred. Revisit Phase 4 when database/analogue coverage failures justify it; validate route fusion in Phase 5, not by copying public weights.
Phase numbers are retained for traceability. These dependencies take precedence over the original plan's provisional Phase 2-before-Phase 3 calendar; no new dates or compute commitments are implied.
Evidence rules and current snapshot
Placeholder warning: downloadable test.parquet contains training examples. Its 400-molecule/1,213-spectrum output is a schema/runtime diagnostic only, not CV, public-leaderboard evidence or a G1 quality score. Production IDs and counts must come from the runtime test file, never be hardcoded from the sample.
Authoritative namespace: use artifacts/rebuild-20260917/ and manifests/rebuild-20260917/ together. The root retrieval symlink currently resolves there. Historical 274,288-identity and raw 275,810-identity artifacts are not interchangeable with the rebuilt 274,195 scorer identities.
Regimes are different questions: A deliberately permits same-identity references only under the documented acquisition-exclusion proxy; B must exclude all held-out-identity spectra across every library, analogue prototype and derived spectral feature. A library-only holdout must never be presented as clean B/novelty validation. C additionally excludes structures/structure targets and requires a frozen scaffold-aware proxy.
Current data count: use the hashed release's 1,184 NP-example rows / 250 identities. The published 1,151-row count is a documented external discrepancy, not a reason to trim the local cohort or block its evaluation.
Infrastructure evidence:reports/phase0-qualified-g0-20260917.json records local guards/tests and hashes; official scorer parity and acquisition-lineage certification are still unavailable.
Earlier G1 evidence:reports/phase1-g1-molecule-full-20260917.json uses one valid spectrum per identity, not all-spectrum validation. Preserve it as a bounded diagnostic; audit metric semantics before comparisons. Library-ceiling scores are optimistic diagnostics, not held-out generalization estimates.
Current run checkpoint (08:21 MYT):g1 / PID 171853 was still running src.g1_molecule_eval_all; logs/g1-completion-20260918.log contained only the start marker. The expected reports/phase1-g1-all-20260918.json and fresh submission were not yet present. This is a timestamped observation, not a live status indicator.
Existing rebuilt submission:submissions/phase1-retrieval-molecule-rebuilt-20260917.csv exists and its generation report records 400 rows and 1,213 spectra. A local schema check passed earlier in this session; this does not establish strict candidate validation, hidden-test accuracy or current-run provenance. The legacy submissions/phase1-retrieval.csv remains unsuitable as current evidence.
Local structure-source packaging finding:manifests/pubchem-structure-only-1-500000.tsv.gz is physically plain TSV despite its .gz suffix (streaming audit: 240,536 rows, 231,755 identities, 0 malformed rows; SHA-256 6006275eb9fde9101ec1f342eacb1240fad10201c3e8182eaf584cf31ea91152). Keep it out of production readers until it is renamed or recompressed and its manifest is updated; the audit is recorded in reports/todo-review-20260918/pubchem-local-audit.json.
Confirmed G1 issues from this review
Small synthetic probes against the current implementation reproduced the following; no real training/index data or production code was changed. Evidence: [semantic-probes.json](reports/todo-review-20260918/semantic-probes.json), reproducible with [probe-current-contract.py](reports/todo-review-20260918/probe-current-contract.py).
Regime-A query leakage:src/g1_molecule_eval_all.py reduces the query mask to identity membership, then reads every spectrum of those identities. A fixture with one permitted query and one eligible same-identity reference was reported as two queries and included a reference self-comparison. Correct row-level query selection is required (G1-01).
Wrong conditional-MRR denominator: for two pool-covered targets at ranks 1 and 26, the evaluator reports global MRR 0.5 and conditional MRR 1.0; the defined conditional MRR over all covered molecules must be 0.5 (G1-02).
Pool coverage is truncated: for targets at ranks 1 and 1,001, reported pool coverage is 0.5 despite both targets being present in the full pool. Pool coverage must not be an alias for top-1,000 recall (G1-02).
Strict-output validation gaps:validate_submission() currently accepts invalid SMILES, duplicate scoring identities and 26 raw duplicate guesses. Its zero-error result alone cannot prove the stricter output guarantees required of our pipeline (G1-04); this is not a claim of official scorer parity.
Consequence: the current all-spectrum output cannot close G1 unchanged even if the process exits successfully. Preserve it as diagnostic evidence, repair these items and regenerate the affected evaluation/validation artifacts. This review did not stop or modify the running job.
Phase 0 โ Ground truth and infrastructure
[x] P0 Download the current train.parquet release from Kaggle.
[x] P0 Record file size, SHA-256, Kaggle metadata and download timestamp in manifests/.
[x] P0 Inspect the actual training schema, row groups, library counts and identity counts.
[x] P0 Add a low-RAM data access path using PyArrow row-group streaming and selected columns.
[x] P0 Create a pinned RDKit 2026.03.3 environment for scorer-compatible identity matching.
[x] P0 Implement tautomer-canonicalized InChIKey14 identity logic in src/identity.py.
[x] P0 Add scorer unit tests for tautomer equivalence, stereochemistry, invalid SMILES and rank cutoff.
[x] P0 Implement all ten advertised adduct mass conversions and round-trip tests.
[x] P0 Add adduct normalization, including [M+FA-H]- = [M+CH2O2-H]-, and alias/polarity/invalid-input regression tests. Keep independent reference-mass checks alongside round trips; round trips alone can hide a shared wrong constant. Implemented in src/adducts.py; independent formate and invalid-input tests pass.
[-] P0 Freeze molecule-grouped validation manifests for library, database-only and novelty-proxy regimes. The rebuilt scorer-compatible five-fold and strict external manifests are internally consistent; qualified Regime A query/reference masks are now operational and runtime-validated, while Regime B identity-wide exclusion manifests and runtime checks now pass locally, and Regime C remains proxy-only.
[ ] P0 Add a cross-library leakage regression fixture: a held-out B identity also present in another library must remain excluded from references, analogue prototypes and derived training features. Separately prove A retains only policy-eligible reference acquisitions; do not replace A with B or weaken B to library-only exclusion.
[ ] P0 Freeze development/report partitions, seeds and tuning policy before community-inspired sweeps; protect the 250-compound NP report set from repeated tuning with grouped/nested validation.
[x] P1 Add a reproducible experiment configuration format under configs/.
Resource constraint: the local development host has approximately 11 GiB RAM. Full-data operations must stream or use bounded artifacts; do not load the entire training table into pandas.
Gate G0: [-] Qualified local infrastructure only. Rebuilt cache/split/index/masks have documented local checks; the root retrieval artifact resolves to the rebuilt 274,195-identity namespace. New regression/alias hardening remains open. Official scorer parity is unavailable and Regime A is only an exact-available-field proxy; do not report unconditional G0 closure.
Phase 1 โ Spectral retrieval baseline
[x] P0 Build a streaming Parquet reader and compact peak-array representation.
[x] P0 Implement precursor/adduct to neutral-mass filtering.
[-] P0 Build and verify indexed reference search. Rebuilt index metadata and the qualified infrastructure report record 2,539,608 rows, 2,160,035 valid spectra and 274,195 scorer identities, with five fold masks. Preserve the legacy index under artifacts/legacy-20260917/; complete end-to-end artifact binding rather than trusting a symlink or status label alone.
[-] P0 ยท G1-01 Complete correct all-spectrum molecule-level aggregation on frozen query cohorts. For A, use the actual regime_a_query.npy row mask, not every row sharing one of its 250 identities. Assert eligible query/reference separation and reconcile total, valid, skipped and zero-valid-spectrum molecules. For B/C, retain identity-wide exclusions. Aggregate all permitted spectra within each evaluation molecule; produce exactly one output per runtime molecule_id.
[ ] P0 ยท G1-02 Independently verify metric semantics with hand-checkable tests. Pool coverage is target presence in the full eligible candidate pool before ranking caps. Conditional MRR@25 divides reciprocal-rank contributions by all pool-covered molecules, including covered answers ranked below 25 with contribution zero. Check MRR@25 = pool_coverage ร conditional_MRR@25 when coverage is nonzero, and document the zero-coverage convention. Test targets at ranks 1/25/26/100/1,000/>1,000, absent targets, empty pools and deterministic ties.
[-] P0 ยท G1-03 Verify scorer-identity deduplication end-to-end with the pinned RDKit identity function. Persist candidate identities and representative SMILES; no tautomer/stereoisomer duplicates may consume separate ranks. Recompute a bounded independent identity check and fail on missing/stale SMILES mappings.
[-] P0 ยท G1-04 Regenerate a rebuilt-namespace submission and validate it strictly. Derive expected IDs from runtime Parquet; check columns, nulls, duplicate/missing/extra IDs, raw candidate count <=25, parseability, empty candidate tokens and duplicate scorer identities. Save generation metadata and validation in separate files; do not overwrite one with the other. Preserve historical outputs and promote the canonical filename only after verified success.
[ ] P0 ยท G1-05 Save auditable per-molecule predictions and a fresh frozen-fold report: MRR@25, Top-1, Top-5, Recall@25, candidate recall@100/1,000, full pool coverage and conditional MRR. Report A, B and a correctly excluded C proxy separately from library-ceiling diagnostics; if C is not evaluated, label it NOT_EVALUATED and keep that gate condition open, never invent a zero. Include cohort/fold counts and mass, adduct/polarity, spectrum-count, quality and available scaffold/source strata; explicitly label unavailable strata.
[-] P0 ยท G1-06 Record wall time and peak RSS for evaluation and submission, plus candidate-row/unique-identity counts. Bind actual code/config/seed, train/cache/split/index/mask/SMILES-map and output hashes to each run; hardcoded hash strings are not fresh verification. The current shell times submission only, and earlier bounded-run timings do not certify all-spectrum evaluation. Add stage/progress counters, atomic result writes and fail-fast exit-code handling so a failure cannot be followed by a misleading DONE marker.
[ ] P0 ยท G1-07 Run the first offline inference/packaging smoke test using the rebuilt artifacts and pinned dependencies. Exercise changed/reordered IDs and molecule counts rather than only the placeholder sample; validate complete output without network access. This is not the two final clean-room reruns required by G6.
[ ] P0 ยท G1-08 Write an independent gate decision linking the verified outputs/tests/resources above. Close only qualified local G1 if all local acceptance checks pass; list official scorer parity, exact acquisition lineage and true hidden Class-3 performance as unresolved external caveats.
Gate G1: [!] OPEN โ execution and evidence audit in progress. A successful process exit, 400/400 placeholder rows, single-spectrum metrics or B=0 by construction cannot close it. Regime-B zero target coverage is an expected direct-library limitation/leakage-control diagnostic, not positive evidence of structure-only identification quality. Do not begin learned-model training before qualified local acceptance.
Controlled retrieval ablations โ after the corrected baseline is locked
These are follow-on comparisons, not an excuse to withhold a correctly audited baseline indefinitely. Use the same frozen cohorts/masks and bounded development experiments; promote only with reproducible molecule-level evidence.
[ ] P1 Compare max across permitted spectra against mean/top-k evidence, within-molecule reciprocal-rank fusion, collision-energy-aware aggregation and same-adduct/same-polarity policies. Include a matched single-spectrum control, reference-count bias checks and correlated-acquisition controls. Do not merge incompatible ions into one raw peak list. Cross-route ensemble weights remain Phase 5 work.
[ ] P1 Add source, adduct, polarity and collision-energy compatibility features, including missingness and original energy units; validate before adopting weights.
[ ] P1 Compare mass windows 8.5 / 10 / 20 / 30 ppm, with a calibrated absolute floor; candidate caps none / 100 / 1,000 / 6,000; relative intensity floors 0.002 / 0.005 / 0.01. Retain the original plan's preprocessing variants as further hypotheses, not an obligatory full Cartesian sweep. An uncapped experiment must still stream within the RAM budget.
[ ] P1 For every cap/window/preprocessing setting, record candidate rows and unique identities before/after truncation, correct-candidate retention, full coverage, conditional MRR, MRR@25, Top-1/Top-5, runtime and peak memory. Tune on development folds and evaluate the untouched report partition with paired molecule bootstraps.
[ ] P1 Profile search overhead and reuse a precomputed sorted mass array rather than repeatedly materializing masses[order] inside every query. Prove candidate membership and ranking equivalence before accepting this optimization; do not alter a running evaluator in place.
[x] P1 ยท design only Record an optimization path that preserves the current evaluator as an oracle, separates query extraction from scoring, validates mass-bin/vectorized candidates against a bounded fixture, and checkpoints at candidate-chunk boundaries. Design: reports/todo-review-20260918/G1-OPTIMIZATION-DESIGN.md. No optimized implementation or full-data rerun is claimed complete.
Phase 2 โ Learned fingerprint ranking and domain adaptation
Entry dependency: qualified local G1 plus a frozen Phase 3A/3B candidate pool and non-neural baseline. Do not train against an empty B target pool and call the result a ranking experiment.
[ ] P0 Generate out-of-fold candidate features without molecule leakage. Under B masks, remove held-out spectra from supervised training, retrieval, analogue prototypes and all derived features; A/C must follow their own frozen contracts. Candidate-generation models must also be out of fold.
[ ] P0 Establish a bounded spectrum-to-fingerprint baseline: spectrum -> fingerprint logits/embedding -> candidate fingerprint similarity -> molecule-level ranking. Start with a documented 2,048-bit Morgan target as a hypothesis; compare single-spectrum and permitted multi-spectrum pooling, likelihood/cosine scoring and calibration without copying public constants.
[ ] P0 Train a first molecule-grouped LightGBM/CatBoost ranker on eligible OOF features; benchmark simple fingerprint transfer before a larger encoder. Keep model versions, targets, folds, seeds and compute budgets reproducible.
[ ] P0 Compare learned ranking against the locked heuristic retrieval/database baselines on the same candidate pools; separate coverage gains from reranking gains. Use exact scorer identity and MRR@25 rather than fingerprint similarity as the promotion criterion.
[ ] P1 Balance or reweight training sources to reduce synthetic-library dominance.
[ ] P1 Add reference-count bias correction.
[ ] P1 Add confidence margins and uncertainty diagnostics.
[ ] P1 Run ablations for fragment, entropy, neutral-loss and multi-spectrum evidence.
Gate G2: learned ranking improves grouped validation with paired molecule-level evidence, no unexplained severe regression in any intended regime, and acceptable measured resources. Random-row/library-only splits and public leaderboard claims do not satisfy the gate.
Phase 3 โ Known structures without reference spectra
Phase 3A โ Pinned structure-only universe (promoted; first after G1)
[ ] P0 Acquire and document an eligible COCONUT snapshot: source/version/date, download hash, license, public accessibility and offline asset path. Normalize/deduplicate with the pinned scorer identity and count rejected structures. Keep structures explicitly separate from spectral references.
[ ] P0 Build a streaming mass/formula index for permitted competition structures and COCONUT, independent of visible-test IDs/mass windows. Persist candidate provenance and full-universe coverage; do not inject held-out answers into the pool.
[ ] P0 Repair the bounded PubChem artifact contract before reuse: rename the current plain TSV to a non-compressed suffix or recompress it, then update the manifest with physical format, row/identity counts and hash. Add a reader test that rejects a misleading compression suffix rather than silently falling back.
[ ] P1 Audit and, if storage/licensing permit, add a broader pinned PubChem-derived structure source. The existing bounded PubChem archive used for validation cohort construction is not evidence of a complete production database.
Phase 3B โ Formula/mass-gated candidates and non-neural baseline
[ ] P0 Evaluate formula inference and neutral-mass consistency, retaining alternative formulas when uncertain. Measure true-formula recall and answer retention before tightening gates; report both naturally database-covered molecules and the full B cohort.
[ ] P0 Implement spectral-neighbour fingerprint transfer as the cheap structure-only ranking baseline. Every neighbour spectrum must satisfy the query's regime/fold exclusions. Database structure availability must not be confused with available reference spectra.
[ ] P0 Measure candidate-pool recall before/after caps and exact MRR@25/conditional MRR on the frozen B cohort; preserve missing-pool versus wrong-ranking failure categories.
[ ] P1 Retrieve eligible spectral neighbours -> search a mass-shifted structural neighbourhood -> apply neutral-mass/formula consistency -> deduplicate scorer identities -> rank with spectral/fingerprint/mass evidence. Keep this route separate from exact-library retrieval and from de novo analogue editing.
[ ] P0 Persist source spectrum/source identity, candidate database snapshot/hash, mass-shift and structural-similarity rules, generation/retention counts and deduplication method. Prove no held-out-identity spectral source enters the route or its derived features.
[ ] P1 Ablate analogue propagation against the frozen direct-library + structure-only baseline, on identical folds and pools where appropriate. Select weights locally; do not import public leaderboard-tuned weights or arbitrary candidate quotas.
Later representations and forward checking
[ ] P1 Test pretrained spectrum embeddings such as DreaMS/MIST after license, training-provenance and offline checks. Qualify contamination risk rather than claiming clean novelty performance when overlap is unknown.
[ ] P1 Integrate the trained spectrum-to-fingerprint model from Phase 2 into structure retrieval; do not maintain a second conflicting training task here.
[ ] P2 Add a forward-spectrum reranker for shortlisted structures.
Gate G3: measurable structure-known/no-spectrum improvement over the non-neural baseline, with leakage-safe spectral inputs, licensed/pinned structure provenance and separate pool coverage/conditional MRR. Database absence and ranking failure must remain distinguishable.
Phase 4 โ Novel structures and de novo generation
Deferred: no immediate autoregressive SMILES or large-transformer training. First diagnose residual failures after database/analogue/fingerprint work and approve a bounded experiment budget. A failed de novo gate need not prevent shipping a validated retrieval/database solution, but forbids claiming novelty coverage.
The C-proxy split/leakage audit needed by G1 is validation infrastructure and is not deferred with generation.
[ ] P1 Reuse and extend the audited G1 novelty-proxy split with structure, spectral and generator-training-target exclusions before training a generator.
[ ] P1 Build a formula-, adduct- and collision-energy-conditioned spectrum encoder.
[ ] P1 Implement a bounded SMILES decoder/generator.
[ ] P1 Add beam search and controlled sampling with valid-SMILES filtering.
[ ] P1 Add de novo analogue editing from eligible close spectral neighbours; distinguish newly generated structures here from database analogue propagation in Phase 3C.
[ ] P1 Deduplicate generated outputs by scorer-compatible identity.
[ ] P2 Add forward-spectrum and formula consistency reranking.
[ ] P2 Measure unique candidate recall and actual MRR contribution, not validity alone.
Gate G4: de novo candidates add measurable clean-validation MRR or candidate coverage within the offline runtime budget.
Phase 5 โ Unified ensemble
[ ] P0 Union validated retrieval, database/analogue and, only if G4 supports it, de novo candidate pools.
[ ] P0 Train a final OOF molecule-level ensemble ranker.
[ ] P0 Produce exactly one row per runtime molecule with at most 25 unique candidates.
[ ] P1 Calibrate route confidence and preserve exploration for uncertain molecules.
[ ] P1 Stress-test rare adducts, high masses, one-spectrum molecules and noisy spectra.
[ ] P1 Compare library-heavy, balanced and novelty-heavy validation mixtures.
[ ] P1 Perform paired-bootstrap comparisons and record promotion decisions.
[ ] P1 Compare cross-route reciprocal-rank/static fusion and calibrated learned fusion only on common frozen folds with common scorer-identity deduplication. Choose weights without report/hidden-test leakage; require paired improvement over the best individual route, not a public notebook's claimed score.
Gate G5: robust integrated model beats the retrieval baseline across the selected validation scenarios.
Phase 6 โ Kaggle packaging and final submission
[ ] P0 Package model weights, indexes, tokenizers and dependencies for offline notebook execution.
[ ] P0 Run with internet disabled.
[ ] P0 Test against dynamically loaded test IDs; do not rely on placeholder IDs.
[ ] P0 Verify submission.csv columns, nulls, duplicate IDs and maximum candidate count.
[ ] P0 Stress-test cold offline execution, unseen/reordered IDs, changed molecule counts, 16+ spectra, rare adducts, high masses, empty/noisy spectra and missing metadata. Derive IDs from runtime Parquet; sample submission is a format check only. Fail clearly on globally corrupted artifacts.
[ ] P0 Complete two clean-room notebook reruns within the 9-hour limit.
[ ] P1 Prepare two complementary final candidates only if validation supports both.
[ ] P1 Record final code, configuration, hashes, licenses and reproduction instructions.
[ ] P0 Select final submissions explicitly before the deadline.
Gate G6: two successful offline reruns, reproducible output and final compliance audit.
Active experiment log
Historical chronology is retained below. Earlier PASS/closure statements and namespace counts were superseded by the 2026-09-17 audit/rebuild; the current gate sections above govern decisions.
Date
Experiment
Hypothesis
Result
Decision
2026-09-16
Competition review and workspace setup
Establish a complete execution baseline
Plan and project scaffold created; no model run
Start Phase 0
2026-09-16
Phase 0 data acquisition
Verify current Kaggle release and characterize it under low RAM
Prevent spectral/structure leakage in local validation
Deterministic 5-fold manifest validated: 275,810 groups and 2,539,608 rows; fold assignment is group-exclusive
Use fold 0 as initial validation; keep novelty labels separate
2026-09-16
G0 data/infrastructure gate
Confirm reproducible Phase 0 inputs and assumptions
All eight gate checks passed; config and split hashes recorded in manifests/phase0-gate.json
Close data/infrastructure work; proceed to retrieval baseline
2026-09-16
Phase 0 audit
Verify that validation grouping uses scorer identity
Failed: 12/100 sampled normalized SMILES differed between stored and scorer-derived InChIKey14; full probe hit pathological tautomer enumeration
Reopen G0; rebuild identity-safe split before retrieval evaluation
2026-09-16
Phase 0 corrective audit
Verify corrected scorer-identity split and reproducibility gate
Passed: 8 tests; compilation passed; 2,539,608 rows and 274,288 scorer groups validated; cache/checkpoint agree; full G0 gate passed; 100-row identity probe had 0 invalid structures
Proceed to retrieval baseline; retain external novelty regimes as pending
2026-09-16
Phase 1 retrieval baseline
Build a low-memory, identity-safe spectral retrieval floor
Index built over all 2,539,608 rows; 2,160,035 valid spectra; fold-0 mask excludes all 503,842 held-out rows; molecule-level fixture submission has 400/400 covered molecules and passes schema/count checks
Keep baseline; run grouped MRR/Top-1/Recall evaluation before closing G1
2026-09-17
Qualified rebuilt infrastructure
Separate corrected identity namespace from legacy evidence
phase0-qualified-g0-20260917.json records 274,195 identities, 22 passing local tests, A/B guards and source/mask hashes
Qualified local infrastructure only; preserve official parity/acquisition caveats
2026-09-17
Bounded molecule-level retrieval
Establish a diagnostic floor on the rebuilt namespace
5,974-identity library/B cohorts plus 250 A identities; one valid query spectrum per identity; saved report and exit-0 timing log
Not all-spectrum G1; audit metric definitions and query selection before promotion
2026-09-18
All-spectrum G1 execution
Aggregate permitted spectra for each validation molecule
Started 06:26 MYT; still active with no result artifact at the 08:21 checkpoint
Keep G1 open; require semantic, provenance, strict-output and resource audit, not just process completion
2026-09-18
Community findings + execution-plan review
Improve candidate coverage before heavier models
Prioritized structure-only snapshots/mass-formula candidates, OOF fingerprints and separate analogue propagation; added leakage, adduct, cap and aggregation checks
Adopt revised backlog order; no new model training, submission or G1 closure claimed
Blockers and decisions
Actionable local blockers: G1-01 through G1-08 are not all satisfied. Resolve query selection, full-pool/conditional metric semantics, per-molecule/stratified evidence, strict submission validation, complete artifact binding and evaluation resource instrumentation before accepting G1.
External qualifications, not reasons to fabricate evidence: official scorer executable/hash/reference vectors and exact acquisition lineage remain unavailable; C is a proxy, not true hidden novelty. The 1,184-versus-1,151 documentation discrepancy is pinned locally and is not itself a remaining implementation blocker.
Do not start: learned-model training before qualified local G1; large encoders/de novo before smaller database/fingerprint/analogue baselines justify them. Phase 3A/3B precedes Phase 2 in the revised dependency order.
Do not submit: until a regenerated molecule-level output passes strict local checks, caveats are documented, and an offline rebuilt-artifact run succeeds. This TODO review does not authorize a Kaggle submission, paid compute, public redistribution or execution of every newly listed experiment.
Completion rule: code present != run completed != independently valid evidence != gate closed. Preserve all four distinctions in status updates and in the goal state.