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

Implementation notes — roots v4, sibling-round integration (2026-07-21)

2026-07-21·reference

Spec: scratchpad/roots-v4-change-spec.md · Sources: 2026-07-21-sibling-round-partC.md + partD.md Files touched: index.html, build-people.mjs, people-bios.json, people/* (regenerated).

Applied

A — Roger Williams chain. ANC 1409 story rewritten (Austin 1887 Olney entry p.353 verbatim, 1670 deed anchor, both caveats), conf Parents per Austin 1887 · Probable, prob kept. NEW ANC 2818 John Sayles (1633–1681), 2819 Mary Williams (1633–1681; 1638-vs-1633 and 1681-vs-1684 noted), 5638 Roger Williams (1603–1683), 5639 Mary Barnard (1609–1676 — added because partD carries her PROBABLE). All prob:true. Timeline: 3 dashed bars in Olney & Lambert (RW drawn with an other→newengland seg split at 1631, mirroring the Thomas Olney England-years pattern). 1638 EVENT text updated per spec.

B — Hooper reversal. ANC 29 → Mary Adeline Hooper, b:1856 d:null, prob REMOVED, conf Confirmed · brother Erastus’s 1927 death certificate, reversal story. 56 → Franklin Calloway Foster, 1830–1911, undashed (partD: CONFIRMED via death cert + census), two-Julius quarantine in story. 57: NOT renamed — partD rates "Osborn" itself POSSIBLE only, so the condition fails; kept Harriett (Foster) but added the census-anchored dates (~1826–1880, PROBABLE) + honest maiden-name story. (Deviation from strict "leave as-is": dates/story only, name untouched.)

C — New lines. ANC 102/103 (Thomasson/Truitt, parents of 51), 206 Levi Truitt Jr (will-anchored, CONFIRMED, no dash) + 207 Susannah Morgan (kept prob — the will anchor is Levi's; her identity is WikiTree+FaG convergence), 204 Lemuel Thomasson (b-only, tree+footer), 130 Andrew Strain Sr + 131 Mary (maiden disputed Burgin/Cathey/Reed, said so), 108 Noah Whiteside + 109 Malinda Lynch (partC: PROBABLE w/ dates → added). Timeline bars: Truitt Jr, Morgan, Noah, Malinda, JMT, SRT → Gibby group; Andrew Strain Sr → Wilson group. Dateless (204, 131, Mary Barnard) → footer not-drawn list.

D — Corrections. 49 Rowena d:1895→null, story per spec; her TIMELINE bar removed (d:null renders as living-fade — moved to footer not-drawn list instead). 54/55 dated 1829–1919 / 1827–1919, drawn in Gibby group. 21 Josephine: both-readings birth conflict + Green-Wood Lambert-plot roster (10 burials, no Oakfords) in story + bios. GW Gibby 1909 kept, 1915 variant logged in story; JPO Nantucket kept, 1925 county-bio variant logged; Daniel Gibby untouched. POSSIBLE-tier people (Malachi, Sally Caylor, etc.) stay off all three views — doc/bios mentions only, tagged possible.

E — Regenerate. people-bios.json: 13 new entries (multi-paragraph RW/Sayles/Mary Williams; Hooper reversal on Mary Adeline's page); rewrites for catharine-sayles, rowena, josephine, lumpkin (death cert #18757 closes his "vanishes after 1920" gap), harriett; renames mary-a-foster→mary-adeline-hooper, franklin-c-foster→franklin-calloway-foster (orphaned generated pages deleted). build-people.mjs: LINE_BY_AHN +49/131/204/5639, MARRIAGE +102/206/2818/5638, SOURCES (Lumpkin's own FaG 104268120, Hooper, Austin links, Thomasson/Truitt/Strain memorials), FRONTIER_HINTS for the new frontier edges (Sales/Sole retraction quarantine, Hooper sweep, Osborn sweep, etc.). Build: 106 person pages, no unassigned-line warnings.

Deviations / judgment calls

  1. Fan/aria/tooltip "living" logic fixed — three spots used d==null && b!=null → "living"; with 29 and 49 now b-set/d-null that rendered "1856–living"/"1818–living". Changed to the tree view's existing b>1900 heuristic → renders "–?". Required for spec D to display honestly.
  2. ANC 28 Lumpkin also updated (spec didn't list him, but his story claimed the Hooper strike as fact and his dates are partC-CONFIRMED via his own cert): 1856–1925, conf Dates confirmed · edge to Julius probable, prob kept (the 14→28 edge is still a census case per partD).
  3. #canvas min-width 2200→2520 so event labels stay clear of the 12 net-new bars (86 bars total; max bar right edge 2354).
  4. 57 and 207 kept dashed as argued above; 206 undashed per spec.
  5. Footer sources line + "Open frontier" and "New this afternoon" table rows updated to match the new state.

Verification (spec E, cache-busted)

Served on 8745 (listener killed first and after). Every Playwright load used a fresh ?v= param. Console: 0 errors, 0 warnings across all loads (checked per-load and all:true at the end).

Not deployed; no messages sent.