content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude
, '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

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619) - #1622

Merged
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment
Apr 23, 2026
Merged

content: full_summary + cross-links for 12 extrabiblical entries (collapses chain #1605–#1619)#1622
CraigBuckmaster merged 1 commit into
masterfrom
feature/hwgtb-p4-02-extrabiblical-enrichment

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619) into a single clean PR on top of master.

Why a collapse

Each PR in the chain was built from a pre-#1589 base and recreated content/meta/extrabiblical.json from scratch, conflicting with the canonical file shipped by #1589. Since #1619 is a strict superset of the earlier ones (all 12 full_summary fields plus cross-link wiring), merging its final state directly is equivalent to sequentially applying all 5 — with a much smaller review surface.

Full summaries added (12)

Scholarly long-form treatment for every entry:

EntryLength
1_enoch9,969
2_enoch7,992
jubilees8,653
jasher7,372
assumption_of_moses8,297
tobit8,781
judith9,296
wisdom_of_solomon8,764
sirach9,451
1_maccabees9,211
4_ezra9,459
damascus_document9,417

Cross-links wired

Referential integrity to existing tables:

  • 11 entries gained related_debate_idsdebate-topics.json
  • 12 entries gained related_journey_idsjourneys/thematic/
  • 3 entries gained related_difficult_passage_idsdifficult-passages.json

Verified locally

  • schema_validator.py: same 77 pre-existing failures, zero new ones
  • build_sqlite.py: clean build
  • validate_sqlite.py: [OK] ALL CHECKS PASSED

Closes

Supersedes

#1605, #1606, #1609, #1617, #1619

…ries
Collapses the chain of 5 stacked PRs (#1605, #1606, #1609, #1617, #1619)
into a single clean commit on top of master. Each PR in the chain was
rebuilt from a pre-#1589 base and recreated extrabiblical.json from
scratch, which forced a conflict with the canonical file added by
#1589. Since #1619 is a strict superset of the earlier ones, merging
its final state directly is equivalent to sequentially applying all 5.
## Full summaries added (12)
Scholarly long-form treatment for every entry:
1_enoch (9969 chars), 2_enoch (7992), jubilees (8653),
jasher (7372), assumption_of_moses (8297), tobit (8781),
judith (9296), wisdom_of_solomon (8764), sirach (9451),
1_maccabees (9211), 4_ezra (9459), damascus_document (9417)
## Cross-links wired
Referential integrity to existing tables:
- 11 entries gained related_debate_ids → debate-topics.json
- 12 entries gained related_journey_ids → journeys/thematic/
- 3 entries gained related_difficult_passage_ids → difficult-passages.json
## Verified locally
- schema_validator.py: same 77 pre-existing failures, no new ones
- build_sqlite.py: clean build
- validate_sqlite.py: [OK] ALL CHECKS PASSED
## Closes#1553, #1577, #1578, #1579, #1576
## Supersedes
#1605, #1606, #1609, #1617, #1619
@github-actions

Copy link
Copy Markdown

Content Pipeline Results

✅ All pipeline checks passed

StepStatusDetails
Schema Validation137950 passed, 77 failed
Build DB
DB Integrity101 passed, 0 failed

Content Pipeline — Quality & Accuracy Report

All content checks passed

Scope: 0 chapter(s) across 0 book(s)


Generated by ci_content_check.py

@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 3535❌ 03535
Suites✅ 474❌ 0474

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 84.0s

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.

2 participants

@CraigBuckmaster@claude