Fork Idea Branch — Omega War → Unthinkable + Vittles
Skill: fork-idea-branch · Tier: document · Page: alignment/fork-idea-branch-omega-war.html · created 2026-06-14
approval_status: ready-for-agent-review.What this does: splits the current flat-mode Omega War research into two symmetric brand product paths —
research/unthinkable/ and research/vittles/ — and installs a
research/.progress.yaml manifest. The brand becomes an anthology of almost-wars.
fork-idea-branch archives the
source path to research/_archive/ and restarts every branch fresh via
/idea-scope-brief. That is wrong here: Unthinkable is mature, load-bearing research
(idea brief, audience, fantasy, genre-map, arsenal, divisions, roster, and an in-flight unit-data-schema cycle).
This run is therefore a preserving restructure, not a destructive fork:
- Unthinkable = full carry-forward via
git mv— relocated intact intoresearch/unthinkable/, never reset, never dumped into_archive/. Git history is the preservation record (every file's history follows the move). - Vittles = fresh scaffold — seeded by the ideation already completed in this conversation,
then handed to
/idea-scope-brief vittles.
1. Fork rationale
The conversation established that "Omega War" is becoming a brand, not a single title. The existing flat-mode research is one specific game — the 1945 Operation Unthinkable open-front RTS — and a second, distinct title was scoped: Omega War: Vittles, the 1948 Berlin blockade gone hot. The two share engine DNA but are independent divergences from real history (an anthology), with different fantasies and timelines. A single flat research tree can no longer hold both without confusion, so the brand splits into parallel product paths.
| Source signal | Observation | Why it forces a split |
|---|---|---|
| Two distinct titles confirmed | User: name the current game Omega War: Unthinkable; add Omega War: Vittles as "a parallel research branch under the Omega War brand." | Two products, one brand → product-path mode, not flat mode. |
| Anthology brand model | Interview decision: each title is an independent divergence (1945 stays cold so the 1948 Airlift can exist, then goes hot). | Separate timelines/fantasies cannot be one idea brief. |
| Mature source research | Flat research/*.md: idea brief + audience + fantasy + genre-map + arsenal + divisions + roster, plus an in-flight unit-data-schema cycle. | Must be preserved and relocated, not reset — hence the preserving-restructure deviation. |
| User directive | "fork-idea-branch … to get symmetry in the research: research/unthinkable and research/vittles." | Explicit request for the two-path symmetric layout this page proposes. |
Gate — fork-rationale required
Approve splitting the flat-mode Omega War research into two brand product paths (unthinkable +
vittles) under an anthology model?
2. Per-branch scope
Omega War: Unthinkable
slug unthinkable · research/unthinkable/
Concept: July 1945 — the alliance that beat Germany turns on itself. Open-front tactical+strategic RTS (CoH × Broken Arrow × EndWar/Wargame:RD), deck+base hybrid, persistent European theater map. The brand's first title.
Value wedge: unmined Operation Unthinkable premise; deck-as-roster fused with base building; zero-install browser delivery; persistent division evolution.
Pipeline stage: deep — through genre-map; unit-data-schema cycle in flight.
Omega War: Vittles
slug vittles · research/vittles/
Concept: June 1948 — the Berlin blockade goes hot. A two-act campaign: siege-and-relief (hold the encircled West Berlin garrison, keep the lifeline open) escalating into open-front war as both blocs commit. Reuses Unthinkable's engine; stack-reuse depth deferred to a design pass.
Value wedge: near-untouched Airlift flashpoint; the besieged-enclave + lifeline spine (siege before maneuver); 1948 arsenal shift.
Pipeline stage: idea-scope-brief (interview done in-conversation; brief to be
written next).
Airlift sim (working name)
slug airlift · path reserved, not created
Concept: the Berlin Airlift as the gameplay itself — win without firing a shot. ATC/logistics under pressure, or an asymmetric deter-vs-provoke RTS. Genuinely novel; different genre/audience.
Revisit trigger: when the brand wants a non-combat / logistics-deterrence entry, or after a Vittles/Unthinkable slice ships. naming note: "Vittles" is literally the real airlift codename — reconcile names if this is ever activated.
Gate — branch-scope required
Approve the three path definitions above — unthinkable (active, moved), vittles
(active, fresh scaffold), and airlift (deferred sibling, path reserved)?
3. Reuse decisions (per branch)
The skill's default is "fresh start (recommended)" for every branch, because carried-forward artifacts were shaped by assumptions that may not hold for a new ICP/market (contamination risk). That logic applies to Vittles — which is why Vittles gets a fresh start. It does not apply to Unthinkable: Unthinkable is not a new market interpretation of the source, it is the source. Carrying it forward is a relocation, not contamination.
| Branch | Decision | What carries | Contamination risk |
|---|---|---|---|
unthinkable | Full carry-forward (move) | All flat research/*.md + the _working/unit-data-schema/ cycle, relocated intact. | none — it is the original concept, not a reinterpretation |
vittles | Fresh start (default) | Nothing copied. A fork-seed.md records ground-truth inputs only (concept + the 3 confirmed interview decisions). Brand-level constraints are re-validated by /idea-scope-brief, not inherited as fact. | avoided — clean restart |
airlift | Deferred — no scaffold yet | Nothing. Concept captured in the manifest + fork memo only. | n/a |
Why Vittles does not inherit Unthinkable's brief. Even though it reuses the engine, Vittles' fantasy (siege-and-relief), timeline (1948 independent divergence), and arsenal differ. Seeding it with Unthinkable's full brief would import 1945-specific assumptions. The seed therefore carries only the concept and the decisions you have explicitly made — everything else is established fresh.
Gate — reuse required
Approve the reuse decisions: Unthinkable = full carry-forward (move, no reset); Vittles = fresh start with a ground-truth-only seed?
4. Restructure method — preserving move vs destructive archive
This replaces the skill's "archive current path to research/_archive/" step. Because Unthinkable is
preserved (not abandoned), dumping it into _archive/ would mislabel live research as dead. Instead:
- Relocate via
git mv— file history follows each file intoresearch/unthinkable/; nothing is lost or duplicated. - No
_archive/copy of Unthinkable — git history is the rollback path (git mvis fully reversible). - Snapshot policy unchanged — the alignment pages and packets already under
docs/history/archive/stay where they are; this page itself will be archived if later amended.
Reference hygiene (scoped, low-risk). Inside the moved research
files, ~23 cross-references of the form research/<file>.md will be rewritten to
research/unthinkable/<file>.md so the relocated corpus stays internally linked. External URLs that
merely contain the word "research" (e.g. archives.gov/research/…) are not matched —
only the eight known artifact filenames plus the future unit-data-schema.md synthesis target. See §5
for exactly what is and is not touched.
Gate — restructure-method required
Approve the preserving git mv relocation (no _archive/ dump of Unthinkable, git
history as rollback)?
5. Proposed file changes
A. Move (git mv → research/unthinkable/)
| From | To |
|---|---|
research/arsenal-1945.md | research/unthinkable/arsenal-1945.md |
research/divisions-1945.md | research/unthinkable/divisions-1945.md |
research/game-audience.md | research/unthinkable/game-audience.md |
research/game-fantasy.md | research/unthinkable/game-fantasy.md |
research/game-genre-map.md | research/unthinkable/game-genre-map.md |
research/glossary.md | research/unthinkable/glossary.md |
research/idea-brief.md | research/unthinkable/idea-brief.md |
research/idea-brief-interview.md | research/unthinkable/idea-brief-interview.md |
research/proposed-divisions-and-decks-roster.md | research/unthinkable/proposed-divisions-and-decks-roster.md |
research/_working/unit-data-schema/ (3 files) | research/unthinkable/_working/unit-data-schema/ |
B. Modify (cross-reference rewrite inside moved files only)
~23 references of research/<file>.md → research/unthinkable/<file>.md
across game-fantasy.md, divisions-1945.md, proposed-divisions-and-decks-roster.md,
arsenal-1945.md, idea-brief-interview.md, and the three unit-data-schema working
docs (the last pointing at the future research/unthinkable/unit-data-schema.md synthesis target). Only
the 8 known artifact filenames + unit-data-schema.md are rewritten; URLs are untouched.
C. Create
| Path | Purpose |
|---|---|
research/.progress.yaml | Product-path manifest (§6). Records both active paths + the deferred airlift sibling. |
research/vittles/_working/fork-seed.md | Ground-truth seed for Vittles' fresh /idea-scope-brief (§7). |
research/_working/fork-memo-2026-06-14.md | The fork record: what moved where, reuse decisions, restart instructions (§8). |
alignment/index.html | Updated to add this page (entry + date + [doc] badge), grouped under Product Design & Spec. |
D. Left untouched (by design)
| What | Why |
|---|---|
tasks/todo.md, tasks/history.md | Skill constraint: fork-idea-branch does not modify task files. history.md is an append-only record accurate for its time; todo.md's path pointers will be refreshed when the unit-data-schema cycle next runs. Migration is recorded in the fork memo. |
All alignment/*.html (confirmed + in-flight review pages) | Point-in-time review artifacts. Their internal path strings record where files were when the page was written. Renaming them would also break the provenance links the moved research files make back to alignment/*-omega-war.html. The fork memo is the authoritative migration record. |
docs/history/archive/ | Historical snapshots — never rewritten. |
.agents/project.json | Project-type/packs unchanged by a research restructure. |
unit-data-schema cycle is mid-review
(topics 01–02 approved, 03 in review). Its working packet moves to
research/unthinkable/_working/unit-data-schema/. When that cycle resumes, it writes its synthesis to
research/unthinkable/unit-data-schema.md and reads from the new location — the manifest and fork memo
record this so no work is orphaned. Its existing review pages keep their original path strings (point-in-time).Gate — file-changes required
Approve this exact change set — the move list (A), the scoped reference rewrite (B), the new files (C), and the "left untouched" set (D)?
6. research/.progress.yaml — full preview
# Omega War — product-path manifest (created 2026-06-14 by fork-idea-branch) active_paths: - unthinkable - vittles max_concurrent: 2 product_paths: - id: unthinkable label: "Omega War: Unthinkable" scope_path: research/unthinkable/ status: active source_skill: fork-idea-branch pipeline_stage: unit-data-schema reason: >- 1945 Operation Unthinkable — Allies vs USSR open-front RTS; the brand's first title. Mature research relocated intact from flat research/ during the 2026-06-14 brand split. unit-data-schema cycle in flight. last_touched: 2026-06-14 - id: vittles label: "Omega War: Vittles" scope_path: research/vittles/ status: active source_skill: fork-idea-branch pipeline_stage: idea-scope-brief next_skill: /idea-scope-brief vittles reason: >- Berlin blockade goes hot, June 1948 — two-act campaign: besieged-enclave siege-and-relief escalating into open-front war. Independent divergence in the Omega War anthology; reuses Unthinkable's engine (stack-reuse depth deferred). Scaffolded 2026-06-14; idea brief to be written next. last_touched: 2026-06-14 - id: airlift label: "Omega War — airlift sim (working name)" scope_path: research/airlift/ # reserved; not created until activated status: deferred source_skill: idea-scope-brief pipeline_stage: idea-scope-brief next_skill: /idea-scope-brief airlift revisit_trigger: >- When the brand wants a non-combat / logistics-deterrence entry (ATC-style or asymmetric deter-vs-provoke), or after a Vittles/Unthinkable slice ships. reason: >- The Berlin Airlift as the gameplay itself — win without firing a shot. Parked 2026-06-14 in favor of the hot-war Vittles path; recorded, not lost. NOTE: "Vittles" is the real airlift codename — reconcile naming if activated. last_touched: 2026-06-14
7. research/vittles/_working/fork-seed.md — full preview
# Fork Seed — Omega War: Vittles # Ground-truth inputs only. Seeded 2026-06-14 by fork-idea-branch from the flat # Omega War research at split time. Everything below is to be RE-VALIDATED by # /idea-scope-brief vittles, not treated as settled findings. ## Original idea Omega War: Vittles — an alt-history story + campaign set during the Berlin Airlift; the premise is "the blockade goes hot" (June 1948). ## Brand model (interview decision) Anthology of almost-wars: each Omega War title is an INDEPENDENT divergence from real history. Vittles = real history holds (1945 stays cold, the Airlift happens) until June 1948, when the blockade turns into a shooting war. NOT a continuation of Unthinkable's 1945 timeline. ## Core fantasy (interview decision) Two-act: opens as besieged-enclave SIEGE-AND-RELIEF (hold the encircled West Berlin garrison; keep a lifeline / air corridor open against the odds), then escalates into OPEN-FRONT war as the conflict spreads. Siege first, wider war later. ## Engine / scope (interview decision) Reuses Unthinkable's engine and brand constraints (browser Three.js, deck+base hybrid, tactical+strategic layers, CC0 stand-in art/audio, single-player first, no netcode v1, Europe-only). EXACT depth of stack reuse is deferred to a design pass — record as open, do not assume the full stack. ## Value-wedge hypothesis (to test) Near-untouched Airlift flashpoint; the besieged-enclave + lifeline spine as the distinguishing mechanic vs Unthinkable's open-front maneuver; the 1945→1948 arsenal shift. ## Beneficiary hypothesis (to test) Primary: the developer (passion project). Secondary: Cold War / alt-history enthusiasts; possibly a different audience than Unthinkable's open-front RTS crowd. ## Riskiest unknowns (for idea-scope-brief + downstream) 1. Is siege-and-relief fun and distinct, or just a slower start? 2. The 1948 spark (candidates: corridor buzzing, the Gatow midair, a checkpoint incident) — credible tip from blockade into combat. 3. Two-phase scope (siege -> breakout doubles the design surface). 4. Stack-reuse depth (deferred). 5. The 1945->1948 arsenal delta (a Vittles-specific arsenal study). ## Sibling concept (parked, do NOT scope here) "Airlift sim" — the airlift AS the gameplay (win without firing a shot). Deferred sibling in the manifest; revisit per its trigger. Reconcile the "Vittles" naming if that path is ever activated. ## Provenance Brand DNA reference (do not copy as fact — re-validate): the Unthinkable research now lives at research/unthinkable/ (idea-brief, game-fantasy, arsenal-1945, etc.). Unthinkable's fantasy doc already anticipated this premise — "Vienna as the besieged-enclave drama (the Berlin of this war)."
8. research/_working/fork-memo-2026-06-14.md — full preview
# Fork Memo — 2026-06-14 - **Source skill:** user-initiated (/fork-idea-branch) - **Source path:** flat-mode research/ (the "Omega War: Unthinkable" concept) - **Method:** PRESERVING restructure (git mv), not destructive archive-and-restart. ## Branches | slug | label | status | reuse | |------|-------|--------|-------| | unthinkable | Omega War: Unthinkable | active | full carry-forward (moved intact) | | vittles | Omega War: Vittles | active | fresh start (seed only) | | airlift | airlift sim (working name) | deferred | none — concept recorded only | ## Rationale "Omega War" becomes an anthology brand. The flat research was one title (Unthinkable, 1945 open-front RTS). A second, distinct title (Vittles, 1948 Berlin blockade gone hot — independent divergence) was scoped, so the brand splits into symmetric product paths. ## Artifact inventory (what moved where) research/{arsenal-1945,divisions-1945,game-audience,game-fantasy,game-genre-map, glossary,idea-brief,idea-brief-interview,proposed-divisions-and-decks-roster}.md -> research/unthinkable/.md research/_working/unit-data-schema/ -> research/unthinkable/_working/unit-data-schema/ Cross-references inside the moved files rewritten research/ .md -> research/unthinkable/ .md (8 artifact files + future unit-data-schema.md). ## Created research/.progress.yaml ; research/vittles/_working/fork-seed.md ; research/_working/fork-memo-2026-06-14.md ## Left untouched (recorded here as the authoritative migration note) tasks/todo.md, tasks/history.md — path pointers now reference pre-move locations; refresh on the next unit-data-schema run. alignment/*.html keep point-in-time path strings. docs/history/archive/ unchanged. ## Restart instructions - unthinkable: NO restart — mature; continue at the unit-data-schema cycle (now under research/unthinkable/_working/unit-data-schema/). - vittles: /idea-scope-brief vittles (interview already done in-conversation; resume to write research/vittles/idea-brief.md + interview). - airlift: /idea-scope-brief airlift only when its revisit trigger fires.
9. Post-approval route
Stock fork-idea-branch "scaffolds and stops," handing back a restart checklist. Because the Vittles interview is
already done in this conversation, the natural next step is to continue straight into
/idea-scope-brief vittles and write its brief — rather than stopping and re-invoking. Your
call:
- unthinkable — no restart; continues at the unit-data-schema cycle.
- vittles —
/idea-scope-brief vittles(build its alignment page → writeresearch/vittles/idea-brief.md+ interview). - airlift — only when its revisit trigger fires.
Gate — route required
After the fork executes, how should I proceed?
10. Compile Responses
Answer the six required gates above, add optional section feedback, then compile and copy the YAML into your next message. Partial responses are fine — they're treated as revision requests, not approval.