Skip to content

promote: resolution-determinism stack (fork #64/#67/#68/#69/#70) - #92

Merged
trentleslie merged 1 commit into
devfrom
promote/resolution-determinism
Sep 9, 2026
Merged

trentleslie merged 1 commit into
devfrom
promote/resolution-determinism

Conversation

@trentleslie

Copy link
Copy Markdown
Collaborator

Promotes the resolution-determinism src stack from the fork (trentleslie/biomapper2), all Greptile 5/5 there, to org dev. Org dev was current through fork #60 (org #91); this brings the remaining src gap.

Scope

Ports the 14 differing src files (org src/ becomes identical to fork src/) + 17 src-coupled test files + refmet freeze fixtures. studies/ and studies-coupled tests stay fork-only.

Bundled because the changes are entangled in shared files (certificate.py, mapper.py, the Kestrel annotators) and cannot be cleanly separated:

Safety

  • Snapshot-absent behavior is byte-identical to current prod (no REFMET_SNAPSHOT_PATH set → live /match path unchanged), so deploying this to org dev without a freeze changes nothing until a snapshot is configured.
  • Offline gate green in the promotion worktree: 817 passed, 0 failed; ruff/black/pyright clean on src.

Live validation (done on the fork)

Cold-cache A/B on fork dev: with the freeze, retinol + 4 SCFAs resolve deterministically (identical across runs and batch sizes, retinol=CHEBI:12777); without it, 84/200 rows flip node between two cold runs (retinol CHEBI:12777↔CHEBI:132246). Artifacts: determinism_proof_20260908.

🤖 Generated with Claude Code

…70

Brings org dev src to fork dev src for the resolution-determinism stack (org was current
through fork #60 / org #91). Ports the 14 differing src files (making org src == fork src)
plus the 17 src-coupled test files + refmet freeze fixtures. Studies-coupled tests and the
entire studies/ tree stay fork-only, as does the fork-specific prose-figure/off-category-audit
guard (both assert the studies tree exists).

Bundled (per the batching policy) since the changes are entangled in shared files
(certificate.py/mapper.py/kestrel annotators) and cannot be cleanly separated:
- fork #64: Kestrel search sends schema field names category/prefix (server-side filtering)
- fork #67: resolver deterministic majority tie-break (_stable_majority)
- fork #68: RefMet availability surfacing + bounded batch resilience
- fork #69: deterministic Kestrel candidate order (stable_result_order)
- fork #70: pinned /match freeze as authoritative RefMet source + refmet_source provenance

All Greptile 5/5 on the fork. Offline gate green in this worktree (817 passed, 0 failed);
ruff/black/pyright clean on src.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant