Skip to content

feat(noach): Parashat Noach garden from Nechama Leibowitz's gilyonot - #12

Merged
EliezerIsrael merged 12 commits into
mainfrom
claude/nechama-noah-close-read-39a40e
Oct 12, 2026
Merged

EliezerIsrael merged 12 commits into
mainfrom
claude/nechama-noah-close-read-39a40e

Conversation

@EliezerIsrael

Copy link
Copy Markdown
Member

Parashat Noach: a Close Read garden from Nechama Leibowitz's gilyonot

?sheet=noach has 5 passages, each read in 3 of her years: 15 leaves, 58 sections and 474 steps. It's built with the scan-checked Bereshit pipeline. Every quoted card is a verbatim slice of her text, checked against her original scans, and test_provenance proves it.

Passage Years
A Righteous Man in His Generations (6:9–7:5) 1947 · 1954 · 1958
The Flood (7:1–8:19) 1945 · 1952 · 1962
Never Again (8:20–9:17) 1946 · 1951 · 1964
Your Lifeblood (9:1–7) 1948 · 1957 · 1970
Babel (10:1–11:9) 1944 · 1960 · 1968

The audit trail is research/parshiyot/noach.md. §9 lists the open judgment calls for Lev.

No manuscript images

I looked for Leningrad and Talmud moments. The three natural ones were accent questions in 1963, 1966 and 1967 (1967's Minchat Shai literally appeals to "accurate manuscripts" for וימח, which folio 4v shows). On the scans, all three sit in the editor's box, «שאלות בטעמי המקרא — העורך: מיכאל פרלמן». They are not hers, the same finding as Bereshit 1964 §ד. Her own Noach questions never rest on page layout, so none are used (decided 2026-10-12).

What the scan check found

  • Questions:
    • Five of her questions are missing from Sefaria's digitization.
    • One is replaced by an unrelated question (1968 §ד Q3).
    • Two lost their openings.
  • Sources: two Rashi passages she printed are missing.
  • Text slips: several word-level slips in the quoted sources.

All of these are settled with evidence in noach-scancheck/triage.json and overrides.json. One finding per checker, and every inserted line, was read on the scan by eye. No sheet studies Noah's drunkenness (9:20–27), confirmed across all 30 scans.

Changes outside the Noach data (affect other sheets)

  • css/close-read.css, phones only: comparison panels get tighter padding. A comparison panel spent about 210px of the 315px phone panel on padding and labels, so her השווה tables couldn't fit even Hebrew-only at the 14px floor. All other sheets' phone tests still pass.
  • tests/test_render.py: the breadcrumb-headroom check now measures against the pill's max width. The pill shrinks to fit short crumbs, so the old check reported about 8px for any short title, which made it impossible to pass by shortening. This fixes a measurement bug; the test isn't any looser.
  • tests/test_provenance.py: accepts en_basis: "nataf" (R. Francis Nataf's published English of her own words, 1970). The leading question number is dropped on both sides, because the digitizer's numbers and Nataf's disagree with her scan.
  • research/scripts:
    • bereshit_lib.py is split into a shared nechama_lib.py plus per-parsha bereshit_lib/noach_lib. data/bereshit.json rebuilds byte-identically.
    • check_leaves.py takes an optional parsha.
    • harvest_noach.py fixes three bugs that harvest_bereshit.py still has (pack §8). They were harmless for Bereshit because every difference there was triaged.

Tests

python3 -m pytest: 171 passed, 2 xfailed. Every Noach path passes at 1440×900 and 390×844, along with the branch clicks. The phone comparison panels keep at least 64px of headroom at the font floor, as a margin for Linux CI fonts.

🤖 Generated with Claude Code

EliezerIsrael and others added 11 commits October 12, 2026 15:05
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, open calls

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h verse cache

bereshit_lib keeps Bereshit's folio panels on top of the shared lib; data/bereshit.json
rebuilds byte-identically. check_leaves takes an optional parsha. The provenance test
accepts en_basis "nataf" (Nataf's published English of the whole item).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five checkers read every page; one finding per checker confirmed by eye. 114
substantive differences triaged; 7 scan-only items inserted. The Noach harvest
fixes three template bugs (silent drop of untriaged differences, difficulty marks
written into her text, misaligned gap fragments).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…checks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five passages x three years, 15 leaves, 58 sections, 474 steps, built by
research/scripts/build_noach.py from the scan-checked harvest; every quoted card
traces to it (test_provenance).

- Leaves in research/scripts/noach_leaves/, paper trails in research/parshiyot/noach-leaves/.
- 1970 uses Nataf's published English for her questions (en_basis nataf; the leading
  question number is dropped on both sides, since the digitizer's and Nataf's numbers
  disagree with her scan).
- Phones: comparison panels get tighter padding so their text fits the 45vh panel.
- test_render: measure breadcrumb headroom against the pill's max width; the pill
  shrinks to fit short crumbs, so the old check always reported ~8px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… with trimmed panels

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w range wording

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lose-read-39a40e

# Conflicts:
#	data/index.json
#	index.html
@gitvelocity-reviewer

Copy link
Copy Markdown

📊 Code Quality Score: 45/100

Base 18+6+7+4+9+1 = 45. Extra Large ESF 1.0x. 45 x 1.0 = 45.

Category Score Factors
🔭 Scope 18/20 42 files and about 28,000 effective lines, nearly all JSON under research/parshiyot/noach-harvest/ (babel/1944.json, babel/1960.json, babel/1968.json, blood/1948.json, blood/1957.json, blood/1970.json, covenant/1946.json, covenant/1951.json) and research/parshiyot/noach-raw/161275.json. Also touches data/index.json, index.html cache-bust query strings, css/close-read.css, two test files and two new Python files. The diff was truncated, so the card data and build script are not visible.
🏗️ Architecture 6/20 noach_lib.py re-exports nechama_lib and calls use('noach'), so Noach reuses the Bereshit pipeline instead of forking it. test_provenance.py widens the en_basis contract from two values to three (ours, sefaria, nataf) and adds an en_nataf field to harvest items. research/scripts/noach_leaves/__init__.py is an empty package marker.
⚙️ Implementation 7/20 Logic is confined to unnumber and NUMBERING in test_provenance.py (strips leading question numbers when comparing Nataf cards) and the cap/avail computation in test_render.py (uses the pill's max-width minus border widths instead of its current clientWidth). The harvest files carry per-item scan_status, scan_fixes, scan_pending and triage records that encode scan-versus-digitization decisions.
⚠️ Risk 4/20 Static site content; revert is a file removal. The noach entry in data/index.json reuses the previous entry's description text, so the landing card could show a wrong blurb. blood/1957.json item 16 pairs Genesis 1:27 Hebrew with a Genesis 1:1 ref and its English, which would mislabel any card that cites it. unnumber is applied to both sides of the comparison and could mask a real numbering difference.
✅ Quality 9/15 The provenance test rejects a card whose Hebrew is not a verbatim slice of the harvest item and, for sefaria and nataf bases, requires the whole item and its own English. test_render.py gets a more accurate breadcrumb overflow measurement. No test drives unnumber directly, no test covers noach_lib.py, and 1944.json and 1968.json carry digitizer_additions that mention sections absent from sections.
🔒 Perf / Security 1/5 No performance or security work. The only related change is the index.html query-string bump that forces clients to reload the CSS and JS.

Was this score accurate? 👍 Yes · 👎 No

How this was scored →

Scored by GitVelocity · How are scores calculated?

…ates; Perlman-box check; phone comparison limits

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@EliezerIsrael
EliezerIsrael merged commit ef916ed into main Oct 12, 2026
1 check passed
@gitvelocity-reviewer

Copy link
Copy Markdown

📊 Code Quality Score: 55/100

Base 55 (S16 + A8 + I12 + R7 + Q11 + P1) × ESF 1.0 (Extra Large: 28516 effective lines, 43 files) = 55

Category Score Factors
🔭 Scope 16/20 43 files are touched. The visible diff shows seven noach-harvest/<theme>/<year>.json files, noach-raw/manifest.json listing 30 raw sheets, a new data/index.json entry for noach, noach_leaves/__init__.py, check_leaves.py, test_provenance.py, test_render.py, close-read.css, index.html cache-bust strings and SKILL.md. The truncated remainder presumably holds the leaf scripts, build_noach.py, data/noach.json and the pack. Most effective lines are harvest data rather than logic.
🏗️ Architecture 8/20 The Noach harvest reuses the existing pipeline, and SKILL.md now describes <parsha>_lib.py importing helpers from nechama_lib.py via use('<parsha>'). check_leaves.py takes an optional parsha argument, so the checker is no longer tied to bereshit_leaves. test_provenance.py gains a third English basis, nataf, read from an en_nataf field. No new service or dependency is introduced.
⚙️ Implementation 12/20 test_provenance.py adds NUMBERING and unnumber so a Nataf card drops the leading question number on both sides before comparing, and it requires the card to quote the whole item for both sefaria and nataf bases. check_leaves.py picks the parsha by testing whether <arg>_leaves exists. test_render.py measures breadcrumb room against the pill's max-width minus borders instead of its current clientWidth. The harvest JSONs record per-item scan_status, scan_fixes, scan_pending, scan_unapplied and triage decisions with basis of scan, digitization, editorial or scan-only.
⚠️ Risk 7/20 The change publishes a new sheet at data/noach.json, listed in data/index.json with demoPath flood/fl-1952. A wrong quotation would reach readers as Nechama Leibowitz's text. The shared test_provenance.py and test_render.py edits affect Bereshit and Nasso runs as well. The CSS change is limited to the phone breakpoint's .comparison-side padding and .primary-ref margin. SKILL.md edits change instructions for future agent runs but not runtime behaviour.
✅ Quality 11/15 test_provenance.py checks that each cited card is a verbatim slice of a publishable harvest item and that en_basis matches the item's own English. Each harvest file links to a noach-scancheck/<id>-<year>.md scan check, and digitizer_additions lists what the digitization added to or dropped from her pages. SKILL.md gains guidance on the editor's box on page 2 and on phone comparison panels. The diff shows no new test that drives the nataf branch directly. The leaf scripts are not visible.
🔒 Perf / Security 1/5 The only controls are the provenance and render tests. No input validation, permission or performance work is present.

Was this score accurate? 👍 Yes · 👎 No

How this was scored →

Scored by GitVelocity · How are scores calculated?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant