seed: cut + publish from the Forgejo UI, SEED_URL germination #125

Merged
plat merged 4 commits from feat/seed-workflow into main 2026-08-14 21:35:53 +00:00
Owner

Re-cut the seed from the Actions tab — pick a branch, click Run — instead of a laptop script run.

.forgejo/workflows/seed.yml (workflow_dispatch):

  1. Runs bin/seed on the isolated pool; the public git host is derived from the repo's html_url, so the same workflow re-seeds daughters too.
  2. Publishes the tarball as a generic package plat/seed@<date>-<sha> plus a moving latest — the package list becomes the seed history / drift audit trail, browsable in the UI and fetchable by URL.
  3. Optionally (input, default on) commits genesis/seed.tar.gz back to the selected branch, so the existing deploy path (deploy/lib/mitosis-node.sh → /opt/mitosis/genesis/seed.tar.gz) keeps working byte-for-byte unchanged.

deploy/lib/mitosis-node.sh: optional SEED_URL fetches a fresher seed (e.g. the parent's …/api/packages/plat/generic/seed/latest/seed-lean.tar.gz) over the committed one at germinate time. Default unset — behavior identical.

One-time setup (admin): repo Settings → Actions → Secrets → PLAT_PAT = a plat PAT with read on all plat/* repos and write on plat/mitosis + packages. The per-job github.token can't read the private system repos, which is why the secret exists.

Motivation: benjivers.com germinated 2026-08-14 from a seed frozen ~2026-07-23 — _app-template 28 commits and mcp 26 commits stale, invisibly. This makes seed freshness a visible, one-click property.

🤖 Generated with Claude Code

Re-cut the seed from the Actions tab — pick a branch, click Run — instead of a laptop script run. **`.forgejo/workflows/seed.yml`** (`workflow_dispatch`): 1. Runs `bin/seed` on the isolated pool; the public git host is derived from the repo's `html_url`, so the same workflow re-seeds daughters too. 2. Publishes the tarball as a generic package `plat/seed@<date>-<sha>` plus a moving `latest` — the package list becomes the seed history / drift audit trail, browsable in the UI and fetchable by URL. 3. Optionally (input, default on) commits `genesis/seed.tar.gz` back to the selected branch, so the existing deploy path (`deploy/lib/mitosis-node.sh` → `/opt/mitosis/genesis/seed.tar.gz`) keeps working byte-for-byte unchanged. **`deploy/lib/mitosis-node.sh`**: optional `SEED_URL` fetches a fresher seed (e.g. the parent's `…/api/packages/plat/generic/seed/latest/seed-lean.tar.gz`) over the committed one at germinate time. Default unset — behavior identical. **One-time setup (admin):** repo Settings → Actions → Secrets → `PLAT_PAT` = a `plat` PAT with read on all `plat/*` repos and write on `plat/mitosis` + packages. The per-job `github.token` can't read the private system repos, which is why the secret exists. **Motivation:** benjivers.com germinated 2026-08-14 from a seed frozen ~2026-07-23 — `_app-template` 28 commits and `mcp` 26 commits stale, invisibly. This makes seed freshness a visible, one-click property. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
seed: cut + publish from the Forgejo UI (Actions), SEED_URL germination
Some checks failed
seed.yml / seed: cut + publish from the Forgejo UI (Actions), SEED_URL germination (push) Failing after 0s
guard-ppt / no-ppt (push) Successful in 13s
8484e72f93
.forgejo/workflows/seed.yml — workflow_dispatch: pick a branch in the
Actions tab and run; cuts bin/seed on the isolated pool, publishes the
tarball as generic package plat/seed@<date>-<sha> (+ latest), and
optionally commits genesis/seed.tar.gz back so the existing deploy path
is unchanged. Needs one repo secret: PLAT_PAT.

deploy/lib/mitosis-node.sh — optional SEED_URL fetches a fresher seed
over the committed one at germinate time; default behavior identical.

Motivation: benjivers.com germinated 2026-08-14 from a seed frozen
~2026-07-23 — 28 template / 26 mcp commits stale, invisibly. The package
list becomes the seed history; staleness becomes a visible, one-click
fix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
seed: real workflow + SEED_URL germination (replaces placeholder)
All checks were successful
guard-ppt / no-ppt (push) Successful in 13s
guard-ppt / no-ppt (pull_request) Successful in 13s
2a3d699ec8
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Author
Owner

Scope pivot — consolidated into the existing reseed/coldstart flow. The original commit here added a parallel seed.yml; that duplicated what reseed.yml + scripts/reseed-run.sh already do better (build → verify → no-op guard → PR → coldstart germination gate). The branch now carries three focused changes instead:

  1. reseed.yml: auto-triggers. push to main (with paths-ignore: genesis/** so a merged reseed never re-triggers itself) plus a nightly cron at 03:17. The cron is the piece that actually catches the drift class we hit: pushes to sibling system repos (_app-template, mcp, …) never touch this repo, which is how a daughter germinated 2026-08-14 from a seed frozen ~2026-07-23. The reseed-run.sh no-op guard (refs compare) keeps both triggers churn-free.
  2. seed-publish.yml (new). Fires on a main push touching genesis/seed.tar.gz — i.e. exactly when a gate-validated reseed PR merges — and mirrors the committed seed into the package registry as plat/seed@<date>-<sha> + latest. The package list becomes the versioned seed history, and the URL feeds SEED_URL germinations.
  3. deploy/lib/mitosis-node.sh: optional SEED_URL to germinate from a package URL instead of the committed blob. Default behavior unchanged.

seed.yml is deleted from the branch. Validation of the flow itself: dispatch r246 already produced #126 with a verified seed; once these triggers merge, that loop runs itself.

🤖 Generated with Claude Code

**Scope pivot — consolidated into the existing reseed/coldstart flow.** The original commit here added a parallel `seed.yml`; that duplicated what `reseed.yml` + `scripts/reseed-run.sh` already do better (build → verify → no-op guard → PR → coldstart germination gate). The branch now carries three focused changes instead: 1. **`reseed.yml`: auto-triggers.** `push` to `main` (with `paths-ignore: genesis/**` so a merged reseed never re-triggers itself) plus a nightly cron at 03:17. The cron is the piece that actually catches the drift class we hit: pushes to sibling system repos (`_app-template`, `mcp`, …) never touch this repo, which is how a daughter germinated 2026-08-14 from a seed frozen ~2026-07-23. The `reseed-run.sh` no-op guard (refs compare) keeps both triggers churn-free. 2. **`seed-publish.yml` (new).** Fires on a `main` push touching `genesis/seed.tar.gz` — i.e. exactly when a gate-validated reseed PR merges — and mirrors the committed seed into the package registry as `plat/seed@<date>-<sha>` + `latest`. The package list becomes the versioned seed history, and the URL feeds `SEED_URL` germinations. 3. **`deploy/lib/mitosis-node.sh`: optional `SEED_URL`** to germinate from a package URL instead of the committed blob. Default behavior unchanged. `seed.yml` is deleted from the branch. Validation of the flow itself: dispatch r246 already produced #126 with a verified seed; once these triggers merge, that loop runs itself. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
seed: consolidate into reseed flow — auto-triggers + gated package publish
All checks were successful
guard-ppt / no-ppt (push) Successful in 15s
guard-ppt / no-ppt (pull_request) Successful in 14s
59d32bb70e
Drop the parallel seed.yml (reseed-run.sh already builds, verifies,
no-op-guards, and PRs — the coldstart gate germinates from the PR).
reseed.yml gains push-to-main (paths-ignore genesis/**) and a nightly
cron so drift in sibling system repos gets caught. New seed-publish.yml
mirrors the merged, gate-validated seed into the generic package
registry as plat/seed@<date>-<sha> + latest for SEED_URL germinations.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
slim to reseed auto-triggers only — #127 owns publish + resolution
All checks were successful
guard-ppt / no-ppt (push) Successful in 13s
guard-ppt / no-ppt (pull_request) Successful in 14s
70e23e7d4e
PUBLISH=1 in bin/seed and resolve_seed in lib.sh (PR #127) subsume
seed-publish.yml and the mitosis-node SEED_URL curl; germinate now
takes SEED=latest directly with sha256-verified bundles. What remains
here is the one piece #127 does not carry: reseed.yml fires on main
pushes (paths-ignore genesis/**) and a nightly cron.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
plat merged commit 7d16e0d8a4 into main 2026-08-14 21:35:53 +00:00
Sign in to join this conversation.
No description provided.