01-projects/life/family-history/roots-timeline

Implementation notes — per-person pages (2026-07-21)

2026-07-21·reference

Build of people/ per-person pages for the private roots-timeline site, per dispatch spec.

What was built

Extraction approach (decision)

The ANC / GROUPS / REGIONS blocks in index.html are JS object literals (typographic quotes, unquoted integer keys), so regex→JSON would be fragile. The generator does a balanced-delimiter scan (string-aware) to slice each const X=… block, then evaluates it with new Function — JS evaluating JS is the faithful parser. Chose .mjs over .py for exactly this reason.

Identity, dedupe, slugs

Inclusion decisions

Relationships

Sources

Special content (per spec)

index.html wiring

Bug found & fixed during verification

Verification (local server :8743, Playwright, cache-busted ?v= on every load)

Not done / open