Repository navigation
feat(website): tool cards end with their recorded run, and every tri command has a card - #1288
Merged
Merged
Conversation
The header listed German, Chinese and Spanish, but the site is written in English and Russian. Drop the three unused catalogues and the switcher entries; a saved de/zh/es choice falls back to English. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- public/term: the asciicast player and two recordings, x7-board and devkit-flow, each with a share page and card for t27.ai/term/<id>/. - A `terminal` block for posts and a TerminalCast component that loads the same player; captions live once in src/data/casts.ts. - Posts "The back half of openXC7, from a spec" and "The FPGA flow, layer by layer", in English and Russian. The second says plainly that tri devkit and bitwalk are not in a tri release yet (#1272). - #/devkit: measured per-layer times, Amdahl ceilings and an hours calculator from src/data/devkit.ts. - The recordings are also shown on #/verification, #/foundry and three earlier board posts, each captioned as a later recording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…00/mo The homepage grounds, cards and primary buttons are black; the kanban, factory and shell cards lose their green wash, and the queen-direction contract now asserts a black card ground. A new homepage block shows the measured FPGA flow and the club, read from data/devkit.ts and the new data/club.ts. The club is one $300/mo TRI DEV developer-agent membership, shared by #/foundry, #/devkit and the homepage. ModulesBlock names all four board readings, Tech Tree included. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every agent is sold at one price, a 10000 Stars Telegram subscription per 30 days; USD is derived with the bot's star rate. Foundry gains a showcase of the four agent profiles the bot sells, read from the bot's catalogue with a bundled fallback. The AGENTS hint no longer claims a 27-letter alphabet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
TRI DEV is now the first agent card, full width, with the accent border, the one price and the primary Telegram button; the other three agents follow as equal cards. The draft tiers section is gone: every agent has the same 10000 star price. On a 375px screen the terminal recording widened its section to 565px and pushed the heading and caption off screen. The inner column now takes the section width and wide children scroll inside themselves. The hero buttons stack and centre on phones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s/bin/tri All 295 commands of the trios loop tri (gHashTag/BrowserOS:trios/bin/tri at 7366096) get a .t27 card under specs/tools/trios/tri/, generated by scripts/tools-from-trios-tri.mjs from the help heredoc and the top-level case arms. Witness is source-parse; the CLI was not run. 43 commands (all tc-*) are dispatched but not named by `tri help`, and the cards say so. The trios cards are written to public/tools/spec-tools-trios.json, a part named by spec-tools.json with its count and sha256, so neither file passes the 1 MB limit. readToolCatalog() joins them on disk and loadToolSpecs() joins them on the site; the QA contracts read the joined catalog. Home directory paths in dispatch lines are written as ~/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The player draws its own share bar once a recording has a page to point at (given as share, or derived from term/<id>/session.cast): post to X, submit to Reddit, share to Telegram, copy the link, download the .cast. A second row links r/t27ai, the Telegram channel, X and GitHub, the same addresses as the site footer. Opened as a Telegram Mini App, links go through Telegram's own openLink / openTelegramLink. The two published share pages drop their separate X and download links and pass their canonical address to the player; TerminalCast forwards share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… docs/t27-cards-cast
A tri-cli .t27 tool card may now carry `pub const CAST : str = "term/<id>/session.cast";`, naming a terminal recording published under public/term/<id>/. The rules live in one place, castProblems() in scripts/agents-from-specs.mjs: the cast and its meta.json exist, the header is asciicast v2, every recorded exit code is 0, meta.json agrees with the header, and at least one recorded command runs the card's COMMAND. WITNESS "runtime" is refused without a CAST; a CAST never upgrades the witness. An MCP card cannot carry one. The generator copies the cast into the catalog (src, share page, title, recorded time, the matching command lines) and counts withCast. tools-from-trios-tri.mjs emits CAST for a command a recording ran, so tri x7-board and tri devkit of the trios CLI now name term/x7-board and term/devkit-flow; both stay source-parse, and the card comment says the recording was made with the live ~/.local/bin/tri, not SOURCE_COMMIT. ToolExplorer ends the detail with a RECORDED RUN box and the player; SpecExplorer plays it after the source of a tool card, reading the cast from the tool catalog rather than re-parsing the spec. EN and RU keys are added in pairs. tools-spec-contract re-reads the files from disk, and the generator tests cover parsing, each refusal and the ratchet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…command lists Three programs answer to `tri`; each now has a command list committed under apps/website/qa/tri-commands/ with the commit it was read at (scripts/tri-commands.mjs): t27 52 commands at gHashTag/t27@1b12580ce699, Trinity 249 at 04a7894 (early routes, namespace words, parseCommand, registry), trios 295 at gHashTag/BrowserOS@7366096248df. - scripts/tools-from-trinity-tri.mjs writes specs/tools/trinity/cli/: one card for each of the 220 Trinity commands the 29 registry-export cards do not cover. ABOUT is the command's own help text, else "no help text in gHashTag/trinity@<sha>". A name another tri also has gets COLLIDES_WITH and never a recording. - qa/tools-coverage-contract.mjs (check:tools-coverage) fails when a command has no card, a card names no command, the Trinity snapshot is stale against src/tri, or a recorded unambiguous command lacks its CAST. It is wired into website-checks, with the five dispatcher files added to the triggers. - Tool and spec explorers show "no recording yet" on tri cards without CAST. - tri-help-casts.yml (workflow_dispatch only) and scripts/tri-help-casts.mjs record `--help` casts on a runner; nothing is published by them. - trios ABOUT for empty help names the pin; kebab-case follows clap for capital runs; catalog gets a third part (spec-tools-trinity.json). Coverage: 596 commands, 596 cards, 2 with a recording, 594 without. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The trios commands most often run in recorded agent sessions, filtered to those that only read, touch no board, Railway or network state they could change, print no private correspondence, exit 0, and print English only: fpga-specs, fpga-keycheck, fpga-selftest, game-selftest, game-tick, game-vault (--check), blog (list), selftest. jobs-* and tg-* lead the usage count and are left out because their output is private mail; fpga-audit, fpga-loopcheck, loop-selftest and regress were left out for a non-zero exit; game-lessons for Russian output. Each was recorded with `tri cast record` in ~/trinity-fpga, scrubbed, passed `tri cast check` (exit 0, home path scrubbed, 0 key hits) and published to public/term/<id>/. The trios cards were regenerated from the pinned source (7366096248df) and pick the recordings up as CAST; none of the eight names exists in the t27 or Trinity tri. Coverage: 596 commands, 10 with a recording, 586 without. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…joined catalog The tools-default row named spec-tools.json's own tools[0] (gHashTag/trinity:tri/bench), but the site joins that file with its parts (trios, trinity) before choosing the default, and opens gHashTag/BrowserOS:tri/ab. The contract failed at 768x1024, 1024x768, 1280x800 and 1920x1080 on a page that was right. It now asks readToolCatalog(), the same join the site and tools-site-contract use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… tinted cards src/App.tsx now reaches DevKitBlock.css, so it joins REACHED. The direction cards are black (#000) since the homepage change, which the gate reads, so their two UNREADABLE entries and the note about the 7% wash are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nto docs/t27-cards-cast
… docs/t27-cards-cast
# Conflicts: # apps/website/public/agents/spec-agents.json # apps/website/public/crons/spec-crons.json # apps/website/public/docs/system-docs.json # apps/website/public/functions/spec-functions.json # apps/website/public/skills/spec-skills.json # apps/website/public/t27/files/specs/tools/trios/tri/blog.t27 # apps/website/public/t27/files/specs/tools/trios/tri/devkit.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-keycheck.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-lesson.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-next.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-selftest.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-specs.t27 # apps/website/public/t27/files/specs/tools/trios/tri/fpga-task.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-finding.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-gate.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-selftest.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-task.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-tick.t27 # apps/website/public/t27/files/specs/tools/trios/tri/game-vault.t27 # apps/website/public/t27/files/specs/tools/trios/tri/selftest.t27 # apps/website/public/t27/files/specs/tools/trios/tri/tg-msg.t27 # apps/website/public/t27/files/specs/tools/trios/tri/tg-search.t27 # apps/website/public/t27/files/specs/tools/trios/tri/tg-who.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-bench.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-board.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-lesson.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-next.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-refs.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-status.t27 # apps/website/public/t27/files/specs/tools/trios/tri/x7-task.t27 # apps/website/public/term/index.html # apps/website/public/tools/spec-tools-trios.json # apps/website/public/tools/spec-tools.json # apps/website/qa/tools-spec-contract.mjs # apps/website/scripts/agents-from-specs.mjs # apps/website/scripts/agents-from-specs.test.mjs # apps/website/scripts/docs-from-specs.mjs # apps/website/scripts/tools-from-trios-tri.mjs # apps/website/src/lib/agentSpecs.ts # apps/website/src/pages/ToolExplorer.tsx
github-actions Bot
added a commit
that referenced
this pull request
Oct 3, 2026
feat(website): tool cards end with their recorded run, and every tri command has a card (#1288) * fix(website): offer English and Russian only The header listed German, Chinese and Spanish, but the site is written in English and Russian. Drop the three unused catalogues and the switcher entries; a saved de/zh/es choice falls back to English. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): recorded terminal sessions, two FPGA flow posts, #/devkit - public/term: the asciicast player and two recordings, x7-board and devkit-flow, each with a share page and card for t27.ai/term/<id>/. - A `terminal` block for posts and a TerminalCast component that loads the same player; captions live once in src/data/casts.ts. - Posts "The back half of openXC7, from a spec" and "The FPGA flow, layer by layer", in English and Russian. The second says plainly that tri devkit and bitwalk are not in a tri release yet (#1272). - #/devkit: measured per-layer times, Amdahl ceilings and an hours calculator from src/data/devkit.ts. - The recordings are also shown on #/verification, #/foundry and three earlier board posts, each captioned as a later recording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): black homepage cards, devkit block, TRI DEV club at $300/mo The homepage grounds, cards and primary buttons are black; the kanban, factory and shell cards lose their green wash, and the queen-direction contract now asserts a black card ground. A new homepage block shows the measured FPGA flow and the club, read from data/devkit.ts and the new data/club.ts. The club is one $300/mo TRI DEV developer-agent membership, shared by #/foundry, #/devkit and the homepage. ModulesBlock names all four board readings, Tech Tree included. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): one agent price and an agents showcase Every agent is sold at one price, a 10000 Stars Telegram subscription per 30 days; USD is derived with the bot's star rate. Foundry gains a showcase of the four agent profiles the bot sells, read from the bot's catalogue with a bundled fallback. The AGENTS hint no longer claims a 27-letter alphabet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): feature TRI DEV on #/foundry and fix phone overflow TRI DEV is now the first agent card, full width, with the accent border, the one price and the primary Telegram button; the other three agents follow as equal cards. The draft tiers section is gone: every agent has the same 10000 star price. On a 375px screen the terminal recording widened its section to 565px and pushed the heading and caption off screen. The inner column now takes the section width and wide children scroll inside themselves. The hero buttons stack and centre on phones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): tool cards for the trios loop tri, generated from trios/bin/tri All 295 commands of the trios loop tri (gHashTag/BrowserOS:trios/bin/tri at 7366096) get a .t27 card under specs/tools/trios/tri/, generated by scripts/tools-from-trios-tri.mjs from the help heredoc and the top-level case arms. Witness is source-parse; the CLI was not run. 43 commands (all tc-*) are dispatched but not named by `tri help`, and the cards say so. The trios cards are written to public/tools/spec-tools-trios.json, a part named by spec-tools.json with its count and sha256, so neither file passes the 1 MB limit. readToolCatalog() joins them on disk and loadToolSpecs() joins them on the site; the QA contracts read the joined catalog. Home directory paths in dispatch lines are written as ~/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): share and follow buttons inside the terminal player The player draws its own share bar once a recording has a page to point at (given as share, or derived from term/<id>/session.cast): post to X, submit to Reddit, share to Telegram, copy the link, download the .cast. A second row links r/t27ai, the Telegram channel, X and GitHub, the same addresses as the site footer. Opened as a Telegram Mini App, links go through Telegram's own openLink / openTelegramLink. The two published share pages drop their separate X and download links and pass their canonical address to the player; TerminalCast forwards share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): tool cards end with their recorded run (CAST) A tri-cli .t27 tool card may now carry `pub const CAST : str = "term/<id>/session.cast";`, naming a terminal recording published under public/term/<id>/. The rules live in one place, castProblems() in scripts/agents-from-specs.mjs: the cast and its meta.json exist, the header is asciicast v2, every recorded exit code is 0, meta.json agrees with the header, and at least one recorded command runs the card's COMMAND. WITNESS "runtime" is refused without a CAST; a CAST never upgrades the witness. An MCP card cannot carry one. The generator copies the cast into the catalog (src, share page, title, recorded time, the matching command lines) and counts withCast. tools-from-trios-tri.mjs emits CAST for a command a recording ran, so tri x7-board and tri devkit of the trios CLI now name term/x7-board and term/devkit-flow; both stay source-parse, and the card comment says the recording was made with the live ~/.local/bin/tri, not SOURCE_COMMIT. ToolExplorer ends the detail with a RECORDED RUN box and the player; SpecExplorer plays it after the source of a tool card, reading the cast from the tool catalog rather than re-parsing the spec. EN and RU keys are added in pairs. tools-spec-contract re-reads the files from disk, and the generator tests cover parsing, each refusal and the ratchet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): a card for every tri command, gated against committed command lists Three programs answer to `tri`; each now has a command list committed under apps/website/qa/tri-commands/ with the commit it was read at (scripts/tri-commands.mjs): t27 52 commands at gHashTag/t27@1b12580ce699, Trinity 249 at 04a7894 (early routes, namespace words, parseCommand, registry), trios 295 at gHashTag/BrowserOS@7366096248df. - scripts/tools-from-trinity-tri.mjs writes specs/tools/trinity/cli/: one card for each of the 220 Trinity commands the 29 registry-export cards do not cover. ABOUT is the command's own help text, else "no help text in gHashTag/trinity@<sha>". A name another tri also has gets COLLIDES_WITH and never a recording. - qa/tools-coverage-contract.mjs (check:tools-coverage) fails when a command has no card, a card names no command, the Trinity snapshot is stale against src/tri, or a recorded unambiguous command lacks its CAST. It is wired into website-checks, with the five dispatcher files added to the triggers. - Tool and spec explorers show "no recording yet" on tri cards without CAST. - tri-help-casts.yml (workflow_dispatch only) and scripts/tri-help-casts.mjs record `--help` casts on a runner; nothing is published by them. - trios ABOUT for empty help names the pin; kebab-case follows clap for capital runs; catalog gets a third part (spec-tools-trinity.json). Coverage: 596 commands, 596 cards, 2 with a recording, 594 without. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(website): recordings for eight of the most-used trios tri commands The trios commands most often run in recorded agent sessions, filtered to those that only read, touch no board, Railway or network state they could change, print no private correspondence, exit 0, and print English only: fpga-specs, fpga-keycheck, fpga-selftest, game-selftest, game-tick, game-vault (--check), blog (list), selftest. jobs-* and tg-* lead the usage count and are left out because their output is private mail; fpga-audit, fpga-loopcheck, loop-selftest and regress were left out for a non-zero exit; game-lessons for Russian output. Each was recorded with `tri cast record` in ~/trinity-fpga, scrubbed, passed `tri cast check` (exit 0, home path scrubbed, 0 key hits) and published to public/term/<id>/. The trios cards were regenerated from the pinned source (7366096248df) and pick the recordings up as CAST; none of the eight names exists in the t27 or Trinity tri. Coverage: 596 commands, 10 with a recording, 586 without. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): viewport contract takes the default tool card from the joined catalog The tools-default row named spec-tools.json's own tools[0] (gHashTag/trinity:tri/bench), but the site joins that file with its parts (trios, trinity) before choosing the default, and opens gHashTag/BrowserOS:tri/ab. The contract failed at 768x1024, 1024x768, 1280x800 and 1920x1080 on a page that was right. It now asks readToolCatalog(), the same join the site and tools-site-contract use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): contrast gate measures the devkit block and forgets the tinted cards src/App.tsx now reaches DevKitBlock.css, so it joins REACHED. The direction cards are black (#000) since the homepage change, which the gate reads, so their two UNREADABLE entries and the note about the 7% wash are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
added a commit
that referenced
this pull request
Oct 8, 2026
…s new gf16 specs are classified (Closes #1529) Run 37751766258 of t27 world scan, on top of #1530's region fix and #1462, passed every gate through check:agents and then died in check:tools: ENOENT scandir public/t27/files/specs/tools/trinity/cli. sync-t27-specs.mjs says it wipes "what this script writes, and only that", but it removed all of public/t27/files. Two card directories in there come from other generators: tools-from-trinity-tri.mjs writes specs/tools/trinity/cli (220 cards) and tools-from-trios-tri.mjs writes specs/tools/trios/tri (295 cards) from trios/bin/tri at a pinned BrowserOS commit, which the sync never reads. Every scan since #1288 (2026-10-03) deleted them, and the catalog commit would have shipped that deletion. The sync now copies both directories across the wipe. The scan then re-runs tools-from-trinity-tri.mjs, so the trinity/cli cards are rebuilt against the trinity/tri cards that were just vendored (no network; it reads qa/tri-commands/*.json). check:silicon is the last gate. #1462's local run counted 8 unclassified gf16 specs. These six are added to EXCLUDED, each with the reason its own header gives: - t27: specs/port/fpga/vivado/{gf16_matmul4x4,gf16_top,gf16_uart_sim_bench} and specs/tri/t27b/conformance/scoped_gf16; - dmitrii-f-t27/trinity-memory: specs/memory/gf16_ffn_{board,performance}_evidence. Every one consumes GF16 or replays captures of a design built on it. None of them declares the format. If others remain, the next scan lists them by path. Owner's request 2026-10-08 (translated): "fix t27 world scan". Closes #1529 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every command of the three programs called
trinow has a card on the tools page. A gate holds the cards to committed command lists. A card whose command has a published terminal recording ends with that recording, and every other tri card says "no recording yet".Stacked on #1273. The branch also merges #1282 (trios tri cards), so the diff shows its commits until that lands.
{ "version": 1, "head_sha": "5c4449dbd16bc160140028f67eae90eb2b206ad5", "summary": "Tool cards can name a terminal recording (CAST = term/<id>/session.cast), and the tool and spec explorers end the card with the player. Every command of the three tri programs now has a card: t27 52, Trinity 249 (220 of them generated from the dispatcher source) and trios 295. A new gate fails when a command has no card or a recording misses the card of the one tri that has that command. Ten cards have a recording (trios tri devkit, tri x7-board, and eight of the most-used read-only trios commands); the other 586 say so. A manual CI workflow can record --help casts for every command; it has not been run.", "changes": [ "scripts/agents-from-specs.mjs castProblems/castEntry: CAST must be term/<id>/session.cast with meta.json, asciicast v2, every exit code 0, meta agreeing with the header, and a recorded line that runs the card's COMMAND; WITNESS runtime is refused without a CAST; MCP cards cannot carry one", "src/pages/ToolExplorer.tsx, SpecExplorer.tsx: RECORDED RUN box with TerminalCast at the end of a tool card, and a 'no recording yet' box on tri cards without CAST; EN and RU keys added in pairs", "scripts/tri-commands.mjs + qa/tri-commands/{t27,trinity,trios}.json: the command list of each tri read from source at a pinned commit (clap enum, Zig early routes/namespaces/parseCommand/registry, trios case arms and tri help)", "scripts/tools-from-trinity-tri.mjs + public/t27/files/specs/tools/trinity/cli/*.t27: 220 generated cards; ABOUT is the command's own help text or 'no help text in gHashTag/trinity@04a7894fa64f'; COLLIDES_WITH for the 10 names t27 also has", "scripts/tools-from-trios-tri.mjs: emits CAST for commands a recording ran; empty-help ABOUT names the pinned source", "qa/tools-coverage-contract.mjs (npm run check:tools-coverage): every command has a card, every card a command, the Trinity snapshot matches src/tri, recorded unambiguous commands carry their CAST and ambiguous ones never do; prints the per-CLI table", "public/tools/spec-tools-trinity.json: third catalog part (771,545 bytes); spec-tools.json 262,230 and spec-tools-trios.json 898,698, all under 1 MB", "scripts/tri-help-casts.mjs + .github/workflows/tri-help-casts.yml: workflow_dispatch-only recorder of `tri <cmd> --help` casts with no runner secrets in the environment; uploads an artifact and publishes nothing", ".github/workflows/website-checks.yml: runs check:tools-coverage and test:tri-commands; the five dispatcher files trigger it", "scripts/tri-commands.test.mjs (10 tests) and agents-from-specs.test.mjs (catalog counts updated to 607 cards, 12 collisions)" ], "tests": [ { "command": "node --experimental-strip-types qa/tools-spec-contract.mjs", "status": "passed", "result": "607 cards (tri 596, of which 249 Trinity; 12 collisions); with a recorded run 2: BrowserOS tri/devkit <- devkit-flow, tri/x7-board <- x7-board; runtime witness 0", "evidence": "local run of this head, 2026-10-03" }, { "command": "node --experimental-strip-types qa/tools-coverage-contract.mjs", "status": "passed", "result": "t27 52/52, Trinity 249/249, trios 295/295 commands with a card; 10 with a recording, 586 without", "evidence": "local run of this head, 2026-10-03" }, { "command": "node --test scripts/tri-commands.test.mjs && node --test scripts/agents-from-specs.test.mjs && node --test scripts/docs-from-specs.test.mjs", "status": "passed", "result": "10/10, 53/53, 8/8", "evidence": "local run of this head, 2026-10-03" }, { "command": "agents-from-specs --check, docs-from-specs --check, tools-from-trinity-tri --check, tools-from-trios-tri --check and tri-commands --check for t27, trinity and trios against their pinned sources", "status": "passed", "result": "every generated file and snapshot is in step with its source", "evidence": "local run of this head, 2026-10-03" }, { "command": "qa/tools-site-contract.mjs, qa/explorer-language-contract.mjs, qa/agents-spec-contract.mjs, qa/docs-spec-contract.mjs, qa/queen-spec-sync-contract.mjs", "status": "passed", "result": "607 cards open on the site; 7 explorer pages with identical en/ru key sets; agents, docs and queen spec sync pass", "evidence": "local run of this head, 2026-10-03" }, { "command": "TypeScript syntax of ToolExplorer.tsx, SpecExplorer.tsx, agentSpecs.ts via ts.transpileModule", "status": "passed", "result": "0 diagnostics; a full type check is left to CI", "evidence": "local run of this head, 2026-10-03" }, { "command": "npx vite build, npm run typecheck:ratchet, check:render, check:queen-embed", "status": "not_run", "result": "not run locally; left to CI", "evidence": "not run on the laptop by instruction (load); the embed check also needs Chrome" }, { "command": ".github/workflows/tri-help-casts.yml (record --help casts for every command)", "status": "not_run", "result": "left to CI; workflow_dispatch only, nothing recorded or published by this PR", "evidence": "the recorder was only smoke-tested locally with /bin/echo standing in for tri" } ], "limitations": [ "Only 10 of 596 cards have a recording: devkit, x7-board, and eight of the most-used read-only trios commands (fpga-specs, fpga-keycheck, fpga-selftest, game-selftest, game-tick, game-vault, blog, selftest), recorded with the live ~/.local/bin/tri, not a build of the pinned commit. A recording attaches only when the command name belongs to one tri: meta.json does not say which binary ran, and 19 names (aliases included) belong to more than one of the three programs.", "The 220 Trinity cards are source-parse: src/tri was read as text, and the CLI was not built or run. 80 of them have no help text and say so.", "Not counted as Trinity commands: 12 execute_map handlers that no route, namespace word, parser token or registry entry names.", "The t27 and trios lists are snapshots at a pinned commit. A newer command there fails nothing until someone regenerates the snapshot.", "SpecExplorer shows the recording and the no-recording box only for tool cards in the vendored spec corpus. The trios and trinity/cli cards are not in it.", "The 220 generated Trinity cards have no Russian summary yet.", "No visual browser check of the new boxes was made." ], "tags": ["Tooling", "Website", "t27"], "blog": { "title": "Every tri command has a card", "summary": "This PR is itself the blog article: three programs answer to tri, and the tools page now lists every command of all three. It gates the list against source pinned at a commit, ends a card with its terminal recording when there is one, and says so plainly when there is not.", "outline": [ "Three programs are called tri, and the tools page knew 376 of their 596 commands; the rest had no card and nothing failed.", "Each command list is read from source at a commit and committed, with 220 Trinity cards generated from the dispatcher. Every description is the command's own help or says there is none, and a gate fails on any command without a card.", "Recordings: a card ends with a terminal cast only when the command name belongs to one tri. 10 of 596 have one, a CI recorder for --help casts exists and has not run, and 586 cards say no recording yet." ] } }🤖 Generated with Claude Code