Commit graph

203 commits

Author SHA1 Message Date
d122804bdb feat: freshen-channel helper and channel-discipline protocol
Add ./freshen-channel <tool> <channel> at the repo root for the
"drag alpha/beta forward to current stable" workflow. The script
uses a temporary git worktree at the latest <tool>-v* tag so the
main worktree's HEAD is never touched — no checkout, no stash, no
race against in-progress dev. Build runs inside the worktree, the
resulting <tool>_<channel>.html is copied back into the main
repo's website/releases/, worktree is removed.

The on-page label of a freshened build is `<channel> · <today> ·
<stable-tag-sha>` — the SHA pins which stable was the source, so
anyone debugging can `git checkout <sha>` to reproduce.

Smoke-tested:
  ./freshen-channel archive alpha     → archive_alpha.html with
                                        "alpha · 2026-04-27 · ea385b5"
  ./freshen-channel transmittal beta  → transmittal_beta.html with
                                        "beta · 2026-04-27 · ea385b5"
  ./freshen-channel foobar alpha      → usage error
  ./freshen-channel archive stable    → usage error

AGENTS.md gains a "Channel discipline (MUST rules)" subsection
codifying the protocol the build system can't enforce:

  1. Stable doesn't regress — files are immutable; bump for fixes.
  2. No backports — bump and let users update pins.
  3. Alpha/beta are mutable — never pin in production.
  4. Stale-channel rule — after every stable release, freshen alpha
     and beta so neither is older than current stable. NOT optional.
  5. Hotfix path — direct stable cut allowed, no beta soak required;
     freshen alpha + beta after.
  6. Beta soak (recommended) — a few days exposure before promoting.

Plus a "Freshen helper" subsection documenting the script.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 13:43:42 -05:00
699069e538 docs: add zddc-server.html — local vs online mode, what the server adds
The intro page's "zddc-server" link previously pointed at a Codeberg
blob URL (which uses /src/branch/main/, not GitHub's /blob/main/, so
the link 404'd anyway). Replace with a hand-edited concept page on
the website itself.

The page is structured around two access modes:

  - Local directory mode — open a tool, point it at a folder, work
    via the File System Access API. No upload, no server.
  - Online mode — take that same local directory and put it behind
    any web server (nginx, Caddy, Apache, even python -m http.server).
    The Archive Browser tool works against the server's directory
    listings the same way it works against a local folder.

zddc-server is then introduced as a Go binary that gives you online
mode out of the box, plus four conveniences a generic web server
can't: ACL via .zddc YAML files (gated on email-header trust),
virtual /.archive/ URL space, per-request access logging, and the
mundane glue (TLS, ETags, conditional GET, CORS).

Closing section: the on-disk layout is the same in both modes — the
server doesn't transform the archive, it serves it. Stop the server
and the directory is still a valid ZDDC archive. The "Zero Day"
promise: server is convenience, not lock-in.

Also:
- Add Server nav link to website/index.html and reference.html.
- Fix the bootstrap/README.md link that used GitHub's /blob/main/
  pattern (Codeberg uses /src/branch/main/).
- Update ARCHITECTURE.md doc-ownership table: new row for the concept
  page, clarify that zddc/README.md is the operations reference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 12:38:30 -05:00
ea385b5366 Initial commit
ZDDC — Zero Day Document Control. A file-naming convention plus five
single-file HTML tools (archive, transmittal, classifier, mdedit,
landing) and an optional Go HTTP server (zddc-server) with ACL and a
virtual archive index. Self-contained, offline-capable, dependency-free.

See README.md for an overview, AGENTS.md and ARCHITECTURE.md for the
build/release/architecture detail, bootstrap/README.md for the
two-level deployment install pattern, and zddc/README.md for the
HTTP server.
2026-04-27 11:05:47 -05:00