The public-facing science site for ecoPrimals — sovereign scientific computing.
Live site: primals.eco Sovereign primary: golgiBody VPS via Caddy + Let's Encrypt Trailing shadow: GitHub Pages (extracellular mirror, pending archival)
Gate pushes to Forgejo (golgi) → Sovereign CI
1. Forgejo post-receive hook fires (golgi)
2. sovereign-ci-trigger.sh SSH → sporeGate (over WG)
3. sporeGate builds binary + rsync depot to golgi
4. golgi: sporeprint-rebuild.sh pulls + zola build
5. Caddy serves from public/ (auto-TLS via Let's Encrypt)
6. ext-github-push.sh pushes to GitHub (trailing shadow)
- Zola 0.22.1 — Rust static site generator (single binary, zero deps)
spore-validate— Rust validation + certification crate (34 modules, 289 tests, zero C deps)- petalTongue viz pipeline — Server-rendered SVG with WASM progressive enhancement
- Markdown + TOML front matter — human-readable, AI-parseable content
- Custom theme — Catppuccin Mocha/Latte, system fonts, dark/light, zero external deps
- Caddy — TLS termination + file serving on golgiBody
- Knot DNS — Sovereign DNSSEC (ns1/ns2.primals.eco) with CAA for Let's Encrypt
# Prerequisites: Zola 0.22+, Rust toolchain 1.85+
zola serve # http://127.0.0.1:1111
zola build # output to public/
# Validation (Rust — typed, pedantic, 90%+ coverage)
cd crates/spore-validate
cargo build --release
cargo run -- validate # registry + totals + taxonomies
cargo run -- validate --check --verbose # + shortcode scan + entity report
cargo run -- check-links # internal link integrity
cargo run -- render-notebooks --discover # Jupyter → Zola markdown
cargo run -- fetch-refresh --write # clone upstream, update metrics
cargo run -- graph --emit # entity graph → static/graph/
cargo run -- certify --emit # guideStone manifest → static/certification/
cargo run -- provenance --write # BLAKE3 content manifest → content-manifest.tomlsporePrint/
├── config.toml # Zola config + entity_registry (79 entities) + totals
├── sources.toml # Upstream repo map (GitHub + Forgejo origins)
├── content-manifest.toml # BLAKE3 content provenance (generated)
├── content/ # 312 published pages with TOML front matter
│ ├── lab/ # 132 pages: spring hubs, 99 notebooks (6 domains), spore gallery
│ ├── science/ # 33 baseCamp companion papers
│ ├── architecture/ # 43 pages: composition, NUCLEUS, K-Derm, CAC, Tower Atomic, Sovereign CI, Mesh Topology
│ ├── thesis/ # 18 chapters: PhD dissertation (constrained evolution)
│ ├── philosophy/ # 15 essays: atlasHugged (12 essays + bibliography + sovereign science)
│ ├── methodology/ # 15 pages: constrained evolution, K-NOME, scyBorg, acknowledgments
│ ├── outreach/ # 15 pages: partnership briefs, community landings, consulting
│ ├── products/ # 11 pages: footPrint, tideGlass, helixVision, lithoSpore, etc.
│ ├── technical/ # 8 pages: hardware, grants, pipelines, neuromorphic
│ ├── audience/ # 7 pages: PI, student, builder, compliance, companies guides
│ ├── guidestone/ # 6 pages: verification class
│ ├── story/ # 3 pages: builder narrative essays
│ ├── collaborators/ # 3 profiles: Gonzales (NF), Jones (PFAS), ABG
│ ├── vision/ # 2 pages: Lansing Scuffle campus, thermal sovereignty
│ ├── glossary/ # Plain-language ecosystem glossary
│ └── sitemap/ # Full site navigation
├── templates/ # 14 Tera HTML templates + shortcodes
├── sass/css/ # SCSS partials → compiled by Zola (nav, layout, landing, etc.)
├── static/
│ ├── css/ # (generated by Zola Sass compilation — do not hand-edit)
│ ├── js/ # viz-hydrate.js (WASM progressive enhancement for petalTongue)
│ ├── wasm/ # petal-tongue-wasm (petalTongue scene rendering)
│ ├── certification/ # guideStone manifest (generated by certify)
│ ├── graph/ # Entity graph JSON (generated by graph)
│ ├── llms*.txt # AI/agent discovery surface (5 files)
│ ├── identity.json # Schema.org JSON-LD identity graph
│ └── .well-known/ # Keyoxide ASPE verification
├── crates/
│ └── spore-validate/ # Rust crate: 34 modules, 289 tests, zero C toolchain
├── scripts/ # Validation scripts (a11y, agent parity)
├── specs/ # Internal standards (not built by Zola)
└── .github/workflows/ # deploy.yml, auto-refresh.yml (trailing shadow)
The site is organized into 5 navigable folds grouping 17 sections:
| Fold | Sections | What |
|---|---|---|
| Evidence | Lab, Science | What we proved (60% of site) |
| Architecture | Architecture, Technical, Products | How it works (19%) |
| Methodology | Methodology, guideStone | How to build (7%) |
| Philosophy | Philosophy, Story, Thesis | Why it matters (12%) |
| Engagement | Glossary, Audience, Outreach, Collaborators, Vision | Who and how (8%) |
10 reading trails thread pages across fold boundaries. ~110 pages carry typed companion metadata for cross-domain discovery.
Pure Rust validation binary — #![forbid(unsafe_code)], clippy pedantic+nursery
zero warnings, 289 tests, 34 modules, zero C toolchain dependencies.
Edition 2024, Rust 1.85+.
| Subcommand | Purpose |
|---|---|
validate |
Registry field checks, totals sums, taxonomy tags, content lint |
validate --check |
+ shortcode scan + internal link validation |
validate --strict |
Promote warnings to errors |
validate --verbose |
+ full entity report with all fields |
graph [--emit] |
Build typed entity graph, optionally emit JSON |
certify [--emit] |
guideStone certification manifest — BLAKE3 Merkle, emit/validate |
provenance |
BLAKE3 content hashing + drift detection (--write/--verify/--diff) |
cas-manifest [--emit] |
BLAKE3 hash Zola build output for NestGate CAS |
cas-push [--generate] |
Push build artifacts to NestGate CAS via UNIX socket |
discover |
Show self-capabilities and discover peer primals |
refresh <repos_root> |
Cross-repo metric drift detection |
refresh --write |
Auto-update config.toml with current metrics |
fetch-refresh |
Clone upstream repos → refresh in one step |
render-notebooks |
Jupyter .ipynb → Zola markdown (pure JSON parse) |
check-links |
Validate all @/ internal links |
nucleus <profile> |
Validate running NUCLEUS against profile (--probe for IPC health) |
depot-verify |
BLAKE3 integrity check of depot binaries against checksums.toml |
depot-list-arches |
Inventory available architectures and binary counts |
pt-render, pt-status, pt-viz |
petalTongue IPC visualization commands |
tower-status |
Probe Tower primals for P1 method availability |
build-viz |
Generate static SVG visualizations via petalTongue IPC |
sporePrint certifies its own published claims. The certification manifest at
/certification/manifest.json contains entity counts, edge counts, a BLAKE3
Merkle root of the entity graph, and content page totals.
# Verify the site independently:
git clone https://github.com/ecoPrimals/sporePrint.git && cd sporePrint
cargo run --manifest-path crates/spore-validate/Cargo.toml -- certify
# Compare graph_merkle with https://primals.eco/certification/manifest.json| Org | Purpose | Repos |
|---|---|---|
| ecoPrimals | Infrastructure — 15 primals + tooling | 17 |
| syntheticChemistry | Science validation — 8 springs | 8 |
| sporeGarden | Products — infrastructure compositions | 11 |
| protoKarya | Protists — wider-world compositions | 6 |
- DNS registrar NS cutover to ns1/ns2.primals.eco — live since Wave 100+
- Forgejo webhook triggers sovereign CI rebuild — Sovereign CI live (Wave 119)
- Archive GitHub Pages deploy workflow to fossilRecord
- CAS route registration (path→hash mapping for NestGate HTTP serving)
- petalTongue renders live dashboards from primal APIs
- Code: AGPL-3.0-or-later
- Documents: CC-BY-SA 4.0
- Combined: scyBorg triple-copyleft (AGPL-3.0 + CC-BY-SA-4.0 + ORC provenance)