Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

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:
Mplans/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