Skip to content

species: stone marten (Martes foina) - #1302

Open
jt55401 wants to merge 2 commits into
mainfrom
wave-20261101c-987-martes-foina
Open

jt55401 wants to merge 2 commits into
mainfrom
wave-20261101c-987-martes-foina

Conversation

@jt55401

@jt55401 jt55401 commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

What this adds

species: stone marten (Martes foina)

Closes #987

Evidence and scope

  • Taxon: GBIF usageKey 5218887 (SPECIES, ACCEPTED) and ITIS TSN 621941 agree; iNaturalist 41800; Wikidata Q27366. Checked 2026-11-01.
  • Activity and behaviour are the only fields changed from the prior branch. Lifespan (ADW 3-year natural-habitat average, CC BY-NC-SA 3.0) is kept as the last-resort non-commercial source for traits.lifespan_y only, with the 10-year wild maximum and 18-year captive figure not used.
  • Behaviour claims cite the English Wikipedia article ("skilled climber in heavily forested areas", "skilled swimmer", "typically hunts on the ground", "mainly a crepuscular and nocturnal animal"). Authored, unsourced parameters (cross_chance 0.05, the 30 m canopy and 60 m water distances, flee distances, need thresholds) are named as judgement in provenance.behavior.
  • No other existing record is touched.

Activity and behaviour

  • Behaviour: species-local species/martes-foina/behavior.json, program fsm-scansorial-mustelid-v1. States: walk (ground hunting, wander, drink), climb (canopy fruit foraging), swim (water crossing), gallop (flee), rest in shelter by day (sun elevation 10–90 deg, enforced from every active state), idle, touched, accept. All four declared locomotion modes (Walk, Gallop, Climb, Swim) are executed by a reachable state. The program does not model arboreal flight to a tree refuge or month-specific behaviour.
  • Months: the program uses no month_in; all twelve months are enabled. Seasonality comes only from the activity curve.
  • Activity: FR curve is now GBIF-only (CC0 and CC BY), 49,443 records after excluding the placeholder-dated ONCFS dataset. The previous iNaturalist tier C input (NC, 749 records) is dropped, so the only NC datum left is lifespan. Raw mixed curve is retained in query.raw_tool_monthly for audit only.
  • Day/night: nocturnal; daytime rest enforced via sun-elevation transitions from idle and from each active state.
  • Poses previewed: idle, walk, gallop, swim, rest (all five declared poses viewed in the previewer). Climb has no pose by design.
  • Limitation: MissingShoulderHeight warning is left as is (no sourced value).

Validate report

uv run tools/validate.py --self-check       -> 629 file(s) scanned, 0 finding(s)
uv run tools/validate.py species/martes-foina --write-attribution --report
    martes-foina: 0 errors, 2 warnings (MissingShoulderHeight; NonCommercialLicense on sources.adw, lifespan only)
uv run tools/validate.py --report           -> rc 0
uv run tools/validate.py --locale all --report -> rc 0
uv run --with pytest --with jsonschema pytest tools/tests -q -> 347 passed, 8 skipped

Commit tested: 8b76d3c.

jt55401 and others added 2 commits November 1, 2026 04:32
Adds the Martes foina record with GBIF/iNaturalist/ITIS/Wikidata identifiers,
Wikipedia-sourced morphology and behaviour, a fsm-ground-forager-v1 behaviour,
and an FR activity curve. The FR curve excludes one GBIF dataset whose
January-only placeholder dates produced a spurious January peak. Lifespan is
sourced only from a non-commercial Animal Diversity Web account (3 years
average in natural habitat).

Refs #987

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Use species-local fsm-scansorial-mustelid-v1 so climb (canopy fruit),
swim (water crossing) and walk (ground hunting) are each executed,
replacing the ground forager that executed only walk and gallop.
Switch the FR activity curve to the permissive GBIF-only curve so
non-commercial iNaturalist data is confined to traits.lifespan_y.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>

@jt55401 jt55401 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Hourly maintainer review: 8b76d3c

Disposition: held for public action-contract evidence; feeding corrections requested. No merge.

species/martes-foina/behavior.json:cross_water executes wander(gait=swim) after merely detecting water within 60 m. forage_canopy executes eat_nearest(tag=fruit,gait=climb) after detecting fruit within 30 m, without a canopy condition. The public record proves reachable gait selection, but does not establish movement into water or an arboreal fruit target. Supply public action-contract evidence/a supported targeting sequence, or explicitly identify this representation gap and constrain the claims. A separate supervised Codex Sol gpt-6.1-sol/xhigh audit confirmed this public-contract gap in schema/v0.1/behavior-program.schema.json:201–235,369–397 and tools/validate.py:1098–1148. These are logical contract limits, not an observed land-swimming failure; private-host behavior remains unknown.

Only small_vertebrate and fruit have feeding actions. The declared invertebrate/carrion shares total 25% but cannot execute; implement fitting choices or document a defensible diet simplification. Add outcome regressions for feeding and ordinary daylight exits, as docs/data-quality.md §4 requires for new programs. Update the stale locomotion provenance claiming climb/swim are unreachable in a shared program. Correct ADW attribution to include Kimberlee Carter.

Evidence checked: live accepted GBIF 5218887, active iNaturalist 41800, valid ITIS 621941 and Wikidata Q27366 agree. ADW Lifespan/Longevity explicitly states three years average in natural habitat, separately from the ten-year maximum; the prose supports the chosen Low-confidence statistic despite an inconsistent summary field. ADW text is CC BY-NC-SA 3.0 under its checked Conditions of Use; use is isolated to lifespan. Wikipedia Description supports the sex/season mass and total-length calculations; Range supports the partial European list/introduced Wisconsin, and the French/German reproduction sections support the disclosed calendar differences. The FSM has no month predicates; ordinary active states have priority-50 daytime rest exits, below intentional threat/touch branches.

Independently reproduced the FR GBIF-only curve exactly. Source query 58,714 minus excluded dataset 9,271 gives 49,443, with 30,589 month-bearing records. Subtracted the same dataset from the Mammalia baseline. The dataset is CC BY 4.0; its only populated monthly facet is January, and the 300-record sample has January-1 dates in 2015–2017. This supports the disclosed placeholder-date exclusion, with the sample limitation retained. Raw NC mixed values are audit-only. Existing species/regions are untouched.

At this head, focused validation 0 errors/2 warnings, 34/34 provenance; self-check, all-species/all-locale validation and pytest 347 passed/8 skipped pass. Attribution regeneration leaves no species diff. Current-head CI validate passes. Viewed idle, walk, gallop, swim, rest in cached Chromium: bib remains attached; no blocking clipping observed. Swim uses a generic legged animation and Climb has no built-in pose, so neither proves medium-specific scene behavior. Private import/live-scene acceptance remains untested.

This branch has not been deployed

No deployments
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.

species: Stone Marten (Martes foina)

1 participant