# HANDOFF — narrative backfill & MH-bio integration (2026-07-06) Start-here note for continuing the `## Narrative` backfill in a fresh session. Pairs with the live queue in [[Narrative backfill — status & queue]] and the rules in the vault **CLAUDE.md** + memory `[[narrative-bio-rule]]` / `[[archival-deepread-methods]]`. ## ✅ UPDATE (2026-07-06, later session): ALL DIRECT ANCESTORS NARRATED The full **direct-ancestor** queue is now done (25 more profiles this session, all deep-read from scans/records — see the daily log `09 Log/2026/07/2026-07-06.md`). Consistency check passes (0 narrative+bio, 0 broken galleries). The remaining ~170 queue items are **collateral kin** (grand-uncles/aunts, cousins, in-laws), not direct line. Notable finds: [[Aron Bernstein (b.1919)]] full ITS/Arolsen survival path; the Baal Shem Tov ([[Israel Isserles (b.1698)]]) & Rebbe Nachman of Breslov ([[Nachman Horodenker (b.1772)]]) identified & their descent claims flagged for verification; several data corrections flagged (Bajla Frenk death month; Srul Abram death day; Syma Grynblat birth year; Spitz/Simonovitz father-name puzzles). The resume-batch direct-read verification (caveat below) is still owed. ## Where things stand - **~106 profiles now have a `## Narrative`.** Each finished profile carries `bio_migrated: true` in frontmatter, and its generated `### Biography — from MyHeritage` block has been **removed in-place** (the content is integrated into the Narrative + footnotes + Research). Verify at any time: ``` # should print NONE / NONE python _tools/… (see check below) ``` - **`build_vault.py` gate (durable):** the generator drops `### Biography — from MyHeritage` **only** when frontmatter has `bio_migrated: true`. A mechanical link check is NOT enough — set the flag by hand only after verifying BOTH the bio's **facts** and its **scan links** are in the Narrative/footnotes. Un-flagged profiles keep their bio. Stripped bios are always recoverable from `_source/*.ged` via `build_vault.html_to_md`. - **Queue:** ~195 profiles still need a narrative (~25 DIRECT ancestors). See [[Narrative backfill — status & queue]] for the ordered list; DONE markers are inline. ## ⚠️ Two bugs found & fixed 2026-07-06 (don't re-introduce) 1. **Gallery-callout spacing.** When you strip the `### Biography` block, you MUST leave a **blank line** before the following `> [!gallery]+ Media` (and `**Documents…**`, `### How you're related`, `*GEDCOM`). Collapsing to a single `\n` makes the renderer drop the `>` and show `[!gallery]+ Media` as plain text with images spilling out. `_tools/bio_flag_strip.py` does this correctly; `_tools/fix_gallery_blankline.py` repairs any that slipped. 2. **Flag-without-strip.** Setting `bio_migrated: true` only makes the bio drop on the **next rebuild** — you must ALSO strip the block in-place (via `_tools/bio_flag_strip.py`) or the profile shows both the Narrative and the bio until rebuild. ## ⚠️ Honest caveat on recent batches (needs a direct-read pass) For the resume batches (Icek Balter, Josef Mendelsberg, Izrael Josef Friedman, Azriel Yosef Barbanel, Moszek Mortko Hamerman, Maryia Grynblat, Bajla Felyat, Brana, Wolf Lax, Hersz Frajnd, Mordko Majer Kaufman, Nuchym Mittelman, Josef Tuchsznajder, Judka Frenk, Shlomo Zalman Horowitz, Shalom Goldfischer, Yosef Goldfischer), the narratives were built from the **record *translations* already on the MyHeritage bio**, NOT from a fresh read of the scans. This departs from the standing "READ THE ACTUAL RECORDS" rule. Every such profile flags the specific un-read scans under `## Open questions` ("Read the … scan directly"). A pass to actually open those scans (birth/marriage/death acts) and confirm/upgrade the details is still owed — the facts are sound per the translations, but not independently verified from the images. ## Tools (`_tools/`) - **`bio_flag_strip.py "Tree\\I\\Name.md" …`** — sets `bio_migrated: true` and strips the `### Biography` block in-place, preserving the blank line before the gallery/GEDCOM. Use after you've integrated a bio into a narrative. - **`restore_bios_from_gedcom.py [--apply]`** — re-inserts a stripped bio from `_source/*.ged` for any `bio:full/stub` profile lacking `bio_migrated:true` (undo / safety). - **`resweep_dump.py list` / `resweep_dump.py dump A B`** — lists un-migrated profiles by bio length; dumps the MH bio + user-sections side by side so you can compare facts. - **`fix_gallery_blankline.py [--apply]`** — repairs any missing blank line before gallery/Documents/related/GEDCOM markers. Quick consistency check (run in the vault root): ``` python - <<'PY' import re,glob,os ROOT=r"01 People"; AE="<!-- AUTO:END -->" both=[];gap=[] for p in glob.glob(os.path.join(ROOT,"**","*.md"),recursive=True): s=open(p,encoding="utf-8").read() if AE not in s: continue h,t=s.split(AE,1) if "## Narrative" in t and len(t.split("## Narrative",1)[1].split("##",1)[0].strip())>40 and "### Biography — from MyHeritage" in h: both.append(os.path.basename(p)) if re.search(r"[^\n]\n> \[!gallery\]",h): gap.append(os.path.basename(p)) print("narrative+bio:",both or "NONE"); print("broken gallery:",gap or "NONE") PY ``` ## To continue the backfill (per profile) 1. `date +%F` (never trust the session date). 2. Pick the next `[DIRECT]` entry from [[Narrative backfill — status & queue]]. 3. **Read the actual archival scans** (methods in `[[archival-deepread-methods]]`: szukaj `{hash}_max` in-browser fetch → downloads to `…\Downloads\Claude Geni`; skanoteka token-curl; hebrewbooks `pagepngs`; FamilySearch signed-in). Don't narrate from a translation if the scan is reachable. 4. Write `## Narrative` (footnotes REQUIRED; render each record as story; person-not-dataset; hedge inference; don't label our people "Jewish" unless the record's interfaith dynamic is the substance). Fill `## Research` / `## Evidence` (captioned record image for every definite match) / `## Open questions`. 5. Set `bio: full|stub` + `bio_updated` + then run `_tools/bio_flag_strip.py` on the file → sets `bio_migrated:true` and removes the redundant bio. 6. Log every touched profile to `09 Log/YYYY/MM/YYYY-MM-DD.md`; update the DONE markers + count in [[Narrative backfill — status & queue]]. ## What was done in the 2026-07-06 session (summary) - Deep-read narratives (from scans): Nusyn & Michel Barbanel; Issakhar Berisz Segal (fire-relief letter, 1753 Council signature); Yehoshua & Shmuel & Szyia Segal; Chaim, Manas & Moszek Lejb Winer; Icek Hochman; Abram Stajnzalc; Icek Balter (death act). - Abram Abus Goldrajch: parents confirmed Jankiel + Itta; 2nd wife corrected Engelsberg → Szulsztajn (Engelsberg was the officiating rabbi). - Rubin Edelsztajn narrative converted from inline hyperlinks → footnote format. - **MH-bio integration + removal for all ~106 narrated profiles**, gated on `bio_migrated:true`; generator changed; the 74-profile facts-and-links resweep completed (only 1 real gap found: Lejzor Fajn's Cypra-parentage alternative). Restored all bios from GEDCOM first so nothing was lost. - Resume batches (direct ancestors, from translations — see caveat above): Chana + Herszek (stubs); Izrael Josef Friedman; Josef Mendelsberg; Azriel Yosef Barbanel; Moszek Mortko Hamerman; Judka Frenk; Bajla Felyat; Shlomo Zalman Horowitz; Mordko Majer Kaufman; Nuchym Mittelman; Josef Tuchsznajder; Yosef Goldfischer; Brana; Wolf Lax; Hersz Frajnd; Maryia Grynblat; Shalom Goldfischer; Pejsach Edelsztajn + Ichiel Michel Hochberger (flagged + stripped). - Download folder moved to `…\OneDrive - Ideal Vitamins\Downloads\Claude Geni`.