feat(lenses): Leviticus 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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 21-27 lens content, batch 3 of Pentateuch-rest pilot (#820, #1782) - #1803

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feat/820-3-leviticus-21-to-27
May 2, 2026
Merged

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

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Summary

Batch 3 of the Pentateuch-rest pilot tracked under #1782. Adds 26 hermeneutic-lens entries across Leviticus 21–27, completing the Leviticus phase. Picks up after #1801 (lev1–10) and #1802 (lev11–20).

After this PR, Leviticus is done. Numbers (36 ch) and Deuteronomy (34 ch) remain to close the pilot.

Per-chapter distribution (26 total)

ChapterLensesWhy
lev21 (priestly holiness)4priesthood code peak — grammatical, christocentric, typological, canonical
lev22 (priestly purity, sacred food)2unblemished-sacrifice + exodus-holiness formula
lev23 (sacred calendar / feasts)6maximum — every feast carries a distinct NT fulfillment
lev24 (lampstand, bread, blasphemy)3three distinct movements — canonical, typological, grammatical
lev25 (Sabbatical + Jubilee)5theology peak — Jubilee + goel + sabbath rest
lev26 (blessings and curses)4covenant-treaty form + canon-wide curse template + restoration
lev27 (vows and dedications)2sparse appendix — valuation grammar + herem/tithe

Avg 3.7 entries/ch — slightly higher than batches 1–2 (3.2 / 3.3) because three of the seven chapters are theology peaks. Pattern still holds: peaks fully spread, procedural chapters pared back.

Theological highlights

  • lev21 (4 lenses): unblemished-priest rule (vv 17–23) anticipating Heb 7:26's Christ "holy, blameless, pure"; high priest restrictions (vv 10–15) as type of unbroken sanctuary access fulfilled in Heb 7–9; v 8's holy-because-they-offer formula echoing into 1 Pet 2:9's royal priesthood.
  • lev23 (6 lenses, peak): the seven appointed times mapped to NT fulfillments — Passover→1 Cor 5:7 (christocentric); Firstfruits→1 Cor 15:20–23 (typological); Pentecost-day count→Acts 2 (redemptive); Tabernacles→Jn 7:37–39 / Rev 21:3 (canonical). Devotional anchor on living-in-booths trains repentance from self-sufficiency.
  • lev24: vv 1–4 lampstand threading from Zech 4 to Rev 1:12–13; vv 5–9 bread of the Presence anticipating Jn 6:35; the Hebrew naqab wordplay in v 11 ("to pierce" → "to pronounce in curse") for the blasphemy case.
  • lev25 (5 lenses, peak): Jubilee proclamation (vv 8–13) cited by Christ at Lk 4:18–19 via Isa 61; the goel kinsman-redeemer (vv 25–28) threading from Boaz to Job 19:25 to Christ; v 18's sixth-year provision as devotional trust; the sojourner-redemption case (vv 47–55) for mission posture toward the nations.
  • lev26: five-wave sevenfold curse escalation (vv 14–39) as canonical template Deut 28 expands and the prophets cite throughout exile literature; vv 40–45's patriarchal-covenant memory anchoring restoration beyond Sinai.

Pipeline gate results

schema_validator.py 145762 passed, 0 failed, 19 warnings (pre-existing ESV downloadable warns)
lens_quality_scorer.py 26/26 entries at 100/100 (per-chapter run, floor=100)
build_sqlite.py scripture.db green, hermeneutic_lenses chapter rows = 468
(= 442 baseline from #1802 + 26 batch 3; matches expected)
validate_sqlite.py 101 passed, 0 failed, 2 warnings (pre-existing embeddings/prompts)

Per-chapter SQLite distribution post-build (chapter_lens_content):

lev21: 4 lev22: 2 lev23: 6 lev24: 3 lev25: 5 lev26: 4 lev27: 2

Length discipline

All entries authored to a 250-char target with 30-char headroom against the 280 schema ceiling. Actual range: 201–236 chars. Median ~222.

Filler / token guards

  • All six banned filler patterns (the lens reveals, this lens shows, through this lens, this passage shows that, this text teaches that, in this chapter we see/learn) verified absent at authoring time.
  • Rubric-token trap (carried forward from batches 1–2): every entry uses a token from its own lens's rubric, not a sibling lens's. Specifically verified: typological entries use type / pattern / prefigures / anticipates; canonical entries use canon / echoes / thread / across Scripture; christocentric entries name Christ / Jesus / Messiah explicitly; mission entries use nations / outward.

Watch list for tier-2 audit

These are the entries most worth a human spot-check during accuracy auditing:

  1. lev21 typological — "Heb 7–9 reads them as foreshadowing Christ's once-for-all sanctuary entry without departure." The high-priest-no-leaving-the-sanctuary detail (v 12) as type of unbroken access is a defensible move (Vos, Kline) but the Hebrews argument is more often made from the Day-of-Atonement entry. The link should be sharpened in audit if needed.
  2. lev23 redemptive — "the calendar Acts 2 enacts." The Pentecost-fifty-day count from Lev 23:15–16 is the calendrical link to Acts 2:1, but the Acts text itself doesn't quote Lev 23. The connection is canonical-historical rather than citation-explicit. Wording is intentional shorthand.
  3. lev24 grammatical — "The Hebrew naqab (v 11) extends from 'to pierce' to 'to pronounce a name in curse'." The semantic extension is well-attested (BDB, HALOT both list both senses; Milgrom develops it in the Anchor Bible volume) but some lexicons split into homonym roots. Defensible either way.
  4. lev25 canonical — "Christ as the great Goel." The titular use of Goel-for-Christ is theological synthesis rather than a direct NT citation. Anchor Scriptures (Ruth 4, Job 19:25) are solid; the Christological extension is canonical reading rather than verse-cited.

Out of scope

  • No new content generation in content/leviticus/{N}.json itself (only the lens chapter files).
  • No app code changes.
  • No CI workflow changes.
  • app/assets/db-manifest.json and app/assets/explore-images.json drift was checked out before staging.

Rollback

git revert <merge-commit> is sufficient. No schema changes, no migration, no R2 mutation in this PR.

Refs

Leviticus complete with this PR. Numbers up next.

@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation145762 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: 94.1s

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