BUCKYVERSE

Dome Cookbook of Geodesic Geometry — Ingest Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Add Dome Cookbook of Geodesic Geometry (David Kruschke, 2nd ed., 1975) to buckyverse as a page-image + vision-transcription source, ingest-by-reference into .wiki/, and compile a topic article.

Architecture: add-source ingest-by-reference convention — source dir in repo root (served by Wiki.js), .wiki/ points at it. Page images are the authoritative artifact (hand-drawn booklet); a local vision model (Ollama qwen3-vl:8b) transcribes each page for search. A full codexis LaTeX build is deferred and tracked.

Tech Stack: pdftoppm (poppler) for page rendering; Ollama qwen3-vl:8b via HTTP generate API for transcription; python3 for the transcription loop; /wiki:lint for verification.

Note on TDD: This is a content/ops task; there are no unit tests. Each task's "verify" step is a concrete inspection or /wiki:lint. Commit after each task.

Working directory: repo root /Volumes/Storage/belmendo/Projects/buckyverse.org, branch pluck/todo-17-add-source-ingest-dome-cookbook.

Constants used throughout:


Task 1: Create root source dir, move PDF, render page images

Files:

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
mkdir -p "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images"
git mv -k ".wiki/inbox/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf" \
  "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf" 2>/dev/null \
  || mv ".wiki/inbox/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf" \
        "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf"

(The PDF is untracked in .wiki/inbox/, so git mv will likely fail — the || fallback plain mv handles that.)

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
pdftoppm -gray -r 120 -png \
  "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf" \
  "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/page"
cd /Volumes/Storage/belmendo/Projects/buckyverse.org
ls dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/ | grep -c '\.png$'   # expect 48
du -sh dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/
ls -S dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/ | head -1 | \
  xargs -I{} du -h "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/{}"

Expected: 48. If total is excessive (> ~40 MB) or a single page > ~1.2 MB, re-render at -r 100. Confirm pdftoppm zero-pads to page-01.png … page-48.png (it pads to the width of the max page number). If it produced page-1.png style names, rename to zero-padded two-digit form so lexical order matches page order.

Open page-01.png (cover) and page-24.png (a mid interior page) and confirm the hand-lettering is clearly readable. If blurry, re-render at higher DPI (-r 150) and re-check size.

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf \
        dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images
git commit -m "feat: add Dome Cookbook source PDF + rendered page images"

Task 2: Vision-transcribe all 48 pages (Ollama qwen3-vl:8b, resumable)

Files:

ollama list | grep qwen3-vl:8b   # expect the model line
curl -s localhost:11434/api/tags >/dev/null && echo "ollama reachable"

If not reachable, start Ollama (ollama serve in another shell) before continuing.

curl -s localhost:11434/api/generate -d '{"model":"qwen3-vl:8b","keep_alive":-1,"prompt":"ready","stream":false}' >/dev/null && echo pinned

Write to the session scratchpad (path from the environment's Scratchpad section), file dome_transcribe.py:

import base64, json, os, sys, urllib.request

IMG_DIR = "dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images"
MODEL = "qwen3-vl:8b"
URL = "http://localhost:11434/api/generate"
PROMPT = (
    "This is one page of a hand-lettered 1975 booklet on geodesic dome geometry. "
    "Transcribe ALL hand-written text faithfully as clean Markdown, preserving headings, "
    "numbered/lettered lists, and the reading order. Render mathematical formulas inline "
    "using plain text/LaTeX-like notation (e.g. sin, cos, overbars as A-bar, fractions as a/b). "
    "For any diagram, figure, or table, write a one- or two-line description in italics prefixed "
    "with 'Figure:' or 'Table:' rather than trying to redraw it. Do not invent content that is not "
    "on the page. Output only the transcription, no preamble."
)

def transcribe(png_path):
    with open(png_path, "rb") as f:
        b64 = base64.b64encode(f.read()).decode()
    payload = {"model": MODEL, "prompt": PROMPT, "images": [b64],
               "stream": False, "keep_alive": -1}
    req = urllib.request.Request(URL, data=json.dumps(payload).encode(),
                                 headers={"Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=600) as r:
        return json.loads(r.read().decode())["response"].strip()

def main():
    pngs = sorted(p for p in os.listdir(IMG_DIR) if p.endswith(".png"))
    for png in pngs:
        out = os.path.join(IMG_DIR, png[:-4] + ".txt")
        if os.path.exists(out) and os.path.getsize(out) > 0:
            print(f"skip {png} (done)"); continue
        print(f"transcribing {png} ...", flush=True)
        for attempt in (1, 2):
            try:
                text = transcribe(os.path.join(IMG_DIR, png))
                if text:
                    with open(out, "w") as f: f.write(text)
                    print(f"  ok ({len(text)} chars)"); break
            except Exception as e:
                print(f"  attempt {attempt} failed: {e}")
    print("done")

if __name__ == "__main__":
    main()
cd /Volumes/Storage/belmendo/Projects/buckyverse.org
python3 "<scratchpad>/dome_transcribe.py"

This may take a while (≈20 s–2 min/page). If interrupted, re-run — completed page-NN.txt files are skipped. Run in the background and monitor if needed.

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
IMG=dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images
for i in $(seq -w 1 48); do
  [ -s "$IMG/page-$i.txt" ] || echo "MISSING/EMPTY: page-$i.txt"
done; echo "check complete"

Expected: only "check complete" (no MISSING lines). Re-run Step 4 for any gaps.

Read page-03.txt (the "Widely Used Plane Trig" formulas page) and page-01.txt (cover). Confirm the transcription is faithful (headings present, formulas readable, diagrams described not hallucinated). If a page is badly wrong, delete its .txt and re-run Step 4, or hand-correct it.

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/*.txt
git commit -m "feat: add per-page vision transcriptions for Dome Cookbook"

Task 3: Assemble the WikiJS index.md

Files:

Create dome_cookbook_of_geodesic_geometry/index.md starting with:

---
title: Dome Cookbook of Geodesic Geometry
description: David Kruschke's hand-lettered 1975 primer on the geometry of geodesic domes — plane and spherical trigonometry, chord factors, dihedral angles, with worked diagrams and construction hints.
published: true
date: 2026-07-01T00:00:00.000Z
tags:
  - geodesic-dome
  - geometry
  - chord-factors
  - dome-construction
  - fuller-adjacent
editor: markdown
dateCreated: 2026-07-01T00:00:00.000Z
---

# Dome Cookbook of Geodesic Geometry

*By David Kruschke — Second Edition, 1975*

## Overview

A practical, hand-lettered workbook that teaches the geometry needed to design and build geodesic domes. It walks from plane trigonometry through spherical trigonometry to the chord factors, dihedral angles, and great-circle relationships that turn a subdivided icosahedron into a buildable structure — every step illustrated with the author's own diagrams and worked examples, and framed as a "cookbook" the reader follows with pencil, paper, and trig tables.

## About this edition

The booklet is entirely **hand-drawn** — hand-lettered text, hand-drawn geometric diagrams, and hand-written formulas and tables. The **page images below are the authoritative artifact**; the text under each image is a best-effort transcription (produced with a local vision model) provided for search and accessibility. Where a page is primarily a diagram or table, the transcription describes it and points to the image.

## Pages

Run this to append each page's image + transcription in order:

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
IMG=dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images
OUT=dome_cookbook_of_geodesic_geometry/index.md
REL=DomeCookbookofGeodesicGeometry.images
for i in $(seq -w 1 48); do
  n=$((10#$i))
  {
    printf '\n### Page %s\n\n' "$n"
    printf '![Page %s](%s/page-%s.png)\n\n' "$n" "$REL" "$i"
    cat "$IMG/page-$i.txt"
    printf '\n'
  } >> "$OUT"
done
echo "appended 48 page sections"

Append to dome_cookbook_of_geodesic_geometry/index.md:


---
*Source: David Kruschke, *Dome Cookbook of Geodesic Geometry*, 2nd edition, 1975. Page images rendered with `pdftoppm`; page text transcribed with a local vision model (qwen3-vl:8b). Diagrams and tables are reproduced as page images.*

File: [DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf](DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf)
cd /Volumes/Storage/belmendo/Projects/buckyverse.org
grep -c '^### Page ' dome_cookbook_of_geodesic_geometry/index.md      # expect 48
grep -c '!\[Page ' dome_cookbook_of_geodesic_geometry/index.md        # expect 48
head -40 dome_cookbook_of_geodesic_geometry/index.md

Confirm frontmatter is valid YAML, description ≤ 255 chars, and image paths are relative (DomeCookbookofGeodesicGeometry.images/page-NN.png). Fix any transcription that leaked a stray code fence or broke Markdown.

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add dome_cookbook_of_geodesic_geometry/index.md
git commit -m "feat: add Dome Cookbook index.md WikiJS page"

Task 4: Ingest-by-reference into .wiki/

Files:

Create .wiki/raw/repos/dome-cookbook-of-geodesic-geometry.md:

---
title: "Dome Cookbook of Geodesic Geometry"
source: "../../../dome_cookbook_of_geodesic_geometry/"
type: repos
ingested: 2026-07-01
tags: [fuller-adjacent, geodesic-dome, geometry, chord-factors, dome-construction, ingest-by-reference]
summary: "Ingest-by-reference pointer to the in-repo source tree `dome_cookbook_of_geodesic_geometry/`. David Kruschke's hand-lettered 1975 primer on geodesic dome geometry (plane/spherical trig, chord factors, dihedral angles). Content lives in the Wiki.js repo root and is NOT copied into raw/."
---

# Dome Cookbook of Geodesic Geometry (source reference)

> [!note] Ingest-by-reference
> Pointer record. The content lives at `dome_cookbook_of_geodesic_geometry/` in the repo root (served by Wiki.js) and is intentionally **not copied** into `raw/`.

**Source tree:** [`dome_cookbook_of_geodesic_geometry/`](../../../dome_cookbook_of_geodesic_geometry/)

By **David Kruschke** (2nd edition, 1975). A hand-lettered "cookbook" teaching the geometry of geodesic domes — plane trigonometry, spherical trigonometry, chord factors, dihedral angles, and great-circle relationships — through worked diagrams and construction hints. The booklet is entirely hand-drawn; it is ingested as page images plus a local-vision-model transcription (reference-only). A full codexis LaTeX/ebook build is deferred.

## Cited files

- [index.md](../../../dome_cookbook_of_geodesic_geometry/index.md) — the converted page (page images + transcription)
- [DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf](../../../dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry-Kruschke2ndEdition1975.pdf) — source scan

In .wiki/raw/repos/_index.md, add this row to the Contents table in alphabetical position (after the becoming-bucky-fuller / before beyond-the-cube region — it sorts under "d", place it among the d* entries):

| [dome-cookbook-of-geodesic-geometry.md](dome-cookbook-of-geodesic-geometry.md) | Dome Cookbook of Geodesic Geometry | source-reference | 2026-07-01 |

Update the Last updated: line near the top to:

Last updated: 2026-07-01 (add-source: dome-cookbook-of-geodesic-geometry)

In .wiki/raw/_index.md:

- 2026-07-01: Added source (ingest-by-reference) — Dome Cookbook of Geodesic Geometry (Kruschke, 1975) → repos

In .wiki/_index.md:

- 2026-07-01: Added source — Dome Cookbook of Geodesic Geometry (David Kruschke, 1975 hand-lettered geodesic-geometry booklet) → dome_cookbook_of_geodesic_geometry/ + raw/repos/ (ingest-by-reference; page images + vision transcription)

(Leave the Last compiled / Last lint lines for Task 6 / Task 7.)

## [2026-07-01] ingest | Dome Cookbook of Geodesic Geometry → raw/repos/dome-cookbook-of-geodesic-geometry.md (ingest-by-reference)
cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add .wiki/raw/repos/dome-cookbook-of-geodesic-geometry.md .wiki/raw/repos/_index.md \
        .wiki/raw/_index.md .wiki/_index.md .wiki/log.md
git commit -m "feat: ingest-by-reference Dome Cookbook of Geodesic Geometry into .wiki"

Task 5: Compile the topic article (with bidirectional See Also)

Files:

Read a representative sample of dome_cookbook_of_geodesic_geometry/DomeCookbookofGeodesicGeometry.images/page-*.txt to ground the synthesis in the actual content (do not guess). Read the four target topic articles to confirm their exact titles, slugs, aliases, and existing ## See Also sections so back-links match their conventions. Trim the See Also target list to those genuinely related (drop any that aren't a good fit after reading).

Create .wiki/wiki/topics/dome-cookbook-of-geodesic-geometry.md with full frontmatter and body:

---
title: "Dome Cookbook of Geodesic Geometry"
category: topic
sources:
  - ../../raw/repos/dome-cookbook-of-geodesic-geometry.md
created: 2026-07-01
updated: 2026-07-01
verified: 2026-07-01
tags: [fuller-adjacent, geodesic-dome, geometry, chord-factors, spherical-trigonometry, dome-construction]
aliases: ["Dome Cookbook", "Kruschke Dome Cookbook"]
confidence: high
volatility: cold
compiled-from: sources
summary: "David Kruschke's hand-lettered 1975 workbook that teaches the geometry of geodesic domes from plane and spherical trigonometry up through chord factors and dihedral angles — a builder's math primer in the countercultural dome-manual tradition."
---

# Dome Cookbook of Geodesic Geometry

> A hands-on 1975 workbook by **David Kruschke** that teaches the mathematics of geodesic dome design — plane trigonometry, spherical trigonometry, chord factors, dihedral angles, and great-circle geometry — entirely in the author's own hand-lettering and diagrams, addressed to the amateur builder working with "pencils, paper and trig. tables."

Then append (via Edit) an abstract, a synthesis of the actual content (what the booklet covers and how it teaches it — grounded in the transcriptions), a section placing it in the dome-manual lineage (Whole Earth / Domebook / Popko's Geodesic Math), a ## See Also block, and a ## Sources block pointing at ../../raw/repos/dome-cookbook-of-geodesic-geometry.md. The ## See Also links (only those confirmed apt in Step 1), each with its wiki-link + relative link and a reason:

## See Also

- [[geodesic-math-and-how-to-use-it|Geodesic Math and How to Use It]] ([Geodesic Math and How to Use It](geodesic-math-and-how-to-use-it.md)) — Popko's fuller, more formal treatment of the same chord-factor / spherical-subdivision math
- [[introduction-to-geometry|Introduction to Geometry]] ([Introduction to Geometry](introduction-to-geometry.md)) — the classical geometry the dome math builds on
- [[synergetics|Synergetics]] ([Synergetics](synergetics.md)) — Fuller's geometry of which the geodesic dome is the built expression
- [[wizard-of-the-dome|Wizard of the Dome]] ([Wizard of the Dome](wizard-of-the-dome.md)) — biography of Fuller, originator of the geodesic dome this booklet lets you build

## Sources

- [Dome Cookbook of Geodesic Geometry (source reference)](../../raw/repos/dome-cookbook-of-geodesic-geometry.md) — David Kruschke, 2nd edition, 1975 (page images + vision transcription)

In each of the four target articles' ## See Also sections, add a back-link (only for the targets actually linked in Step 2). Example for geodesic-math-and-how-to-use-it.md:

- [[dome-cookbook-of-geodesic-geometry|Dome Cookbook of Geodesic Geometry]] ([Dome Cookbook of Geodesic Geometry](dome-cookbook-of-geodesic-geometry.md)) — Kruschke's hand-lettered builder's primer covering the same geodesic chord-factor math

Adjust the trailing reason per target so each reads naturally. If a target has no ## See Also section, add one.

- 2026-07-01: Compiled the Dome Cookbook source → wiki/topics/dome-cookbook-of-geodesic-geometry.md (bidirectionally linked to Geodesic Math, Introduction to Geometry, Synergetics, Wizard of the Dome)
## [2026-07-01] compile | 1 source → 1 new article (dome-cookbook-of-geodesic-geometry), 4 updated (back-links)

Confirm the new article's sources: resolves, and volatility/verified/confidence/compiled-from are all set. Confirm each back-link target now links back (bidirectional).

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add .wiki/wiki/topics/dome-cookbook-of-geodesic-geometry.md \
        .wiki/wiki/topics/geodesic-math-and-how-to-use-it.md \
        .wiki/wiki/topics/introduction-to-geometry.md \
        .wiki/wiki/topics/synergetics.md \
        .wiki/wiki/topics/wizard-of-the-dome.md \
        .wiki/wiki/topics/_index.md .wiki/_index.md .wiki/log.md
git commit -m "feat: compile Dome Cookbook topic article + bidirectional links"

(Adjust the staged See Also files to exactly those edited in Step 3.)


Task 6: Lint and fix

Files: whatever /wiki:lint flags.

Invoke /wiki:lint --local (or run the lint checks against .wiki/). This is the pluck canonical verification command.

Expected: 0 broken links, 0 dangling sources, indexes consistent. In particular verify:

Apply fixes for anything flagged (missing index entry, count mismatch, one-directional See Also). Re-run lint until clean.

Set Last lint: 2026-07-01 in .wiki/_index.md. Commit only if lint made changes:

cd /Volumes/Storage/belmendo/Projects/buckyverse.org
git add .wiki
git commit -m "chore: wiki lint fixups for Dome Cookbook ingest"

Task 7: Record the deferred codexis-build follow-up

Files:

Note for the pluck controller: this is a work/ tracking change. Per the pluck workflow, work/ edits are made on the base branch, not folded into the feature-code commits. Record it as its own xp_work: record DEF-N commit on main during/after housekeeping (via the dev-xp_work record flow), not on the feature branch.

Content: "Full codexis book build of Dome Cookbook of Geodesic Geometry" — init a codexis book project, vision-OCR → LaTeX, reconstruct diagrams in TikZ (or embed page images as figures), codexis build --all, codexis deploy --target buckyverse. Why: the current ingest is reference-only (page images + transcription); a first-class codexis edition would give resizable/searchable text and derived ebook formats. Source: deferred from TODO-17 ingest.


Verification checklist (whole plan)