efce79b3fa
GEN-3g: CP colourpoint het-naming rule — '-Hell' == cchm/ch (breeder C9 answer)
...
- colourpointName(): A- cchm/ch now yields 'CP-<base>-Hell' (was 'CP-<base>');
A- cchm/cchm unchanged. Non-agouti branch (Marder/Siam/Zobel/Zobel-Hell)
unchanged — already used the het token.
- Added 5 new catalog entries: CP-Agouti-Hell, CP-Silberagouti-Hell,
CP-Algierfuchs-Hell, CP-Polarfuchs-Hell, CP-Orangeschimmel-Hell.
CP-Fuchs-Hell was already present. Catalog 61 -> 66.
- Regenerated colorVarietySeed.generated.json (66 rows for Pam DATA-2 re-seed).
- Tests: 82 -> 82 (reworded het case) + 1 new GEN-3g describe block. All pass.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com >
2026-06-06 15:14:23 +02:00
972570b142
GEN-3f: reconcile cchm colourpoint catalog to the breeder's CP- naming
...
Computed Farbschlag now == the breeder's dropdown/seed names for colourpoints,
so the mismatch hint stops and the live re-import name-matches her data
(god: she uses the CP- prefix form + Marder/Siam/Zobel/Zobel-Hell; ZERO of the
old portal suffix names). FULL collapse (god-approved, data-safe).
Catalog (BASE_COLORS) 73 -> 61: the 24 portal cchm rows collapse to 12 breeder
varieties — Marder, Siam, Zobel, Zobel-Hell (aa marten/sable group; E & D
irrelevant per the merged GEN-3e rule) and CP-Agouti, CP-Silberagouti,
CP-Algierfuchs, CP-Polarfuchs, CP-Fuchs, CP-Fuchs-Hell, CP-Blaufuchs,
CP-Orangeschimmel (A- 'CP-<base>'; -Hell shade variants collapsed).
- representativeGenotype() now splits a heterozygous 'x/y' token, so the het
colourpoints Siam & Zobel-Hell (C: 'cchm/ch') carry the correct het canonical
genotype and the engine computes their own names (verified).
- Engine covers all fox(ee)/dilute(dd) A- cchm bases via the E-family fallback
(no Unbekannt). KNOWN BEST-EFFORT GAP: CP-Fuchs-Hell and CP-Blaufuchs both
compute 'CP-Fuchs' (the het-lighter / blue-dilute distinction isn't encoded);
their distinct rows remain for hand-pick + import name-match. Closing this
fully needs the breeder's exact fox-CP genotype rule.
Regenerated colorVarietySeed.generated.json (61 rows) for Pam's re-seed
migration. Gate green: build, eslint, vitest 78, e2e 80. de.ts untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 11:47:40 +02:00
5fd8cf4395
GEN-3e: C-locus colourpoint naming (CP-<base> for A-+cchm; Marder/Siam/Zobel/Zobel-Hell for aa+cchm); chch kept as Hermelin/Himalaya via base-match
2026-06-06 11:04:57 +02:00
8125c453d0
GEN-3d: dominance tiebreak — unknown locus resolves to wild-type reading (unknown-C => full-colour, not c[h] white; markers default unmarked)
2026-06-06 10:58:15 +02:00
c35a6eca04
GEN-3c: fix 'Unbekannter Farbschlag' — unknown=wildcard in matches() + E-pair-aware family fallback (eef=Fuchsschimmel)
2026-06-06 10:45:16 +02:00
2e20df624f
GEN-3c: unknown allele displays as '-' (storage stays '?'); parser accepts '-' and skips fully-unknown tokens; de.ts hints
2026-06-06 10:45:15 +02:00
e2fd32ea12
GEN-3a: test that Uw input renders as canonical G (never echoed back)
2026-06-06 10:27:08 +02:00
7aac59f3e5
GEN-3a: de.ts warning texts (SLS_LETHAL/SUPERSCHECKE_DEAF) + genetics tests (Uw alias, Sls het/lethal, Superschecke, flag tolerance, Schimmel fix)
2026-06-06 10:25:48 +02:00
a0b720df73
GEN-3a: Schimmel catalog fix (breeder C5) — remove Schwarzschimmel, efef base=Orangeschimmel, Silberschimmel wins efef-gg, +CP-Orangeschimmel; regenerate ColorVariety seed
2026-06-06 10:25:48 +02:00
1e7dc8f91d
GEN-3a: Uw=G alias, second spotting locus Sls (SlSl lethal), Sp×Sls Superschecke, flag/metadata token tolerance (dea/WFNZ/DP/RV/GV)
2026-06-06 10:25:48 +02:00
c937b6d5a8
GEN-2: add generated ColorVariety seed (73 rows: name, canonicalGenotype, sortOrder, image) for DATA-2
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 01:00:33 +02:00
a9778ad1d2
GEN-2: expand Farbschlag catalog 18->73 (baseportal.de) + images + collision-aware tests
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 00:55:35 +02:00
3629e89e87
GEN-1: expose CATALOG seed view (Name/CanonicalGenotype/SortOrder) for DATA-2 + round-trip test
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:47:11 +02:00
0408a482cf
GEN-1: export genotypeToFarbschlag for DATA-1 denormalization contract
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:45:07 +02:00
3561b435d5
GEN-1: add vitest suite (worked example, SpSp renorm, wildcards) + erasable-enum fix
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:43:21 +02:00
2bee5caaa2
GEN-1: add Probeverpaarung API (breed) + public index
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:42:05 +02:00
d99294e30e
GEN-1: add phenotype tokens + Farbschlag catalog (18 varieties + Schecke/Rex modifiers)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:41:34 +02:00
ebc61acd18
GEN-1: add lethality rules + warning codes (SpSp lethal+renormalize, ReRe semi)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:40:06 +02:00
76d8380ea1
GEN-1: add Punnett engine (per-locus + full genotype distribution, wildcard support)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:39:31 +02:00
3fc430f1a0
GEN-1: add Genotype type + canonical serialization (JSON + display string)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:38:49 +02:00
9d5608f46e
GEN-1: add locus/allele model (A C D E G P Sp Re, multi-allele C/E)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:38:18 +02:00
2b9a0cd648
GEN-1: add vitest + exact Fraction utility
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-05 23:37:53 +02:00