Releases: drawmeanelephant/rotkeeper
Release list
Rotkeeper v0.8.0 — Phase 6 completion, theme registry, DaisyUI trio, identity primitives
v0.8.0 completes Phase 6 of the Oliver integration and ships the theme system overhaul: a config-driven theme registry, the DaisyUI prototype trio with per-page palette switching, shared identity primitives, and the docs trio.
- Phase 6 completion (Oliver): pin moved to
06dd640(wrap fix #115); the adapter is now direct (no yq/gawk fallbacks) and feedsversion/tags/asset_metaslots into the wrap dialect for meta-json interpolation. - Theme registry + config nav (#252): per-site
theme_registry.defaultwith a safe fallback on dangling defaults; S7-asserted precedence (frontmatter > config > fallback) on all three layouts; config-driven$navigation$hook with the first real nav in a theme. - DaisyUI trio + palette switching (#248/#249/#250/#307): vendored daisyUI 5.7.2 theme with a byte-identical zero-dependency vanilla twin, a component map, and
palette:frontmatter →data-themefor all 35 vendored names. Decision gate 2026-08-28 keeps the pair prototype — seedaisyui-map.mdfor the measured verdict and reopen conditions. - Shared identity primitives (#251):
rk-identity.css— dividers, lore blocks, and the icon set († ⚗ 🕯️ 💀 🦇 ✝ ☠) as token-driven primitives; necropolis and the spooky family refactored onto it. - UX sweep 2 (#290): bare echo diagnostics now survive quiet mode,
init/scanend with visible MARKER summaries, and render failures carry a structured channel with the XHTML fail-closed hint. - Docs trio: theme-creation guide (#259), completed theme-eval fixture (#261), and the portable doc-site guide (#263) — anyone who runs the toolchain can publish the docs anywhere.
- Six correctness bugs (#220), sterile layout parity (#221), concurrency/atomicity fixes (#222), and the consolidation refactors (#223/#224) all land in this release.
The canonical single-tier framework distribution is rotkeeper-0.8.0.zip — verified (spine, allowlist, no forbidden artifacts) and replayed clean (preflight → init → render → scan → pack) from the shipped artifact.
Rotkeeper v0.7.0 — Cooklang, XHTML profile, download-first Oliver install
v0.7.0 adds first-class Cooklang support, an opt-in XHTML output profile, and installs the Oliver renderer download-first from upstream's rolling builds release (checksum + pinned-commit verified).
- Cooklang (Recipe Grimoire):
input_format: cooklanginbones/config/rotkeeper.yamlor.cooksource files always render via Oliver--from cooklangregardless of the config default; recipes live underhome/content/recipes/. - XHTML output profile: opt-in per page (
render_profile: xhtmlfrontmatter) or per site (render_profilein config, defaulthtml); raw HTML fails closed under XHTML (error.RawHtmlNotXmlWellFormed); ships the XHTML theme wrapperbones/templates/theme-spooky-dark-xhtml.html; harness asserts xmllint well-formedness. - Download-first Oliver install:
scripts/setup.shfetchesoliver-<os>-<arch>(linux/macos × x86_64/aarch64) from upstream's rollingbuildsrelease, verifies it against the publishedsha256sums.txt, and assertsoliver --versionreports exactly the pinned commit (OLIVER_PIN=6edb520c…) before installing to/usr/local/bin/oliver; the Zig 0.16.0 source build of the same pin remains the fallback — no Zig toolchain needed on the happy path. - De-Jules scrub:
setup-jules.shrenamed tosetup.sh; agent branding removed from scripts, docs, and CI. - Contract/harness updates: real-Oliver CommonMark contract corpus runs on every layout pass; XHTML fail-closed + xmllint gates; footnote/task-list literal contract verified unchanged against the new pin.
Validation: full harness green on crypt/busy/sterile with RK_STRICT=1 against the real pinned binary (contract corpus, XHTML xmllint, fail-closed raw HTML); extract-and-replay quickstart (preflight → init → render → scan → pack) passes from the shipped zip; CI green with the download-first install on ubuntu (linux-x86_64) and macOS (aarch64).
Artifacts: rotkeeper-0.7.0.zip — canonical framework distribution (dispatcher, bones system, templates, configuration, project docs) with generated release-manifest.txt.
Rotkeeper v0.6.0 — textile input, archive integrity, pinned Oliver renderer
v0.6.0 hardens the test harness, makes text rendering configurable, pins the Oliver renderer, and fixes archive naming collisions.
- Configurable input format:
input_format: markdown|textileinbones/config/rotkeeper.yamlpropagates through env and the adapter; preflight smoke and the harness honor it. Textile markup renders via Oliver--from textile; internal.textilelinks rewrite to.htmlduring the transformation pass. Source discovery remains*.md-bound. - Oliver pinned:
scripts/setup-jules.shnow does a full clone +git checkoutofOLIVER_PIN(22b3c7795adb1caac160b3bc863980d35bbec379) and verifies withrev-parse; CI inherits the pin via the setup script. Shallow clones cannot satisfy the pin. - Archive collision fix: tomb archives are now
tomb-<ts>-NNNN.tar.gz(per-process random suffix), eliminating same-second name collisions; post-pack stdout prints a tomb summary line (name, sha256:16, file count, size). Tomb versioning policy (append-only, immutable, never pruned) documented inrotkeeper-schemas.md. - Harness expansion: pack-integrity assertions (archive existence, gzip health,
tomb.jsonmetadata, root-relative prefixes — exits 116/117/118/139); release-zip content audit (framework spine,rotkeeper/-only roots, forbidden trees/artifacts, no*.tar*leftovers — 148–152);--dry-runnon-mutation (153); stale-output pruning (154); tomb-naming uniqueness (155); textile assertions (144–147). New-exit-code set verified free. - Bug fixed:
rc-scan.shwrote a per-run log file even in--dry-run; log creation is now gated. - Release affordances:
.editorconfig, PR/issue templates added;.editorconfigadmitted to the release root allowlist; release-day checklist (§8) added toworkflow.md; todo ledger reconciled.
Independent external QA: RK_STRICT=1 suite with real Oliver across all three layouts, release-zip audit, and dry-run non-mutation ran twice against release/0.6 @ 28961bd — PASS 100% green, workspace pristine after testing.
Full harness verified green on crypt/busy/sterile layouts (hermetic + real Oliver) on macOS.
Artifacts: rotkeeper-0.6.0.zip — canonical framework distribution (dispatcher, bones system, templates, configuration, project docs) with generated release-manifest.txt.
Rotkeeper v0.5.3 — Oliver renderer swap and CI hardening
v0.5.3 replaces the Apex renderer with Oliver and hardens the CI + release plumbing.
- Oliver renderer swap:
rc-apex-adapter.sh→rc-oliver-adapter.sh,RK_OLIVER_BINreplacesRK_APEX_BIN, contract moved tooliver-contract.md. Adapter strips YAML frontmatter and drivesoliver render --from markdown(stdin → stdout). - GFM pipe tables flipped to supported: alignment colons and escaped pipes asserted by hermetic
oliver-contractfixtures; task lists/footnotes remain CommonMark-literal. - Preflight now gates on a live Oliver smoke render (no version range — Oliver's CLI is provisional);
scripts/setup-jules.shbuilds Oliver from source with Zig 0.16. - Release hardening: root-entry allowlist now enforced for directories as well as files (a stray root directory previously leaked into the zip); output exclusion is layout-derived (covers sterile
dist/). - CI: macOS added to the matrix,
RK_STRICT=1fails loudly when real-Oliver passes are skipped, test job aggregator satisfies the required status check.
Full harness verified green on crypt/busy/sterile layouts with real Oliver on both macOS and Ubuntu runners.
Artifacts: rotkeeper-0.5.3.zip — canonical framework distribution (dispatcher, bones system, templates, configuration, project docs) with generated release-manifest.txt.
v0.5.2 — Stabilization Slice
- Added the
preflightdispatcher command for single-pass Apex binary discovery & diagnostics. - Added checked-in hermetic smoke fixture (
bones/scripts/tests/fixtures/apex-smoke/) with golden output validation acrosscrypt,busy, andsterilelayouts. - Made release archives deterministic with explicit root allowlist, framework manifest (
release-manifest.txt), and credential guards. - Repaired DIP workflow & refreshed matrix coverage (42 path-independent rows).
- Fixed macOS
realpathportability inrc-apex-adapter.shviark_canonical_path. - Updated documentation: complete README overhaul and new
workflow.mdguide.
Rotkeeper v0.5.1
Apex renderer hardening release. Fixes literal-safe template interpolation, metadata escaping, .soul.md parsing, Apex stderr handling, and manifest consistency. Full crypt/busy/sterile test matrix passes.
What's Changed
- fix(apex,manifest): cursor-based interpolation, html escaping, soul sidecar parsing & manifest alignment by @drawmeanelephant in #174
- bump: Release Rotkeeper v0.5.1 by @drawmeanelephant in #175
Full Changelog: v0.5.0...v0.5.1
Rotkeeper v0.5.0
[0.5.0] - 2026-07-23
- Established native Apex (
apex) HTML renderer as default engine and removed Pandoc runtime requirement. - Formalized
source_markdownexport contract inrc-pack.shfor decentralized payload packaging. - Added dispatcher link audit tool (
rc-links.sh/./rotkeeper.sh links) for link checking and local asset verification with angle-bracket compatibility. - Added persistent Spooky theme (
theme-spooky-dark.html,theme-spooky-light.html), offline spooky opt-in theme, and brutalist log styling base. - Added coastal radio dogfood corpus and hardened authoring traversal and status reporting.
- Made release distribution archive publication atomic (
rotkeeper-v0.5.0.zip). - Refreshed DIP documentation matrix and removed obsolete tombs and retired ritual references.
Rotkeeper v0.4.1
Rotkeeper v0.4.1
This release seals the release-plumbing and stabilization checkpoint.
Highlights
- Version-aware microbump flow through
bash rotkeeper.sh bump. - Synchronized script version markers and parameterized release tests.
- macOS-safe integration-test and release cleanup paths.
- Idempotent DIP stitching, accurate matrix status, and evidence-gated obsolete handling.
- Canonical single-archive packaging.
Validation
- Full crypt/busy/sterile integration matrix passed.
- Removed-command regression checks passed.
- Canonical archive integrity verified.
Asset: rotkeeper-0.4.1.zip
Rotkeeper v0.3.1
Minor release: Framework stabilization and documentation scrub
💀 Rotkeeper v0.2.4 – Ritual Bookbinding Edition
This release overhauls the documentation rituals, expands path awareness, and stabilizes the docbook collapse pipeline. It introduces a unified book command, collapses Markdown into GPT-readable YAML, and consolidates environment logic across the toolchain.
🔧 Added
rc-book.sh
Multi-mode docbinding script (--scriptbook,--docbook,--webbook,--collapse,--all)rc-env.sh
Shared path config forbones/,output/,home/content/— sourced by allrc-*.shscriptsrotkeeper-docbook-clean.md
Stripped variant of the docbook, ready for YAML collapse and GPT consumptioncollapsed-content.yaml
Clean, structured output of all known doc assets (from--collapsemode)rc-utils.sh
Generic helpers (parse_flags,require_env_vars,init_log, etc.)
✂️ Removed / Deprecated
- Legacy bookbinding scripts (
rc-docbook.sh,rc-webbook.sh,rc-scriptbook.sh) - Inline changelog logic from
rc-utils.sh(now owned byrc-bless.sh)
📖 Documentation Overhaul
- All active rituals now have matching
.mddocumentation underhome/content/docs/bones/scripts/ - CLI flags, workflows, and caveats freshly embalmed
- Limericks preserved for structural integrity
🪦 Notes
- Doc outputs now include both frontmatter-rich and frontmatter-free variants
collapselogic includes fallback title detection- Output markdown no longer breaks on malformed YAML
- This is a stable pre-release — additional polish expected in
v0.2.5
May it rot gracefully. 🕯️
