feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782) - #1801

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10
Apr 29, 2026
Merged

feat(lenses): Leviticus 1-10 lens content, batch 1 of Pentateuch-rest pilot (#820, #1782)#1801
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-1-to-10

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

First batch of the Pentateuch-rest pilot for Epic #820. Leviticus 1–10, the sacrificial-system + ordination block.

Tracking issue: #1782 ([#820 / 3] Pentateuch rest — Exodus, Leviticus, Numbers, Deuteronomy). Exodus is now done; this kicks off Leviticus.

Per-chapter distribution (32 entries total)

ChapterLensesCountNotes
lev1typological, christocentric, grammatical, literary4Burnt offering — strong typological/christocentric pull
lev2grammatical, typological, devotional3Grain offering
lev3typological, canonical, christocentric3Fellowship offering — covenant-meal type
lev4grammatical, typological, christocentric, devotional4Sin offering — atonement peak
lev5grammatical, redemptive, typological3Guilt offering — Isa 53:10 asham anchor
lev6literary, devotional2Priestly procedures (sparse, procedural)
lev7literary, canonical2Priestly procedures cont. (sparse)
lev8typological, christocentric, literary3Aaron's ordination
lev9typological, christocentric, canonical, devotional4Eighth day, fire from heaven — theology peak
lev10grammatical, literary, devotional, canonical4Nadab and Abihu — holiness peak

Sacrificial-system chapters (lev1–lev5) lean typological/christocentric per the brief's Lev genre profile. Procedural chapters (lev6, lev7) are sparse. lev9 and lev10 (the narrative theology peaks of the block) maxed at 4.

Theological anchors

  • lev1 'olah — Hebrew root 'alah ("to go up") drives the grammatical entry; christocentric anchor lands on Heb 9:14's amomos (without blemish) tracing Lev 1:3, 10's tamim.
  • lev3 shelamim — peace offering pattern → Lord's table type → Rom 5:1 "peace with God." Three-lens triangulation on the same Hebrew root without overlap.
  • lev4 chattat — grammatical entry surfaces the lexical pun (same word names problem and remedy); christocentric entry lifts vv 13-21's congregational scope to 1 Jn 2:2's "sins of the whole world."
  • lev5 asham — the clearest Servant-song bridge in the early Levitical sacrifices. Isa 53:10's ʾāšām is the same Hebrew word used at v 6, 7, 15. Grammatical entry names this lexical fact; typological entry traces it to Christ.
  • lev8 ordination — typological pattern (anointing oil, blood ear-thumb-toe, seven-day waiting) → Heb 5:1-10 high priest qualification. Christocentric entry lands on Heb 9:11-14.
  • lev9 fire-from-heaven — typological lens recast around the eighth-day type (Gen 17:12 / 2 Chr 7:9 / Lk 24:1), not the fire — to leave the canonical lens free to thread fire across canon (Gen 15:17 / 1 Kgs 18:38 / 2 Chr 7:1 / Acts 2:3) without overlap.
  • lev10 esh zarah — grammatical entry on the adjective zar (alien, illegitimate); canonical entry threads v 3's holiness principle through Acts 5, 1 Cor 11, Heb 12.

Pipeline gates

GateResult
python3 _tools/schema_validator.py0 failures, 19 pre-existing ESV warnings
python3 _tools/lens_quality_scorer.py --chapter lev{1..10} --floor 10032/32 entries scoring 100/100 (after one fix — see below)
python3 _tools/build_sqlite.pyhermeneutic_lenses: 8 lenses, 409 contents (= 377 baseline + 32 new)
python3 _tools/validate_sqlite.py0 failures, 2 pre-existing non-fatal warnings

app/assets/db-manifest.json and app/assets/explore-images.json drift was reverted before staging — only the 10 chapter JSON files ship.

Quality-fix log (transparent)

One first-pass miss. The lev9 typological entry originally read:

v 1's eighth day marks new beginning — a typological motif: …

The scorer's must_have_one_of for typological is a substring match, and "type" is not a substring of "typological" (typ-OLOGICAL ≠ typ-E). The entry was rewritten to use "pattern foreshadows" + "type-chain" — both legitimate typological tokens — yielding 100/100. Recorded here in case the same trap bites a future batch.

Scholar-set adaptation

Leviticus uses Milgrom (Jacob Milgrom, Anchor Bible Leviticus + Numbers) where Exodus used Alter and Sarna. All panel_filter arrays in this PR use milgrom/calvin/mac — Alter and Sarna do not appear, since they are scoped to Genesis/Exodus content and would surface no panel in these chapters even if technically valid against the global allowlist.

Plagiarism guards

The Lev themes panels are unusually thin (single-sentence titles like "The Eighth Day: Fire from Heaven" + a six-tag scores list), so word-overlap risk is naturally low. Even so:

  • lev9 — themes title is "Fire from Heaven." Typological entry pivots to the eighth-day type-chain (different motif); canonical entry uses "flame motif echoes" rather than restating "fire from heaven" verbatim.
  • lev10 — themes title is "Strange Fire Before the Lord." Grammatical entry uses Hebrew esh zarah + adjective analysis; literary entry names the v 3 speech as the chapter's center; canonical entry threads v 3's holiness principle, not the calf-strange-fire framing.

Tier-2 audit watch list

Cross-canonical and lexical claims that warrant tier-2 spot-check:

  • lev1 / christocentric — Heb 9:14 amomos matches Lev 1:3, 10 tamim
  • lev2 / typological — leaven (Mt 16:6) + covenant-salt (Mk 9:50) typology
  • lev3 / christocentricshalom root → Rom 5:1 "peace with God"
  • lev4 / grammatical — chattat lexical doubling (sin / sin offering)
  • lev5 / grammatical + typological — Lev 5:6, 7, 15 asham → Isa 53:10 asham lexical chain
  • lev8 / christocentric — Heb 9:11-14 high priest typology
  • lev9 / typological — eighth-day type-chain (Gen 17:12, 2 Chr 7:9, Lk 24:1)
  • lev9 / canonical — fire-from-heaven motif (Gen 15:17, 1 Kgs 18:38, 2 Chr 7:1, Acts 2:3)
  • lev10 / canonical — Acts 5:1-11, 1 Cor 11:30, Heb 12:28-29 holiness-violation thread

Out of scope

  • No content/leviticus/* changes
  • No app code changes
  • No db-manifest.json / explore-images.json drift (reverted)
  • No new scholar entries — Milgrom already in _tools/config.py's SCHOLAR_REGISTRY (verified)

Rollback plan

Single-commit PR. Revert with git revert <sha> and rerun _tools/build_sqlite.py to roll the hermeneutic_lenses table back to 377 contents.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation144784 passed, 0 failed
Build DB
DB Integrity101 passed, 0 failed

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 4001❌ 04001
Suites✅ 532❌ 0532

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 88.6s

Sign up for freeto 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

@CraigBuckmaster