Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 186 additions & 0 deletions apps/website/i18n/agents.ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,192 @@
"welcome-avatar-generate": {
"SUMMARY": "Генерирует приветственный аватар для нового пользователя: проверяет бота, выбирает героя, резервирует слот подарка, генерирует изображение и отправляет приветственное сообщение.",
"NAME": "Приветственный аватар"
},
"mcp/gitbutler": {
"SUMMARY": "Внешний MCP-сервер GitButler, запускаемый как `but mcp`; репозиторий лишь регистрирует его в .mcp.json."
},
"mcp/needle": {
"SUMMARY": "MCP-сервер на Zig для AST-осознанного редактирования кода (needle): структурный поиск и замена, гейты качества, предпросмотр."
},
"mcp/neon": {
"SUMMARY": "Внешний MCP-сервер `neon`, зарегистрированный в .mcp.json; запускается как `npx -y @neondatabase/mcp-server-neon start`."
},
"mcp/notebooklm": {
"SUMMARY": "Внешний MCP-сервер `notebooklm`, зарегистрированный в .claude/mcp.json; запускается как `notebooklm-mcp`."
},
"mcp/railway-mcp-server": {
"SUMMARY": "Внешний MCP-сервер `railway-mcp-server`, зарегистрированный в .mcp.json; запускается как `npx -y @railway/mcp-server`."
},
"mcp/t27-traceability": {
"SUMMARY": "MCP-сервер по stdio, проверяющий L1 TRACEABILITY (Closes #N) в сообщениях коммитов и описаниях PR, генерирующий соответствующие сообщения коммитов, валидирующий имена веток и отдающий шаблон стековых веток PHI LOOP; ресурсы открывают конституцию и аудит L1."
},
"mcp/tri-mcp": {
"SUMMARY": "MCP-сервер на Rust, открывающий команды tri PHI LOOP как инструменты: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."
},
"mcp/tri-ssot": {
"SUMMARY": "Интеграция SSOT для t27: GitHub Issues + PR + документация -> NotebookLM."
},
"mcp/trinity": {
"SUMMARY": "MCP-сервер на Zig (JSON-RPC по stdio, кадрирование Content-Length), открывающий инструменты конвейера tri, звеньев Golden Chain, роя, облака/фермы, FPGA, doctor, job, issue, deploy, experience, oracle и needle; статический список writeToolsList плюс инструменты ячеек, подгружаемые во время выполнения."
},
"mcp/zig-docs": {
"SUMMARY": "Внешний MCP-сервер `zig-docs`, зарегистрированный в .mcp.json; запускается как `npx -y @nichochar/zig-mcp@latest`."
},
"tri/abandoned": {
"SUMMARY": "Точки восстановления, чей собственный комментарий называет отбрасываемую конструкцию."
},
"tri/cell": {
"SUMMARY": "Записывает шаг-контрольную точку в активной ячейке; запечатывает активную ячейку, вычисляя SHA-256 истории её контрольных точек."
},
"tri/census": {
"SUMMARY": "Спеки, которые компилятор не может прочитать, ранжированные по конструкции, которая его останавливает. Напечатанная популяция каждой переписи против одной, посчитанной иначе."
},
"tri/ci": {
"SUMMARY": "Действительно ли подключено оборудование, которое предполагает этот план? Вопросы CI о собственных гейтах репозитория."
},
"tri/competitors": {
"SUMMARY": "Таблица конкурентов против собственного контракта: сколько её опубликованных оценок никогда не публиковались и сколько статей она считает дважды."
},
"tri/discard": {
"SUMMARY": "Что парсер читает и выбрасывает, в сравнении с закреплённой границей."
},
"tri/doctor": {
"SUMMARY": "Запускает, останавливает или показывает состояние doctor, хранимое в .trinity/state/doctor.json (действия: start | stop | status)."
},
"tri/elab": {
"SUMMARY": "Классифицирует вывод ошибок компилятора прежде, чем цитировать из него число."
},
"tri/emit": {
"SUMMARY": "Даёт ли один и тот же бинарник один и тот же сгенерированный код дважды?"
},
"tri/experience": {
"SUMMARY": "Сохраняет эпизод опыта в акашический журнал."
},
"tri/fleet": {
"SUMMARY": "`tri fleet` -- действительно ли подключено оборудование, которое предполагает этот план?"
},
"tri/fmt": {
"SUMMARY": "Имена типов с более чем одним определением в дереве спеков. Запускает форматтер и восстанавливает каждый переписанный им файл, которого вы не трогали."
},
"tri/fpga": {
"SUMMARY": "Программирование FPGA через встроенный драйвер DLC10 (чистый Rust)."
},
"tri/gates": {
"SUMMARY": "Находит воркфлоу, которые ни разу не завершались успешно."
},
"tri/gen": {
"SUMMARY": "Генерирует бэкенды из файла спецификации .t27 через t27c."
},
"tri/harness": {
"SUMMARY": "Исходные файлы, до которых не доходит ни один корень крейта, и потому ничего не компилируется. Гигиена тестового харнесса."
},
"tri/health": {
"SUMMARY": "Показывает состояние здоровья королевы и роя из состояния .trinity."
},
"tri/hooks": {
"SUMMARY": "Порты гейтов коммита/пуша репозитория на чистом Rust."
},
"tri/issues": {
"SUMMARY": "Открытые issue, чей заголовок называет воркфлоу красным, против того, к чему этот воркфлоу приходит на master сегодня."
},
"tri/jumps": {
"SUMMARY": "Что случилось с каждым `break` и `continue`, которые эмиттеру Verilog пришлось опустить?"
},
"tri/kinds": {
"SUMMARY": "Ветви match, чей собственный комментарий называет случай, который паттерн пропускает."
},
"tri/lean": {
"SUMMARY": "Теоремы полноты, у которых модель Lean пуста."
},
"tri/ledgers": {
"SUMMARY": "Замечает ли гейт каждого леджера, когда одна из его записей перестаёт быть истинной?"
},
"tri/loop": {
"SUMMARY": "Что падает на ветке по умолчанию прямо сейчас и с какого момента. Берёт именованную заявку, чтобы две сессии лупа не взяли одну задачу."
},
"tri/merging": {
"SUMMARY": "Идёт ли здесь мерж, и несёт ли эта ветка базу?"
},
"tri/misread": {
"SUMMARY": "Спеки, которые компилятор читает НЕВЕРНО. Все гейты на них зелёные."
},
"tri/mods": {
"SUMMARY": "`tri mods orphan` -- файлы `.rs`, до которых не доходит ни один корень крейта."
},
"tri/mutate": {
"SUMMARY": "Находит в чекере константы, которые на деле ничем не проверяются."
},
"tri/now": {
"SUMMARY": "Пишет запись docs/now/ без ручного набора рамки."
},
"tri/one-away": {
"SUMMARY": "Падающие спеки, которым до компиляции один дефект, и какой именно."
},
"tri/orphaned": {
"SUMMARY": "Проверки, чей вход отсутствует в дереве."
},
"tri/pr": {
"SUMMARY": "Действительно ли этот pull request безопасно мержить?"
},
"tri/prose": {
"SUMMARY": "Спеки, в которых литературный автор оставил прозу, и насколько эта проза далека от кода."
},
"tri/quantifiers": {
"SUMMARY": "Каждая квантифицированная клауза, её связанные переменные и размер её домена."
},
"tri/red": {
"SUMMARY": "`tri red` -- что падает на main прямо сейчас и с какого момента."
},
"tri/reseal": {
"SUMMARY": "Пересчитывает печать FROZEN_HASH по файлу, который она запечатывает."
},
"tri/rtl": {
"SUMMARY": "Структурная проверка, которую предлагает t27.ai, локально: пять вердиктов, версия yosys рядом с числами и никаких заявлений о корректности."
},
"tri/seals": {
"SUMMARY": "Что `.trinity/seals` говорит о спеке, когда говорит это дважды."
},
"tri/serve": {
"SUMMARY": "Поднимает HTTP API trinity depin на axum: POST /prove, GET /epoch-challenge, GET /health; печатает «trinity depin v0.1.0 -- listening on <addr>»."
},
"tri/skill": {
"SUMMARY": "Начинает новую сессию скилла PHI LOOP, привязанную к issue; завершает активную сессию. Действия add/fold/check/lost/refs/claims/renumber ведут спул уроков SKILL.md и описаны в своих clap-доках."
},
"tri/status": {
"SUMMARY": "Показывает статус PHI LOOP: активный скилл, ячейку, привязку к issue и незакоммиченные изменения."
},
"tri/sweep": {
"SUMMARY": "Синтез по параметру с проверкой, что площадь действительно меняется."
},
"tri/synth": {
"SUMMARY": "Синтезирует top-модуль и сообщает площадь с указанием инструмента."
},
"tri/test": {
"SUMMARY": "Запускает тесты для файла спецификации .t27 через t27c."
},
"tri/topic": {
"SUMMARY": "Кто-нибудь уже делал это или делает сейчас?"
},
"tri/types": {
"SUMMARY": "Одно имя типа, больше одного определения."
},
"tri/unparsed": {
"SUMMARY": "Спеки, которые компилятор не может прочитать, ранжированные по КОНСТРУКЦИИ, которая его останавливает, -- и каждая конструкция, подтверждённая живой пробой."
},
"tri/vectors": {
"SUMMARY": "Реестр исполняемых векторов: запустить векторы модуля или проинвентаризировать, какие файлы исполняются, а какие только показываются."
},
"tri/verdict": {
"SUMMARY": "Проверяет токсичные регрессии, анализируя метрики здоровья роя."
},
"tri/vsim": {
"SUMMARY": "Как далеко доходит каждая спека, когда её сгенерированный Verilog действительно ЗАПУСКАЮТ."
},
"tri/window": {
"SUMMARY": "Была ли база, относительно которой вы мерили, всё ещё вершиной, когда вы отчитывались?"
},
"tri/worktrees": {
"SUMMARY": "Что держат чекауты на этом диске. Ничего не удаляет."
}
}
}
1 change: 1 addition & 0 deletions apps/website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
"test:sync-skills": "node --test scripts/sync-skills.test.mjs scripts/skills-core.test.mjs",
"test:sync-crons": "node --test scripts/sync-crons.test.mjs",
"check:agents": "node --experimental-strip-types qa/agents-spec-contract.mjs",
"check:tools": "node --experimental-strip-types qa/tools-spec-contract.mjs",
"test:agents-specs": "node --test scripts/agents-from-specs.test.mjs"
},
"dependencies": {
Expand Down
8 changes: 3 additions & 5 deletions apps/website/public/agents/experience.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": 1,
"generatedAt": "2026-09-09T14:34:56.907Z",
"generatedAt": "2026-09-09T17:03:41.298Z",
"attribution": {
"fields": [
"agent_letter",
Expand Down Expand Up @@ -51,8 +51,7 @@
"sources": [
{
"repo": "trinity",
"root": "/home/user/workspace/trinity",
"commit": "dbed0905268b21f68aa1c527091d91ecea2bda76",
"commit": "da84d38795aa97f9170bb670f04a328032aa6ffe",
"dir": ".trinity/experience",
"files": 440,
"episodes": 383,
Expand All @@ -70,8 +69,7 @@
},
{
"repo": "t27",
"root": "/home/user/workspace/t27",
"commit": "9874cc6cfd38b768a8792ecc2c2c7afa3abc20e1",
"commit": "95c9b61b97d487bec4279ca63eb3132da8d1721c",
"dir": ".trinity/experience",
"files": 2,
"episodes": 3,
Expand Down
2 changes: 1 addition & 1 deletion apps/website/public/agents/spec-agents.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion apps/website/public/crons/spec-crons.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion apps/website/public/functions/spec-functions.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion apps/website/public/skills/spec-skills.json

Large diffs are not rendered by default.

13 changes: 11 additions & 2 deletions apps/website/public/t27/files/specs/agents/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# specs/agents — the 27-agent alphabet as first-class `.t27` specs

> **Where this lives.** This directory in `gHashTag/t27` is the canonical home of these
> specs — edit them here. `gHashTag/trinity` keeps a vendored copy under
> `apps/website/public/t27/files/specs/agents/` 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.


One file per agent of the Trinity alphabet (`docs/agents/AGENTS_ALPHABET.md`, v3.0): A…Z and
the 27th seat, Ti. The `.t27` file is the source of truth for the agent card on t27.ai;
the JSON the site serves (`public/agents/spec-agents.json`) is generated from these files by
Expand Down Expand Up @@ -53,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/<command>`, `mcp/<server>`) 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) |

Expand Down
4 changes: 4 additions & 0 deletions apps/website/public/t27/files/specs/agents/a.t27
Original file line number Diff line number Diff line change
Expand Up @@ -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;
4 changes: 4 additions & 0 deletions apps/website/public/t27/files/specs/agents/b.t27
Original file line number Diff line number Diff line change
Expand Up @@ -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;
4 changes: 4 additions & 0 deletions apps/website/public/t27/files/specs/agents/c.t27
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Loading
Loading