Skip to content

METPO predicate proposal cohort metpo_traitmech_v2 (8 predicates, local-only)#65

Merged
realmarcin merged 2 commits into
mainfrom
metpo-proposal-traitmech-v2
May 24, 2026
Merged

METPO predicate proposal cohort metpo_traitmech_v2 (8 predicates, local-only)#65
realmarcin merged 2 commits into
mainfrom
metpo-proposal-traitmech-v2

Conversation

@realmarcin
Copy link
Copy Markdown
Contributor

Summary

Scope-B follow-on to the v1 cohort (#63). Proposes 8 new METPO object properties (METPO:2007400METPO:2007407) that together cover 128 of the 537 residual causal-edge predicates left after the v1 grounding pass (#61), plus 2 RO mapping clarifications.

Not filed upstream in this PR — cohort lives in this repo only, matching the pattern established for v1 (#63).

Cohort (proposals/metpo_traitmech_v2/)

METPO ID Label Edges Cluster
METPO:2007400 manifests as 52 Phenotype manifestation: physiological state → observable trait
METPO:2007401 selects for 20 Evolutionary selection: env condition → adapted trait
METPO:2007402 feeds electrons into 12 Electron flux: donor → respiratory / transport pathway
METPO:2007403 transfers electrons to 6 Single-step redox: donor → acceptor
METPO:2007404 fixed by 9 Inorganic substrate → fixation pathway
METPO:2007405 oxidized to 8 Reduced substrate → oxidized product
METPO:2007406 challenges 9 Stressor → tolerance trait (paired)
METPO:2007407 mitigates 12 Defense → stressor (paired-positive of challenges)

Each candidate was checked against RO/Biolink first; per-predicate rejections documented in proposal.md (e.g. biolink:manifestation_of has range disease, too narrow; biolink:treats is clinical; etc.).

Subset tag: metpo_traitmech_2026_06. Domain = range = METPO:1007401 (trait causal node, minted in v1).

Mapping expansion (this PR)

mappings/predicate_grounding.tsv grows from 28 → 38 rows:

  • 8 new METPO predicates above
  • controlsRO:0002211 (semantic equivalent of regulates per RO definition)
  • directsRO:0002211 (same)

Corpus impact

After applying just ground-predicates --apply:

Before v2 After v2
Edges grounded 482 618 (+136)
Edges residual 537 401 (−136)
Distinct residual labels 191 181 (−10)

The remaining 401-edge residual is dominated by curator-paraphrased predicates with low counts (drives 19, defines 14, maintains 13; then 178 labels with ≤12 edges each). A future v3 cohort could pick up another cluster after v2 adoption.

Verification (local)

$ just verify-proposal metpo_traitmech_v2
  properties TSV: 10 rows
  failures: 0
  status:   PASS

$ just robot-validate-proposal metpo_traitmech_v2
  merged.owl lines:    8454
  reasoned.owl lines:  8460
  delta:               +6
  status:              PASS (no UNSAT, ELK exited 0)

$ just validate-strict
  files scanned:      357
  files with ERROR:   0

ELK reasoning sees METPO:1007401 (v1 domain class) as an unnamed external IRI — no error, just preserved domain/range constraint that resolves cleanly once v1 + v2 are merged upstream together.

Test plan

  • just verify-proposal metpo_traitmech_v2 → PASS
  • just robot-validate-proposal metpo_traitmech_v2 → PASS
  • just validate-strict clean (357 files, 0 ERRORs) after re-grounding
  • Idempotency: re-running just ground-predicates --apply reports 0 additional groundings
  • CI re-runs validate-strict on the YAML diff

🤖 Generated with Claude Code

Scope-B proposal: 8 new METPO object properties
(METPO:2007400-METPO:2007407) covering 128 of the 537 residual
causal-edge predicates left by the v1 grounding pass (#61).

Cohort (proposals/metpo_traitmech_v2/):
- manifests as       (METPO:2007400, 52 edges) — state → observable trait
- selects for        (METPO:2007401, 20 edges) — env condition → adapted trait
- feeds electrons into (METPO:2007402, 12 edges) — donor → transport chain
- transfers electrons to (METPO:2007403, 6 edges) — single-step redox
- fixed by           (METPO:2007404,  9 edges) — substrate → fixation pathway
- oxidized to        (METPO:2007405,  8 edges) — substrate → oxidized product
- challenges         (METPO:2007406,  9 edges) — stressor → tolerance trait
- mitigates          (METPO:2007407, 12 edges) — defense → stressor (paired)

Each candidate was checked against RO/Biolink first; rejections
documented per-row in proposal.md (e.g. biolink:manifestation_of has
range `disease` — too narrow; biolink:treats is clinical; etc.).

Subset tag: metpo_traitmech_2026_06. Domain = range = METPO:1007401
(trait causal node, minted in v1). ROBOT/ELK validates clean: delta
+6 axioms, no UNSAT (v1's METPO:1007401 resolves to unnamed external
IRI without v1 merged, which is fine — no error, just preserved
domain/range constraint).

Per-corpus impact (after re-running ground-predicates --apply with
the expanded 38-row mappings TSV):
- Edges grounded:        482 → 618 (+136)
- Edges residual:        537 → 401 (−136)
- Distinct labels:       191 → 181 (−10)

Also adds 2 RO mappings (controls, directs → RO:0002211 regulates)
that match the RO definition of regulation but were not in the v1
mapping cohort.

NOT filed upstream in this PR (per user instruction). Cohort lives
in this repo only; upstream filing path documented in proposal.md.
Mapping TSV notes flag the 8 proposed CURIEs as
"proposed upstream in proposals/metpo_traitmech_v2" so reviewers
know they're pending METPO adoption.

Verified locally:
  - just verify-proposal metpo_traitmech_v2 → PASS (0 failures)
  - just robot-validate-proposal metpo_traitmech_v2 → PASS (ELK +6)
  - just validate-strict → 0 ERROR rows / 357 files

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 23, 2026 21:32
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a second local-only METPO proposal cohort (metpo_traitmech_v2) to cover high-frequency residual causal-edge predicates and applies the expanded predicate-grounding mappings across the TraitMech corpus, updating grounding/residual reports accordingly.

Changes:

  • Introduces 8 proposed METPO ObjectProperties (METPO:2007400METPO:2007407) as a v2 proposal cohort with ROBOT-template TSV + narrative.
  • Expands mappings/predicate_grounding.tsv with 10 new mappings (8 proposed METPO predicates + controls/directsRO:0002211).
  • Re-runs predicate grounding across affected trait YAMLs and refreshes residual + Biolink coverage reports.

Reviewed changes

Copilot reviewed 115 out of 115 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
reports/predicate_grounding_residual.tsv Updated residual predicate list after applying the expanded grounding mapping.
reports/biolink_coverage.tsv Updated applied/residual coverage snapshot reflecting new mappings.
proposals/metpo_traitmech_v2/proposal.md New v2 cohort narrative describing scope, rationale, verification, and corpus impact.
proposals/metpo_traitmech_v2/metpo_proposal_properties_robot.tsv New ROBOT template TSV defining the 8 proposed METPO predicates.
mappings/predicate_grounding.tsv Adds mappings for the 8 proposed predicates plus controls/directsRO:0002211.
data/traits/physiology/photolithotrophic.yaml Grounds an edge predicate_id to METPO:2007402 and appends curation history event.
data/traits/physiology/photolithoautotrophic.yaml Grounds an edge predicate_id to METPO:2007404 and appends curation history event.
data/traits/physiology/photoautotrophic.yaml Grounds multiple edge predicate_ids to new v2 METPO predicate CURIEs and appends curation history event.
data/traits/physiology/organotrophic.yaml Grounds an edge predicate_id to METPO:2007402 and appends curation history event.
data/traits/physiology/organoheterotrophic.yaml Grounds an edge predicate_id to METPO:2007402 and appends curation history event.
data/traits/physiology/oligotrophic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/physiology/nutrient_adaptation.yaml Grounds controls edge to RO:0002211 and manifests as edges to METPO:2007400; appends curation history event.
data/traits/physiology/mixotrophic.yaml Grounds an edge predicate_id to METPO:2007404 and appends curation history event.
data/traits/physiology/methylotrophic.yaml Grounds an edge predicate_id to METPO:2007405 and appends curation history event.
data/traits/physiology/methanotrophic.yaml Grounds an edge predicate_id to METPO:2007405 and appends curation history event.
data/traits/physiology/lithoheterotrophic.yaml Grounds edges to METPO:2007402/METPO:2007403 and appends curation history event.
data/traits/physiology/lithoautotrophic.yaml Grounds an edge predicate_id to METPO:2007404 and appends curation history event.
data/traits/physiology/hydrogenotrophic.yaml Grounds edges to METPO:2007405/METPO:2007404 and appends curation history event.
data/traits/physiology/copiotrophic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/physiology/chemotrophic.yaml Grounds edges to METPO:2007402/METPO:2007403 and appends curation history event.
data/traits/physiology/chemoorganotrophic.yaml Grounds edges to METPO:2007402/METPO:2007403 and appends curation history event.
data/traits/physiology/chemolithotrophic.yaml Grounds edges to METPO:2007405/METPO:2007402 and appends curation history event.
data/traits/physiology/chemolithoheterotrophic.yaml Grounds an edge predicate_id to METPO:2007402 and appends curation history event.
data/traits/physiology/chemolithoautotrophic.yaml Grounds edges to METPO:2007402/METPO:2007404 and appends curation history event.
data/traits/physiology/chemoautotrophic.yaml Grounds an edge predicate_id to METPO:2007404 and appends curation history event.
data/traits/physiology/chemoautolithotrophic.yaml Grounds edges to METPO:2007402/METPO:2007404 and appends curation history event.
data/traits/physiology/carboxydotrophic.yaml Grounds edges to METPO:2007405/METPO:2007402 and appends curation history event.
data/traits/physiology/autotrophic.yaml Grounds an edge predicate_id to METPO:2007404 and appends curation history event.
data/traits/morphology/yellow_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/white_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/triangular_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/tailed_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/star_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/square_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/sporulation.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/spore_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/spore_forming.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/spindle_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/rod_shaped.yaml Grounds a directs/controls-style edge to RO:0002211 and appends curation history event.
data/traits/morphology/ring_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/red_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/pleomorphic_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/pink_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/pigmentation.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/ovoid_shaped.yaml Grounds edges to RO:0002211 and METPO:2007400 and appends curation history event.
data/traits/morphology/oval_shaped.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/morphology/orange_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/non_spore_forming.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/morphology/non_motile.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/morphology/motile.yaml Grounds an edge predicate_id to RO:0002211 and appends curation history event.
data/traits/morphology/irregular_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/green_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/gram_variable.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/fusiform_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/flask_shaped.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/morphology/filament_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/ellipsoidal.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/dumbbell_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/disc_shaped.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/diplococcus_shaped.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/morphology/cream_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/coccobacillus_shaped.yaml Grounds a controls edge to RO:0002211 and appends curation history event.
data/traits/morphology/carotenoid_pigmentation.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/brown_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/branched_shaped.yaml Grounds controls/directs edges to RO:0002211 and manifests as to METPO:2007400; normalizes wrapped text; appends curation history event.
data/traits/morphology/black_pigmented.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/morphology/bacillus_shaped.yaml Grounds a directs/controls-style edge to RO:0002211 and appends curation history event.
data/traits/metabolism/respiration.yaml Grounds an edge predicate_id to METPO:2007403 and appends curation history event.
data/traits/metabolism/electron_transfer.yaml Grounds an edge predicate_id to METPO:2007403 and appends curation history event.
data/traits/metabolism/disproportionation.yaml Grounds an edge predicate_id to METPO:2007405 and appends curation history event.
data/traits/metabolism/cable_bacteria_metabolism.yaml Grounds an edge predicate_id to METPO:2007403 and appends curation history event.
data/traits/environment/thermophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/temperature_range.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/environment/temperature_preference.yaml Grounds a challenges edge to METPO:2007406 and appends curation history event.
data/traits/environment/temperature_optimum.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/temperature_optimum_very_low.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/temperature_optimum_high.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/temperature_delta.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/slightly_halophilic.yaml Grounds a mitigates edge to METPO:2007407 and appends curation history event.
data/traits/environment/psychrotolerant.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/psychrophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/ph_range.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/environment/ph_optimum.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/ph_optimum_low.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/ph_optimum_high.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/ph_growth_preference.yaml Grounds challenges edges to METPO:2007406 and appends curation history event.
data/traits/environment/ph_delta.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/obligately_alkaphilic.yaml Grounds a challenges edge to METPO:2007406 and appends curation history event.
data/traits/environment/obligately_acidophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/non_halophilic.yaml Grounds mitigates edges to METPO:2007407, normalizes wrapped text, and appends curation history event.
data/traits/environment/nacl_range.yaml Grounds an edge predicate_id to METPO:2007400, normalizes wrapped text, and appends curation history event.
data/traits/environment/nacl_optimum.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/nacl_optimum_high.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/nacl_delta.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/environment/moderately_halophilic.yaml Grounds edges to METPO:2007407/METPO:2007401 and appends curation history event.
data/traits/environment/microaerotolerant.yaml Grounds a mitigates edge to METPO:2007407, normalizes wrapped text, and appends curation history event.
data/traits/environment/mesophilic.yaml Grounds edges to METPO:2007401/METPO:2007400 and appends curation history event.
data/traits/environment/hyperthermophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/halotolerant.yaml Grounds a mitigates edge to METPO:2007407 and appends curation history event.
data/traits/environment/halophily_preference.yaml Grounds a mitigates edge to METPO:2007407 and appends curation history event.
data/traits/environment/halophilic.yaml Grounds edges to METPO:2007401/METPO:2007407 and appends curation history event.
data/traits/environment/facultatively_alkaphilic.yaml Grounds a challenges edge to METPO:2007406 and appends curation history event.
data/traits/environment/facultatively_acidophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/extremely_halophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/extreme_hyperthermophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/environment/euryhaline.yaml Grounds edges to METPO:2007401/METPO:2007407 and appends curation history event.
data/traits/environment/alkaphilic.yaml Grounds edges to METPO:2007401/METPO:2007406 and appends curation history event.
data/traits/environment/alkalotolerant.yaml Grounds challenges edges to METPO:2007406 and appends curation history event.
data/traits/environment/aerotolerant.yaml Grounds a mitigates edge to METPO:2007407 and appends curation history event.
data/traits/environment/acidotolerant.yaml Grounds a challenges edge to METPO:2007406 and appends curation history event.
data/traits/environment/acidophilic.yaml Grounds an edge predicate_id to METPO:2007401 and appends curation history event.
data/traits/ecology/plant_pathogen.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/ecology/pathogenic_to_host.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/ecology/human_pathogen.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.
data/traits/ecology/animal_pathogen.yaml Grounds an edge predicate_id to METPO:2007400 and appends curation history event.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread proposals/metpo_traitmech_v2/proposal.md Outdated
Comment thread proposals/metpo_traitmech_v2/metpo_proposal_properties_robot.tsv Outdated
Comment thread proposals/metpo_traitmech_v2/metpo_proposal_properties_robot.tsv Outdated
Comment thread proposals/metpo_traitmech_v2/proposal.md
Three fixes per Copilot inline comments:

- TSV row 3 (manifests as): swap definition_source from
  `copiotrophic.yaml` (which has no `manifests as` edge — only
  `selects for`, `supports`, etc.) to
  `nutrient_adaptation.yaml#nutrient_adaptation_life_history_axis`,
  which is the canonical graph where `manifests as` first appears.

- TSV row 9 (challenges): swap definition_source from
  `acidophilic.yaml` (no `challenges` edge — uses `selects for`) to
  `acidotolerant.yaml#acidotolerant_acid_stress_homeostasis`, which
  carries the `acidic_exposure challenges ...` edge directly.

- proposal.md context paragraph: correct grounded counts from the
  incorrect "648 of 1185" to the actual "618 of 1019", matching the
  Corpus Impact table. Verified via `uv run python <<<` count over
  data/traits/**/causal_graphs[].edges[] (total=1019, grounded=618,
  residual=401).

- proposal.md paired-predicate heading: rephrase "the only paired
  pair" → "the only paired predicate set" (removes the redundancy).

Verified: `just verify-proposal metpo_traitmech_v2` → PASS, 0 failures.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@realmarcin realmarcin merged commit bdc6051 into main May 24, 2026
1 check passed
@realmarcin realmarcin deleted the metpo-proposal-traitmech-v2 branch May 24, 2026 03:58
realmarcin added a commit that referenced this pull request May 24, 2026
…cate, 14 edges) (#73)

* Add METPO predicate proposal cohort metpo_traitmech_v4 (defines)

Follow-on to v2 predicate cohort (#65). Picks up the next-most-
prevalent single residual label: `defines` (14 edges in
delta/range/optimum phenotype graphs).

Cohort (proposals/metpo_traitmech_v4/, 1 predicate row):
- METPO:2007500 defines  (14 edges)
    "<axis> defines <phenotype>" — operationally-definitional
    relation between an environmental measurement axis and the
    phenotype variable it parameterizes.

Each rejected upstream candidate documented in proposal.md
(biolink:has_phenotype wrong direction; RO:0000087 mismatched
semantics; METPO:2007401 selects-for is evolutionary not
definitional).

ID block: METPO:2007500 (fresh 2007500+ block per skill; v2 used
2007400-2007407). Subset tag: metpo_traitmech_2026_08.
Domain = range = METPO:1007401 (trait causal node, v1).

Mapping addition (mappings/predicate_grounding.tsv, 38 → 39 rows):
- defines → METPO:2007500

Per-corpus impact:
  Edges grounded:   688 → 702 (+14, 67% → 69%)
  Edges residual:   331 → 317 (-14)
  Distinct labels:  177 → 176 (-1)

NOT filed upstream (per established v1+v2+v3 convention).

Verified locally:
  - just verify-proposal metpo_traitmech_v4 → PASS (0 failures)
  - just robot-validate-proposal metpo_traitmech_v4 → PASS, ELK +6
  - just validate-strict → 0 ERROR rows / 357 files
  - just ground-predicates (post-apply) → 0 additional groundings (idempotent)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Address Copilot review on PR #73

Broaden the `defines` predicate definition + narrative to cover
both edge clusters in the corpus:

- 12 environmental-axis → numerical-phenotype edges
  (delta / range / optimum graphs across pH, salinity, NaCl,
  oxygen, temperature) — the dominant pattern.
- 2 structural-feature → morphology-trait edges
  (`outer membrane defines gram negative`,
  `periplasmic flagella defines axially filamented`) — same
  operational-definition semantics with a structural rather than
  environmental subject.

Updates in this commit:
  - proposal.md context paragraph + "uses cluster" paragraph
    split into the two-cluster description.
  - metpo_proposal_properties_robot.tsv METPO:2007500 definition
    broadened from "environmental measurement axis" to
    "operationally-defining feature (environmental measurement
    axis/condition, or structural/anatomical feature)" with both
    cluster examples in the definition.
  - mappings/predicate_grounding.tsv notes column updated to
    document both cluster groups.

Originally I narrowed the proposal definition to the dominant
12-edge cluster and missed the 2-edge morphology cluster — but
both were getting grounded to METPO:2007500. The fix preserves
the same grounding (all 14 edges → METPO:2007500) while making
the formal definition match what's actually grounded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <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.

2 participants