You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Of our 12 thematic journeys (canon-formation, garden-to-city, christ-in-the-OT, holy-week, etc.), none addresses the canonical arc of cosmic / spiritual conflict — what the Bible itself says about the unseen-realm war from Eden through Eschaton. Reader interest in this material is high (UFOs/aliens-as-demons cultural conversation, Heiser's Unseen Realm sustained popularity, Bauckham's Jude/2 Peter monograph still defining the academic conversation). We have the chapter content; we don't have the guided synthesis.
This journey is theological-canonical in lens. It deliberately does not duplicate the in-flight Watchers Tradition guided journey (#1817, lens: historical), which is apologetic and Genesis-6-anchored. The two journeys cover different surfaces:
{
"stop_order": 1,
"stop_type": "regular",
"label": "string",
"ref": "Book Ch:V-V",
"book_id": "matches a book in books.json",
"chapter_num": <int>,"verse_start": <int>,"verse_end": <int>,"development": "300-500 words — what this verse contributes to the canonical arc",
"what_changes": "1-2 sentences — what this stop adds to the running picture",
"linked_journey_id": null,
"linked_journey_intro": null,
"bridge_to_next": "1-2 sentences — what tension or question carries forward"
}
Spec
title:Cosmic Conflict — The Unseen Realm in Scripture subtitle:What the Bible itself says about the war behind the war lens_id:theological depth:long description (~600-800 chars):
"The Bible takes for granted a world in which the visible conflict between good and evil is shadowed by an unseen one. From the serpent in Eden to the dragon hurled down in Revelation 12, Scripture narrates a sustained cosmic conflict between God and the powers that oppose him — and the human story is folded inside that larger drama. This journey traces the arc as the canon itself develops it: divine council, the rebellion at Babel, the long wait through prophets and exiles, the decisive victory of the cross, and the believer's posture in the gap between cross and consummation. Evenhanded across the major evangelical readings — supernatural-worldview, Reformed covenantal, mainstream evangelical critical — the goal is to show what Scripture says before the schools weigh in."
Stops
#
Label
Ref
Book/Ch/V
What stop covers
1
The First Promise
Gen 3:14-15
genesis 3:14-15
The protoevangelium reframed as cosmic-conflict opener. The serpent (whatever else it is) is treated as a hostile intelligence; the seed-of-the-woman language is dynastic and forward-looking. The conflict is announced before the curse is applied.
2
The Boundary Crossed
Gen 6:1-8
genesis 6:1-8
Brief treatment — do not duplicate the depth in journey #1817 The Watchers Tradition. This stop names the boundary transgression and points to journey #1817 (set linked_journey_id: "the-watchers-tradition" if approved + landed; otherwise leave null and reference it in bridge_to_next prose). The takeaway here: the unseen war has casualties on the angelic side too.
3
The Nations Apportioned
Deut 32:7-9
deuteronomy 32:7-9
The cosmic-geography pivot. Yahweh divides the nations among the "sons of God" (Qumran/LXX) at Babel and keeps Israel as his portion. Cross-link in prose to difficult-passage deuteronomy-32-8-variant. This is the OT's own answer to where the polytheistic nations got their gods.
4
The Divine Assembly
Ps 82:1-8
psalms 82:1-8
God presides; the elohim are judged for failing the nations. Jesus cites this in John 10:34-36 not as throwaway prooftext but as confirmation of the divine-council framework. The gods of the nations are real, finite, and under judgment.
5
The Heavenly Court Convenes
Job 1:6-12
job 1:6-12
The "sons of God" present themselves; the satan accuses. The book of Job assumes the unseen court without explanation — its ancient readers needed none. Suffering on earth has a backstory we are not always shown.
6
Two-Layered History
Dan 10:12-21
daniel 10:12-21
The angelic messenger reveals territorial princes — prince of Persia, prince of Greece, Michael as Israel's prince. Empire transitions are political and spiritual. The Old Testament closes with the unseen war pressing into geopolitical foreground.
7
The Kingdom Arrives
Mark 5:1-20
mark 5:1-20
Legion. The Decapolis encounter is not random — it is Jesus crossing the sea and meeting the unseen realm head-on at the eastern frontier of Israel's old territorial cosmology. The kingdom arriving meets the powers and unmakes them without effort.
8
"I Saw Satan Fall"
Luke 10:17-20
luke 10:17-20
The Seventy-Two return; Jesus interprets their exorcisms as the unseen realm's defeat, not as their personal achievement. The deeper miracle, he says, is that their names are written in heaven. The kingdom advance is real and partial — and not yet the end.
9
The Decisive Victory
Col 2:13-15
colossians 2:13-15
Christ "disarmed the powers and authorities, making a public spectacle of them, triumphing over them by the cross." The cross is read here as cosmic-judicial event. What the conflict has been waiting for since Gen 3:15 happens in three Roman-imperial hours on a Friday afternoon.
10
Standing in Won Territory
Eph 6:10-18
ephesians 6:10-18
The believer's posture between cross and return. The armor of God is offered to people who already belong to the victorious side; it is for standing, not winning. Briefly engage the metaphorical-vs-realist debate (we cover it in our existing Eph 6 debate panel) and land on Arnold's both-and: real powers, figurative armor.
11
The War Closes
Rev 20:1-3, 7-10
revelation 20:1-10
Satan bound, then loosed for a final futile rebellion, then defeated for ever. The unseen war does not have a perpetual draw; Scripture's last canonical word on the subject is closure. The eschatological end is not Armageddon as escalation but the cosmic-trial verdict already rendered at the cross now executed.
(11 stops — within long precedent. garden-to-city has 11.)
Verify each tag ID resolves in its source meta file before committing (theme IDs in concepts.json or topical index; person IDs in people.json). If a tag does not resolve, drop it rather than inventing a record.
Hero image
Use an existing R2-hosted image. Audit content/meta/explore-images.json and existing journey hero URLs for a Doré, Schnorr, or comparable public-domain engraving fitting the cosmic-conflict theme (Michael casting out Satan; the war in heaven; the dragon thrown down). Do not introduce new Wikimedia URLs — validate_image_urls.py blocks them. If no existing R2 asset fits, set hero_image_url: null and add a follow-up content-image issue rather than blocking this PR.
Cross-references / dependencies
Depends on: Scholar registry card. Stop 10's debate gloss attributes to Arnold; stop 3 attributes to Heiser/Block; stop 4 attributes to Heiser/Walton. Without those scholars in the registry, attributions cannot land.
Cross-ref thread unseen-realm-warfare (separate card) — same canonical arc, different artifact. The thread is the spine; this journey is the guided walk.
Difficult-passage deuteronomy-32-8-variant (separate card) — referenced in stop 3 prose.
Existing difficult-passages nephilim-sons-of-god, angels-that-sinned, jude-quotes-enoch, jesus-preaching-to-spirits — referenced where contextually relevant in stop prose.
Acceptance criteria
cosmic-conflict-unseen-realm.json exists at content/meta/journeys/thematic/
id, journey_type (thematic), title, subtitle, description, lens_id (theological), depth (long), sort_order, tags, stops all present and validate
All 11 stops have stop_order 1-11 sequential, stop_type: regular, valid book_id, valid chapter_num, verse_start ≤ verse_end, development 300-500 words, what_changes and bridge_to_next populated
All tag IDs resolve in their source metadata files
New scholar entries beyond the prereq card. The journey assumes Heiser, Bauckham, Walton, Kline, Arnold are already in the registry.
App UI changes. Theological-lens journeys already render via the existing journey infrastructure.
Branch / PR
Branch:feat/content-cosmic-conflict-journey
PR base:master
Conventional commit:feat(content): Guided Journey "Cosmic Conflict — The Unseen Realm in Scripture"
Risks
Heiser/DCW partisanship. The single biggest risk. The journey must present the supernatural-worldview reading evenhandedly — strong on Deut 32:8, Ps 82, Dan 10 — without sliding into "this is what the Bible obviously teaches and the rest of evangelical scholarship has missed it." Pair every Heiser-citation point with the responsible-evangelical-mainstream alternative where one exists.
Stop length drift. 11 stops × 400 words is 4400 words. Easy to balloon past long depth and into a different content shape. Hold the line at ≤500 words per stop.
Tag-resolution failures. Tag IDs must exist in their source files. Verify every one before committing; do not invent theme:cosmic-conflict if it is not in concepts.json.
Eschatology footgun. Stop 11 cannot adjudicate amillennial / premillennial / postmillennial readings of Rev 20. Describe the closure of the unseen war without committing the journey to one millennial position.
Context
Of our 12 thematic journeys (canon-formation, garden-to-city, christ-in-the-OT, holy-week, etc.), none addresses the canonical arc of cosmic / spiritual conflict — what the Bible itself says about the unseen-realm war from Eden through Eschaton. Reader interest in this material is high (UFOs/aliens-as-demons cultural conversation, Heiser's Unseen Realm sustained popularity, Bauckham's Jude/2 Peter monograph still defining the academic conversation). We have the chapter content; we don't have the guided synthesis.
This journey is theological-canonical in lens. It deliberately does not duplicate the in-flight Watchers Tradition guided journey (#1817, lens: historical), which is apologetic and Genesis-6-anchored. The two journeys cover different surfaces:
historical(apologetic)theologicalA reader could profitably take both journeys; they are complementary, not competing.
Files modified
content/meta/journeys/thematic/cosmic-conflict-unseen-realm.json— new file.Schema
Match
content/meta/journeys/thematic/garden-to-city.jsonexactly. Required top-level keys (per_tools/schema_validator.py:1936):{ "id": "cosmic-conflict-unseen-realm", "journey_type": "thematic", "title": "...", "subtitle": "...", "description": "...", "lens_id": "theological", "depth": "long", "sort_order": <next available integer for thematic>, "person_id": null, "concept_id": null, "era": null, "hero_image_url": <existing R2 URL — see Hero Image section>, "tags": [{"type": "...", "id": "..."}, ...], "stops": [...] }Valid
lens_idvalues are loaded fromcontent/meta/journey-lenses.json.theologicalis confirmed valid.stops[]schema (per validator + garden-to-city precedent):{ "stop_order": 1, "stop_type": "regular", "label": "string", "ref": "Book Ch:V-V", "book_id": "matches a book in books.json", "chapter_num": <int>, "verse_start": <int>, "verse_end": <int>, "development": "300-500 words — what this verse contributes to the canonical arc", "what_changes": "1-2 sentences — what this stop adds to the running picture", "linked_journey_id": null, "linked_journey_intro": null, "bridge_to_next": "1-2 sentences — what tension or question carries forward" }Spec
title:
Cosmic Conflict — The Unseen Realm in Scripturesubtitle:
What the Bible itself says about the war behind the warlens_id:
theologicaldepth:
longdescription (~600-800 chars):
"The Bible takes for granted a world in which the visible conflict between good and evil is shadowed by an unseen one. From the serpent in Eden to the dragon hurled down in Revelation 12, Scripture narrates a sustained cosmic conflict between God and the powers that oppose him — and the human story is folded inside that larger drama. This journey traces the arc as the canon itself develops it: divine council, the rebellion at Babel, the long wait through prophets and exiles, the decisive victory of the cross, and the believer's posture in the gap between cross and consummation. Evenhanded across the major evangelical readings — supernatural-worldview, Reformed covenantal, mainstream evangelical critical — the goal is to show what Scripture says before the schools weigh in."
Stops
linked_journey_id: "the-watchers-tradition"if approved + landed; otherwise leave null and reference it inbridge_to_nextprose). The takeaway here: the unseen war has casualties on the angelic side too.deuteronomy-32-8-variant. This is the OT's own answer to where the polytheistic nations got their gods.(11 stops — within
longprecedent.garden-to-cityhas 11.)Tags
[ {"type": "theme", "id": "spiritual-warfare"}, {"type": "theme", "id": "judgment"}, {"type": "theme", "id": "kingdom-of-god"}, {"type": "person", "id": "satan"}, {"type": "person", "id": "michael"}, {"type": "person", "id": "jesus"} ]Verify each tag ID resolves in its source meta file before committing (theme IDs in
concepts.jsonor topical index; person IDs inpeople.json). If a tag does not resolve, drop it rather than inventing a record.Hero image
Use an existing R2-hosted image. Audit
content/meta/explore-images.jsonand existing journey hero URLs for a Doré, Schnorr, or comparable public-domain engraving fitting the cosmic-conflict theme (Michael casting out Satan; the war in heaven; the dragon thrown down). Do not introduce new Wikimedia URLs —validate_image_urls.pyblocks them. If no existing R2 asset fits, sethero_image_url: nulland add a follow-up content-image issue rather than blocking this PR.Cross-references / dependencies
unseen-realm-warfare(separate card) — same canonical arc, different artifact. The thread is the spine; this journey is the guided walk.deuteronomy-32-8-variant(separate card) — referenced in stop 3 prose.nephilim-sons-of-god,angels-that-sinned,jude-quotes-enoch,jesus-preaching-to-spirits— referenced where contextually relevant in stop prose.Acceptance criteria
cosmic-conflict-unseen-realm.jsonexists atcontent/meta/journeys/thematic/id,journey_type(thematic),title,subtitle,description,lens_id(theological),depth(long),sort_order,tags,stopsall present and validatestop_order1-11 sequential,stop_type: regular, validbook_id, validchapter_num,verse_start≤verse_end,development300-500 words,what_changesandbridge_to_nextpopulatedtagIDs resolve in their source metadata filespython3 _tools/schema_validator.pypasses (especially section 19, journey validation)python3 _tools/build_sqlite.pyruns clean; journey appears injourneystable;journey_stopstable contains 11 rows for this journeypython3 _tools/validate_sqlite.pypassespython3 _tools/validate_image_urls.pypasses (no new Wikimedia hotlinks)python3 _tools/quality_scorer.py≥ 90 on the new prosepython3 _tools/accuracy_auditor.pyclean on every scholar attribution and every claim that could be verified against published workdevelopmentprose ~3500-5500 words across the 11 stops (matchesgarden-to-cityballpark)lint,test,content-pipelineOut of scope
Branch / PR
feat/content-cosmic-conflict-journeymasterfeat(content): Guided Journey "Cosmic Conflict — The Unseen Realm in Scripture"Risks
longdepth and into a different content shape. Hold the line at ≤500 words per stop.theme:cosmic-conflictif it is not inconcepts.json.