From 470a34a690b907efa71e19ee0aeb2e1bc70cc9cf Mon Sep 17 00:00:00 2001 From: ZDDC Date: Wed, 20 May 2026 09:25:28 -0500 Subject: [PATCH] docs: drop alpha/beta channels + partial-version pins from repo docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Match the build/build-lib + apps.go simplification in bdd1460. Each tool now has one canonical URL (.html, symlink → current stable) and a set of immutable per-version files (_v.html). Beta cuts are internal-only (SHA snapshot for the BMC dev chart); no public beta or alpha channels exist anymore. Touched: - CLAUDE.md "Repo shape" + "Things that bite" — drop channel mirrors and partial-version pins from the artifact-layout bullet, rewrite the seed-from-live bullet, drop "channel-link verifier" bullet, rewrite build-label bullet for the dev/beta/stable shape. - AGENTS.md "Commands" + "Releasing — lockstep stable + beta snapshot" (renamed from "lockstep, channels, layout") + "Release discipline" (renamed from "Channel discipline"). "Freshen helper" section deleted entirely. Artifact-layout table simplified. - ARCHITECTURE.md Build System + Channels (renamed "Release verbs") + Install distribution model. Artifact-layout block + label table + spec syntax in the `.zddc apps:` cascade — all rewritten. - zddc/README.md release-tagging + apps-resolver spec syntax + signing-pipeline section. The May 2026 simplification is now self-documenting — references to it appear where readers might wonder why the older shape is gone. Co-Authored-By: Claude Opus 4.7 (1M context) --- AGENTS.md | 139 +++++++++++++++++++++--------------------------- ARCHITECTURE.md | 66 +++++++++++------------ CLAUDE.md | 48 +++++++++-------- zddc/README.md | 24 ++++----- 4 files changed, 129 insertions(+), 148 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 0c43155..0d17c61 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,16 +6,17 @@ # ── ./build subcommands ──────────────────────────────────────────────────── # `./build` (no arg) is a source-side dev build only — assembles tool/dist/ # + cross-compiles zddc-server. dist/release-output/ and the live site are -# left alone. Channel + release subcommands produce a complete release -# bundle in dist/release-output/ (gitignored). Run `./deploy` to publish. -# Workflow: alpha = active dev → beta = ready for testing → release = ship. +# left alone. `./build beta` is an internal SHA snapshot for the BMC dev +# chart (no public artifacts). `./build release` is the canonical stable +# cut. Run `./deploy` to publish a stable cut. ./build # dev build (no release bundle) -./build alpha # cut alpha (cascades nothing) -./build beta # cut beta (cascades alpha → beta) -./build release # cut stable, coordinated next version - # (cascades alpha + beta → new stable; tags all nine) -./build release 1.2.0 # cut stable at explicit version +./build beta # internal SHA snapshot for BMC dev chart + # (regenerates embedded/* + chore commit; + # no public artifacts in dist/release-output/) +./build release # coordinated stable cut, next version + # (tags all 8 artifacts at release commit) +./build release 1.2.0 # coordinated stable cut, explicit version ./build help # ── ./deploy subcommands ──────────────────────────────────────────────────── @@ -29,10 +30,9 @@ # Single-tool dev build for testing (does NOT touch dist/release-output/): sh tool/build.sh # archive|transmittal|classifier|landing|form|tables|browse -# Single-tool release (rare; prefer ./build alpha|beta|release so versions -# don't drift between tools). Same flag form as before. -sh tool/build.sh --release [|alpha|beta] -./freshen-channel # rebuild one tool's alpha/beta from its current stable tag +# Single-tool stable cut (rare; prefer ./build release so versions don't +# drift between tools). +sh tool/build.sh --release [] # Test all tools npm test @@ -47,14 +47,14 @@ npx playwright test tool # archive | transmittal | classifier | brow No lint, typecheck, or format commands exist — the project is plain sh + vanilla JS. -Channel/release cuts seed `dist/release-output/` from the current -`/srv/zddc/releases/` (preserving symlinks) before running per-tool -promote, then mutate the channels being cut on top. The bundle is -therefore always a complete intended-live snapshot, not a sparse diff. -The build ends with a **channel-link verifier** that asserts every -`_{stable,beta,alpha}.html` (and zddc-server's per-platform binary -mirrors + stub pages) resolves. Build fails if any link is dangling — -because the bundle is complete, dangling-link errors mean a real bug. +Stable cuts seed `dist/release-output/` from the current +`/srv/zddc/releases/` — copying only immutable per-version files +(`_v.html`, `zddc-server_v_`) + their `.sig` +sidecars + `pubkey.pem`. The cut writes this version's per-version +file + canonical `.html` / `zddc-server_` symlinks on top. +`./deploy --releases` (rsync `--delete-after`) cleanses any stale +files in the live tree that this cut didn't include. + **Nothing is pushed automatically.** Run `./deploy` to publish; commit + push source changes to `main` separately. @@ -104,10 +104,9 @@ shared/ # index.html regenerated by `./build` # _v.html per-version (immutable) # _v.html -> ... symlink chain -# _stable.html -> ... channel mirror, follows latest stable -# _{beta,alpha}.html -> ... channels (cascade to stable when idle) +# .html -> ... canonical symlink → current stable # zddc-server_v_ per-platform binary (raw bytes, no LFS) -# zddc-server__ channel binary mirror (symlink) +# zddc-server_ canonical per-platform symlink → current stable # zddc-server_.html stub page surfacing 4 platform DLs helm/ @@ -118,7 +117,7 @@ helm/ **Critical:** `dist/` files are gitignored. `tool/dist/.html` is the canonical built artifact for testing and the source for `--release` writes into `dist/release-output/`. `dist/release-output/` is the local-only release bundle. Neither is in git. Never edit them directly. -**Two-repo + deploy-host model.** Source code lives here (`codeberg.org/VARASYS/ZDDC`); hand-edited website content lives in a separate repo (`codeberg.org/VARASYS/ZDDC-website`, typically cloned at `~/src/zddc-website/`). The live site at `zddc.varasys.io` is `/srv/zddc/` on the deploy host (Caddy bind-mount), populated by `./deploy`. Release artifacts are NOT in git — they're produced by `./build alpha|beta|release` into `dist/release-output/` and rsync'd to `/srv/zddc/releases/` by `./deploy --releases`. Per-version files (HTML and zddc-server binaries) are real immutable bytes; partial-version pins (`_v`, `_v`) and channel mirrors (`_stable`, `_beta`, `_alpha`) are symlinks. `shared/build-lib.sh` provides `promote_release` (HTML tools) and `promote_zddc_server` (binaries + matching stub pages); the top-level `./build` seeds from live state, then calls them in lockstep. Older releases are reproducible from any `-vX.Y.Z` tag in this repo (`git checkout zddc-server-v0.0.8 && ./build release 0.0.8`). No Codeberg release assets, no LFS. +**Two-repo + deploy-host model.** Source code lives here (`codeberg.org/VARASYS/ZDDC`); hand-edited website content lives in a separate repo (`codeberg.org/VARASYS/ZDDC-website`, typically cloned at `~/src/zddc-website/`). The live site at `zddc.varasys.io` is `/srv/zddc/` on the deploy host (Caddy bind-mount), populated by `./deploy`. Release artifacts are NOT in git — they're produced by `./build release` into `dist/release-output/` and rsync'd to `/srv/zddc/releases/` by `./deploy --releases`. Each tool has exactly one canonical URL (`.html`, symlink → current stable) and a set of per-version immutable files (`_v.html`). Same shape for zddc-server per platform. `shared/build-lib.sh` provides `promote_release` (HTML tools) and `promote_zddc_server` (binaries + matching stub pages); the top-level `./build` seeds per-version immutables from live state, then calls them in lockstep. Older releases are reproducible from any `-vX.Y.Z` tag in this repo (`git checkout zddc-server-v0.0.8 && ./build release 0.0.8`). No Codeberg release assets, no LFS. ## Shared CSS (`shared/base.css`) @@ -144,7 +143,7 @@ Included as the **first** positional arg to every tool's `concat_files` CSS call - Build scripts use **POSIX sh** (`#!/bin/sh` with `set -eu`), not bash. - `concat_files` accepts **positional args only** (not array names). - `awk` processes `template.html`, replacing `{{PLACEHOLDER}}` markers and stripping CDN `