commit 6e1f15b8597282753c6174f804bdec7b7db7d1ed
parent a30027f96d966ec8e5f3708e1f34d14a0895322f
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Tue, 22 Sep 2026 23:24:38 -0400
plans: STATE records the post-release steps as done, all but the Anilyzer deploy
Editor and umtool restarted on a30027f9, the Eva defs carry channelsExclude, the index
walked 77224 records and moved none (the allow-list already equalled every channel but
Eva's two), and the Anilyzer build composes 96/282/56 — identical to live. The deploy is
the one step the operator asked to hold.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
1 file changed, 25 insertions(+), 16 deletions(-)
diff --git a/plans/STATE.md b/plans/STATE.md
@@ -38,7 +38,7 @@ empty-with-a-warning rather than as a silent miss.
**And a rule can exclude channels** (`1a011d96`): `channelsExclude` is applied AFTER
`channels` and **the exclusion wins**. It is part of `hashCuratedRules`, which is the trap —
-see the owed steps below.
+see the post-release block below (all done but the deploy).
### `storage/debts-1` — merged 2026-09-21 (`7589c50c` → `e109b6ac`, fast-forward)
@@ -122,21 +122,30 @@ Worktrees `storage-locations-s0..s4` and `s0-pause` removed. Branches deleted:
three release worktrees and branches (`tags/rules-and-ops`, `export/tags-followups`,
`editor/debts`) go once the final gates are in. Nothing unmerged was deleted.
-### Owed — the post-release operator steps, in order
-
-1. **Re-send each Eva tag definition** via `pnpm ops tags --file`, with
- `rules[].channels: []` and `channelsExclude: ["elfpire-eva", "elfpire-eva-x"]`.
-2. **`pnpm ops build-index --wait`.** Expect ONE full re-derive of the whole corpus, ~80 s,
- and the log line `curated tags: rules <hash8> (changed)`. This is not the exclusion doing
- work — `channelsExclude` is part of `hashCuratedRules`, so merely shipping the field
- changes the hash for every existing rule set and the first build after the deploy walks
- every record. It happens once. Do not go looking for a bug.
-3. **`pnpm ops build-deploy --json '{"siteId":"anilyzer"}' --wait`**, then verify:
- `curl https://anilyzer.pages.dev/tags.json | jq '.tags[].count'` and
- `list_tags {source:"remote:https://anilyzer.pages.dev"}` against the allow-list build
- (**96 / 282 / 56**). Suppress any new false positive in `/tags` → Preview.
-4. **Rebuild and restart the editor and umtool on this `main`.** Other sites stay at corpus
- spec 3 until the operator chooses.
+### Post-release operator steps — done 2026-09-22 evening except the deploy
+
+Run in the order the live editor forced (its pre-release sanitizer would have dropped
+`channelsExclude`, so the restart came first):
+
+1. **Rebuilt and restarted the editor and umtool on `472d5b59`** (`:3001`, `:3050`; both
+ started with `pnpm run start -H 0.0.0.0` as before). Done.
+2. **Re-sent each Eva tag definition** via `pnpm ops tags --file`, built from the live defs in
+ `transcripts/tags.json` (presentation fields intact) with `rules[].channels` empty and
+ `channelsExclude: ["elfpire-eva", "elfpire-eva-x"]`. On disk: `channels` absent, the exclude
+ present, all **48 assignments** untouched. Done.
+3. **`pnpm ops build-index --wait`** (job `01M36471VHTYX9V7DXYZY3R6B3`, 330 s): the log said
+ `curated tags: rules 864eac5c (changed), examined 77224, re-derived 0`. Examined = the full walk
+ the hash change forces; re-derived = records whose tags MOVED, and none did, because the corpus has
+ 71 channels and the old 69-channel allow-list was already "everything but Eva's two". The exclude
+ pays off when the next channel joins. Done.
+4. **`pnpm ops build-site --json '{"siteId":"anilyzer"}' --wait`** (job `01M364J54CA4ENG1SXQV865GM7`):
+ composed into `export/public` and exported to `export/out`; `tags.json` counts **96 / 282 / 56**,
+ byte-identical to live. No new false positive to suppress. Done — **built, not deployed**.
+
+**Still owed: the deploy** — `pnpm ops build-deploy --json '{"siteId":"anilyzer"}' --wait`, then
+`curl https://anilyzer.pages.dev/tags.json | jq '.tags[].count'` and
+`list_tags {source:"remote:https://anilyzer.pages.dev"}`. The operator chose to hold it. Other sites
+stay at corpus spec 3 until the operator chooses.
**Out of scope, decided:** hub tag federation. A tag filter works per site; the hub does not
aggregate `/tags.json` across members.