Skip to content

Phase 2: fix 14 wrong CURIEs in node_grounding + enforce id↔label gate#111

Merged
realmarcin merged 1 commit into
mainfrom
claude/idlabel-phase2-fixes
Jun 15, 2026
Merged

Phase 2: fix 14 wrong CURIEs in node_grounding + enforce id↔label gate#111
realmarcin merged 1 commit into
mainfrom
claude/idlabel-phase2-fixes

Conversation

@realmarcin

Copy link
Copy Markdown
Contributor

What

Closes out the id↔label validator rollout (Phase 1 → Phase 2 enforcing) by fixing the 15 mismatches the validator flagged at adoption and making the gate blocking.

All 15 were pre-existing wrong CURIEs in mappings/node_grounding.tsv, each verified against the OAK sqlite before correcting:

corpus concept old (wrong) → corrected
low temperature PATO:0000383 (female) PATO:0001306 decreased temperature
acidic external pH PATO:0001428 PATO:0001429 acidic
alkaline external pH PATO:0001429 PATO:0001430 alkaline
near-neutral external pH PATO:0001432 (decayed) PATO:0001428 medium acidity
very high temperature PATO:0001637 PATO:0001305 increased temperature
anaerobic/anoxic condition ENVO:01001057 (plant part) PATO:0001456 anaerobic
high-salt environment ENVO:01000687 (coast) ENVO:01001040 saline environment
compatible solutes CHEBI:65015 (paromamine) CHEBI:25728 osmolyte
thiosulfate CHEBI:33542 CHEBI:16094 thiosulfate(2-)
electron donor CHEBI:17499 (hydrogen donor) CHEBI:15022 electron donor
cytoplasmic pH homeostasis GO:0030641 (obsolete) GO:0051453 regulation of intracellular pH
Wood-Ljungdahl pathway GO:0046358 (butyrate biosynth) GO:0030634 carbon fixation by acetyl-CoA pathway
tyrosine catabolism GO:0006572 label → canonical "L-tyrosine catabolic process"
light PATO:0001717 kept — conf exceptions: (OAK canonical is the awkward "radiation emitting intensity quality")

Re-grounding migration

ground_causal_nodes.py only fills empty slots, so the wrong grounding: values already written into trait YAMLs needed an explicit overwrite. 34 causal-node groundings across 31 files re-migrated to the corrected CURIEs, matched by (label, node_type) case-insensitively — the pH node labels use capital "pH", and the 1428→1429→1430 / 1432→1428 shuffle required label-keyed (not value-keyed) replacement to avoid collisions. Each modified file carries a FIX_NODE_GROUNDING_CURIE curation event. All 477 pages regenerated.

Gate flipped to enforcing

label-correspondence.yaml: validate-products is now a blocking step (was report-only). Validator: 113 OK_CANONICAL + 2 OK_SYNONYM + 1 OK_EXCEPTION, 0 errors. validate-strict: 477 files, 0 errors. Pin guard unchanged/valid.

🤖 Generated with Claude Code

Corrects the 15 id↔label MISMATCHES the validator flagged at Phase-1 adoption
(all pre-existing wrong CURIEs in mappings/node_grounding.tsv, each verified
against the OAK sqlite):

  PATO:0000383(female)            -> PATO:0001306 decreased temperature
  PATO:0001428(medium acidity)    -> PATO:0001429 acidic            [acidic pH]
  PATO:0001429(acidic)            -> PATO:0001430 alkaline          [alkaline pH]
  PATO:0001432(decayed)           -> PATO:0001428 medium acidity    [near-neutral pH]
  PATO:0001637                    -> PATO:0001305 increased temperature
  ENVO:01001057(plant part, x2)   -> PATO:0001456 anaerobic
  ENVO:01000687(coast)            -> ENVO:01001040 saline environment
  CHEBI:65015(paromamine)         -> CHEBI:25728 osmolyte
  CHEBI:33542                     -> CHEBI:16094 thiosulfate(2-)
  CHEBI:17499(hydrogen donor)     -> CHEBI:15022 electron donor
  GO:0030641(obsolete)            -> GO:0051453 regulation of intracellular pH
  GO:0046358(butyrate biosynth)   -> GO:0030634 carbon fixation by acetyl-CoA pathway
  GO:0006572                      -> label fix to canonical "L-tyrosine catabolic process"
  PATO:0001717 "light intensity"  -> kept; conf exception (OAK canonical is the
                                     awkward "radiation emitting intensity quality")

Re-migrated the wrong grounding: values already written into trait YAMLs
(ground_causal_nodes.py only fills empty slots): 34 causal-node groundings
across 31 files overwritten to the corrected CURIEs, matched by (label,
node_type) case-insensitively (the pH labels use capital "pH"; the 1428/1429/
1432 shuffle required label-keyed, not value-keyed, replacement). Each modified
file gets a FIX_NODE_GROUNDING_CURIE curation event. Regenerated all 477 pages.

Flips CI label-correspondence to Phase 2: `validate-products` is now a BLOCKING
gate. Validator reports 113 OK_CANONICAL + 2 OK_SYNONYM + 1 OK_EXCEPTION, 0
errors. validate-strict: 477 files, 0 errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@realmarcin
realmarcin merged commit ffd8e4e into main Jun 15, 2026
4 checks passed
@realmarcin
realmarcin deleted the claude/idlabel-phase2-fixes branch June 15, 2026 07:28
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