From f726e2e47e212152928224f3abfadaf3827fd857 Mon Sep 17 00:00:00 2001 From: gHashTag Date: Wed, 9 Sep 2026 15:09:46 +0000 Subject: [PATCH] specs/tools: the tri CLI and the MCP servers as first-class .t27 specs (layer 5) 52 tri command specs read from the clap enum in cli/tri/src/main.rs (witness source-parse at 3cb7a4352492; cargo not run) and 10 MCP server specs from the .mcp.json entries, manifests and server sources of gHashTag/t27 and gHashTag/trinity (5 external). Agents C, E, T, V, W gain TOOLS where a source binds a command; the other 22 carry TOOLS_NOTE. specs/i18n/agents-ru.t27 SCOPE gains specs/tools. specs/tools/README.md states the schema and the witness rule; OWNERS row tools/ -> T-Queen; docs/now entry. Closes #3547 --- ...he-tri-cli-and-mcp-servers-as-t27-specs.md | 13 ++ specs/OWNERS.md | 1 + specs/agents/README.md | 4 +- specs/agents/a.t27 | 4 + specs/agents/b.t27 | 4 + specs/agents/c.t27 | 4 + specs/agents/d.t27 | 4 + specs/agents/e.t27 | 4 + specs/agents/f.t27 | 4 + specs/agents/g.t27 | 4 + specs/agents/h.t27 | 4 + specs/agents/i.t27 | 4 + specs/agents/j.t27 | 4 + specs/agents/k.t27 | 4 + specs/agents/l.t27 | 4 + specs/agents/m.t27 | 4 + specs/agents/n.t27 | 4 + specs/agents/o.t27 | 4 + specs/agents/p.t27 | 4 + specs/agents/q.t27 | 4 + specs/agents/r.t27 | 4 + specs/agents/s.t27 | 4 + specs/agents/t.t27 | 4 + specs/agents/ti.t27 | 4 + specs/agents/u.t27 | 4 + specs/agents/v.t27 | 4 + specs/agents/w.t27 | 4 + specs/agents/x.t27 | 4 + specs/agents/y.t27 | 4 + specs/agents/z.t27 | 4 + specs/i18n/agents-ru.t27 | 4 +- specs/tools/README.md | 161 ++++++++++++++++++ specs/tools/mcp/gitbutler.t27 | 39 +++++ specs/tools/mcp/needle.t27 | 39 +++++ specs/tools/mcp/neon.t27 | 39 +++++ specs/tools/mcp/notebooklm.t27 | 39 +++++ specs/tools/mcp/railway-mcp-server.t27 | 39 +++++ specs/tools/mcp/t27-traceability.t27 | 39 +++++ specs/tools/mcp/tri-mcp.t27 | 39 +++++ specs/tools/mcp/tri-ssot.t27 | 39 +++++ specs/tools/mcp/trinity.t27 | 39 +++++ specs/tools/mcp/zig-docs.t27 | 39 +++++ specs/tools/tri/abandoned.t27 | 33 ++++ specs/tools/tri/cell.t27 | 33 ++++ specs/tools/tri/census.t27 | 33 ++++ specs/tools/tri/ci.t27 | 33 ++++ specs/tools/tri/competitors.t27 | 33 ++++ specs/tools/tri/discard.t27 | 33 ++++ specs/tools/tri/doctor.t27 | 33 ++++ specs/tools/tri/elab.t27 | 33 ++++ specs/tools/tri/emit.t27 | 33 ++++ specs/tools/tri/experience.t27 | 33 ++++ specs/tools/tri/fleet.t27 | 33 ++++ specs/tools/tri/fmt.t27 | 33 ++++ specs/tools/tri/fpga.t27 | 33 ++++ specs/tools/tri/gates.t27 | 33 ++++ specs/tools/tri/gen.t27 | 33 ++++ specs/tools/tri/harness.t27 | 33 ++++ specs/tools/tri/health.t27 | 33 ++++ specs/tools/tri/hooks.t27 | 33 ++++ specs/tools/tri/issues.t27 | 33 ++++ specs/tools/tri/jumps.t27 | 33 ++++ specs/tools/tri/kinds.t27 | 33 ++++ specs/tools/tri/lean.t27 | 33 ++++ specs/tools/tri/ledgers.t27 | 33 ++++ specs/tools/tri/loop.t27 | 33 ++++ specs/tools/tri/merging.t27 | 33 ++++ specs/tools/tri/misread.t27 | 33 ++++ specs/tools/tri/mods.t27 | 33 ++++ specs/tools/tri/mutate.t27 | 33 ++++ specs/tools/tri/now.t27 | 33 ++++ specs/tools/tri/one-away.t27 | 33 ++++ specs/tools/tri/orphaned.t27 | 33 ++++ specs/tools/tri/pr.t27 | 33 ++++ specs/tools/tri/prose.t27 | 33 ++++ specs/tools/tri/quantifiers.t27 | 33 ++++ specs/tools/tri/red.t27 | 33 ++++ specs/tools/tri/reseal.t27 | 33 ++++ specs/tools/tri/rtl.t27 | 33 ++++ specs/tools/tri/seals.t27 | 33 ++++ specs/tools/tri/serve.t27 | 33 ++++ specs/tools/tri/skill.t27 | 33 ++++ specs/tools/tri/status.t27 | 33 ++++ specs/tools/tri/sweep.t27 | 33 ++++ specs/tools/tri/synth.t27 | 33 ++++ specs/tools/tri/test.t27 | 33 ++++ specs/tools/tri/topic.t27 | 33 ++++ specs/tools/tri/types.t27 | 33 ++++ specs/tools/tri/unparsed.t27 | 33 ++++ specs/tools/tri/vectors.t27 | 33 ++++ specs/tools/tri/verdict.t27 | 33 ++++ specs/tools/tri/vsim.t27 | 33 ++++ specs/tools/tri/window.t27 | 33 ++++ specs/tools/tri/worktrees.t27 | 33 ++++ 94 files changed, 2393 insertions(+), 4 deletions(-) create mode 100644 docs/now/2026-09-09-the-tri-cli-and-mcp-servers-as-t27-specs.md create mode 100644 specs/tools/README.md create mode 100644 specs/tools/mcp/gitbutler.t27 create mode 100644 specs/tools/mcp/needle.t27 create mode 100644 specs/tools/mcp/neon.t27 create mode 100644 specs/tools/mcp/notebooklm.t27 create mode 100644 specs/tools/mcp/railway-mcp-server.t27 create mode 100644 specs/tools/mcp/t27-traceability.t27 create mode 100644 specs/tools/mcp/tri-mcp.t27 create mode 100644 specs/tools/mcp/tri-ssot.t27 create mode 100644 specs/tools/mcp/trinity.t27 create mode 100644 specs/tools/mcp/zig-docs.t27 create mode 100644 specs/tools/tri/abandoned.t27 create mode 100644 specs/tools/tri/cell.t27 create mode 100644 specs/tools/tri/census.t27 create mode 100644 specs/tools/tri/ci.t27 create mode 100644 specs/tools/tri/competitors.t27 create mode 100644 specs/tools/tri/discard.t27 create mode 100644 specs/tools/tri/doctor.t27 create mode 100644 specs/tools/tri/elab.t27 create mode 100644 specs/tools/tri/emit.t27 create mode 100644 specs/tools/tri/experience.t27 create mode 100644 specs/tools/tri/fleet.t27 create mode 100644 specs/tools/tri/fmt.t27 create mode 100644 specs/tools/tri/fpga.t27 create mode 100644 specs/tools/tri/gates.t27 create mode 100644 specs/tools/tri/gen.t27 create mode 100644 specs/tools/tri/harness.t27 create mode 100644 specs/tools/tri/health.t27 create mode 100644 specs/tools/tri/hooks.t27 create mode 100644 specs/tools/tri/issues.t27 create mode 100644 specs/tools/tri/jumps.t27 create mode 100644 specs/tools/tri/kinds.t27 create mode 100644 specs/tools/tri/lean.t27 create mode 100644 specs/tools/tri/ledgers.t27 create mode 100644 specs/tools/tri/loop.t27 create mode 100644 specs/tools/tri/merging.t27 create mode 100644 specs/tools/tri/misread.t27 create mode 100644 specs/tools/tri/mods.t27 create mode 100644 specs/tools/tri/mutate.t27 create mode 100644 specs/tools/tri/now.t27 create mode 100644 specs/tools/tri/one-away.t27 create mode 100644 specs/tools/tri/orphaned.t27 create mode 100644 specs/tools/tri/pr.t27 create mode 100644 specs/tools/tri/prose.t27 create mode 100644 specs/tools/tri/quantifiers.t27 create mode 100644 specs/tools/tri/red.t27 create mode 100644 specs/tools/tri/reseal.t27 create mode 100644 specs/tools/tri/rtl.t27 create mode 100644 specs/tools/tri/seals.t27 create mode 100644 specs/tools/tri/serve.t27 create mode 100644 specs/tools/tri/skill.t27 create mode 100644 specs/tools/tri/status.t27 create mode 100644 specs/tools/tri/sweep.t27 create mode 100644 specs/tools/tri/synth.t27 create mode 100644 specs/tools/tri/test.t27 create mode 100644 specs/tools/tri/topic.t27 create mode 100644 specs/tools/tri/types.t27 create mode 100644 specs/tools/tri/unparsed.t27 create mode 100644 specs/tools/tri/vectors.t27 create mode 100644 specs/tools/tri/verdict.t27 create mode 100644 specs/tools/tri/vsim.t27 create mode 100644 specs/tools/tri/window.t27 create mode 100644 specs/tools/tri/worktrees.t27 diff --git a/docs/now/2026-09-09-the-tri-cli-and-mcp-servers-as-t27-specs.md b/docs/now/2026-09-09-the-tri-cli-and-mcp-servers-as-t27-specs.md new file mode 100644 index 0000000000..d117e9788e --- /dev/null +++ b/docs/now/2026-09-09-the-tri-cli-and-mcp-servers-as-t27-specs.md @@ -0,0 +1,13 @@ +# NOW -- The tri CLI and the MCP servers as first-class .t27 specs (2026-09-09) + +## The tri CLI and the MCP servers as first-class .t27 specs (Closes #3547) + +- `specs/tools/tri/` (52) and `specs/tools/mcp/` (10): layer five of the ladder Specs -> Skills -> Crons -> Agents -> Tools -- the tools every agent should know. One `.t27` module per variant of the clap `Commands` enum in `cli/tri/src/main.rs` (`tool_tri_`: COMMAND, VARIANT, SOURCE, ENTRY, ABOUT + ABOUT_SOURCE, ACTIONS/ACTIONS_ABOUT, ARGS, AGENTS/AGENTS_NOTE, WHEN_TO_USE, WITNESS, ENABLED) and one per MCP server (`tool_mcp_`: SERVER, SERVER_VERSION, TRANSPORT, LAUNCH, ENV, CONFIG, REPO, SOURCE, ABOUT, TOOLS/TOOLS_ABOUT/TOOLS_INPUTS, RESOURCES, TOOLS_NOTE, EXTERNAL, AGENTS, WITNESS). The schema is in `specs/tools/README.md`; the three older files at the top of `specs/tools/` (`registry.t27`, `schema.t27`, `tri_to_t27_converter.t27`) are ordinary corpus specs and are not tool cards. +- Nothing is typed by hand. `cargo` was not run: the enum and its `///` docs were read from the source at commit `3cb7a4352492`, so every tri card carries `WITNESS = "source-parse"` (52/52; `help-output`, the label for a list diffed against `tri --help`, is 0/52 until someone runs it). A variant with no doc comment quotes the source it borrows from in ABOUT_SOURCE (e.g. `tri cell` quotes the `tri-mcp` tool descriptions). 124 nested actions across 52 commands. MCP: 5 servers from gHashTag/t27 (`tri-mcp` crate, `tri-ssot` manifest, `t27-traceability`, and two `.mcp.json` entries), 5 from gHashTag/trinity (`trinity`, `needle` Zig servers and three `.mcp.json` entries), 235 tools listed with their input-schema keys; 5 servers are `EXTERNAL = true` (published packages whose tool list is not in either repository) and say so in TOOLS_NOTE. `tri-mcp` is not registered in `.mcp.json` at this commit (`CONFIG = ""`); `tri-ssot`'s manifest names a module the tree does not contain -- recorded, not resolved. +- Two CLIs are two lists. gHashTag/trinity has no `tri` binary at the pinned commit (`build.zig` defines none; `.claude/skills/tri/SKILL.md` is a skill and is already in the skills catalog), so its tools are its MCP servers only, under `REPO = "gHashTag/trinity"`; nothing from the two repositories is merged into one list. +- Agent binding is evidence-gated in both directions. A tool names the letters that own it (`AGENTS`) only where a source line does (AGENTS_NOTE cites it: `docs/agents/AGENTS_ALPHABET.md`, `.claude/agents/*.md`); today five commands are bound -- `tri/gen` (C, T), `tri/test` (T, V), `tri/verdict` (V), `tri/experience` (E), `tri/cell` (W) -- and the matching `specs/agents/{c,e,t,v,w}.t27` gain `TOOLS`; the other 22 letters carry `TOOLS = []` with a `TOOLS_NOTE`, and 57 of 62 tools carry `AGENTS = []` with an AGENTS_NOTE naming the sources checked. The site's generator fails the build on an unknown letter, an unknown tool ID, or a binding stated on one side only. +- The site (gHashTag/trinity, Tool Explorer at `#/tools`, Queen module TOOLS on key `0`) vendors a byte-identical copy under `apps/website/public/t27/files/specs/tools/` and generates `public/tools/spec-tools.json` through the compiler wasm at build time -- no regex over `.t27`. Measured under the vendored wasm (sha256 `4d9c0447b5ca2887...`): **62/62** typecheck ok, nothing discarded; as for skills, crons and agents, `typecheck.ok` is lenient and the generator's field schema is the gate. Skills are cross-linked when a skill spec's own COMMAND or SUMMARY_EN names a tri command: 5 today (`t27/tri` for gen, test, verdict, experience, skill). +- Language: English-only files (LANG-EN), ASCII only. RU summaries travel through the existing contract: `specs/i18n/agents-ru.t27` `SCOPE` gains `specs/tools` (`[4]str`) and the bundle `trinity:apps/website/i18n/agents.ru.json` gains 62 entries keyed by tool ID. Coverage measured on the site: ru 62/62, 0 orphans. +- No absolute developer home path appears in any file; where a config names one, the prefix is written as ``, and the t27 checkout is referred to as `T27_ROOT` or `git rev-parse --show-toplevel`. +- Not claimed: no server is launched or command executed by a spec; no `tri --help` was diffed; `gate-topology` and `untrusted-input` still fail on `master` for already-merged PRs and are not addressed here. +- `specs/OWNERS.md` gains the row `tools/` -> **T-Queen**. diff --git a/specs/OWNERS.md b/specs/OWNERS.md index a3e6ae8263..85035df8dd 100644 --- a/specs/OWNERS.md +++ b/specs/OWNERS.md @@ -21,6 +21,7 @@ | `isa/` | **C-Compiler** | Register alphabet | | `skills/`, `crons/`, `i18n/` | **T-Queen** | Agent skills and scheduled jobs as `.t27` specs, plus the per-locale translation contracts (`i18n/agents-.t27`) that point at the site's text bundles; the site (gHashTag/trinity) generates its catalogs from a vendored copy | | `agents/` | **T-Queen** | The 27 agents of `docs/agents/AGENTS_ALPHABET.md` as `.t27` specs (`agents/.t27`, `KIND = "agent"`): letter, domain, archetype, register, invariants, the documents that bind it (`SOUL.md`, `AGENTS.md`, the alphabet) and the skills a source evidently binds; the site joins experience by LETTER | +| `tools/` | **T-Queen** | The `tri` CLI commands and the MCP servers as `.t27` specs (`tools/tri/.t27`, `tools/mcp/.t27`, `KIND = "tool"`): what a command or server is for, its actions or tools, its source and witness (`source-parse` / `help-output`), and the agent letters a source evidently binds; the three older files at the top of `tools/` are ordinary corpus specs | Each subtree with substantial churn should keep a local **`OWNERS.md`** (see below). diff --git a/specs/agents/README.md b/specs/agents/README.md index 201d2d1ac4..9afbb65688 100644 --- a/specs/agents/README.md +++ b/specs/agents/README.md @@ -62,8 +62,8 @@ written by hand. | `CLARA_ROLE` | `str` | the CLARA role; `""` when the table says `—` | | `SKILLS` | `[N]str` | skill IDs (`specs/skills`) the agent holds — ONLY when a source binds them (see below) | | `SKILLS_NOTE` | `str` | where the binding comes from, or why `SKILLS` is empty; required when `SKILLS` is `[]` | -| `TOOLS` | `[N]str` | *optional, layer 5:* tool IDs (`specs/tools`) the agent owns, evidence-bound like SKILLS | -| `TOOLS_NOTE` | `str` | *optional:* source of the tool binding; required when `TOOLS` is present and `[]` | +| `TOOLS` | `[N]str` | tool IDs from `specs/tools` (`tri/`, `mcp/`) a source line binds to the letter | +| `TOOLS_NOTE` | `str` | the source line, or why `TOOLS` is empty; required when `TOOLS` is `[]` | | `EXPERIENCE_LOG` | `str` | the experience directory the agent's episodes are read from, or `""` | | `ENABLED` | `bool` | `false` only for the reserved seat (Ti) | diff --git a/specs/agents/a.t27 b/specs/agents/a.t27 index 063fdc06d3..d49ee0565b 100644 --- a/specs/agents/a.t27 +++ b/specs/agents/a.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA1: AR Architecture Design - designs AR module ar ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/b.t27 b/specs/agents/b.t27 index 77b881562d..a2dfb8074a 100644 --- a/specs/agents/b.t27 +++ b/specs/agents/b.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/c.t27 b/specs/agents/c.t27 index c2698d37bb..e1217cb7af 100644 --- a/specs/agents/c.t27 +++ b/specs/agents/c.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA1: AR Language Implementation - implements AR la ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [1]str = ["tri/gen"]; +pub const TOOLS_NOTE : str = ".claude/agents/agent-c-compiler.md:40 names tri gen (trigger On tri gen command, line 7). Line 41 names tri seal, which is not a tri command at this commit (tri cell seal is not bound here)."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/d.t27 b/specs/agents/d.t27 index bc0e2acc47..8b805280f8 100644 --- a/specs/agents/d.t27 +++ b/specs/agents/d.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/e.t27 b/specs/agents/e.t27 index 237540be7c..7197ea3603 100644 --- a/specs/agents/e.t27 +++ b/specs/agents/e.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA2: AR Explanation & XAI - generates human-readab ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent. .claude/agents/agent-e-experience.md mentions phi-loop only as the label of the feedback field (1 = phi-loop, 0 = agent cycle); the alphabet key files point at the experience log and AR specs, not at a skill directory."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [1]str = ["tri/experience"]; +pub const TOOLS_NOTE : str = ".claude/agents/agent-e-experience.md:64 names tri experience save; lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit. The tri-mcp server mirrors the command as tool tri_experience_save."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/f.t27 b/specs/agents/f.t27 index 97682f39da..d68b4c3876 100644 --- a/specs/agents/f.t27 +++ b/specs/agents/f.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: the alphabet key files are conformance JSON vectors (t27/conformance/*.json) and no source names tri vectors for F."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/g.t27 b/specs/agents/g.t27 index f6b1ae5276..7613682317 100644 --- a/specs/agents/g.t27 +++ b/specs/agents/g.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/h.t27 b/specs/agents/h.t27 index b38ed41703..8f14e6a543 100644 --- a/specs/agents/h.t27 +++ b/specs/agents/h.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/i.t27 b/specs/agents/i.t27 index c064e8d5ae..b436128db5 100644 --- a/specs/agents/i.t27 +++ b/specs/agents/i.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/j.t27 b/specs/agents/j.t27 index 580246ae09..419c23a2df 100644 --- a/specs/agents/j.t27 +++ b/specs/agents/j.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/k.t27 b/specs/agents/k.t27 index afe00dd9d9..f2782ebfea 100644 --- a/specs/agents/k.t27 +++ b/specs/agents/k.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/l.t27 b/specs/agents/l.t27 index ef8b7f6f9d..83c25cde4d 100644 --- a/specs/agents/l.t27 +++ b/specs/agents/l.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/m.t27 b/specs/agents/m.t27 index c25875859d..7c27684360 100644 --- a/specs/agents/m.t27 +++ b/specs/agents/m.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/n.t27 b/specs/agents/n.t27 index a504fe263c..c7cbcd433b 100644 --- a/specs/agents/n.t27 +++ b/specs/agents/n.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/o.t27 b/specs/agents/o.t27 index a1bc350dc6..487bfe553f 100644 --- a/specs/agents/o.t27 +++ b/specs/agents/o.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA2: AR Composition Engine - composes ML and AR co ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/p.t27 b/specs/agents/p.t27 index 81b5f886e2..24e7b9783c 100644 --- a/specs/agents/p.t27 +++ b/specs/agents/p.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA1: AR Theoretical Foundations - provides mathema ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/q.t27 b/specs/agents/q.t27 index 933b64585c..eec836cebe 100644 --- a/specs/agents/q.t27 +++ b/specs/agents/q.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/r.t27 b/specs/agents/r.t27 index 5434de5b17..eaab148a8f 100644 --- a/specs/agents/r.t27 +++ b/specs/agents/r.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/s.t27 b/specs/agents/s.t27 index f5bb32ad28..230d6b1886 100644 --- a/specs/agents/s.t27 +++ b/specs/agents/s.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA1: AR Spec Standards - defines and enforces AR s ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent. docs/agents/AGENTS.md:97 lists tri gen, tri test, tri verdict --toxic, tri bench inside a sample prevention payload attributed to S; that is an example message, not an ownership binding."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/t.t27 b/specs/agents/t.t27 index 31e16c4f51..8c6fe161b0 100644 --- a/specs/agents/t.t27 +++ b/specs/agents/t.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA2: AR Orchestrator - coordinates all AR agents f ; cites that source or says why the list is empty. pub const SKILLS : [2]str = ["t27/phi-loop", "t27/tri-pipeline"]; pub const SKILLS_NOTE : str = ".claude/agents/trinity.md, Phase 2 PLAN: \"Identify required skills (phi-loop, tri-pipeline)\"; Phase 4 VERIFY: \"Run conformance tests via tri-pipeline\". specs/OWNERS.md lists skills/ and crons/ under T-Queen, which is catalog ownership, not a held skill."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [2]str = ["tri/gen", "tri/test"]; +pub const TOOLS_NOTE : str = ".claude/agents/trinity.md:68 (5. Gen - Run tri gen) and :70 (7. Verify - Run tri test). No source binds tri loop or tri health to T."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/ti.t27 b/specs/agents/ti.t27 index 9e6f0bd513..2b9cba0f38 100644 --- a/specs/agents/ti.t27 +++ b/specs/agents/ti.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; ; Reserved seat: the alphabet marks its key files as future, so the agent is not enabled. diff --git a/specs/agents/u.t27 b/specs/agents/u.t27 index 30a337dcbf..a3cac751c7 100644 --- a/specs/agents/u.t27 +++ b/specs/agents/u.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/v.t27 b/specs/agents/v.t27 index d81995f86f..076fb34649 100644 --- a/specs/agents/v.t27 +++ b/specs/agents/v.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = "TA2: AR Validation & Proof - validates AR reasonin ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [2]str = ["tri/test", "tri/verdict"]; +pub const TOOLS_NOTE : str = ".claude/agents/agent-v-verify.md:47 (tri test) and :49 (tri verdict); docs/agents/AGENTS_ALPHABET.md:80 PHASE 5 VERDICT names tri verdict --toxic for V. Line 48 names tri verify, which is not a tri command at this commit."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/w.t27 b/specs/agents/w.t27 index 4680a2a0e9..360fb045d5 100644 --- a/specs/agents/w.t27 +++ b/specs/agents/w.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [1]str = ["tri/cell"]; +pub const TOOLS_NOTE : str = "docs/agents/AGENTS_ALPHABET.md:144: agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal)."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/x.t27 b/specs/agents/x.t27 index 1165a11823..e862db13dd 100644 --- a/specs/agents/x.t27 +++ b/specs/agents/x.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/y.t27 b/specs/agents/y.t27 index 381a7c6660..c81f5dd37b 100644 --- a/specs/agents/y.t27 +++ b/specs/agents/y.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/agents/z.t27 b/specs/agents/z.t27 index adae4db63a..cce2b6c5cb 100644 --- a/specs/agents/z.t27 +++ b/specs/agents/z.t27 @@ -37,6 +37,10 @@ pub const CLARA_ROLE : str = ""; ; cites that source or says why the list is empty. pub const SKILLS : [0]str = []; pub const SKILLS_NOTE : str = "No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it."; +; Tool IDs (specs/tools) the agent holds. Bound only where a source line names the command +; for this letter; TOOLS_NOTE cites that line or says why the list is empty. +pub const TOOLS : [0]str = []; +pub const TOOLS_NOTE : str = "No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."; ; Where the agent logs episodes (AGENTS_ALPHABET.md: "Logs to .trinity/experience/"). pub const EXPERIENCE_LOG : str = ".trinity/experience/"; pub const ENABLED : bool = true; diff --git a/specs/i18n/agents-ru.t27 b/specs/i18n/agents-ru.t27 index 8970558e6b..9509ca269b 100644 --- a/specs/i18n/agents-ru.t27 +++ b/specs/i18n/agents-ru.t27 @@ -16,8 +16,8 @@ pub const LOCALE : str = "ru"; pub const SOURCE_LOCALE : str = "en"; ; Spec directories whose modules this bundle may translate; an entry ID must ; resolve to a spec in one of them. -pub const SCOPE : [3]str = ["specs/skills", "specs/crons", "specs/agents"]; -; Spec fields a bundle entry may carry. SUMMARY maps to SUMMARY_EN, NAME to NAME. +pub const SCOPE : [4]str = ["specs/skills", "specs/crons", "specs/agents", "specs/tools"]; +; Spec fields a bundle entry may carry. SUMMARY maps to SUMMARY_EN (ABOUT for specs/tools), NAME to NAME. pub const FIELDS : [2]str = ["SUMMARY", "NAME"]; pub const BUNDLE_REPO : str = "trinity"; pub const BUNDLE_PATH : str = "apps/website/i18n/agents.ru.json"; diff --git a/specs/tools/README.md b/specs/tools/README.md new file mode 100644 index 0000000000..49aace7ad8 --- /dev/null +++ b/specs/tools/README.md @@ -0,0 +1,161 @@ +# specs/tools — the `tri` CLI and the MCP servers as first-class `.t27` specs + +> **Where this lives.** The `tri/` and `mcp/` directories in `gHashTag/t27` are the canonical +> home of these specs — edit them here. `gHashTag/trinity` keeps a vendored copy under +> `apps/website/public/t27/files/specs/tools/` and its build reads that copy through the +> vendored compiler wasm (`t27_compiler.wasm`). The wasm's `typecheck.ok` is necessary, not +> sufficient, so the site's generator (`scripts/agents-from-specs.mjs`) also checks the field +> schema below. The bootstrap compiler on `master` was not run against these files in the +> commit that added them. + + +Layer 5 of the ladder. One file per `tri` command (`tri/.t27`) and one per MCP +server (`mcp/.t27`), so that every agent can find the tools the repositories actually +ship: what a command is for, which nested actions it has, which agent letter a source binds it +to, and where its code is. The JSON the site serves (`public/tools/spec-tools.json`) is +generated from these files by the real compiler (`t27_compiler.wasm`), never by a regex over +the `.t27`. + +The three files at the top of this directory (`registry.t27`, `schema.t27`, +`tri_to_t27_converter.t27`) predate the catalog and are ordinary corpus specs; they are not +tool cards and the generator does not read them. + +## The ladder + +``` +Specs -> Skills -> Crons -> Agents -> Tools +specs/** specs/skills specs/crons specs/agents specs/tools/{tri,mcp} +what is what a run what starts who holds the what the agents can call: +declared does a run and skills, under the tri CLI commands and + when which law the MCP servers, each with + its source and its owner(s) +``` + +Links go downward through declared fields only: a tool names the agent letters that own it +(`AGENTS`), an agent names the tools it holds (`TOOLS`), and the generator checks the two +directions agree and that every letter and every tool ID exists. + +## Extraction and witness rule + +Nothing in these files is typed by hand. Each file records where its text came from: + +* **`tri/`** — read from the clap `#[derive(Subcommand)] enum Commands` in `cli/tri/src/main.rs` + and the action enums in `cli/tri/src/*.rs` at the commit named in the file header. The + witness label is `source-parse`: `cargo` was not available where the catalog was produced, + so `tri --help` was **not** executed; the enum, its `///` doc comments and the nested enums + were read from the source and rendered the way clap derives them (kebab-case names, first + doc paragraph as `ABOUT`). Running `cargo run -q -p tri -- --help` and diffing + against `ABOUT` / `ACTIONS` is the next witness tier and has not been done. +* 15 of the 52 variants carry no `///` doc (`status`, `skill`, `cell`, `gen`, `test`, + `verdict`, `experience`, `doctor`, `health`, `serve`, `fleet`, `red`, `mods`, `types`, + `unparsed`). For those `ABOUT` quotes, in this order of preference, the `//!` module doc of + the command's source file, the description of the mirroring tool in `cli/tri-mcp/src/main.rs`, + or the handler's own strings in `main.rs` (routes, state-file paths, match arms). + `ABOUT_SOURCE` names the exact source and line for every file. +* Some `///` docs in `main.rs` sit above a different variant than their text describes + (e.g. the text about attached hardware sits above `Ci`, the text about unreachable source + files above `Harness`, the text about duplicate type names above `Fmt`). The specs reproduce + what clap would print for that variant; the misplacement is a defect of the source, reported + here, not repaired silently. +* **`mcp/`** — tool names, descriptions and `inputSchema` property keys are read from the + server code or manifest named in `SOURCE`: `scripts/mcp-traceability-server.js` (JS object + literals), `cli/tri-mcp/src/main.rs` (`serde_json::json!` literals), + `.claude/mcp/tri-ssot/manifest.json`, and in `gHashTag/trinity` + `tools/mcp/trinity_mcp/server.zig` and `tools/mcp/needle_mcp/server.zig` (Zig string + literals). The trinity server's static list has 210 entries, 32 of which have an unbalanced + trailing brace in the source literal; they were parsed after adding or removing one, and the + count is recorded in `TOOLS_NOTE`. Cell-generated tools appended at runtime from + `data/cells/mcp_tools.json` are not listed (the file is not in the repository). + `.trinity/mcp_schemas.json` (29 names) and `.claude/rules/mcp-servers.md` ("47+ tools") are + other declarations of the same server and disagree with the code; the code is the source. +* Servers that are external packages (`gitbutler`, `notebooklm`, `zig-docs`, + `railway-mcp-server`, `neon`) have `EXTERNAL = true`, `TOOLS = []` and a `TOOLS_NOTE` saying + the list lives outside the repository. Nothing is listed rather than guessed. +* `tri-mcp` is a crate in `cli/tri-mcp` and is **not** registered in `.mcp.json` at this + commit (`CONFIG = ""`). `tri-ssot`'s manifest names `python3 -m contrib.backend.github.mcp_server`, + which the tree does not contain; its tools are declared, not executed. +* `gHashTag/trinity` has no `tri` binary of its own at the pinned commit (`build.zig` defines + no `tri` executable; `.claude/skills/tri/SKILL.md` is a skill and is already in the skills + catalog). Its MCP servers are recorded under `mcp/` with `REPO = "gHashTag/trinity"`; the + two repositories' tools are never merged into one list. +* No absolute developer home path appears in any file. Where a config file names one + (`.claude-plugin/.mcp.json`, needle), the home prefix is written as ``. + +## Agent bindings + +`AGENTS` on a tool and `TOOLS` on an agent (`specs/agents/.t27`) are filled only where +a source line names the command for that letter; the note field cites the line. At this commit: + +| tool | agents | source | +|---|---|---| +| `tri/gen` | C, T | `.claude/agents/agent-c-compiler.md:40`, `.claude/agents/trinity.md:68` | +| `tri/test` | T, V | `.claude/agents/agent-v-verify.md:47`, `.claude/agents/trinity.md:70` | +| `tri/verdict` | V | `.claude/agents/agent-v-verify.md:49`, `docs/agents/AGENTS_ALPHABET.md:80` | +| `tri/experience` | E | `.claude/agents/agent-e-experience.md:64` | +| `tri/cell` | W | `docs/agents/AGENTS_ALPHABET.md:144` (domain "Workflow / tri cell") | + +Everything else is `[]` with a note. `tri seal`, `tri verify`, `tri experience query`, +`tri notebook` and `tri bench` are named in agent files but are not commands of the CLI at +this commit; they are quoted in the notes and bound to nothing. `creator.md` and `verifier.md` +name `tri gen`/`tri test` but are not letter agents. The alphabet's key files point at +`src/tri/*.zig`, which neither repository contains at the pinned commits. + +## Schema — `tri/.t27` (module `tool_tri_`, `-` → `_`) + +| constant | type | meaning | +|---|---|---| +| `KIND` | `str` | `"tool"` | +| `FAMILY` | `str` | `"tri-cli"` | +| `ID` | `str` | `tri/` | +| `COMMAND` | `str` | `tri ` | +| `VARIANT` | `str` | the clap enum variant, `Commands::` | +| `SOURCE` | `str` | the `.rs` file the command dispatches to | +| `ENTRY` | `str` | `cli/tri/src/main.rs` | +| `ABOUT` | `str` | the clap about text, or the fallback named in `ABOUT_SOURCE` | +| `ABOUT_SOURCE` | `str` | where `ABOUT` was read from (file and line) | +| `ACTIONS` | `[N]str` | nested subcommands, kebab-case | +| `ACTIONS_ABOUT` | `[N]str` | first doc paragraph per action, `""` when none (same N) | +| `ARGS` | `[N]str` | top-level arguments/flags, `": doc"` | +| `AGENTS` | `[N]str` | owning letters, only where a source names the command | +| `AGENTS_NOTE` | `str` | the source line, or why the list is empty | +| `WHEN_TO_USE` | `str` | the long about when the doc has more than one paragraph, else `ABOUT` | +| `WITNESS` | `str` | `"source-parse"` | +| `ENABLED` | `bool` | | + +## Schema — `mcp/.t27` (module `tool_mcp_`, `-` → `_`) + +| constant | type | meaning | +|---|---|---| +| `KIND` | `str` | `"tool"` | +| `FAMILY` | `str` | `"mcp"` | +| `ID` | `str` | `mcp/` | +| `SERVER` | `str` | server name as registered | +| `SERVER_VERSION` | `str` | from the code/manifest, `""` when none | +| `TRANSPORT` | `str` | `stdio` | +| `LAUNCH` | `str` | command and args as the config states them | +| `ENV` | `[N]str` | environment variable names the config sets | +| `CONFIG` | `str` | the `.mcp.json` (or manifest) that registers it, `""` when none | +| `REPO` | `str` | `gHashTag/t27` or `gHashTag/trinity` | +| `SOURCE` | `str` | the file the tool list was read from | +| `ABOUT`, `ABOUT_SOURCE` | `str` | | +| `TOOLS` | `[N]str` | tool names as `tools/list` returns them | +| `TOOLS_ABOUT` | `[N]str` | descriptions (same N) | +| `TOOLS_INPUTS` | `[N]str` | comma-joined `inputSchema.properties` keys (same N) | +| `RESOURCES`, `RESOURCES_ABOUT` | `[N]str` | resources and their descriptions | +| `TOOLS_NOTE` | `str` | why `TOOLS` is empty or differs from other declarations | +| `EXTERNAL` | `bool` | third-party package or outside binary | +| `AGENTS`, `AGENTS_NOTE` | | as for `tri/` | +| `WITNESS` | `str` | `"source-parse"` | +| `ENABLED` | `bool` | | + +Specs are English-only and ASCII-only (t27 LANG-EN / L3 PURITY); Greek letters and dashes in +the source texts are transliterated (`phi`, `--`). Russian summaries live in the bundle +declared by `specs/i18n/agents-ru.t27`, whose `SCOPE` includes `specs/tools`. + +## Editing + +Edit in `gHashTag/t27` (`specs/tools/tri/*.t27`, `specs/tools/mcp/*.t27`), re-vendor the +byte-identical copy into `gHashTag/trinity` `apps/website/public/t27/files/specs/tools/`, then +run `node scripts/agents-from-specs.mjs` and `npm run check:tools` in `apps/website`. To +refresh from the code, re-run the extraction against the current commit rather than editing +`ABOUT` by hand. diff --git a/specs/tools/mcp/gitbutler.t27 b/specs/tools/mcp/gitbutler.t27 new file mode 100644 index 0000000000..158007da86 --- /dev/null +++ b/specs/tools/mcp/gitbutler.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/gitbutler.t27 -- tool mcp/gitbutler, MCP server "gitbutler" (gHashTag/t27) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/gitbutler). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_gitbutler; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/gitbutler"; +pub const SERVER : str = "gitbutler"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "but mcp"; +pub const ENV : [1]str = ["GITBUTLER_REPO"]; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/t27"; +pub const SOURCE : str = ".mcp.json"; +pub const ABOUT : str = "External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json."; +pub const ABOUT_SOURCE : str = ".mcp.json entry; no tool list in this repository"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [0]str = []; +pub const TOOLS_ABOUT : [0]str = []; +pub const TOOLS_INPUTS : [0]str = []; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = true; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/needle.t27 b/specs/tools/mcp/needle.t27 new file mode 100644 index 0000000000..e18f44e02f --- /dev/null +++ b/specs/tools/mcp/needle.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/needle.t27 -- tool mcp/needle, MCP server "needle" (gHashTag/trinity) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/needle). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_needle; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/needle"; +pub const SERVER : str = "needle"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "/zig-out/bin/needle-mcp"; +pub const ENV : [0]str = []; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".claude-plugin/.mcp.json"; +pub const REPO : str = "gHashTag/trinity"; +pub const SOURCE : str = "tools/mcp/needle_mcp/server.zig"; +pub const ABOUT : str = "Zig MCP server for AST-aware code editing (needle): structural search and replace, quality gates, preview."; +pub const ABOUT_SOURCE : str = "derived from the tool descriptions in tools/mcp/needle_mcp/server.zig"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [6]str = ["needle_structural_replace", "needle_search", "needle_quality_gates", "needle_preview", "needle_batch_edit", "needle_autonomous_refactor"]; +pub const TOOLS_ABOUT : [6]str = ["Apply AST-aware code edit with Tier 0->1 fallback and safety gates", "Search codebase for pattern matches with confidence scores", "Run quality gates: parse check, AST analysis, violation detection", "Preview edit diff without applying changes", "Apply multiple edits in a single operation", "Execute Ralph Loop: intent-aware refactoring using semantic search + HNSW + VSA validation"]; +pub const TOOLS_INPUTS : [6]str = ["", "", "", "", "", ""]; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Input schema keys were not extracted for this server (schemas are inline Zig literals); names and descriptions only. The .claude-plugin/.mcp.json command is an absolute path into a developer checkout; its home prefix is written as here (no home paths in specs)."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = false; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/neon.t27 b/specs/tools/mcp/neon.t27 new file mode 100644 index 0000000000..cb098b92c5 --- /dev/null +++ b/specs/tools/mcp/neon.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/neon.t27 -- tool mcp/neon, MCP server "neon" (gHashTag/trinity) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/neon). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_neon; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/neon"; +pub const SERVER : str = "neon"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "npx -y @neondatabase/mcp-server-neon start"; +pub const ENV : [1]str = ["NEON_API_KEY"]; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/trinity"; +pub const SOURCE : str = ".mcp.json"; +pub const ABOUT : str = "External MCP server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`."; +pub const ABOUT_SOURCE : str = ".mcp.json entry; no tool list in this repository"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [0]str = []; +pub const TOOLS_ABOUT : [0]str = []; +pub const TOOLS_INPUTS : [0]str = []; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = true; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/notebooklm.t27 b/specs/tools/mcp/notebooklm.t27 new file mode 100644 index 0000000000..88adfeff60 --- /dev/null +++ b/specs/tools/mcp/notebooklm.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/notebooklm.t27 -- tool mcp/notebooklm, MCP server "notebooklm" (gHashTag/t27) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/notebooklm). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_notebooklm; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/notebooklm"; +pub const SERVER : str = "notebooklm"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "notebooklm-mcp --notebook-id auto"; +pub const ENV : [1]str = ["NOTEBOOKLM_STORAGE_STATE"]; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".claude/mcp.json"; +pub const REPO : str = "gHashTag/t27"; +pub const SOURCE : str = ".claude/mcp.json"; +pub const ABOUT : str = "External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`."; +pub const ABOUT_SOURCE : str = ".claude/mcp.json entry; no tool list in this repository"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [0]str = []; +pub const TOOLS_ABOUT : [0]str = []; +pub const TOOLS_INPUTS : [0]str = []; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Tool list lives in the external package, not in this repository."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = true; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/railway-mcp-server.t27 b/specs/tools/mcp/railway-mcp-server.t27 new file mode 100644 index 0000000000..e00e2677be --- /dev/null +++ b/specs/tools/mcp/railway-mcp-server.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/railway-mcp-server.t27 -- tool mcp/railway-mcp-server, MCP server "railway-mcp-server" (gHashTag/trinity) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/railway-mcp-server). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_railway_mcp_server; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/railway-mcp-server"; +pub const SERVER : str = "railway-mcp-server"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "npx -y @railway/mcp-server"; +pub const ENV : [0]str = []; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/trinity"; +pub const SOURCE : str = ".mcp.json"; +pub const ABOUT : str = "External MCP server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`."; +pub const ABOUT_SOURCE : str = ".mcp.json entry; no tool list in this repository"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [0]str = []; +pub const TOOLS_ABOUT : [0]str = []; +pub const TOOLS_INPUTS : [0]str = []; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = true; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/t27-traceability.t27 b/specs/tools/mcp/t27-traceability.t27 new file mode 100644 index 0000000000..d7d738c58c --- /dev/null +++ b/specs/tools/mcp/t27-traceability.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/t27-traceability.t27 -- tool mcp/t27-traceability, MCP server "t27-traceability" (gHashTag/t27) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/t27-traceability). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_t27_traceability; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/t27-traceability"; +pub const SERVER : str = "t27-traceability"; +pub const SERVER_VERSION : str = "1.0.0"; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "node scripts/mcp-traceability-server.js"; +pub const ENV : [2]str = ["PROJECT_ROOT", "ENFORCE_L1"]; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/t27"; +pub const SOURCE : str = "scripts/mcp-traceability-server.js"; +pub const ABOUT : str = "MCP server over stdio that checks L1 TRACEABILITY (Closes #N) in commit messages and PR descriptions, generates compliant commit messages, validates branch names and serves the PHI LOOP stacked-branch template; resources expose the constitution and the L1 audit."; +pub const ABOUT_SOURCE : str = "derived from the tool and resource descriptions in scripts/mcp-traceability-server.js"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [4]str = ["check_traceability", "generate_commit_message", "validate_branch_name", "get_phi_loop_template"]; +pub const TOOLS_ABOUT : [4]str = ["Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)", "Generate a compliant commit message for t27 including required L1 TRACEABILITY reference", "Validate branch name follows t27 naming conventions", "Get PHI LOOP stacked branch template for ring development"]; +pub const TOOLS_INPUTS : [4]str = ["message", "type,scope,description,issueNumber,invariantLaws,body", "branchName", "ringNumber"]; +pub const RESOURCES : [2]str = ["docs/T27-CONSTITUTION.md", "docs/l1-traceability-audit.md"]; +pub const RESOURCES_ABOUT : [2]str = ["Constitutional laws including L1 TRACEABILITY", "Audit report for L1 TRACEABILITY compliance"]; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = ""; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = false; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/tri-mcp.t27 b/specs/tools/mcp/tri-mcp.t27 new file mode 100644 index 0000000000..f2bd38921f --- /dev/null +++ b/specs/tools/mcp/tri-mcp.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/tri-mcp.t27 -- tool mcp/tri-mcp, MCP server "tri-mcp" (gHashTag/t27) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-mcp). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_tri_mcp; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/tri-mcp"; +pub const SERVER : str = "tri-mcp"; +pub const SERVER_VERSION : str = "0.1.0"; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)"; +pub const ENV : [0]str = []; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ""; +pub const REPO : str = "gHashTag/t27"; +pub const SOURCE : str = "cli/tri-mcp/src/main.rs"; +pub const ABOUT : str = "Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."; +pub const ABOUT_SOURCE : str = "derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [10]str = ["tri_status", "tri_skill_begin", "tri_skill_end", "tri_cell_checkpoint", "tri_cell_seal", "tri_gen", "tri_test", "tri_verdict", "tri_experience_save", "tri_health"]; +pub const TOOLS_ABOUT : [10]str = ["Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.", "Begins a new PHI LOOP skill session bound to an issue.", "Ends the active PHI LOOP skill session.", "Records a checkpoint step in the active cell.", "Seals the active cell by computing a SHA-256 hash of its checkpoint history.", "Generates backends from a .t27 spec file using t27c.", "Runs tests for a .t27 spec file using t27c.", "Checks for toxic regressions by analyzing swarm health metrics.", "Saves an experience episode to the akashic log.", "Returns queen and swarm health status from .trinity state."]; +pub const TOOLS_INPUTS : [10]str = ["", "issue,description", "", "step", "", "spec_path", "spec_path", "", "episode_type,summary,ring", ""]; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = false; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/tri-ssot.t27 b/specs/tools/mcp/tri-ssot.t27 new file mode 100644 index 0000000000..951498ba44 --- /dev/null +++ b/specs/tools/mcp/tri-ssot.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/tri-ssot.t27 -- tool mcp/tri-ssot, MCP server "tri-ssot" (gHashTag/t27) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-ssot). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_tri_ssot; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/tri-ssot"; +pub const SERVER : str = "tri-ssot"; +pub const SERVER_VERSION : str = "1.0.0"; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "python3 -m contrib.backend.github.mcp_server"; +pub const ENV : [0]str = []; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".claude/mcp/tri-ssot/manifest.json"; +pub const REPO : str = "gHashTag/t27"; +pub const SOURCE : str = ".claude/mcp/tri-ssot/manifest.json"; +pub const ABOUT : str = "SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM"; +pub const ABOUT_SOURCE : str = "manifest.json description"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [5]str = ["tri_issue", "tri_pr", "tri_docs", "tri_sync", "tri_search"]; +pub const TOOLS_ABOUT : [5]str = ["GitHub Issue management: create, update, list, close", "GitHub PR management: create, merge, close, get status", "Documentation management: upload to NotebookLM, sync, query", "Unified sync: sync all entities (issues, prs, docs) with NotebookLM", "Unified search across GitHub Issues, PRs, NotebookLM docs"]; +pub const TOOLS_INPUTS : [5]str = ["action,title,body,labels,issue_id,state", "action,title,body,pr_id,issue_id", "action,file_path,title", "scope", "query"]; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "The manifest names python3 -m contrib.backend.github.mcp_server, but the t27 tree at this commit has no contrib/backend/github/mcp_server.py (git ls-tree); the tool list is taken from the manifest alone (declared, not executed)."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = false; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/trinity.t27 b/specs/tools/mcp/trinity.t27 new file mode 100644 index 0000000000..cfa88c4b6a --- /dev/null +++ b/specs/tools/mcp/trinity.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/trinity.t27 -- tool mcp/trinity, MCP server "trinity" (gHashTag/trinity) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/trinity). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_trinity; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/trinity"; +pub const SERVER : str = "trinity"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "/data/trinity/zig-out/bin/trinity-mcp"; +pub const ENV : [1]str = ["TRINITY_MCP_PORT"]; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/trinity"; +pub const SOURCE : str = "tools/mcp/trinity_mcp/server.zig"; +pub const ABOUT : str = "Zig MCP server (JSON-RPC over stdio, Content-Length framing) that exposes the tri pipeline, Golden Chain links, swarm, cloud/farm, FPGA, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writeToolsList plus cell-generated tools loaded at runtime."; +pub const ABOUT_SOURCE : str = "derived from tools/mcp/trinity_mcp/server.zig writeToolsList and .claude/rules/mcp-servers.md"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [210]str = ["tri_execute", "tri_code", "tri_gen", "tri_spec_create", "tri_decompose", "tri_plan", "tri_verify", "tri_bench", "tri_verdict", "tri_test", "tri_test_run", "tri_fix", "tri_explain", "tri_refactor", "tri_doc", "tri_reason", "tri_status", "tri_diff", "tri_log", "tri_commit", "needle_structural_replace", "needle_search", "needle_quality_gates", "needle_preview", "needle_batch_edit", "needle_graph_build", "needle_graph_refactor", "needle_graph_extract", "needle_graph_visualize", "needle_graph_affected", "needle_graph_vsa_search", "needle_semantic_replace", "needle_vsa_index", "needle_safe_cross_refactor", "needle_vsa_rule_apply", "needle_cross_preview", "needle_rollback_all", "needle_omega_init", "needle_omega_analyze", "needle_omega_execute", "needle_omega_detect", "needle_omega_status", "needle_safety_gates_run", "needle_atomic_refactor", "needle_parse_check", "needle_compile_check", "tri_constants", "tri_phi", "tri_fib", "tri_lucas", "tri_spiral", "tri_chat", "tri_loop_decision", "tri_pipeline", "tri_omega_awaken", "tri_os_boot", "tri_tvc_demo", "tri_tvc_stats", "tri_chem_periodic", "tri_chem_element", "tri_chem_mass", "tri_chem_moles", "tri_bio_dna", "tri_bio_codon", "tri_bio_protein", "tri_quantum_constants", "tri_quantum_states", "tri_bell_states", "tri_formula", "swarm_status", "swarm_agents", "swarm_register", "swarm_heartbeat", "swarm_task_get", "swarm_task_add", "swarm_task_cancel", "swarm_tasks", "swarm_pause", "swarm_resume", "swarm_assign", "swarm_github_sync", "swarm_github_on_start", "swarm_github_on_complete", "swarm_github_on_fail", "oracle_start", "oracle_stop", "oracle_status", "tri_train_status", "tri_train_diagnose", "tri_train_loss_curve", "tri_train_recommend", "tri_train_checkpoint", "cloud_spawn", "cloud_kill", "cloud_list", "cloud_status", "cloud_logs", "cloud_spawn_all", "cloud_cleanup", "cloud_history", "cloud_api_check", "cloud_redeploy", "cloud_diagnose", "cloud_issue_create", "cloud_farm", "cloud_farm_sync", "cloud_farm_capacity", "cloud_farm_rebalance", "farm_evolve_health", "farm_evolve_notify", "farm_evolve_watch", "cloud_train", "cloud_train_batch", "chain_cache", "chain_baseline", "chain_metrics", "chain_patterns", "chain_tree", "chain_check_spec", "chain_spec", "chain_codegen", "chain_analyze", "chain_test", "chain_bench", "chain_fix", "chain_bench_ext", "chain_bench_theory", "chain_delta", "chain_optimize", "chain_docs", "chain_verdict", "chain_git", "chain_loop", "chain_deploy", "chain_evolve", "chain_self_ref", "chain_fpga_test", "chain_research", "chain_lint_spec", "chain_list", "cloud_decompose", "tri_notify", "fpga_uart_scan", "fpga_uart_ping", "fpga_uart_send", "doctor_status", "doctor_scan", "doctor_report", "doctor_plan", "doctor_heal", "job_start", "job_status", "job_logs", "job_list", "job_cancel", "job_artifacts", "issue_list", "issue_view", "issue_create", "issue_comment", "issue_close", "issue_assign", "issue_decompose", "deploy_status", "deploy_logs", "deploy_vars", "deploy_start", "deploy_stop", "experience_save", "experience_recall", "experience_mistakes", "patent_status", "patent_analysis", "depin_status", "depin_nodes", "depin_fitness", "research_query", "experiment_list", "experiment_compare", "chimera_run", "ouroboros_status", "ouroboros_run", "self_test", "self_health", "context_info", "context_load", "faculty_status", "mu_status", "mu_patterns", "zenodo_status", "tri_analyze", "tri_clean", "tri_fmt", "tri_stats", "tri_lint", "tri_search", "tri_metrics", "tri_trace", "tri_eval", "farm_status", "farm_idle", "farm_recycle", "farm_fill", "farm_accounts", "farm_wave_spawn", "fpga_synth", "fpga_status", "fpga_build", "fpga_verify", "fpga_flash"]; +pub const TOOLS_ABOUT : [210]str = ["Universal executor -- run ANY tri command with automatic needle check", "Generate code with typing effect", "Compile VIBEE spec to Zig/Verilog", "Create new .tri specification template", "Break task into sub-tasks (Golden Chain Link 4)", "Generate implementation plan (Golden Chain Link 5)", "Run tests + benchmarks (Links 7-11)", "Run performance benchmarks", "Generate toxic verdict (Link 14)", "Generate tests for code", "Run specific test suite", "Detect and fix bugs", "Explain code or concept", "Suggest refactoring", "Generate documentation", "Chain-of-thought reasoning", "Git status --short", "Git diff", "Git log --oneline", "Git add -A && commit", "AST-aware code edit with Tier 0->1 fallback", "Search codebase for pattern matches", "Run quality gates: parse check, AST analysis", "Preview edit diff without applying", "Apply multiple edits in one operation", "Build complete call graph with VSA embeddings for project", "Rename symbol across entire project with semantic awareness", "Extract function/method from code block", "Generate graph visualization (DOT/JSON) with VSA clustering", "Find all files affected by symbol change (with semantic impact)", "Search for semantically similar symbols by code or intent", "Replace code by semantic meaning (not just pattern)", "Build semantic VSA index for codebase", "Safe cross-file semantic refactor with VSA rules and 100% rollback", "Apply VSA rules to validate proposed refactor", "Preview cross-file refactor impact with safety assessment", "Rollback all changes from failed refactor", "Initialize Omega autonomous agent for project", "Omega analyzes codebase and suggests improvements", "Execute refactor plan with full autonomy", "Auto-detect code improvements and optimizations", "Get Omega agent status and health", "Run all safety gates on a file (Phase 1: parse/compile/test)", "Apply atomic refactor with 100% rollback guarantee (Phase 1)", "Parse check using Zig AST parser (Phase 1)", "Compile check using zig build (Phase 1)", "Show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...)", "Compute phi^n (golden ratio power)", "Fibonacci with BigInt", "Lucas L(n) -- L(2)=3=TRINITY", "phi-spiral coordinates", "Interactive chat (vision + voice + tools)", "Loop decision: CONTINUE/EXIT (Link 17)", "Execute 26-link Golden Chain pipeline", "Awaken Omega autonomous agent", "Temporal Trinity OS boot", "Run TVC chat demo", "Show TVC corpus statistics", "List periodic table elements by category", "Look up element by symbol or atomic number", "Calculate molar mass of chemical formula", "Calculate moles, molecules, atoms from mass", "Analyze DNA sequence (GC content, composition)", "Look up RNA codon to amino acid", "Analyze protein sequence (mass, composition)", "Show quantum physics constants (h, hbar, alpha)", "Show quantum basis states and phi-state", "Show four Bell entangled states", "Evaluate V = n * 3^k * pi^m * phi^p * e^q", "Get Ralph Agent Swarm status summary (agents, tasks, counts)", "List all registered swarm agents with status", "Register a new agent in the swarm", "Agent heartbeat with status, branch, task_id, commit_sha (circuit breaker)", "Get next pending task for an agent (priority-ordered)", "Add a new task to the swarm queue", "Cancel and remove a task from the queue", "List all tasks in the swarm queue", "Pause all swarm agents (finish current tasks, no new assignments)", "Resume all paused swarm agents", "Create and assign a task to a specific agent", "Convert GitHub issue to swarm task. Returns labels/actions for Go proxy.", "Notify that agent started a GitHub-sourced task. Returns label swaps + comment.", "Notify GitHub task completed. Returns labels, comment, close_issue.", "Notify GitHub task failed. Returns labels + error comment.", "Start Oracle Telegram watchdog thread (sends swarm status every N minutes)", "Stop Oracle Telegram watchdog thread", "Get Oracle watchdog status (running/stopped, messages sent, errors)", "Get HSLM training status -- checkpoints, loss, anomalies, recommendation", "Diagnose HSLM training anomalies (zero loss, phase transition, overfitting)", "Get HSLM loss curve from checkpoint headers", "Get phi-aware recommendation for next training action", "List HSLM checkpoints with step, loss, PPL, size", "Spawn a cloud agent container for a GitHub issue", "Kill a cloud agent container", "List all active cloud agent containers", "Get cloud infrastructure status", "Get cloud agent deployment logs", "Spawn agents for all issues labeled agent:spawn", "Remove inactive cloud agent entries", "Get event history for a cloud agent", "Test API key connectivity and model routing -- detects proxy returning wrong model", "Reuse existing Railway service for a new issue number", "Diagnose why an agent failed -- shows GitHub comments, JSONL events, PR status", "Create a GitHub issue with agent:spawn label for auto-spawning", "Railway multi-account farm dashboard -- shows all accounts with capacity and daily limits", "Sync active service counts across all Railway accounts", "Get farm capacity as JSON -- total slots, active services, daily remaining per account", "Migrate services from overloaded to underloaded Railway accounts", "Farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, ETA", "Farm insight scan -- detect leader changes, plateaus, spikes, wave completion. Sends to Telegram unless dry-run", "Single evolution sweep -- inject sacred children into free slots, auto-notify. Always --once", "Spawn an HSLM training experiment on Railway farm", "Spawn all 13 HSLM training experiments across Railway farm", "Chain Link 0: TVC Gate -- search corpus, return cached or continue", "Chain Link 1: Analyze previous version v(n-1)", "Chain Link 2: Collect performance metrics", "Chain Link 3: Research patterns and science (PAS)", "Chain Link 4: Build technology dependency tree", "Chain Link 5: VIBEE-first compliance check", "Chain Link 6: Create .tri specifications", "Chain Link 7: Generate Zig code from .tri specs", "Chain Link 8: Sacred Intelligence code analysis", "Chain Link 9: Run zig build test suite", "Chain Link 10: CRITICAL -- Compare to baseline v(n-1)", "Chain Link 11: SWE Agent error fixing", "Chain Link 12: Compare to external tools (llama.cpp/vLLM)", "Chain Link 13: Gap to theoretical maximum", "Chain Link 14: Generate improvement delta report", "Chain Link 15: Optimize if needed (optional)", "Chain Link 16: Generate documentation with proofs", "Chain Link 17: Critical self-assessment (toxic verdict)", "Chain Link 18: Commit and push changes", "Chain Link 19: Decide next iteration (continue/exit)", "Chain Link 20: Auto-deploy to cloud", "Chain Link 21: Pipeline analyzes itself (eternal self-evolution)", "Chain Link 22: Pipeline improves itself (circular bootstrapping)", "Chain Link 23: Camera-based LED verification for FPGA", "Chain Link 24: Research-assisted error fixing via Perplexity", "Chain Link 25: Validate .tri spec syntax before codegen", "List all 26 Golden Chain links with roles and status", "Decompose a GitHub issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator)", "Send/edit/pin Telegram messages via tri CLI", "Scan for USB-UART serial devices (CH340/FTDI) connected to FPGA", "PING/PONG test -- send 0x03, expect 0x83 from FPGA", "Send raw hex bytes to FPGA via UART and print response", "Get doctor health status -- one-line summary", "Scan and classify all .zig files", "Health score dashboard with emoji grades", "Create migration queue for manual files", "Regenerate manual files through pipeline", "Start a background job", "Get job status by ID", "Get job logs by ID", "List all background jobs", "Cancel a running job", "Get job artifacts by ID", "List open GitHub issues", "View a specific GitHub issue", "Create a new GitHub issue", "Add a comment to a GitHub issue", "Close a GitHub issue", "Assign a user to a GitHub issue", "Decompose a GitHub issue into sub-tasks", "Get deployment status", "Get deployment logs", "Get deployment environment variables", "Start deployment", "Stop deployment", "Save an experience entry (key-value learning)", "Recall an experience entry by key", "List all recorded mistakes/anti-patterns", "Get patent portfolio status", "Get patent analysis and claims", "Get DePIN node protocol status", "List DePIN network nodes", "Get DePIN node fitness scores", "Research a topic via Perplexity-assisted search", "List all HSLM training experiments", "Compare two experiments", "Run a chimera fused command (farm-cycle, train-cycle, etc.)", "Get ouroboros self-evolution status and score", "Run ouroboros self-evolution cycle", "Run self-test suite", "Get self-health check results", "Get current context info (tokens, files, window)", "Load additional context from a file path", "Get Faculty Board status dashboard", "Get MU agent status", "List MU learned patterns", "Get Zenodo publication status", "Analyze codebase quality and metrics", "Clean build artifacts and temp files", "Format all Zig source files", "Show project statistics (LOC, files, tests)", "Run linter on source code", "Search codebase for a query string", "Get project metrics dashboard", "Get execution trace", "Evaluate expression or code snippet", "Get training farm status overview", "List idle farm workers", "Recycle underperforming farm workers", "Fill empty farm slots with new experiments", "List all 8 Railway farm accounts and their service counts", "Spawn a wave of training workers on a specific account", "Run FPGA synthesis pipeline", "Get FPGA hardware and synthesis status", "Build FPGA bitstream", "Verify FPGA bitstream against RTL", "Flash bitstream to FPGA board"]; +pub const TOOLS_INPUTS : [210]str = ["command,args,auto_needle", "prompt", "spec", "name", "task", "task", "", "suite", "", "file", "pattern", "file", "target", "file", "file", "prompt", "", "", "count", "message", "file_path,pattern_query,replacement,safety_level,edit_mode", "query,file_path,confidence_threshold", "file_path,check_level", "file_path,pattern_query,replacement", "edits", "root_dir,enable_vsa", "symbol,new_name,semantic_aware,similarity_threshold,scope,preview", "file,start_line,end_line,function_name", "format,focus,show_vsa", "symbol,include_transitive,semantic_impact", "query,top_k,min_similarity", "intent,replacement_intent,file,preview", "root_dir,embedding_dim", "intent,new_intent,semantic_threshold,preview", "transformation,rules_file", "symbol,new_name,include_vsa", "refactor_id", "root_dir,autonomy_level", "intent,auto_detect", "plan_id,confirm", "min_confidence,max_results", "", "file_path,gates", "file_path,pattern_query,replacement,safety_gates", "file_path", "project_root", "", "n", "n", "n", "n", "message,stream", "mode", "task", "mode", "", "", "", "category", "element", "formula", "formula,mass", "sequence", "codon", "sequence", "", "", "", "n,k,m,p,q", "", "", "agent_id,hostname", "agent_id,status,branch,task_id,commit_sha", "agent_id", "id,slug,description,priority", "task_id", "", "", "", "agent_id,description", "issue_number,title,labels", "task_id,agent_id,branch", "task_id,agent_id,result", "task_id,agent_id,error", "telegram_token,chat_id,interval_ms", "", "", "", "dir", "dir", "dir", "dir", "issue_number", "issue_number", "", "", "", "", "", "issue_number", "", "service_id,issue_number", "issue_number", "title", "", "", "", "", "", "dry_run", "sacred,dry_run", "name", "", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "task", "", "issue_number,template", "text,chat_id,pin,edit_id", "", "device", "device,hex_bytes", "", "", "", "", "", "command", "id", "id", "", "id", "id", "", "number", "title,body", "number,body", "number", "number,user", "number", "", "", "", "", "", "key,value", "key", "", "", "", "", "", "", "query", "", "a,b", "name", "", "", "", "", "", "path", "", "", "", "", "", "", "", "", "", "query", "", "", "", "", "", "", "", "", "account,count", "", "", "", "", "bitstream"]; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Static list parsed from writeToolsList (210 entries; 32 entries have an unbalanced trailing brace in the source literal and were parsed after adding or removing one). Cell-generated tools from data/cells/mcp_tools.json are appended at runtime and are not listed here. .trinity/mcp_schemas.json lists a different, shorter set (29 names) and is not used as the source."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = false; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/mcp/zig-docs.t27 b/specs/tools/mcp/zig-docs.t27 new file mode 100644 index 0000000000..3eea962047 --- /dev/null +++ b/specs/tools/mcp/zig-docs.t27 @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp/zig-docs.t27 -- tool mcp/zig-docs, MCP server "zig-docs" (gHashTag/trinity) +; Source of truth for the tool card on t27.ai (#/tools?tool=mcp/zig-docs). +; Tool names, descriptions and input keys are read from the server code or manifest named in +; SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_mcp_zig_docs; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "mcp"; +pub const ID : str = "mcp/zig-docs"; +pub const SERVER : str = "zig-docs"; +pub const SERVER_VERSION : str = ""; +pub const TRANSPORT : str = "stdio"; +; The launch line as the .mcp.json (or the crate) states it. +pub const LAUNCH : str = "npx -y @nichochar/zig-mcp@latest"; +pub const ENV : [0]str = []; +; The .mcp.json that registers the server ("" when it is not registered at this commit). +pub const CONFIG : str = ".mcp.json"; +pub const REPO : str = "gHashTag/trinity"; +pub const SOURCE : str = ".mcp.json"; +pub const ABOUT : str = "External MCP server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`."; +pub const ABOUT_SOURCE : str = ".mcp.json entry; no tool list in this repository"; +; Tools as the server lists them (tools/list), their descriptions and inputSchema property keys. +pub const TOOLS : [0]str = []; +pub const TOOLS_ABOUT : [0]str = []; +pub const TOOLS_INPUTS : [0]str = []; +pub const RESOURCES : [0]str = []; +pub const RESOURCES_ABOUT : [0]str = []; +; Why TOOLS may be empty or differ from other declarations (external package, dynamic list). +pub const TOOLS_NOTE : str = "Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed."; +; true when the server is a third-party package launched by npx or an outside binary. +pub const EXTERNAL : bool = true; +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/abandoned.t27 b/specs/tools/tri/abandoned.t27 new file mode 100644 index 0000000000..ae16695255 --- /dev/null +++ b/specs/tools/tri/abandoned.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/abandoned.t27 -- tool tri/abandoned, the `tri abandoned` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/abandoned). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_abandoned; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/abandoned"; +pub const COMMAND : str = "tri abandoned"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Abandoned"; +pub const SOURCE : str = "cli/tri/src/abandoned.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Recovery sites whose own comment names the construct they discard."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["list"]; +pub const ACTIONS_ABOUT : [1]str = ["List recovery sites whose preceding comment names a concrete construct."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Recovery sites whose own comment names the construct they discard."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/cell.t27 b/specs/tools/tri/cell.t27 new file mode 100644 index 0000000000..aa33f11e9a --- /dev/null +++ b/specs/tools/tri/cell.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/cell.t27 -- tool tri/cell, the `tri cell` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/cell). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_cell; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/cell"; +pub const COMMAND : str = "tri cell"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Cell"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history."; +pub const ABOUT_SOURCE : str = "tri-mcp tools tri_cell_checkpoint and tri_cell_seal descriptions (cli/tri-mcp/src/main.rs); CellAction enum cli/tri/src/main.rs:448"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["checkpoint", "seal"]; +pub const ACTIONS_ABOUT : [2]str = ["", ""]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [1]str = ["W"]; +pub const AGENTS_NOTE : str = "docs/agents/AGENTS_ALPHABET.md:144, agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal)."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/census.t27 b/specs/tools/tri/census.t27 new file mode 100644 index 0000000000..eb77ec3d15 --- /dev/null +++ b/specs/tools/tri/census.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/census.t27 -- tool tri/census, the `tri census` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/census). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_census; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/census"; +pub const COMMAND : str = "tri census"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Census"; +pub const SOURCE : str = "cli/tri/src/census.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["audit", "pin"]; +pub const ACTIONS_ABOUT : [2]str = ["Every census's printed population, against one counted another way.", "Pin each pure census's output, so a change that moves one has to say so."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/ci.t27 b/specs/tools/tri/ci.t27 new file mode 100644 index 0000000000..cfe2eb7e8e --- /dev/null +++ b/specs/tools/tri/ci.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/ci.t27 -- tool tri/ci, the `tri ci` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/ci). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_ci; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/ci"; +pub const COMMAND : str = "tri ci"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Ci"; +pub const SOURCE : str = "cli/tri/src/cibase.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Is the hardware this plan assumes actually attached? CI questions about the repository's own gates."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["baseline"]; +pub const ACTIONS_ABOUT : [1]str = ["List PR gates that have never run on the default branch."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Is the hardware this plan assumes actually attached? CI questions about the repository's own gates."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/competitors.t27 b/specs/tools/tri/competitors.t27 new file mode 100644 index 0000000000..7b948d121a --- /dev/null +++ b/specs/tools/tri/competitors.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/competitors.t27 -- tool tri/competitors, the `tri competitors` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/competitors). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_competitors; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/competitors"; +pub const COMMAND : str = "tri competitors"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Competitors"; +pub const SOURCE : str = "cli/tri/src/competitors.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["audit", "freshness"]; +pub const ACTIONS_ABOUT : [2]str = ["Count the records, the double-entered papers and the unpublished zeros.", "When the survey behind this table last read a paper, by the month its citations encode."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/discard.t27 b/specs/tools/tri/discard.t27 new file mode 100644 index 0000000000..39a411f35a --- /dev/null +++ b/specs/tools/tri/discard.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/discard.t27 -- tool tri/discard, the `tri discard` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/discard). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_discard; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/discard"; +pub const COMMAND : str = "tri discard"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Discard"; +pub const SOURCE : str = "cli/tri/src/discard.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "What the parser reads and throws away, ranked against its pinned bound."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["top", "classify"]; +pub const ACTIONS_ABOUT : [2]str = ["Rank the discarding specs, largest first, against the pinned volume.", "Group the discard by which recovery threw it away, and what it stopped on."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "What the parser reads and throws away, ranked against its pinned bound."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/doctor.t27 b/specs/tools/tri/doctor.t27 new file mode 100644 index 0000000000..86364ecb4f --- /dev/null +++ b/specs/tools/tri/doctor.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/doctor.t27 -- tool tri/doctor, the `tri doctor` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/doctor). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_doctor; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/doctor"; +pub const COMMAND : str = "tri doctor"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Doctor"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status)."; +pub const ABOUT_SOURCE : str = "handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = [""]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status)."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/elab.t27 b/specs/tools/tri/elab.t27 new file mode 100644 index 0000000000..62107e3c44 --- /dev/null +++ b/specs/tools/tri/elab.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/elab.t27 -- tool tri/elab, the `tri elab` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/elab). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_elab; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/elab"; +pub const COMMAND : str = "tri elab"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Elab"; +pub const SOURCE : str = "cli/tri/src/elab.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Classify a compiler's error output before quoting a number from it."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["classify", "secondary"]; +pub const ACTIONS_ABOUT : [2]str = ["Distribution of elaboration diagnostics by message shape.", "How many diagnostics are secondary -- same source line as one above."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Classify a compiler's error output before quoting a number from it."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/emit.t27 b/specs/tools/tri/emit.t27 new file mode 100644 index 0000000000..5279639a1c --- /dev/null +++ b/specs/tools/tri/emit.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/emit.t27 -- tool tri/emit, the `tri emit` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/emit). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_emit; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/emit"; +pub const COMMAND : str = "tri emit"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Emit"; +pub const SOURCE : str = "cli/tri/src/gendet.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Does the same binary produce the same generated code twice?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["determinism"]; +pub const ACTIONS_ABOUT : [1]str = ["Generate the corpus twice with the same binary and name what differs."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Does the same binary produce the same generated code twice? Every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. Three of the four emitters do not; see #3006. (`Gen` is taken by the single-spec emitter, so this is `Emit`.)"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/experience.t27 b/specs/tools/tri/experience.t27 new file mode 100644 index 0000000000..2a9b3f77b4 --- /dev/null +++ b/specs/tools/tri/experience.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/experience.t27 -- tool tri/experience, the `tri experience` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/experience). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_experience; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/experience"; +pub const COMMAND : str = "tri experience"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Experience"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Saves an experience episode to the akashic log."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["save"]; +pub const ACTIONS_ABOUT : [1]str = [""]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [1]str = ["E"]; +pub const AGENTS_NOTE : str = ".claude/agents/agent-e-experience.md:64 (tri experience save -- Save episode to experience log). Lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Saves an experience episode to the akashic log."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/fleet.t27 b/specs/tools/tri/fleet.t27 new file mode 100644 index 0000000000..9b4b1d2e2b --- /dev/null +++ b/specs/tools/tri/fleet.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/fleet.t27 -- tool tri/fleet, the `tri fleet` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/fleet). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_fleet; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/fleet"; +pub const COMMAND : str = "tri fleet"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Fleet"; +pub const SOURCE : str = "cli/tri/src/fleet.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "`tri fleet` -- is the hardware this plan assumes actually attached?"; +pub const ABOUT_SOURCE : str = "//! module doc, cli/tri/src/fleet.rs:1"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["scan", "asof"]; +pub const ACTIONS_ABOUT : [2]str = ["Scan the USB bus and say plainly what hardware is present.", "Check the environments a claim depends on before repeating the claim."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "`tri fleet` -- is the hardware this plan assumes actually attached?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/fmt.t27 b/specs/tools/tri/fmt.t27 new file mode 100644 index 0000000000..6813ccd387 --- /dev/null +++ b/specs/tools/tri/fmt.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/fmt.t27 -- tool tri/fmt, the `tri fmt` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/fmt). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_fmt; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/fmt"; +pub const COMMAND : str = "tri fmt"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Fmt"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Fmt (cli/tri/src/main.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [2]str = ["--package: One package instead of the whole workspace.", "--dry-run: Report what is dirty and whether a workflow formats, and stop."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/fpga.t27 b/specs/tools/tri/fpga.t27 new file mode 100644 index 0000000000..43a131b6c2 --- /dev/null +++ b/specs/tools/tri/fpga.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/fpga.t27 -- tool tri/fpga, the `tri fpga` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/fpga). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_fpga; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/fpga"; +pub const COMMAND : str = "tri fpga"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Fpga"; +pub const SOURCE : str = "cli/tri/src/fpga.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "FPGA programming via the in-tree DLC10 driver (pure Rust)."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [35]str = ["idcode", "idcode-cfg", "sram", "program", "flash-id", "status", "debug", "load-sram", "stat", "read-xadc", "synth-gf16", "program-flash", "dump-flash", "bit-config", "round-trip-verify", "boot-log", "cold-por", "smoke-gate", "boot-protocol", "patch-cor0", "cclk-variants", "cclk-sweep", "sweep-report", "measure-cclk", "flash-status", "proxy-load", "proxy-status", "spi-raw", "ir-probe", "flash-id-debug", "build-proxy", "setup-openxc7-chipdb", "measured-to-lean", "pvt-envelope", "build-proxy-docker"]; +pub const ACTIONS_ABOUT : [35]str = ["Read and print the JTAG IDCODE of the attached DLC10 cable target.", "Read the configuration IDCODE register via the Type-1 CFG_IN/CFG_OUT protocol. On a healthy XC7A100T this must return 0x13631093 (same as the JTAG IDCODE). If 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken.", "Program FPGA SRAM (volatile -- lost on power-cycle).", "Program the on-board SPI flash (non-volatile / persistent).", "Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.", "Read the raw CFG_OUT status register.", "Decode 7-series configuration registers for DONE=LOW diagnosis.", "Load a bitstream into FPGA SRAM using openFPGALoader with a Digilent FTDI cable. This is the canonical path for the QMTech Wukong V1 / XC7A200T board because the in-tree `dlc10` driver only supports Xilinx DLC10 cables (VID=0x03FD), not the attached Digilent cable (VID=0x0403:0x6014).", "Read and decode the FPGA STAT register via openFPGALoader.", "Read the FPGA XADC sensors (temperature, VCCINT, VCCAUX) via openFPGALoader and print a JSON object. The board must be powered and connected through a supported cable such as `digilent_hs2`.", "Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.", "Program the on-board SPI flash (non-volatile) using openFPGALoader's JTAG-to-SPI bridge. Requires a matching `spiOverJtag` bitstream for the exact FPGA package; the XC7A200T-FGG676 bridge is present in recent openFPGALoader distributions but flash boot may still depend on board mode pins (see docs/reports/FPGA_LOOP_EVIDENCE_2026-07-04.md).", "Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.", "Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).", "Program the given .bit to SPI flash, dump the same region back, and compare the dumped bytes against the bitstream payload. This verifies the openFPGALoader write path is bit-perfect for the raw bitstream.", "Guided cold-POR boot experiment. Programs flash, asks the user to physically power-cycle the board, then captures STAT without a JTAG reset and prints a decision-tree diagnosis.", "Deterministic cold-POR boot experiment with optional relay control. With `--relay-port MOCK` the command writes a deterministic, clearly labeled mock boot log so CI can exercise the cold-POR JSON path without touching hardware. Real relay ports are reserved for Variant A/B.", "Board-less smoke gate for the FPGA path. Runs `tri fpga bit-config` on the GF16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo Verilog. Requires no physical board.", "Print or interactively confirm the cold-POR boot protocol. This is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle.", "Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.", "Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.", "Automated cold-POR CCLK sweep. Generates OSCFSEL variants, programs each to flash, prompts for the physical power-cycle, captures STAT, and writes JSON logs. The only manual step is disconnecting/reconnecting the cable and power-cycling the board.", "Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.", "Print DSLogic / oscilloscope instructions for measuring the FPGA CCLK output during Master SPI configuration. Optionally parse a DSView CSV export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the Digilent FTDI cable as `ftdi-la`).", "Read the SPI flash status register via openFPGALoader's JTAG-to-SPI bridge. Decodes WIP, WEL, and QE bits to help diagnose boot-from-flash failures.", "Diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into FPGA SRAM, report STAT, leave TAP in RTI. Does NOT touch SPI flash. Useful for verifying the bridge actually reaches DONE=HIGH before debugging SPI semantics.", "Diagnostic: read IDCODE + STAT *without* touching the FPGA. Run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. Also confirms IR=USER1 select is accepted.", "Diagnostic: shift raw hex bytes through the USER1 BSCAN as a single SPI transaction. Reads `--rx N` MISO bytes after the TX stream. Requires the proxy bridge to be already loaded (`tri fpga proxy-load` first).", "Diagnostic: probe the IR capture pattern after selecting an IR. A healthy 7-series TAP always captures `0b000001` into the IR shift register. Anything else means the JTAG chain is broken or the cable is mis-driving TMS.", "Diagnostic: drive the full JEDEC-read flow end-to-end with maximum instrumentation, **including** the 0xAB Release-Power-down and 0x66+0x99 software-reset recovery attempts. Equivalent to `flash-id --verbose` plus auto-recovery.", "Build the QMTech XC7A100T-FGG676 JTAG-to-SPI proxy bitstream via the openXC7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). Requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on PATH. With `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `BSCAN_SPI_XC7A100T` constant picks it up on the next rebuild.", "Clone the openXC7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`.", "Generate a Lean 4 theorem from a `tri fpga measure-cclk --json` output. The theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. Useful for turning a real capture into a machine-checked proof without manual copy-paste.", "Print the PVT-derated N25Q128_3V SCK low/high bound for a supplied operating context. Also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope.", "Build the QMTech XC7A100T-FGG676 proxy bitstream via a Docker container running Xilinx Vivado. Clones our `openFPGALoader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spiOverJtag/`. On Apple Silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. With `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its SHA256 is printed."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "FPGA programming via the in-tree DLC10 driver (pure Rust)."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/gates.t27 b/specs/tools/tri/gates.t27 new file mode 100644 index 0000000000..3339b95c54 --- /dev/null +++ b/specs/tools/tri/gates.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/gates.t27 -- tool tri/gates, the `tri gates` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/gates). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_gates; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/gates"; +pub const COMMAND : str = "tri gates"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Gates"; +pub const SOURCE : str = "cli/tri/src/gates.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Find workflows that have never once succeeded."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [13]str = ["warnings", "sweep", "mutate", "prs", "preview", "shell", "quiet", "fetches", "empty", "required", "dead", "tests", "unmeasured"]; +pub const ACTIONS_ABOUT : [13]str = ["Classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it.", "Run every gate script and its negative control; name the ones with none.", "Break each gate's failure path and demand its control notices.", "Open pull requests whose path-filtered CI never ran.", "What the tree says is required, against what the ruleset requires.", "Which interpreter each gate step is handed to, and who says so.", "Gate steps whose PASS is reachable with the thing they check absent.", "Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.", "Run every gate CI runs, in an EMPTY tree, and report what still passes.", "", "List active workflows whose lifetime success count is zero.", "Workflows with no recent run on the default branch: their green is about frequency, not health.", ""]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Find workflows that have never once succeeded."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/gen.t27 b/specs/tools/tri/gen.t27 new file mode 100644 index 0000000000..51125e5ca1 --- /dev/null +++ b/specs/tools/tri/gen.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/gen.t27 -- tool tri/gen, the `tri gen` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/gen). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_gen; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/gen"; +pub const COMMAND : str = "tri gen"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Gen"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Generates backends from a .t27 spec file using t27c."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_gen description (cli/tri-mcp/src/main.rs); handler cmd_gen runs t27c gen-verilog, gen-c, gen-rust (cli/tri/src/main.rs:862)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = [""]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [2]str = ["C", "T"]; +pub const AGENTS_NOTE : str = ".claude/agents/agent-c-compiler.md:40 (tri gen -- Generate code from specs; trigger On tri gen command, line 7); .claude/agents/trinity.md:68 (5. Gen - Run tri gen)."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Generates backends from a .t27 spec file using t27c."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/harness.t27 b/specs/tools/tri/harness.t27 new file mode 100644 index 0000000000..967fff4ab2 --- /dev/null +++ b/specs/tools/tri/harness.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/harness.t27 -- tool tri/harness, the `tri harness` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/harness). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_harness; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/harness"; +pub const COMMAND : str = "tri harness"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Harness"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Source files no crate root reaches, and so nothing compiles. Test-harness hygiene."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Harness (cli/tri/src/main.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["scratch"]; +pub const ACTIONS_ABOUT : [1]str = ["Test binaries whose tests share one scratch directory."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Source files no crate root reaches, and so nothing compiles. Test-harness hygiene."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/health.t27 b/specs/tools/tri/health.t27 new file mode 100644 index 0000000000..f619745363 --- /dev/null +++ b/specs/tools/tri/health.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/health.t27 -- tool tri/health, the `tri health` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/health). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_health; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/health"; +pub const COMMAND : str = "tri health"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Health"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Returns queen and swarm health status from .trinity state."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_health description (cli/tri-mcp/src/main.rs); handler cmd_health reads .trinity/state/queen-health.json (cli/tri/src/main.rs:969)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = [""]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Returns queen and swarm health status from .trinity state."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/hooks.t27 b/specs/tools/tri/hooks.t27 new file mode 100644 index 0000000000..57a1154d88 --- /dev/null +++ b/specs/tools/tri/hooks.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/hooks.t27 -- tool tri/hooks, the `tri hooks` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/hooks). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_hooks; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/hooks"; +pub const COMMAND : str = "tri hooks"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Hooks"; +pub const SOURCE : str = "cli/tri/src/hooks.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Pure-Rust ports of repository commit / push gates."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [8]str = ["pre-commit", "fix-carries-source", "pre-push", "commit-msg", "l1-check", "now-gate", "session-gate", "status"]; +pub const ACTIONS_ABOUT : [8]str = ["Run every migrated commit-time gate in sequence (l1-check + now-gate).", "A pull request whose title claims a compiler fix must carry a source file.", "Ask the required NOW gate's own script whether this push adds an entry.", "L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.", "L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).", "Verify a fresh `docs/now/-.md` entry exists.", "Session-start guard for the Claude Code harness. Emits a one-line status string to stdout; never blocks (the Bash gate is a soft telemetry hook).", "Which hooks git will actually run, and whose installer output is dead."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Pure-Rust ports of repository commit / push gates."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/issues.t27 b/specs/tools/tri/issues.t27 new file mode 100644 index 0000000000..7561c7257e --- /dev/null +++ b/specs/tools/tri/issues.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/issues.t27 -- tool tri/issues, the `tri issues` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/issues). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_issues; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/issues"; +pub const COMMAND : str = "tri issues"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Issues"; +pub const SOURCE : str = "cli/tri/src/issues.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Open issues whose headline calls a workflow red, against what that workflow concludes on master today."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [3]str = ["stale", "numbers", "dated"]; +pub const ACTIONS_ABOUT : [3]str = ["Open issues whose title calls a workflow red, and what it does today.", "Open issues that state a COUNT in the title, and a reproducible sample.", "Open issues whose figure is ANCHORED, so re-measuring it proves nothing."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Open issues whose headline calls a workflow red, against what that workflow concludes on master today."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/jumps.t27 b/specs/tools/tri/jumps.t27 new file mode 100644 index 0000000000..b57fe9033a --- /dev/null +++ b/specs/tools/tri/jumps.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/jumps.t27 -- tool tri/jumps, the `tri jumps` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/jumps). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_jumps; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/jumps"; +pub const COMMAND : str = "tri jumps"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Jumps"; +pub const SOURCE : str = "cli/tri/src/jumps.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "What happened to every `break` and `continue` the Verilog emitter had to lower?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["census"]; +pub const ACTIONS_ABOUT : [1]str = ["Name every `break`/`continue` site in the generated Verilog and say what it lowered to."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "What happened to every `break` and `continue` the Verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. Both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output PARSES said yes for as long as the emitter has existed. See #2988."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/kinds.t27 b/specs/tools/tri/kinds.t27 new file mode 100644 index 0000000000..00541abd86 --- /dev/null +++ b/specs/tools/tri/kinds.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/kinds.t27 -- tool tri/kinds, the `tri kinds` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/kinds). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_kinds; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/kinds"; +pub const COMMAND : str = "tri kinds"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Kinds"; +pub const SOURCE : str = "cli/tri/src/kinddrift.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Match arms whose own comment names a case the pattern omits."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["drift"]; +pub const ACTIONS_ABOUT : [1]str = ["Match arms whose comment names a construct the pattern does not cover."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Match arms whose own comment names a case the pattern omits."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/lean.t27 b/specs/tools/tri/lean.t27 new file mode 100644 index 0000000000..36dbfce5f1 --- /dev/null +++ b/specs/tools/tri/lean.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/lean.t27 -- tool tri/lean, the `tri lean` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/lean). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_lean; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/lean"; +pub const COMMAND : str = "tri lean"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Lean"; +pub const SOURCE : str = "cli/tri/src/leanvac.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Completeness theorems whose Lean model is empty."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["vacuous", "reach"]; +pub const ACTIONS_ABOUT : [2]str = ["Completeness theorems whose model has no functions.", "Proof files the build root does not reach, and so nothing compiles."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Completeness theorems whose Lean model is empty."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/ledgers.t27 b/specs/tools/tri/ledgers.t27 new file mode 100644 index 0000000000..84c2fb8ba3 --- /dev/null +++ b/specs/tools/tri/ledgers.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/ledgers.t27 -- tool tri/ledgers, the `tri ledgers` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/ledgers). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_ledgers; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/ledgers"; +pub const COMMAND : str = "tri ledgers"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Ledgers"; +pub const SOURCE : str = "cli/tri/src/ledgers.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Does each ledger's gate notice when one of its entries stops being true?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["audit"]; +pub const ACTIONS_ABOUT : [1]str = ["Plant a stale entry in each ledger and demand its gate fail."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Does each ledger's gate notice when one of its entries stops being true?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/loop.t27 b/specs/tools/tri/loop.t27 new file mode 100644 index 0000000000..37d5abf3b4 --- /dev/null +++ b/specs/tools/tri/loop.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/loop.t27 -- tool tri/loop, the `tri loop` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/loop). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_loop; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/loop"; +pub const COMMAND : str = "tri loop"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Loop"; +pub const SOURCE : str = "cli/tri/src/loopclaim.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["claim"]; +pub const ACTIONS_ABOUT : [1]str = ["Take the named claim, or say who already holds it."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/merging.t27 b/specs/tools/tri/merging.t27 new file mode 100644 index 0000000000..e1ae5613a2 --- /dev/null +++ b/specs/tools/tri/merging.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/merging.t27 -- tool tri/merging, the `tri merging` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/merging). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_merging; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/merging"; +pub const COMMAND : str = "tri merging"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Merging"; +pub const SOURCE : str = "cli/tri/src/inflight.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Is a merge in flight here, and does this branch carry the base?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [2]str = ["--base: The base this branch is supposed to carry. A ref, not a URL.", "--depth: Also check the commits behind HEAD, not only HEAD itself."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Is a merge in flight here, and does this branch carry the base?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/misread.t27 b/specs/tools/tri/misread.t27 new file mode 100644 index 0000000000..d2c8514263 --- /dev/null +++ b/specs/tools/tri/misread.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/misread.t27 -- tool tri/misread, the `tri misread` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/misread). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_misread; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/misread"; +pub const COMMAND : str = "tri misread"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Misread"; +pub const SOURCE : str = "cli/tri/src/misread.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "The specs the compiler reads WRONGLY. Every gate is green on them."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [2]str = ["--specs-dir: Root of the spec tree.", "--list: Name every spec under each shape rather than only counting."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "The specs the compiler reads WRONGLY. Every gate is green on them."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/mods.t27 b/specs/tools/tri/mods.t27 new file mode 100644 index 0000000000..0da51266c3 --- /dev/null +++ b/specs/tools/tri/mods.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/mods.t27 -- tool tri/mods, the `tri mods` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/mods). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_mods; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/mods"; +pub const COMMAND : str = "tri mods"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Mods"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "`tri mods orphan` -- `.rs` files no crate root reaches."; +pub const ABOUT_SOURCE : str = "//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["orphan"]; +pub const ACTIONS_ABOUT : [1]str = ["List them."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "`tri mods orphan` -- `.rs` files no crate root reaches."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/mutate.t27 b/specs/tools/tri/mutate.t27 new file mode 100644 index 0000000000..4d224e883e --- /dev/null +++ b/specs/tools/tri/mutate.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/mutate.t27 -- tool tri/mutate, the `tri mutate` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/mutate). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_mutate; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/mutate"; +pub const COMMAND : str = "tri mutate"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Mutate"; +pub const SOURCE : str = "cli/tri/src/mutate.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Find the constants in a checker that nothing actually checks."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["run"]; +pub const ACTIONS_ABOUT : [1]str = ["Perturb each numeric literal in a file and report which ones the checker does not notice."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Find the constants in a checker that nothing actually checks."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/now.t27 b/specs/tools/tri/now.t27 new file mode 100644 index 0000000000..7b0affd7c4 --- /dev/null +++ b/specs/tools/tri/now.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/now.t27 -- tool tri/now, the `tri now` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/now). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_now; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/now"; +pub const COMMAND : str = "tri now"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Now"; +pub const SOURCE : str = "cli/tri/src/nownote.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Write a docs/now/ entry without hand-writing the frame."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["add", "check"]; +pub const ACTIONS_ABOUT : [2]str = ["Write a docs/now/ entry: title, bullets, optional issue ref.", "Ask the REQUIRED `check` gate its own question, before pushing."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Write a docs/now/ entry without hand-writing the frame."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/one-away.t27 b/specs/tools/tri/one-away.t27 new file mode 100644 index 0000000000..1854c0e758 --- /dev/null +++ b/specs/tools/tri/one-away.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/one-away.t27 -- tool tri/one-away, the `tri one-away` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/one-away). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_one_away; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/one-away"; +pub const COMMAND : str = "tri one-away"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::OneAway"; +pub const SOURCE : str = "cli/tri/src/oneaway.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Failing specs one defect from compiling, and what that defect is"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [4]str = ["--names: Also list every spec, not only the class tally.", "--errors: Report specs with exactly this many errors. The default, 1, is the only bucket a single repair can move; `--errors 2` is the next wave.", "--limit: Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.", "--self-check: Run the controls and report, changing nothing."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Failing specs one defect from compiling, and what that defect is"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/orphaned.t27 b/specs/tools/tri/orphaned.t27 new file mode 100644 index 0000000000..ddfbb5efa5 --- /dev/null +++ b/specs/tools/tri/orphaned.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/orphaned.t27 -- tool tri/orphaned, the `tri orphaned` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/orphaned). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_orphaned; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/orphaned"; +pub const COMMAND : str = "tri orphaned"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Orphaned"; +pub const SOURCE : str = "cli/tri/src/orphaned.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Checks whose input is not in the tree."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["list"]; +pub const ACTIONS_ABOUT : [1]str = ["List gate and tool sources that name an input which is not in the tree."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Checks whose input is not in the tree."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/pr.t27 b/specs/tools/tri/pr.t27 new file mode 100644 index 0000000000..91af5c181b --- /dev/null +++ b/specs/tools/tri/pr.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/pr.t27 -- tool tri/pr, the `tri pr` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/pr). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_pr; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/pr"; +pub const COMMAND : str = "tri pr"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Pr"; +pub const SOURCE : str = "cli/tri/src/prcheck.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Is this pull request actually safe to merge?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["landed", "ready"]; +pub const ACTIONS_ABOUT : [2]str = ["Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?", ""]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Is this pull request actually safe to merge?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/prose.t27 b/specs/tools/tri/prose.t27 new file mode 100644 index 0000000000..531fbb32f1 --- /dev/null +++ b/specs/tools/tri/prose.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/prose.t27 -- tool tri/prose, the `tri prose` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/prose). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_prose; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/prose"; +pub const COMMAND : str = "tri prose"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Prose"; +pub const SOURCE : str = "cli/tri/src/prose.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Specs a literate author left prose in, and how far that prose is from code."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["report"]; +pub const ACTIONS_ABOUT : [1]str = ["Which specs are blocked only by prose, and how many lines that is."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Specs a literate author left prose in, and how far that prose is from code."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/quantifiers.t27 b/specs/tools/tri/quantifiers.t27 new file mode 100644 index 0000000000..2507ba1e91 --- /dev/null +++ b/specs/tools/tri/quantifiers.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/quantifiers.t27 -- tool tri/quantifiers, the `tri quantifiers` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/quantifiers). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_quantifiers; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/quantifiers"; +pub const COMMAND : str = "tri quantifiers"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Quantifiers"; +pub const SOURCE : str = "cli/tri/src/quant.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Every quantified clause, its binders, and the size of its domain."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["report", "audit"]; +pub const ACTIONS_ABOUT : [2]str = ["Every quantified clause, its binders, and the size of its domain.", "Every line carrying a quantifier keyword, and whether the census read it."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Every quantified clause, its binders, and the size of its domain."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/red.t27 b/specs/tools/tri/red.t27 new file mode 100644 index 0000000000..fff1a83c59 --- /dev/null +++ b/specs/tools/tri/red.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/red.t27 -- tool tri/red, the `tri red` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/red). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_red; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/red"; +pub const COMMAND : str = "tri red"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Red"; +pub const SOURCE : str = "cli/tri/src/red.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "`tri red` -- what is failing on main right now, and since when."; +pub const ABOUT_SOURCE : str = "//! module doc, cli/tri/src/red.rs:1"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["now", "why"]; +pub const ACTIONS_ABOUT : [2]str = ["Show workflows whose most recent run on the default branch failed.", "Which STEP each recent failure of one workflow died at, oldest first."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "`tri red` -- what is failing on main right now, and since when."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/reseal.t27 b/specs/tools/tri/reseal.t27 new file mode 100644 index 0000000000..dcf6f3bebf --- /dev/null +++ b/specs/tools/tri/reseal.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/reseal.t27 -- tool tri/reseal, the `tri reseal` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/reseal). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_reseal; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/reseal"; +pub const COMMAND : str = "tri reseal"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Reseal"; +pub const SOURCE : str = "cli/tri/src/reseal.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Recompute the FROZEN_HASH seal from the file it seals."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["write", "check"]; +pub const ACTIONS_ABOUT : [2]str = ["Rewrite FROZEN_HASH from the current bytes of the sealed file.", "Report whether the seal matches, and exit non-zero if it does not."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Recompute the FROZEN_HASH seal from the file it seals."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/rtl.t27 b/specs/tools/tri/rtl.t27 new file mode 100644 index 0000000000..fd556a3db3 --- /dev/null +++ b/specs/tools/tri/rtl.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/rtl.t27 -- tool tri/rtl, the `tri rtl` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/rtl). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_rtl; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/rtl"; +pub const COMMAND : str = "tri rtl"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Rtl"; +pub const SOURCE : str = "cli/tri/src/rtl.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["check"]; +pub const ACTIONS_ABOUT : [1]str = ["Run the five structural checks on a design directory."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/seals.t27 b/specs/tools/tri/seals.t27 new file mode 100644 index 0000000000..7a66729a62 --- /dev/null +++ b/specs/tools/tri/seals.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/seals.t27 -- tool tri/seals, the `tri seals` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/seals). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_seals; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/seals"; +pub const COMMAND : str = "tri seals"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Seals"; +pub const SOURCE : str = "cli/tri/src/seals.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "What `.trinity/seals` says about a spec, when it says it twice."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [5]str = ["fresh", "drift", "twins", "sync-twins", "hollow"]; +pub const ACTIONS_ABOUT : [5]str = ["Is the built compiler newer than the source the seals are checked against?", "Seals whose claims no longer match what the compiler produces, and the one command that repairs them.", "Specs that carry more than one seal, and which of those pairs disagree.", "Copy the NEWEST seal's claims onto its twins, after a re-seal.", "Seals that record `gen_hash=none` -- a spec that produced no output, sealed."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "What `.trinity/seals` says about a spec, when it says it twice."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/serve.t27 b/specs/tools/tri/serve.t27 new file mode 100644 index 0000000000..0621069e18 --- /dev/null +++ b/specs/tools/tri/serve.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/serve.t27 -- tool tri/serve, the `tri serve` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/serve). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_serve; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/serve"; +pub const COMMAND : str = "tri serve"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Serve"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on ."; +pub const ABOUT_SOURCE : str = "handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = ["--addr"]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on ."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/skill.t27 b/specs/tools/tri/skill.t27 new file mode 100644 index 0000000000..766d9aab35 --- /dev/null +++ b/specs/tools/tri/skill.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/skill.t27 -- tool tri/skill, the `tri skill` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/skill). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_skill; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/skill"; +pub const COMMAND : str = "tri skill"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Skill"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool)."; +pub const ABOUT_SOURCE : str = "tri-mcp tools tri_skill_begin and tri_skill_end descriptions (cli/tri-mcp/src/main.rs); SkillAction enum cli/tri/src/main.rs:349"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [9]str = ["add", "fold", "check", "lost", "refs", "claims", "renumber", "begin", "end"]; +pub const ACTIONS_ABOUT : [9]str = ["Write a new lesson to the spool, unnumbered.", "Fold every spooled lesson into SKILL.md, numbering them on the way in.", "Check every SKILL.md's section numbering for collisions.", "Sections whose body was cut short at some point in the file's history.", "Every cross-reference in the skills, and whether it resolves.", "Sections that state a FIGURE, and which of those a reader can re-take.", "Move sections you appended to the numbers the base branch left free.", "", ""]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool)."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/status.t27 b/specs/tools/tri/status.t27 new file mode 100644 index 0000000000..24e985ceee --- /dev/null +++ b/specs/tools/tri/status.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/status.t27 -- tool tri/status, the `tri status` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/status). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_status; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/status"; +pub const COMMAND : str = "tri status"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Status"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_status description (cli/tri-mcp/src/main.rs); handler cmd_status prints === PHI LOOP STATUS === (cli/tri/src/main.rs:613)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/sweep.t27 b/specs/tools/tri/sweep.t27 new file mode 100644 index 0000000000..13f6eae345 --- /dev/null +++ b/specs/tools/tri/sweep.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/sweep.t27 -- tool tri/sweep, the `tri sweep` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/sweep). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_sweep; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/sweep"; +pub const COMMAND : str = "tri sweep"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Sweep"; +pub const SOURCE : str = "cli/tri/src/sweep.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Synthesise across a parameter and check the area actually moves."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["area"]; +pub const ACTIONS_ABOUT : [1]str = ["Synthesise a top across values of one parameter and report the trend."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Synthesise across a parameter and check the area actually moves."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/synth.t27 b/specs/tools/tri/synth.t27 new file mode 100644 index 0000000000..f3f44eb516 --- /dev/null +++ b/specs/tools/tri/synth.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/synth.t27 -- tool tri/synth, the `tri synth` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/synth). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_synth; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/synth"; +pub const COMMAND : str = "tri synth"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Synth"; +pub const SOURCE : str = "cli/tri/src/synth.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Synthesise a top module and report area, with the instrument named."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["area"]; +pub const ACTIONS_ABOUT : [1]str = ["Synthesise a top module and report LUT/DSP/FF/CARRY4 counts."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Synthesise a top module and report area, with the instrument named."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/test.t27 b/specs/tools/tri/test.t27 new file mode 100644 index 0000000000..3504a9a866 --- /dev/null +++ b/specs/tools/tri/test.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/test.t27 -- tool tri/test, the `tri test` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/test). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_test; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/test"; +pub const COMMAND : str = "tri test"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Test"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Runs tests for a .t27 spec file using t27c."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = [""]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [2]str = ["T", "V"]; +pub const AGENTS_NOTE : str = ".claude/agents/agent-v-verify.md:47 (tri test -- Run conformance tests); .claude/agents/trinity.md:70 (7. Verify - Run tri test)."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Runs tests for a .t27 spec file using t27c."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/topic.t27 b/specs/tools/tri/topic.t27 new file mode 100644 index 0000000000..9f6646a441 --- /dev/null +++ b/specs/tools/tri/topic.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/topic.t27 -- tool tri/topic, the `tri topic` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/topic). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_topic; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/topic"; +pub const COMMAND : str = "tri topic"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Topic"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Has anyone already done this, or are they doing it now?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Topic (cli/tri/src/main.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [2]str = [": Words to look for. A row matches on any; rows carrying more come first.", "--commits: How many recent commits on the base branch to read."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Has anyone already done this, or are they doing it now?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/types.t27 b/specs/tools/tri/types.t27 new file mode 100644 index 0000000000..19c52bf8c6 --- /dev/null +++ b/specs/tools/tri/types.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/types.t27 -- tool tri/types, the `tri types` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/types). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_types; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/types"; +pub const COMMAND : str = "tri types"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Types"; +pub const SOURCE : str = "cli/tri/src/types_dup.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "One type name, more than one definition."; +pub const ABOUT_SOURCE : str = "//! module doc, cli/tri/src/types_dup.rs:1"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [4]str = ["dup", "ratchet", "classified", "redef"]; +pub const ACTIONS_ABOUT : [4]str = ["Type names with more than one definition in the spec tree.", "Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.", "Cross-check the written classification against what the tree says today.", "Names defined more than once INSIDE ONE FILE."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "One type name, more than one definition."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/unparsed.t27 b/specs/tools/tri/unparsed.t27 new file mode 100644 index 0000000000..c7d07b11ea --- /dev/null +++ b/specs/tools/tri/unparsed.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/unparsed.t27 -- tool tri/unparsed, the `tri unparsed` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/unparsed). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_unparsed; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/unparsed"; +pub const COMMAND : str = "tri unparsed"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Unparsed"; +pub const SOURCE : str = "cli/tri/src/unparsed.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe."; +pub const ABOUT_SOURCE : str = "//! module doc, cli/tri/src/unparsed.rs:1"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [4]str = ["report", "locate", "agree", "probe"]; +pub const ACTIONS_ABOUT : [4]str = ["Rank the constructs that stop the compiler, most specs first.", "For each unreadable spec, the ITEM whose presence causes the failure.", "Cross-check the census against an INDEPENDENTLY built population.", "Run every construct's minimal source and say which the compiler rejects."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/vectors.t27 b/specs/tools/tri/vectors.t27 new file mode 100644 index 0000000000..fd26b15816 --- /dev/null +++ b/specs/tools/tri/vectors.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/vectors.t27 -- tool tri/vectors, the `tri vectors` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/vectors). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_vectors; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/vectors"; +pub const COMMAND : str = "tri vectors"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Vectors"; +pub const SOURCE : str = "cli/tri/src/vectors.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [2]str = ["run", "debt"]; +pub const ACTIONS_ABOUT : [2]str = ["Generate a module's Verilog and execute its registered vectors.", "Inventory every vector file: executed, debt, or aspirational."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/verdict.t27 b/specs/tools/tri/verdict.t27 new file mode 100644 index 0000000000..42031ae243 --- /dev/null +++ b/specs/tools/tri/verdict.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/verdict.t27 -- tool tri/verdict, the `tri verdict` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/verdict). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_verdict; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/verdict"; +pub const COMMAND : str = "tri verdict"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Verdict"; +pub const SOURCE : str = "cli/tri/src/main.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; This variant carries no /// doc; ABOUT quotes the source named in ABOUT_SOURCE instead. +pub const ABOUT : str = "Checks for toxic regressions by analyzing swarm health metrics."; +pub const ABOUT_SOURCE : str = "tri-mcp tool tri_verdict description (cli/tri-mcp/src/main.rs); handler cmd_verdict runs t27c validate-seals, validate-phi-identity and, with --toxic, validate-toxicity (cli/tri/src/main.rs:876)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [1]str = ["--toxic"]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [1]str = ["V"]; +pub const AGENTS_NOTE : str = ".claude/agents/agent-v-verify.md:49 (tri verdict -- Generate pass/fail report); docs/agents/AGENTS_ALPHABET.md:80, PHASE 5 VERDICT: V analyzes metrics, tri verdict --toxic."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Checks for toxic regressions by analyzing swarm health metrics."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/vsim.t27 b/specs/tools/tri/vsim.t27 new file mode 100644 index 0000000000..1bff870639 --- /dev/null +++ b/specs/tools/tri/vsim.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/vsim.t27 -- tool tri/vsim, the `tri vsim` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/vsim). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_vsim; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/vsim"; +pub const COMMAND : str = "tri vsim"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Vsim"; +pub const SOURCE : str = "cli/tri/src/vsim.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "How far each spec gets when its generated Verilog is actually RUN."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [1]str = ["funnel"]; +pub const ACTIONS_ABOUT : [1]str = ["Walk the corpus through `t27c icarus-simulate` and print the funnel."]; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [0]str = []; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "How far each spec gets when its generated Verilog is actually RUN. The one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/window.t27 b/specs/tools/tri/window.t27 new file mode 100644 index 0000000000..8304b86f91 --- /dev/null +++ b/specs/tools/tri/window.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/window.t27 -- tool tri/window, the `tri window` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/window). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_window; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/window"; +pub const COMMAND : str = "tri window"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Window"; +pub const SOURCE : str = "cli/tri/src/window.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "Was the base you measured against still the tip when you reported?"; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [4]str = ["--start: Record `origin/master` as the base of a measurement starting now.", "--check: Report whether the recorded base is still the tip, and refuse if it is not.", "--base: The ref the measurement is against. Defaults to `origin/master`.", "--self-check: Run the controls and report, changing nothing."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "Was the base you measured against still the tip when you reported?"; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true; diff --git a/specs/tools/tri/worktrees.t27 b/specs/tools/tri/worktrees.t27 new file mode 100644 index 0000000000..140aa5d9a8 --- /dev/null +++ b/specs/tools/tri/worktrees.t27 @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/tri/worktrees.t27 -- tool tri/worktrees, the `tri worktrees` command of the tri CLI +; Source of truth for the tool card on t27.ai (#/tools?tool=tri/worktrees). +; Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: +; cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). +; Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module tool_tri_worktrees; + +pub const KIND : str = "tool"; +pub const FAMILY : str = "tri-cli"; +pub const ID : str = "tri/worktrees"; +pub const COMMAND : str = "tri worktrees"; +; clap enum variant and where the dispatch lands +pub const VARIANT : str = "Commands::Worktrees"; +pub const SOURCE : str = "cli/tri/src/trees.rs"; +pub const ENTRY : str = "cli/tri/src/main.rs"; +; The clap about text (first /// paragraph), as `tri --help` would print it. +pub const ABOUT : str = "What the checkouts on this disk are holding. Deletes nothing."; +pub const ABOUT_SOURCE : str = "clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)"; +; Nested subcommands (kebab-case as clap derives them) and their first /// paragraph ("" when none). +pub const ACTIONS : [0]str = []; +pub const ACTIONS_ABOUT : [0]str = []; +; Top-level arguments/flags of the command itself, ": doc". +pub const ARGS : [2]str = ["--size: Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.", "--all: Print every tree, not only those holding work or unreadable."]; +; Agent letters that own this command, only where a source line names it (AGENTS_NOTE cites it). +pub const AGENTS : [0]str = []; +pub const AGENTS_NOTE : str = "No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents."; +; From the about text (long about when the doc has more than one paragraph); no marketing. +pub const WHEN_TO_USE : str = "What the checkouts on this disk are holding. Deletes nothing."; +pub const WITNESS : str = "source-parse"; +pub const ENABLED : bool = true;