commit abcaf60ead73a775ba71f2bfce9c935d1fb99840
parent 6a353b6b41af14c46b22ca11cf152c7f755efd6f
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Wed, 30 Sep 2026 21:31:21 -0400
plans: release 13 — slice W2 brought to main: the merge of acd83ceb (the Use-with-AI page yields to release 16 DX; README, mcp/README, ChartView, both changelogs and the Record kept both sides), the homepage doc in W2's command form, re-gates; fix round Q1 superseded; a stray index build through the corpus link, what it wrote and what it left
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
| M | plans/release-13.md | | | 127 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- |
1 file changed, 125 insertions(+), 2 deletions(-)
diff --git a/plans/release-13.md b/plans/release-13.md
@@ -1131,7 +1131,8 @@ found-and-left bullets are therefore closed.
(`w2-fix-mcp-9-nosilent-stdout.txt`). FACTS' release 11 entry ("a clean MCP registration") is
amended. `CONTRIBUTING.md:157`'s `pnpm archilyzer mcp` stays: it lists the CLI's commands for a
person at a shell, not a registration.
-- **Q1 — the public "Use with AI" page moved too.** The snippet is built by
+- **Q1 — the public "Use with AI" page moved too.** *Superseded by release 16 DX: the page is
+ gone from `main`, and this change with it (below, "Brought to main").* The snippet is built by
`export/app/use-with-ai/mcpSnippet.ts` (pure): keyed **`archilyzer`** on every site and the hub
(a site-id key breaks `/ask` and `/sweep`, whose tool names embed the key), `"args":
["--silent", "-C", "/path/to/yt-dlp-transcript-browser", "archilyzer", "mcp"]`, the site's
@@ -1147,7 +1148,7 @@ found-and-left bullets are therefore closed.
| sha | what |
|---|---|
| `84992e73` | `docs:` `--silent` on every `archilyzer mcp` example; the stdout claims say why; FACTS |
-| `48d2df8e` | `export:` `use-with-ai/mcpSnippet.ts` + test (3); the page uses it, keyed `archilyzer`; `[Unreleased]` bullet |
+| `48d2df8e` | `export:` `use-with-ai/mcpSnippet.ts` + test (3); the page uses it, keyed `archilyzer`; `[Unreleased]` bullet — **superseded by release 16 DX** (the page, the module, its test and the bullet are not on `main`) |
| `8995d635` | `editor:` `[Unreleased]` — the Charts tab's sixth series colour |
| _this_ | `plans:` this fix round |
@@ -1169,4 +1170,126 @@ passed, 0 failed, 56 s**.
only file in a `--workers=2` run; N2: `5a4ec2fd` alone is red until `babd4b75`) are left as the
review says.
+#### Brought to main (2026-09-30)
+
+Reviewed SHIP on 2026-09-28 and never merged: `main` went on through releases 14, 15 and 16, the
+0.11.0 cut, and W3's and W1's merges, to `3a6b3f70`, 290 commits past this branch's fork
+(`441bdbb2`). The branch merged `main` (a merge, not a rebase, so the reviewed shas stand) at
+**`25042803`**. One W2 change yielded to `main`: **the Use-with-AI page and its snippet (fix round
+Q1, `48d2df8e`) are gone**, because release 16 DX deleted the page. W2's command form went
+where DX moved the setup, the homepage's AI and MCP doc (`8469e790`), as the parent ruled.
+
+**Conflicts and how each was resolved:**
+- **`export/app/use-with-ai/page.tsx`, modify/delete: deleted.** DX removed
+ `export/app/use-with-ai/` (the setup lives only in `homepage/content/docs/ai-and-mcp.md`, and the
+ sites' Use with AI links point there). `48d2df8e`'s page change, `mcpSnippet.ts` and
+ `mcpSnippet.test.ts` (3 tests), which `main` never had, were removed with it and not brought
+ back. Its `export/CHANGELOG.md` bullet was dropped too. Fix round Q1 is marked superseded above.
+- **`README.md` §1, two hunks.** DX had changed the registration to run "from the repo's root"
+ with `"$PWD"`; W2 had changed the command and added the paragraph on `--silent`. The result
+ keeps both: W2's paragraph, ending "To register it with Claude Code, from the repo's root:",
+ and `-- pnpm --silent -C "$PWD" archilyzer mcp`. **§4 merged without a conflict** and reads as
+ DX built it: `git clone …` (or the tarball), `cd archilyzer && pnpm install`, `claude mcp add
+ archilyzer`, `claude` and `/ask`, then the editor-lines note, the name's reason and the WSL2
+ line, with W2's command and its `--silent` note.
+- **`mcp/README.md`, three hunks.** "Add to Claude Code" uses DX's `/ABS/PATH/TO/archilyzer`
+ with W2's `pnpm --silent -C … archilyzer mcp`. The naming paragraph is DX's ("why every example
+ registers it as `archilyzer`"), which says what W2's did. The `mcp.json` args are W2's command
+ laid out as DX laid out its list: `"--silent", "-C", "/ABS/PATH/TO/archilyzer", "archilyzer",
+ "mcp"`.
+- **`common/components/charts/ChartView.tsx`: both imports.** W2's `seriesColor` and release 14's
+ `BAR_GAP` (`./surfaceGap`, the stacked bars' 2 px gap) are both kept, and the spread on `<Bar>` is
+ unchanged. `--chart-other` (release 14 CF) is a `tokens.css` token for the homepage's growth
+ chart; ChartView never names it, so there was nothing to reconcile there.
+- **`editor/CHANGELOG.md`:** `[Unreleased]` holds W3's four bullets and W1's four as `main` has
+ them, then W2's (a site's Charts tab gives a sixth series its own colour). `[0.11.0]` and below
+ are `main`'s. **The bullet is still true on `main`:** `main`'s ChartView coloured
+ `var(--chart-${(i % 5) + 1})` in all three places, and the editor's `/sites/<id>/charts` reaches
+ it through `EditorChartsClient` → `ChartsDashboard` → `ChartCard` → `ChartView`.
+- **`export/CHANGELOG.md`:** `[Unreleased]` holds release 16's three bullets, then W2's
+ sixth-series bullet. Checked by eye in both changelogs: no W2 bullet sits in a released section,
+ and each appears once.
+- **`plans/release-13.md`:** the Record keeps W3's and W1's sections as `main` has them; W2's
+ follow, before the Rollout. `git diff main` on the file adds W2's lines and removes none.
+- **Merged without a conflict, both sides kept** (each re-read on the merged tree): `AGENTS.md`
+ (DX did not touch its no-corpus block, so W2's `pnpm --silent -C "$PWD" archilyzer mcp` and its
+ paragraph stand), `PUBLISH.md`, `CONTRIBUTING.md`, `plans/tools/implementer-rules.md`,
+ `plans/FACTS.md`, `export/package.json` (W2's `test` beside `main`'s scripts),
+ `export/playwright.2origin.config.ts`, `common/lib/envVars.test.ts`, `homepage/e2e/no-data.spec.ts`.
+
+**After the merge, the parent's ruling on the one place (`8469e790`).** DX's "Ten-minute setup"
+in `homepage/content/docs/ai-and-mcp.md` registered with `-- pnpm -C "$PWD" --filter
+yt-dlp-transcript-mcp exec tsx src/index.ts`. It now reads `-- pnpm --silent -C "$PWD"
+archilyzer mcp`. A note says why `--silent` stays and that `archilyzer mcp` is the source's own
+command. The note on other clients gives the `mcp.json` args in the same form. The drift table
+(`homepage/content/README.md`) names the form and every copy (README §1/§4, mcp/README's two
+examples, AGENTS.md's block). FACTS' "Use with AI is the homepage's AI and MCP doc" is amended.
+The homepage changelog has a bullet under DX's. **`homepage/e2e/docs.spec.ts`** (DX's) now pins the
+new line, checks that `<main>` contains `archilyzer mcp` and not `exec tsx src/index.ts`, and adds
+one case: the doc fits a 390 px phone, since its notes now carry a long inline code span (the page
+has no horizontal scroll). `export/e2e/use-with-ai-link.spec.ts` is DX's, unchanged. A grep of
+the docs (`README.md`, `mcp/README.md`, `AGENTS.md`, `PUBLISH.md`, `CONTRIBUTING.md`, the homepage's
+content) finds `exec tsx src/index.ts` only where a line explains what `archilyzer mcp` runs.
+
+| sha | what |
+|---|---|
+| `25042803` | the merge of `main` `3a6b3f70`; the conflicts resolved as above |
+| `8469e790` | `docs:` the homepage doc's setup in W2's form; the drift table, FACTS, `docs.spec.ts`, the homepage `[Unreleased]` bullet |
+| _this_ | `plans:` this subsection; fix round Q1 marked superseded |
+
+**Re-gates on the merged tree** (logs `$T/w2-*.log` in the job's `tmp/`):
+- **tsc** (all workspaces) clean before each commit: 98 s at the merge, 42 s at `8469e790`. The
+ worktree's generated `export/.next/types` and `export/.next/dev/types` named the removed page;
+ they were deleted first (gitignored; not source files).
+
+ | Suite | Result |
+ |---|---|
+ | common | **2,404/2,404**, 134 s: `main`'s 2,402 plus ChartView's 2 |
+ | export unit | **98/98**, 11 files, both as `pnpm --filter export test` (4 s) and as the rules' raw `pnpm exec tsx --test "app/**/*.test.ts"` in `export/` (5 s): the fix round's 101 less `mcpSnippet.test.ts`'s 3 |
+ | homepage unit | **23/23** |
+ | editor unit | **101/101**, as `pnpm --filter editor test` and as the raw `tsx --test` in `editor/` |
+ | `test:scripts` | **194 passed, 2 skipped (196)**: `LIVE`, and UT's check skipping this worktree's missing umtool build |
+ | mcp | **271/271**, 28 s |
+
+- **Builds.** `pnpm --filter export exec next build`: exit 0, 49 s, no dangling `export/public`
+ links before or after; `out/` has no `use-with-ai/`, and its index's two "Use with AI" links go
+ to `https://archilyzer.pages.dev/docs/ai-and-mcp/`. **The homepage**, `pnpm --filter homepage run
+ build:nodata` (`next build`, no data hook) under `systemd-run … MemoryMax=5G MemorySwapMax=0`
+ with the corpus linked `-T`: exit 0, 29 s wall, max RSS 778,156 KB. The link was removed after.
+ The built doc carries `archilyzer mcp` 3 times and `exec tsx src/index.ts` 0 times, and none of
+ its 13 `.nft.json` traces names `transcripts/`.
+- **e2e:** see the table below.
+- **Numbers tool:** none.
+
+**A stray index build ran against the real corpus (2026-09-30, 21:05–21:08).** The first
+homepage build attempt ran `pnpm --filter homepage run build`, the script the prompt names, with
+the primary's `transcripts/` linked in per the umtool rule. **`build` has a `prebuild` hook,
+`build:data` = `build:index && compose`** (the twin-script note in `homepage/next.config.ts`), so
+pnpm ran `archilyzer index` through the link before `next build`. It was seen in the log and
+stopped: the wrapper was killed (`rc=137`, 162 s), the link removed, and the orphaned index
+process SIGTERMed (`ELIFECYCLE 143`). `compose homepage` and `next build` never started.
+- **What it did.** It scanned the corpus and logged `Diff: +0 added, ~2 changed, -0 removed, 81690
+ total.` (no schema change, no held channel). It wrote the 2 changed videos' records to the
+ primary's `transcripts/index.mdb` (last modified 21:08:23) with `main`'s index code. Nothing
+ under `common/controller/`, nor `build-index.ts` or `paths.ts`, changed between `e9e3e4ec`
+ (releases 14+15, the live editor's build) and `3a6b3f70`. Then it began the shared page trees. Those
+ resolve under the CHECKOUT's `export/.export-index/shared`, the worktree's own: a new 2.5 GB
+ directory, 354 files, 18 channels in sort order up to `destiny` (killed writing
+ `page-0030.json.tmp`). Subtitles, posts, digests, the per-site loop and
+ `INDEX_SCANNED_AT_KEY` were never reached.
+- **What it left.** Every complete page and manifest it wrote is **byte-identical** to the
+ primary's (`cmp`; manifests compared without `generatedAt`), so the `pageHashes` it stored for
+ those 18 channels match the primary's files. For the other channels nothing changed. The 2
+ changed videos' `mtimes` now read as indexed, so the editor's next **Build index** will not
+ count them as changed. Any build with any other mutation rewrites every channel's pages from
+ LMDB, and a page whose content moved has a new hash, so it is written. The worktree's
+ `export/.export-index` was deleted afterwards.
+- **Owed to the operator / parent:** whether to run one **Build index** on :3001 (it settles the
+ 2 videos' pages, if their change touched page content, and records the scan time). Not done
+ here: the session does not drive the live editor.
+- **The rule it broke:** "never run an app, an index or a fixture builder through" the link. The
+ homepage gate is `build:nodata` (or `exec next build`), never `build`. The rules file's umtool
+ paragraph is umtool-specific and does not say so for the homepage; the record leaves the rules
+ to the parent.
+
## Rollout