From 2097dddf3aacd90e3cf410e9991f89f9f22476d0 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 28 May 2026 21:15:40 +0200 Subject: [PATCH] docs(adr): ADR-026 cross-references findAc3Candidates() predicate (#361) Names the JavaScript function next to the AC3 SQL probe so a future reader of ADR-026 has a concrete code anchor for the testable predicate (Markus cycle-3 cosmetic). The SQL remains the source-of-truth probe against live data; the function is the capture-time + fixture-time signal. Co-Authored-By: Claude Opus 4.7 --- docs/adr/026-stammbaum-layout-in-house.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/adr/026-stammbaum-layout-in-house.md b/docs/adr/026-stammbaum-layout-in-house.md index c0e65724..71417919 100644 --- a/docs/adr/026-stammbaum-layout-in-house.md +++ b/docs/adr/026-stammbaum-layout-in-house.md @@ -107,6 +107,16 @@ threshold, so `packBlocks.ts` is **not** yet warranted. AND parent.generation IS NOT NULL ); ``` + + The same predicate is encoded as a unit-testable JavaScript function — see + `findAc3Candidates()` in + `frontend/src/lib/person/genealogy/__fixtures__/findAc3Candidates.mjs`, + asserted against the committed canonical fixture by + `validateFixture.test.ts`, and emitted as a stderr soft-warn by + `frontend/scripts/capture-network-fixture.mjs` on every recapture. The SQL + is the source-of-truth probe against live data; the function is the + capture-time and fixture-time signal that the predicate's count crossed + zero. - **AC6 — Bundle-impact gate (≤ 40 kB gzipped on `/stammbaum`).** Moot under this ADR; reactivates only under ADR-027 (dagre adoption). - **AC7 — Visual regression at 320 / 768 / 1440.** `toHaveScreenshot()`