Read-only delta over 01-inventory.json. No FamilySearch API calls. No site content modified. Generated for the 2026-05-28 audit.
Adds three per-ancestor fields — parent_pid, chain_id, generation_index — plus a supplementary extraction_method. v1 is untouched; output is 01-inventory.v2.json.
Priority 1 (explicit parent reference) returned ZERO across the codebase. Every chain data structure the site renders — the AncestorTable ancestors arrays, ChainPerson/ChainNode/DescentNode in relationships.ts / ancestors/data.ts / cousins/data.ts, and FamilyTreePage members — is an ordered array with no parent_pid / parent_id field. Parentage is encoded only by position. Therefore 100% of populated links use Priority 2 (ordinal); none are structurally asserted by an explicit field.
generation_index is per chain: 0 = the most-recent generation shown on that chain, increasing upstream. For chains that reach the living brothers (the /ancestors/* descents, the Plantagenet full chain, the cousin branches) g0 is the living generation; for self-contained line tables g0 is simply the youngest person in that table.
| Metric | Count |
|---|---|
| Ancestor rows (total, = v1) | 1096 |
Rows placed on a chain (chain_id set) | 266 |
Rows with parent_pid populated (real edges) | 204 |
Rows with parent_pid null | 892 |
| • null — chain head (oldest on its chain, no parent shown) | 45 |
| • null — on a chain but parent has no PID | 17 |
| • null — off-chain (prose / collateral / non-chain page) | 830 |
| Distinct chains | 51 |
| Extraction method = ordinal | 266 |
| Extraction method = unresolved | 830 |
| Extraction method = structured (explicit parent field) | 0 |
These pages carry ancestor rows but no extractable parent-child ladder. Every row on them is parent_pid: null, chain_id: null, extraction_method: "unresolved".
| Page | Why |
|---|---|
/about | non-chain page (index / prose / thematic) |
/basement | non-chain page (index / prose / thematic) |
/battles | non-chain page (index / prose / thematic) |
/battles/bunker-hill | non-chain page (index / prose / thematic) |
/battles/liberty-tree | non-chain page (index / prose / thematic) |
/battles/valley-forge | non-chain page (index / prose / thematic) |
/contents | non-chain page (index / prose / thematic) |
/history/benjamin-franklin | non-chain page (index / prose / thematic) |
/history/mayflower | non-chain page (index / prose / thematic) |
/history/migration | non-chain page (index / prose / thematic) |
/history/nantucket-founding | non-chain page (index / prose / thematic) |
/history/portledge | non-chain page (index / prose / thematic) |
/history/the-women | non-chain page (index / prose / thematic) |
/history/whaling | non-chain page (index / prose / thematic) |
/lines/battle-of-quebec | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/benjamin-peckham | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/british-gentry | 2 table(s): 0 roster, 2 non-monotonic, 0 descent chains |
/lines/coffin | 1 table(s): 0 roster, 1 non-monotonic, 0 descent chains |
/lines/coffin-revolution | 1 table(s): 1 roster, 0 non-monotonic, 0 descent chains |
/lines/deborah-crowe | 2 table(s): 0 roster, 2 non-monotonic, 0 descent chains |
/lines/long | 2 table(s): 0 roster, 2 non-monotonic, 0 descent chains |
/lines/lucretia-mott | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/mary-morrell | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/mayflower | 2 table(s): 0 roster, 2 non-monotonic, 0 descent chains |
/lines/nantucket | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/perry | 2 table(s): 0 roster, 2 non-monotonic, 0 descent chains |
/lines/portledge | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/rowland-macy | 0 table(s): 0 roster, 0 non-monotonic, 0 descent chains |
/lines/sullivan | 1 table(s): 0 roster, 1 non-monotonic, 0 descent chains |
/lines/tree | family-group tree; spouses+collaterals interleaved; PIDs covered on dedicated line pages |
/lines/winter-swift | 1 table(s): 0 roster, 1 non-monotonic, 0 descent chains |
/notable-kin | non-chain page (index / prose / thematic) |
Method is ordinal wherever a chain was extracted (no structured/explicit-parent source exists), unresolved otherwise. source records which ordered array the chain came from.
| Page | rows | on-chain | w/ parent | chains | method | source |
|---|---|---|---|---|---|---|
/about | 11 | 0 | 0 | 0 | unresolved | non-chain page |
/ancestors/arthur-plantagenet | 6 | 6 | 5 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/charlemagne | 10 | 10 | 9 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/edward-iii | 8 | 8 | 7 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/edward-iv | 7 | 7 | 6 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/john-robinson | 9 | 9 | 7 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/king-john | 8 | 8 | 7 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/rollo | 9 | 9 | 8 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/tristram-coffin | 14 | 12 | 11 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/ancestors/william-the-conqueror | 9 | 9 | 8 | 1 | ordinal | ancestors/data.ts#descentToJohn |
/basement | 5 | 0 | 0 | 0 | unresolved | non-chain page |
/battles | 3 | 0 | 0 | 0 | unresolved | non-chain page |
/battles/bunker-hill | 1 | 0 | 0 | 0 | unresolved | non-chain page |
/battles/liberty-tree | 6 | 0 | 0 | 0 | unresolved | non-chain page |
/battles/valley-forge | 1 | 0 | 0 | 0 | unresolved | non-chain page |
/contents | 215 | 0 | 0 | 0 | unresolved | non-chain page |
/cousins/benedict-arnold-v | 3 | 3 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/benjamin-franklin | 3 | 3 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/henry-viii | 3 | 3 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/james-gardner-officer | 4 | 3 | 0 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/joseph-arnold | 4 | 4 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/kezia-coffin | 4 | 2 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/levi-coffin-ii | 2 | 2 | 0 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/maria-mitchell | 2 | 2 | 0 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/mary-queen-of-scots | 5 | 5 | 1 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/cousins/walter-folger-jr | 2 | 2 | 0 | 2 | ordinal | cousins/data.ts (Y-chain + commonAncestor) |
/history/benjamin-franklin | 16 | 0 | 0 | 0 | unresolved | non-chain page |
/history/mayflower | 4 | 0 | 0 | 0 | unresolved | non-chain page |
/history/migration | 8 | 0 | 0 | 0 | unresolved | non-chain page |
/history/nantucket-founding | 4 | 0 | 0 | 0 | unresolved | non-chain page |
/history/portledge | 15 | 0 | 0 | 0 | unresolved | non-chain page |
/history/the-women | 10 | 0 | 0 | 0 | unresolved | non-chain page |
/history/whaling | 7 | 0 | 0 | 0 | unresolved | non-chain page |
/lines/battle-of-quebec | 3 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/benjamin-peckham | 22 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/british-gentry | 21 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/cincinnati | 44 | 20 | 17 | 3 | ordinal | ancestor-table |
/lines/coffin | 6 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/coffin-revolution | 13 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/coogan | 11 | 10 | 8 | 2 | ordinal | ancestor-table |
/lines/deborah-crowe | 25 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/folger | 16 | 11 | 8 | 2 | ordinal | ancestor-table |
/lines/green | 7 | 3 | 2 | 1 | ordinal | ancestor-table |
/lines/herodias-long | 16 | 14 | 12 | 2 | ordinal | ancestor-table |
/lines/jenkins | 8 | 8 | 6 | 2 | ordinal | ancestor-table |
/lines/long | 32 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/lucretia-mott | 6 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/manion | 5 | 5 | 4 | 1 | ordinal | ancestor-table |
/lines/mary-morrell | 6 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/mayflower | 5 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/nantucket | 11 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/pelletier | 17 | 7 | 6 | 1 | ordinal | ancestor-table |
/lines/perry | 14 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/plantagenet-descent | 35 | 35 | 30 | 2 | ordinal | ancestor-table |
/lines/portledge | 15 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/rowland-macy | 2 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/stukely-westcott | 16 | 12 | 11 | 1 | ordinal | ancestor-table |
/lines/sullivan | 3 | 0 | 0 | 0 | unresolved | ancestor-table |
/lines/swift | 152 | 15 | 11 | 2 | ordinal | ancestor-table |
/lines/tree | 93 | 0 | 0 | 0 | unresolved | family-tree aggregate |
/lines/wall | 21 | 4 | 3 | 1 | ordinal | ancestor-table |
/lines/warren-arden | 6 | 4 | 2 | 1 | ordinal | ancestor-table |
/lines/westcott | 17 | 11 | 10 | 1 | ordinal | ancestor-table |
/lines/winter-swift | 11 | 0 | 0 | 0 | unresolved | ancestor-table |
/notable-kin | 19 | 0 | 0 | 0 | unresolved | non-chain page |
columns="loyalist" roster tables (battle rosters, Society-of-the-Cincinnati member lists) are NOT chains — they list peers, not generations. Dropped from linkage so no peer-as-parent edges are invented./lines/long, /lines/perry, /lines/swift, /lines/wall) interleave spouses and the spouses' own parents with the direct line, so birth years are non-monotonic. They fail the monotonic gate and are left unresolved rather than linked by raw position. The same individuals are linked where the site presents them as a clean descent (their /ancestors/* pages, or curated AncestorTable ladders)./lines/tree (FamilyTreePage) is a family-group aggregate (spouses tagged marriage, collateral siblings/children interleaved). Not safely linearisable by ordinal; every PID on it is also carried on a dedicated line page. Treated as a non-linearisable aggregate.AncestorTables under a single <h2> (e.g. the Plantagenet "Full Chain", 26 generations), the tables are greedily merged while birth years keep trending and the boundary-overlap person is de-duplicated; a divergent branch (e.g. Eleanor of Aquitaine's Capetian line) correctly splits into its own chain.mrca (most-recent common ancestor) to both the brothers' and the cousin's branch so the branch head's parent resolves to the shared ancestor.parent_pid (not present anywhere in the inventory): 0.parent_pid values: 0.Generated by audit/build-inventory-v2.cjs (read-only; re-runnable).