diff --git a/apps/website/i18n/agents.ru.json b/apps/website/i18n/agents.ru.json index 7ee225e1ce..ffd162980f 100644 --- a/apps/website/i18n/agents.ru.json +++ b/apps/website/i18n/agents.ru.json @@ -674,6 +674,41 @@ }, "gHashTag/trinity:tri/wallet": { "SUMMARY": "Баланс кошелька DePIN." + }, + "crm-proactive-sweep": { + "SUMMARY": "Каждые полчаса определяет продавцов, которых обслуживает зарегистрированный носитель, и обходит каждого: по HTTP вызывает CRM-инструменты рендера, спрашивает модель, что делать дальше, и присылает продавцу в его собственный чат карточку для связи. В безопасном режиме прогон пропускается целиком.", + "NAME": "CRM: проактивный обход продавцов" + }, + "ton-pending-watch": { + "SUMMARY": "Каждый час читает незакрытые TON-счета, спрашивает у сети, действительно ли монеты пришли, и пишет в журнал рендера одну строку: либо что невостребованных нет, либо что человек заплатил, а зачисления не было. Только читает: платёж никогда не закрывает.", + "NAME": "Деньги: TON пришёл, но не зачислен" + }, + "robokassa-unclaimed-watch": { + "SUMMARY": "Каждое утро читает незакрытые счета Robokassa за последние тридцать дней, спрашивает у провайдера состояние каждого и пишет в журнал рендера одну строку: либо что невостребованных нет, либо что человек заплатил, а зачисления не было. Только читает: платёж никогда не закрывает.", + "NAME": "Деньги: рубли пришли, но не зачислены" + }, + "club-invoice-abandoned-watch": { + "SUMMARY": "Каждый час помечает как брошенные те клубные счета, которым больше часа и после которых не было оплаты, записывая по одной строке воронки на счёт, чтобы путь от карточки к счёту и дальше к оплате или отказу читался без ручного соединения таблиц. Ничего не списывает и никому не пишет.", + "NAME": "Воронка: клубные счета, которые никто не оплатил" + }, + "client-telemetry-daily": { + "SUMMARY": "Каждый день в 07:00 UTC собирает отчёт о том, куда дошли клиенты и где остановились, отправляет его владельцу и удаляет уже учтённые события. Там, где ежедневный советник отчитывается о деньгах, этот отчитывается о пользовании продуктом.", + "NAME": "Клиенты: ежедневный отчёт о пользовании владельцу" + }, + "inngest/999-multibots-telegraf/crm-proactive-sweep": { + "SUMMARY": "Обходит каждого продавца, которого обслуживает зарегистрированный носитель, и может прислать в его собственный чат по одной карточке для связи." + }, + "inngest/999-multibots-telegraf/ton-pending-watch": { + "SUMMARY": "Каждый час спрашивает у сети, пришли ли монеты по незакрытому TON-счёту, который так и не зачислили." + }, + "inngest/999-multibots-telegraf/robokassa-unclaimed-watch": { + "SUMMARY": "Каждое утро спрашивает Robokassa о незакрытых счетах за последние тридцать дней и сообщает о тех, что оплачены, но не зачислены." + }, + "inngest/999-multibots-telegraf/club-invoice-abandoned-watch": { + "SUMMARY": "Помечает как брошенные клубные счета, после которых час не было оплаты, по одному разу на счёт." + }, + "inngest/999-multibots-telegraf/client-telemetry-daily": { + "SUMMARY": "Отправляет владельцу ежедневный отчёт о том, куда дошли клиенты и где остановились, затем удаляет учтённые события." } } } diff --git a/apps/website/public/agents/spec-agents.json b/apps/website/public/agents/spec-agents.json index 7eba6bfd6f..40b6548920 100644 --- a/apps/website/public/agents/spec-agents.json +++ b/apps/website/public/agents/spec-agents.json @@ -1 +1 @@ -{"agents":[{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Bull - leader, primary force","CLARA_ROLE":"TA1: AR Architecture Design - designs AR module architecture, ensures composability","DOMAIN":"Architecture / ADR / SOUL","ENABLED":true,"ENTRY_INVARIANT":"SOUL.md exists, is ASCII-only, and defines L1-L7 laws","EXIT_INVARIANT":"All ADRs reviewed, consistent with constitution, no conflicts","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/A","KEY_FILES":["SOUL.md","architecture/ADR-*.md","architecture/CANON_DE_ZIGFICATION.md"],"KIND":"agent","LAYER":"Archetypal","LETTER":"A","LETTER_NAME":"Alpha","NAME":"Alpha (Architecture)","ORDINAL":1,"REGISTER":"R0","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/A","inSpecCorpus":true,"letter":"A","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_a","name":{"en":"Alpha (Architecture)","ru":"Альфа (Архитектура)"},"ordinal":1,"sha256":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","skills":[],"specPath":"specs/agents/a.t27","summary":{"en":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","ru":"Архитектура / ADR / SOUL. SOUL.md — первопричина, а ADR — конституция системы."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"House - container, dwelling","CLARA_ROLE":"","DOMAIN":"Build / Pipeline","ENABLED":true,"ENTRY_INVARIANT":"Build system is clean, no stale artifacts","EXIT_INVARIANT":"All tests pass, CI pipeline is green","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/B","KEY_FILES":["build.tri","src/tri/pipeline/"],"KIND":"agent","LAYER":"Archetypal","LETTER":"B","LETTER_NAME":"Beta","NAME":"Beta (Build)","ORDINAL":2,"REGISTER":"R1","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/B","inSpecCorpus":true,"letter":"B","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_b","name":{"en":"Beta (Build)","ru":"Бета (Сборка)"},"ordinal":2,"sha256":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","skills":[],"specPath":"specs/agents/b.t27","summary":{"en":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","ru":"Сборка / конвейер. build.tri — дом спецификаций, а конвейер — его жилище."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Camel - carrier across borders","CLARA_ROLE":"TA1: AR Language Implementation - implements AR language features in t27 compiler","DOMAIN":"Compiler Core / AR Language","ENABLED":true,"ENTRY_INVARIANT":"Parser can handle all AR syntax (ternary logic, rules, proofs)","EXIT_INVARIANT":"Generated code compiles, AST is valid","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/C","KEY_FILES":["t27/compiler/parser/","bootstrap/src/compiler.rs","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"C","LETTER_NAME":"Gamma","NAME":"Gamma (Compiler Core)","ORDINAL":3,"REGISTER":"R2","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","TOOLS":["tri/gen"],"TOOLS_NOTE":".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)."},"health":"ok","id":"t27/C","inSpecCorpus":true,"letter":"C","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_c","name":{"en":"Gamma (Compiler Core)","ru":"Гамма (Ядро компилятора)"},"ordinal":3,"sha256":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","skills":[],"specPath":"specs/agents/c.t27","summary":{"en":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","ru":"Ядро компилятора / язык AR. Компилятор переносит текст через границы: от спеки к сгенерированному коду."},"tools":[{"id":"tri/gen","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Door - transition between worlds","CLARA_ROLE":"","DOMAIN":"De-Zigfication / Migration","ENABLED":true,"ENTRY_INVARIANT":"Legacy Zig modules are catalogued and mapped","EXIT_INVARIANT":"All AR specs are in .t27 format, no Zig hand-editing on AR","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/D","KEY_FILES":["docs/migration-map.md","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"D","LETTER_NAME":"Delta","NAME":"Delta (De-Zigfication)","ORDINAL":4,"REGISTER":"R3","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/D","inSpecCorpus":true,"letter":"D","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_d","name":{"en":"Delta (De-Zigfication)","ru":"Дельта (Де-зигификация)"},"ordinal":4,"sha256":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","skills":[],"specPath":"specs/agents/d.t27","summary":{"en":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","ru":"Де-зигификация / миграция. Де-зигификация — открытая дверь из .zig в .t27."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Window - view into the past","CLARA_ROLE":"TA2: AR Explanation & XAI - generates human-readable explanations for AR outputs","DOMAIN":"Experience / XAI","ENABLED":true,"ENTRY_INVARIANT":"Episode log is append-only, no deletions","EXIT_INVARIANT":"Lessons learned are catalogued, explanations are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/E","KEY_FILES":[".trinity/experience/","specs/ar/explainability.t27","specs/ar/proof_trace.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"E","LETTER_NAME":"Epsilon","NAME":"Epsilon (Experience)","ORDINAL":5,"REGISTER":"R4","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","TOOLS":["tri/experience"],"TOOLS_NOTE":".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."},"health":"ok","id":"t27/E","inSpecCorpus":true,"letter":"E","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_e","name":{"en":"Epsilon (Experience)","ru":"Эпсилон (Опыт)"},"ordinal":5,"sha256":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","skills":[],"specPath":"specs/agents/e.t27","summary":{"en":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","ru":"Опыт / XAI. Опыт — окно в прошлое системы, дыхание её памяти."},"tools":[{"id":"tri/experience","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Nail - connection, binding","CLARA_ROLE":"","DOMAIN":"Formal Conformance","ENABLED":true,"ENTRY_INVARIANT":"All sacred vectors (G, OmegaLambda, phi) are valid","EXIT_INVARIANT":"Conformance > 95%, all sacred physics verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/F","KEY_FILES":["t27/conformance/*.json","conformance/FORMAT-SPEC-001.json"],"KIND":"agent","LAYER":"Archetypal","LETTER":"F","LETTER_NAME":"Phi","NAME":"Phi (Formal Conformance)","ORDINAL":6,"REGISTER":"R5","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/F","inSpecCorpus":true,"letter":"F","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_f","name":{"en":"Phi (Formal Conformance)","ru":"Фи (Формальное соответствие)"},"ordinal":6,"sha256":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","skills":[],"specPath":"specs/agents/f.t27","summary":{"en":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","ru":"Формальное соответствие. JSON-файлы соответствия — гвозди, скрепляющие спеки."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Return - feedback","CLARA_ROLE":"","DOMAIN":"Graph / ArchBench","ENABLED":true,"ENTRY_INVARIANT":"Graph is acyclic, topological sort exists","EXIT_INVARIANT":"All edges satisfied, no broken dependencies","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/G","KEY_FILES":["architecture/graph_v2.json","architecture/graph.tri"],"KIND":"agent","LAYER":"Archetypal","LETTER":"G","LETTER_NAME":"Gamma (var.)","NAME":"Gamma (Graph)","ORDINAL":7,"REGISTER":"R6","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/G","inSpecCorpus":true,"letter":"G","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_g","name":{"en":"Gamma (Graph)","ru":"Гамма (Граф)"},"ordinal":7,"sha256":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","skills":[],"specPath":"specs/agents/g.t27","summary":{"en":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","ru":"Граф / ArchBench. Граф — карта мира Trinity и его метрика расстояния."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fence - boundary, life","CLARA_ROLE":"","DOMAIN":"HSLM / NN Architectures","ENABLED":true,"ENTRY_INVARIANT":"HSLM layers are defined, connections are valid","EXIT_INVARIANT":"Attention traces are validated, sacred attention holds","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/H","KEY_FILES":["t27/specs/nn/hslm.t27","t27/specs/nn/attention.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"H","LETTER_NAME":"Eta","NAME":"Eta (HSLM)","ORDINAL":8,"REGISTER":"R7","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/H","inSpecCorpus":true,"letter":"H","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_h","name":{"en":"Eta (HSLM)","ru":"Эта (HSLM)"},"ordinal":8,"sha256":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","skills":[],"specPath":"specs/agents/h.t27","summary":{"en":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","ru":"HSLM / архитектуры нейросетей. HSLM — архитектура нейросети, граница между слоями мозга."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand - action, point","CLARA_ROLE":"","DOMAIN":"ISA / Registers","ENABLED":true,"ENTRY_INVARIANT":"27 registers are defined, Coptic mapping exists","EXIT_INVARIANT":"Coptic mapping is verified (bijection), all registers accessible","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/I","KEY_FILES":["t27/specs/isa/registers.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"I","LETTER_NAME":"Iota","NAME":"Iota (ISA)","ORDINAL":9,"REGISTER":"R8","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/I","inSpecCorpus":true,"letter":"I","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_i","name":{"en":"Iota (ISA)","ru":"Йота (ISA)"},"ordinal":9,"sha256":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","skills":[],"specPath":"specs/agents/i.t27","summary":{"en":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","ru":"ISA / регистры. ISA — рука машины, её самый базовый уровень инструкций."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand with grip - dispatcher","CLARA_ROLE":"","DOMAIN":"Jobs / Task Routing","ENABLED":true,"ENTRY_INVARIANT":"Task queue exists, scheduler is running","EXIT_INVARIANT":"No stuck jobs > 1 hour, all jobs assigned","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/J","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"J","LETTER_NAME":"Iota-extended","NAME":"Iota-extended (Jobs)","ORDINAL":10,"REGISTER":"R9","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Jobs / Task Routing. Jobs grab tasks and route them.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/J","inSpecCorpus":true,"letter":"J","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_j","name":{"en":"Iota-extended (Jobs)","ru":"Йота-расширенная (Задания)"},"ordinal":10,"sha256":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","skills":[],"specPath":"specs/agents/j.t27","summary":{"en":"Jobs / Task Routing. Jobs grab tasks and route them.","ru":"Задания / маршрутизация задач. Задания захватывают задачи и направляют их."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Palm - open hand","CLARA_ROLE":"","DOMAIN":"Kernel / FPGA MAC","ENABLED":true,"ENTRY_INVARIANT":"MAC spec is zero-DSP (no digital signal processors)","EXIT_INVARIANT":"Synthesis is verified, E8 kernel integration works","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/K","KEY_FILES":["t27/specs/fpga/mac.t27","specs/math/e8_lie_algebra.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"K","LETTER_NAME":"Kappa","NAME":"Kappa (Kernel)","ORDINAL":11,"REGISTER":"R10","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/K","inSpecCorpus":true,"letter":"K","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_k","name":{"en":"Kappa (Kernel)","ru":"Каппа (Ядро)"},"ordinal":11,"sha256":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","skills":[],"specPath":"specs/agents/k.t27","summary":{"en":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","ru":"Ядро / FPGA MAC. Ядро и FPGA — открытая ладонь нижнего аппаратного уровня."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Staff - teacher, guide","CLARA_ROLE":"","DOMAIN":"Language / Syntax vNEXT","ENABLED":true,"ENTRY_INVARIANT":"Syntax vNEXT is documented, BNF grammar exists","EXIT_INVARIANT":"Parser implements vNEXT, all syntax tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/L","KEY_FILES":["docs/nona-02-organism/TRI_SYNTAX_VNEXT.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"L","LETTER_NAME":"Lambda","NAME":"Lambda (Language)","ORDINAL":12,"REGISTER":"R11","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/L","inSpecCorpus":true,"letter":"L","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_l","name":{"en":"Lambda (Language)","ru":"Лямбда (Язык)"},"ordinal":12,"sha256":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","skills":[],"specPath":"specs/agents/l.t27","summary":{"en":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","ru":"Язык / синтаксис vNEXT. Язык — учитель, направляющий речь Trinity."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Water - flow of data","CLARA_ROLE":"","DOMAIN":"Metrics / Telemetry","ENABLED":true,"ENTRY_INVARIANT":"Bench baseline exists, telemetry is running","EXIT_INVARIANT":"No performance regression > 5%, all benchmarks current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/M","KEY_FILES":[".trinity/bench/","docs/qualification/TVP.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"M","LETTER_NAME":"Mu","NAME":"Mu (Metrics)","ORDINAL":13,"REGISTER":"R12","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/M","inSpecCorpus":true,"letter":"M","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_m","name":{"en":"Mu (Metrics)","ru":"Мю (Метрики)"},"ordinal":13,"sha256":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","skills":[],"specPath":"specs/agents/m.t27","summary":{"en":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","ru":"Метрики / телеметрия. Метрики — непрерывный поток измерений."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fish - offspring, multiplication","CLARA_ROLE":"","DOMAIN":"Numeric / GoldenFloat","ENABLED":true,"ENTRY_INVARIANT":"GF family is defined (GF4, GF8, GF12, GF16, GF20, GF24, GF32)","EXIT_INVARIANT":"phi identity validated, all numeric tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/N","KEY_FILES":["t27/specs/numeric/","docs/NUMERIC-STANDARD-001.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"N","LETTER_NAME":"Nu","NAME":"Nu (Numeric)","ORDINAL":14,"REGISTER":"R13","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/N","inSpecCorpus":true,"letter":"N","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_n","name":{"en":"Nu (Numeric)","ru":"Ню (Числа)"},"ordinal":14,"sha256":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","skills":[],"specPath":"specs/agents/n.t27","summary":{"en":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","ru":"Числа / GoldenFloat. Числовой слой — рыба-число, плывущая к золотому сечению."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Eye - all-seeing oko","CLARA_ROLE":"TA2: AR Composition Engine - composes ML and AR components, manages interactions","DOMAIN":"Orchestration / Phases","ENABLED":true,"ENTRY_INVARIANT":"All phases (1-6) are defined, phase transitions valid","EXIT_INVARIANT":"Orchestration completes, no stuck phases","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/O","KEY_FILES":["src/tri/pipeline/","specs/ar/composition.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"O","LETTER_NAME":"Omicron","NAME":"Omicron (Orchestration)","ORDINAL":15,"REGISTER":"R14","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/O","inSpecCorpus":true,"letter":"O","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_o","name":{"en":"Omicron (Orchestration)","ru":"Омикрон (Оркестрация)"},"ordinal":15,"sha256":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","skills":[],"specPath":"specs/agents/o.t27","summary":{"en":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","ru":"Оркестрация / фазы. Оркестрация — всевидящее око фаз."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Mouth - speech of universe","CLARA_ROLE":"TA1: AR Theoretical Foundations - provides mathematical basis for AR reasoning","DOMAIN":"Physics / SacredPhysics","ENABLED":true,"ENTRY_INVARIANT":"phi^2 + phi^-2 = 3 holds in all calculations","EXIT_INVARIANT":"Sacred constants (G, OmegaLambda, phi, tpresent) are verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/P","KEY_FILES":["t27/specs/math/sacred_physics.t27","specs/physics/su2_chern_simons.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"P","LETTER_NAME":"Pi","NAME":"Pi (Physics)","ORDINAL":16,"REGISTER":"R15","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/P","inSpecCorpus":true,"letter":"P","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_p","name":{"en":"Pi (Physics)","ru":"Пи (Физика)"},"ordinal":16,"sha256":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","skills":[],"specPath":"specs/agents/p.t27","summary":{"en":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","ru":"Физика / SacredPhysics. Физика — природа, говорящая через свои константы (phi, G, OmegaLambda)."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Needle's eye - bottleneck","CLARA_ROLE":"","DOMAIN":"Queue / Scheduling","ENABLED":true,"ENTRY_INVARIANT":"Queue is not empty (work exists)","EXIT_INVARIANT":"MNL (Most-Numerous-Loss) pattern enforced, no starvation","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Q","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"Q","LETTER_NAME":"Theta","NAME":"Theta (Queue)","ORDINAL":17,"REGISTER":"R16","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Queue / Scheduling. The queue is the needle's eye for tasks.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Q","inSpecCorpus":true,"letter":"Q","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_q","name":{"en":"Theta (Queue)","ru":"Тета (Очередь)"},"ordinal":17,"sha256":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","skills":[],"specPath":"specs/agents/q.t27","summary":{"en":"Queue / Scheduling. The queue is the needle's eye for tasks.","ru":"Очередь / планирование. Очередь — игольное ушко для задач."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Head - beginning of execution","CLARA_ROLE":"","DOMAIN":"Runtime / Bootstrap","ENABLED":true,"ENTRY_INVARIANT":"Runtime is initialized, ABI is defined","EXIT_INVARIANT":"No memory leaks, no resource exhaustion","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/R","KEY_FILES":["t27/compiler/runtime/","bootstrap/src/compiler.rs"],"KIND":"agent","LAYER":"Spiritual","LETTER":"R","LETTER_NAME":"Rho","NAME":"Rho (Runtime)","ORDINAL":18,"REGISTER":"R17","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Runtime / Bootstrap. Runtime is the head of the system during execution.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/R","inSpecCorpus":true,"letter":"R","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_r","name":{"en":"Rho (Runtime)","ru":"Ро (Рантайм)"},"ordinal":18,"sha256":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","skills":[],"specPath":"specs/agents/r.t27","summary":{"en":"Runtime / Bootstrap. Runtime is the head of the system during execution.","ru":"Рантайм / бутстрап. Рантайм — голова системы во время исполнения."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Teeth - sharpness, flame","CLARA_ROLE":"TA1: AR Spec Standards - defines and enforces AR spec conventions","DOMAIN":"Specs / Standardization / AR Specs","ENABLED":true,"ENTRY_INVARIANT":"All specs have TDD (test/invariant/bench)","EXIT_INVARIANT":"Standards are consistent, naming rules followed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/S","KEY_FILES":["specs/","specs/ar/*.t27","docs/NUMERIC-*.md"],"KIND":"agent","LAYER":"Physical","LETTER":"S","LETTER_NAME":"Sigma","NAME":"Sigma (Specs)","ORDINAL":19,"REGISTER":"R18","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/S","inSpecCorpus":true,"letter":"S","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_s","name":{"en":"Sigma (Specs)","ru":"Сигма (Спеки)"},"ordinal":19,"sha256":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","skills":[],"specPath":"specs/agents/s.t27","summary":{"en":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","ru":"Спеки / стандартизация / спеки AR. Спеки — зубы стандарта, перемалывающие всё в канон."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"CROSS - seal, signature, truth","CLARA_ROLE":"TA2: AR Orchestrator - coordinates all AR agents for CLARA submission","DOMAIN":"Queen / Lotus Orchestrator","ENABLED":true,"ENTRY_INVARIANT":"Queen health >= 0.9, graph is loaded","EXIT_INVARIANT":"All rings are sealed, verdict is clean","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/T","KEY_FILES":["t27/specs/queen/lotus.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"T","LETTER_NAME":"Tau","NAME":"Tau (TRINITY Queen)","ORDINAL":20,"REGISTER":"R19","SKILLS":["t27/phi-loop","t27/tri-pipeline"],"SKILLS_NOTE":".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.","SOUL":"SOUL.md","SUMMARY_EN":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","TOOLS":["tri/gen","tri/test","mcp/inngest-dev"],"TOOLS_NOTE":".claude/agents/trinity.md:68 (5. Gen - Run tri gen) and :70 (7. Verify - Run tri test); specs/automation/inngest-queen-scheduler.t27 OWNER = \"T\" binds the scheduler mcp/inngest-dev to the Queen (specs/OWNERS.md: skills/ and crons/ under T-Queen). No source binds tri loop or tri health to T."},"health":"ok","id":"t27/T","inSpecCorpus":true,"letter":"T","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_t","name":{"en":"Tau (TRINITY Queen)","ru":"Тау (Королева TRINITY)"},"ordinal":20,"sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","skills":[{"id":"t27/phi-loop","ok":true},{"id":"t27/tri-pipeline","ok":true}],"specPath":"specs/agents/t.t27","summary":{"en":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","ru":"Королева / оркестратор Lotus. T — королева: она ставит на всём финальную печать."},"tools":[{"id":"tri/gen","ok":true},{"id":"tri/test","ok":true},{"id":"mcp/inngest-dev","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fork - branching","CLARA_ROLE":"","DOMAIN":"Universe Levels / Domains","ENABLED":true,"ENTRY_INVARIANT":"Domain boundaries are defined","EXIT_INVARIANT":"No circular dependencies, domains are orthogonal","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/U","KEY_FILES":["t27/domains/"],"KIND":"agent","LAYER":"Physical","LETTER":"U","LETTER_NAME":"Upsilon","NAME":"Upsilon (Universe)","ORDINAL":21,"REGISTER":"R20","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Universe Levels / Domains. Universe levels are the branching of domains.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/U","inSpecCorpus":true,"letter":"U","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_u","name":{"en":"Upsilon (Universe)","ru":"Ипсилон (Вселенная)"},"ordinal":21,"sha256":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","skills":[],"specPath":"specs/agents/u.t27","summary":{"en":"Universe Levels / Domains. Universe levels are the branching of domains.","ru":"Уровни вселенной / домены. Уровни вселенной — ветвление доменов."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hook - connection, conjunction","CLARA_ROLE":"TA2: AR Validation & Proof - validates AR reasoning, generates proofs","DOMAIN":"Verdict / Bench / AR Validation","ENABLED":true,"ENTRY_INVARIANT":"Verdict engine is ready, toxic thresholds defined","EXIT_INVARIANT":"Toxicity is detected, proof traces are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/V","KEY_FILES":["src/tri/verdict.zig","specs/ar/proof_trace.t27","specs/ar/restraint.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"V","LETTER_NAME":"Vau (var.)","NAME":"Vau (Verdict)","ORDINAL":22,"REGISTER":"R21","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","TOOLS":["tri/test","tri/verdict"],"TOOLS_NOTE":".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."},"health":"ok","id":"t27/V","inSpecCorpus":true,"letter":"V","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_v","name":{"en":"Vau (Verdict)","ru":"Вау (Вердикт)"},"ordinal":22,"sha256":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","skills":[],"specPath":"specs/agents/v.t27","summary":{"en":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","ru":"Вердикт / бенч / валидация AR. Вердикт — крюк, который ловит проблему."},"tools":[{"id":"tri/test","ok":true},{"id":"tri/verdict","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Double hook - double seal","CLARA_ROLE":"","DOMAIN":"Workflow / tri cell","ENABLED":true,"ENTRY_INVARIANT":"Cell is sealed, hash is computed","EXIT_INVARIANT":"Hash is verified, commit is signed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/W","KEY_FILES":["src/tri/cell.zig"],"KIND":"agent","LAYER":"Physical","LETTER":"W","LETTER_NAME":"Double-Vav","NAME":"Double-Vav (Workflow)","ORDINAL":23,"REGISTER":"R22","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","TOOLS":["tri/cell"],"TOOLS_NOTE":"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)."},"health":"ok","id":"t27/W","inSpecCorpus":true,"letter":"W","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_w","name":{"en":"Double-Vav (Workflow)","ru":"Двойной Вав (Рабочий процесс)"},"ordinal":23,"sha256":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","skills":[],"specPath":"specs/agents/w.t27","summary":{"en":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","ru":"Рабочий процесс / tri cell. Рабочий процесс и tri cell — двойная хеш-печать."},"tools":[{"id":"tri/cell","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Intersection - point of exchange","CLARA_ROLE":"","DOMAIN":"External Bindings / Interop","ENABLED":true,"ENTRY_INVARIANT":"Bindings are documented","EXIT_INVARIANT":"Interop tests pass, external APIs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/X","KEY_FILES":["bindings/"],"KIND":"agent","LAYER":"Physical","LETTER":"X","LETTER_NAME":"Chi","NAME":"Chi (External)","ORDINAL":24,"REGISTER":"R23","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/X","inSpecCorpus":true,"letter":"X","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_x","name":{"en":"Chi (External)","ru":"Хи (Внешнее)"},"ordinal":24,"sha256":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","skills":[],"specPath":"specs/agents/x.t27","summary":{"en":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","ru":"Внешние привязки / интероперабельность. Внешние привязки — перекрёсток Trinity и внешних систем."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Merging paths - evolutionary selection","CLARA_ROLE":"","DOMAIN":"Yield / DePIN / Fitness","ENABLED":true,"ENTRY_INVARIANT":"DePIN nodes are defined","EXIT_INVARIANT":"Fitness score > 0.8, yield is optimized","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Y","KEY_FILES":["deploy/contracts/"],"KIND":"agent","LAYER":"Physical","LETTER":"Y","LETTER_NAME":"Psi","NAME":"Psi (Yield/DePIN)","ORDINAL":25,"REGISTER":"R24","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Y","inSpecCorpus":true,"letter":"Y","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_y","name":{"en":"Psi (Yield/DePIN)","ru":"Пси (Доход/DePIN)"},"ordinal":25,"sha256":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","skills":[],"specPath":"specs/agents/y.t27","summary":{"en":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","ru":"Доход / DePIN / приспособленность. Доход и DePIN — эволюционный перекрёсток."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Sword - cutting edge, point","CLARA_ROLE":"","DOMAIN":"Zero-Touch UX / Docs","ENABLED":true,"ENTRY_INVARIANT":"All docs are in English, ASCII-only","EXIT_INVARIANT":"DX score > 4/5, all docs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Z","KEY_FILES":["docs/"],"KIND":"agent","LAYER":"Physical","LETTER":"Z","LETTER_NAME":"Zeta","NAME":"Zeta (Zero-Touch)","ORDINAL":26,"REGISTER":"R25","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Z","inSpecCorpus":true,"letter":"Z","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_z","name":{"en":"Zeta (Zero-Touch)","ru":"Дзета (Zero-Touch)"},"ordinal":26,"sha256":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","skills":[],"specPath":"specs/agents/z.t27","summary":{"en":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","ru":"Zero-Touch UX / документация. Zero-Touch — край UX и финальная полировка."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Egyptian cross - \"sacred gift\"","CLARA_ROLE":"","DOMAIN":"Security / Reserve","ENABLED":false,"ENTRY_INVARIANT":"Security policy exists","EXIT_INVARIANT":"AAIF compliance ready, no vulnerabilities","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/TI","KEY_FILES":[],"KIND":"agent","LAYER":"Physical","LETTER":"TI","LETTER_NAME":"Ti","NAME":"Ti (Security)","ORDINAL":27,"REGISTER":"R26","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/TI","inSpecCorpus":true,"letter":"TI","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_ti","name":{"en":"Ti (Security)","ru":"Ти (Безопасность)"},"ordinal":27,"sha256":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","skills":[],"specPath":"specs/agents/ti.t27","summary":{"en":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","ru":"Безопасность / резерв. Безопасность и AAIF — то, что Trinity дарит миру; место зарезервировано (ключевые файлы: в будущем)."},"tools":[],"typecheckOk":true,"witness":"spec-only"}],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"1e595eb39115820cdf4e0207bf95cccfa4356fa7862d277053f1ad79f8567674","counts":{"byLayer":{"Archetypal":9,"Physical":9,"Spiritual":9},"enabled":26,"episodesAttributed":0,"episodesTotal":386,"episodesUnattributed":386,"specOnly":27,"specPlusExperience":0,"specs":27,"typecheckOk":27,"withClaraRole":8,"withCrons":0,"withExperience":0,"withSkills":1,"withTools":5},"experienceSnapshot":{"attribution":{"fields":["agent_letter","letter","agent","agent_id","agents","owner"],"letters":["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","TI"],"rule":"A letter is assigned only from an agent field that is one letter A-Z, \"ti\"/\"27th\", \"t27/\", or \"agent-...\"; everything else is unattributed. See scripts/sync-agents-experience.mjs and specs/agents/README.md."},"counts":{"agentsWithEpisodes":0,"attributed":0,"episodes":386,"unattributed":386,"unreadableFiles":56},"generatedAt":"2026-09-09T17:16:31.473Z","sources":[{"commit":"ddceafb50cd0e620387161228fa2c9ae134047de","episodes":383,"files":440,"repo":"trinity","unreadable":56},{"commit":"93727f733e23baf032d54505095777f16676d70b","episodes":3,"files":2,"repo":"t27","unreadable":0}]},"generatedAt":"2026-10-04T05:20:39.582Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":27,"total":27},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"version":1} +{"agents":[{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Bull - leader, primary force","CLARA_ROLE":"TA1: AR Architecture Design - designs AR module architecture, ensures composability","DOMAIN":"Architecture / ADR / SOUL","ENABLED":true,"ENTRY_INVARIANT":"SOUL.md exists, is ASCII-only, and defines L1-L7 laws","EXIT_INVARIANT":"All ADRs reviewed, consistent with constitution, no conflicts","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/A","KEY_FILES":["SOUL.md","architecture/ADR-*.md","architecture/CANON_DE_ZIGFICATION.md"],"KIND":"agent","LAYER":"Archetypal","LETTER":"A","LETTER_NAME":"Alpha","NAME":"Alpha (Architecture)","ORDINAL":1,"REGISTER":"R0","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/A","inSpecCorpus":true,"letter":"A","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_a","name":{"en":"Alpha (Architecture)","ru":"Альфа (Архитектура)"},"ordinal":1,"sha256":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","skills":[],"specPath":"specs/agents/a.t27","summary":{"en":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","ru":"Архитектура / ADR / SOUL. SOUL.md — первопричина, а ADR — конституция системы."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"House - container, dwelling","CLARA_ROLE":"","DOMAIN":"Build / Pipeline","ENABLED":true,"ENTRY_INVARIANT":"Build system is clean, no stale artifacts","EXIT_INVARIANT":"All tests pass, CI pipeline is green","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/B","KEY_FILES":["build.tri","src/tri/pipeline/"],"KIND":"agent","LAYER":"Archetypal","LETTER":"B","LETTER_NAME":"Beta","NAME":"Beta (Build)","ORDINAL":2,"REGISTER":"R1","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/B","inSpecCorpus":true,"letter":"B","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_b","name":{"en":"Beta (Build)","ru":"Бета (Сборка)"},"ordinal":2,"sha256":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","skills":[],"specPath":"specs/agents/b.t27","summary":{"en":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","ru":"Сборка / конвейер. build.tri — дом спецификаций, а конвейер — его жилище."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Camel - carrier across borders","CLARA_ROLE":"TA1: AR Language Implementation - implements AR language features in t27 compiler","DOMAIN":"Compiler Core / AR Language","ENABLED":true,"ENTRY_INVARIANT":"Parser can handle all AR syntax (ternary logic, rules, proofs)","EXIT_INVARIANT":"Generated code compiles, AST is valid","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/C","KEY_FILES":["t27/compiler/parser/","bootstrap/src/compiler.rs","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"C","LETTER_NAME":"Gamma","NAME":"Gamma (Compiler Core)","ORDINAL":3,"REGISTER":"R2","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","TOOLS":["tri/gen"],"TOOLS_NOTE":".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)."},"health":"ok","id":"t27/C","inSpecCorpus":true,"letter":"C","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_c","name":{"en":"Gamma (Compiler Core)","ru":"Гамма (Ядро компилятора)"},"ordinal":3,"sha256":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","skills":[],"specPath":"specs/agents/c.t27","summary":{"en":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","ru":"Ядро компилятора / язык AR. Компилятор переносит текст через границы: от спеки к сгенерированному коду."},"tools":[{"id":"tri/gen","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Door - transition between worlds","CLARA_ROLE":"","DOMAIN":"De-Zigfication / Migration","ENABLED":true,"ENTRY_INVARIANT":"Legacy Zig modules are catalogued and mapped","EXIT_INVARIANT":"All AR specs are in .t27 format, no Zig hand-editing on AR","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/D","KEY_FILES":["docs/migration-map.md","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"D","LETTER_NAME":"Delta","NAME":"Delta (De-Zigfication)","ORDINAL":4,"REGISTER":"R3","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/D","inSpecCorpus":true,"letter":"D","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_d","name":{"en":"Delta (De-Zigfication)","ru":"Дельта (Де-зигификация)"},"ordinal":4,"sha256":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","skills":[],"specPath":"specs/agents/d.t27","summary":{"en":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","ru":"Де-зигификация / миграция. Де-зигификация — открытая дверь из .zig в .t27."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Window - view into the past","CLARA_ROLE":"TA2: AR Explanation & XAI - generates human-readable explanations for AR outputs","DOMAIN":"Experience / XAI","ENABLED":true,"ENTRY_INVARIANT":"Episode log is append-only, no deletions","EXIT_INVARIANT":"Lessons learned are catalogued, explanations are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/E","KEY_FILES":[".trinity/experience/","specs/ar/explainability.t27","specs/ar/proof_trace.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"E","LETTER_NAME":"Epsilon","NAME":"Epsilon (Experience)","ORDINAL":5,"REGISTER":"R4","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","TOOLS":["tri/experience"],"TOOLS_NOTE":".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."},"health":"ok","id":"t27/E","inSpecCorpus":true,"letter":"E","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_e","name":{"en":"Epsilon (Experience)","ru":"Эпсилон (Опыт)"},"ordinal":5,"sha256":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","skills":[],"specPath":"specs/agents/e.t27","summary":{"en":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","ru":"Опыт / XAI. Опыт — окно в прошлое системы, дыхание её памяти."},"tools":[{"id":"tri/experience","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Nail - connection, binding","CLARA_ROLE":"","DOMAIN":"Formal Conformance","ENABLED":true,"ENTRY_INVARIANT":"All sacred vectors (G, OmegaLambda, phi) are valid","EXIT_INVARIANT":"Conformance > 95%, all sacred physics verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/F","KEY_FILES":["t27/conformance/*.json","conformance/FORMAT-SPEC-001.json"],"KIND":"agent","LAYER":"Archetypal","LETTER":"F","LETTER_NAME":"Phi","NAME":"Phi (Formal Conformance)","ORDINAL":6,"REGISTER":"R5","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/F","inSpecCorpus":true,"letter":"F","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_f","name":{"en":"Phi (Formal Conformance)","ru":"Фи (Формальное соответствие)"},"ordinal":6,"sha256":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","skills":[],"specPath":"specs/agents/f.t27","summary":{"en":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","ru":"Формальное соответствие. JSON-файлы соответствия — гвозди, скрепляющие спеки."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Return - feedback","CLARA_ROLE":"","DOMAIN":"Graph / ArchBench","ENABLED":true,"ENTRY_INVARIANT":"Graph is acyclic, topological sort exists","EXIT_INVARIANT":"All edges satisfied, no broken dependencies","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/G","KEY_FILES":["architecture/graph_v2.json","architecture/graph.tri"],"KIND":"agent","LAYER":"Archetypal","LETTER":"G","LETTER_NAME":"Gamma (var.)","NAME":"Gamma (Graph)","ORDINAL":7,"REGISTER":"R6","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/G","inSpecCorpus":true,"letter":"G","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_g","name":{"en":"Gamma (Graph)","ru":"Гамма (Граф)"},"ordinal":7,"sha256":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","skills":[],"specPath":"specs/agents/g.t27","summary":{"en":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","ru":"Граф / ArchBench. Граф — карта мира Trinity и его метрика расстояния."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fence - boundary, life","CLARA_ROLE":"","DOMAIN":"HSLM / NN Architectures","ENABLED":true,"ENTRY_INVARIANT":"HSLM layers are defined, connections are valid","EXIT_INVARIANT":"Attention traces are validated, sacred attention holds","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/H","KEY_FILES":["t27/specs/nn/hslm.t27","t27/specs/nn/attention.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"H","LETTER_NAME":"Eta","NAME":"Eta (HSLM)","ORDINAL":8,"REGISTER":"R7","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/H","inSpecCorpus":true,"letter":"H","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_h","name":{"en":"Eta (HSLM)","ru":"Эта (HSLM)"},"ordinal":8,"sha256":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","skills":[],"specPath":"specs/agents/h.t27","summary":{"en":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","ru":"HSLM / архитектуры нейросетей. HSLM — архитектура нейросети, граница между слоями мозга."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand - action, point","CLARA_ROLE":"","DOMAIN":"ISA / Registers","ENABLED":true,"ENTRY_INVARIANT":"27 registers are defined, Coptic mapping exists","EXIT_INVARIANT":"Coptic mapping is verified (bijection), all registers accessible","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/I","KEY_FILES":["t27/specs/isa/registers.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"I","LETTER_NAME":"Iota","NAME":"Iota (ISA)","ORDINAL":9,"REGISTER":"R8","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/I","inSpecCorpus":true,"letter":"I","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_i","name":{"en":"Iota (ISA)","ru":"Йота (ISA)"},"ordinal":9,"sha256":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","skills":[],"specPath":"specs/agents/i.t27","summary":{"en":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","ru":"ISA / регистры. ISA — рука машины, её самый базовый уровень инструкций."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand with grip - dispatcher","CLARA_ROLE":"","DOMAIN":"Jobs / Task Routing","ENABLED":true,"ENTRY_INVARIANT":"Task queue exists, scheduler is running","EXIT_INVARIANT":"No stuck jobs > 1 hour, all jobs assigned","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/J","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"J","LETTER_NAME":"Iota-extended","NAME":"Iota-extended (Jobs)","ORDINAL":10,"REGISTER":"R9","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Jobs / Task Routing. Jobs grab tasks and route them.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/J","inSpecCorpus":true,"letter":"J","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_j","name":{"en":"Iota-extended (Jobs)","ru":"Йота-расширенная (Задания)"},"ordinal":10,"sha256":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","skills":[],"specPath":"specs/agents/j.t27","summary":{"en":"Jobs / Task Routing. Jobs grab tasks and route them.","ru":"Задания / маршрутизация задач. Задания захватывают задачи и направляют их."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Palm - open hand","CLARA_ROLE":"","DOMAIN":"Kernel / FPGA MAC","ENABLED":true,"ENTRY_INVARIANT":"MAC spec is zero-DSP (no digital signal processors)","EXIT_INVARIANT":"Synthesis is verified, E8 kernel integration works","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/K","KEY_FILES":["t27/specs/fpga/mac.t27","specs/math/e8_lie_algebra.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"K","LETTER_NAME":"Kappa","NAME":"Kappa (Kernel)","ORDINAL":11,"REGISTER":"R10","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/K","inSpecCorpus":true,"letter":"K","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_k","name":{"en":"Kappa (Kernel)","ru":"Каппа (Ядро)"},"ordinal":11,"sha256":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","skills":[],"specPath":"specs/agents/k.t27","summary":{"en":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","ru":"Ядро / FPGA MAC. Ядро и FPGA — открытая ладонь нижнего аппаратного уровня."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Staff - teacher, guide","CLARA_ROLE":"","DOMAIN":"Language / Syntax vNEXT","ENABLED":true,"ENTRY_INVARIANT":"Syntax vNEXT is documented, BNF grammar exists","EXIT_INVARIANT":"Parser implements vNEXT, all syntax tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/L","KEY_FILES":["docs/nona-02-organism/TRI_SYNTAX_VNEXT.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"L","LETTER_NAME":"Lambda","NAME":"Lambda (Language)","ORDINAL":12,"REGISTER":"R11","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/L","inSpecCorpus":true,"letter":"L","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_l","name":{"en":"Lambda (Language)","ru":"Лямбда (Язык)"},"ordinal":12,"sha256":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","skills":[],"specPath":"specs/agents/l.t27","summary":{"en":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","ru":"Язык / синтаксис vNEXT. Язык — учитель, направляющий речь Trinity."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Water - flow of data","CLARA_ROLE":"","DOMAIN":"Metrics / Telemetry","ENABLED":true,"ENTRY_INVARIANT":"Bench baseline exists, telemetry is running","EXIT_INVARIANT":"No performance regression > 5%, all benchmarks current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/M","KEY_FILES":[".trinity/bench/","docs/qualification/TVP.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"M","LETTER_NAME":"Mu","NAME":"Mu (Metrics)","ORDINAL":13,"REGISTER":"R12","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/M","inSpecCorpus":true,"letter":"M","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_m","name":{"en":"Mu (Metrics)","ru":"Мю (Метрики)"},"ordinal":13,"sha256":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","skills":[],"specPath":"specs/agents/m.t27","summary":{"en":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","ru":"Метрики / телеметрия. Метрики — непрерывный поток измерений."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fish - offspring, multiplication","CLARA_ROLE":"","DOMAIN":"Numeric / GoldenFloat","ENABLED":true,"ENTRY_INVARIANT":"GF family is defined (GF4, GF8, GF12, GF16, GF20, GF24, GF32)","EXIT_INVARIANT":"phi identity validated, all numeric tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/N","KEY_FILES":["t27/specs/numeric/","docs/NUMERIC-STANDARD-001.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"N","LETTER_NAME":"Nu","NAME":"Nu (Numeric)","ORDINAL":14,"REGISTER":"R13","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/N","inSpecCorpus":true,"letter":"N","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_n","name":{"en":"Nu (Numeric)","ru":"Ню (Числа)"},"ordinal":14,"sha256":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","skills":[],"specPath":"specs/agents/n.t27","summary":{"en":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","ru":"Числа / GoldenFloat. Числовой слой — рыба-число, плывущая к золотому сечению."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Eye - all-seeing oko","CLARA_ROLE":"TA2: AR Composition Engine - composes ML and AR components, manages interactions","DOMAIN":"Orchestration / Phases","ENABLED":true,"ENTRY_INVARIANT":"All phases (1-6) are defined, phase transitions valid","EXIT_INVARIANT":"Orchestration completes, no stuck phases","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/O","KEY_FILES":["src/tri/pipeline/","specs/ar/composition.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"O","LETTER_NAME":"Omicron","NAME":"Omicron (Orchestration)","ORDINAL":15,"REGISTER":"R14","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/O","inSpecCorpus":true,"letter":"O","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_o","name":{"en":"Omicron (Orchestration)","ru":"Омикрон (Оркестрация)"},"ordinal":15,"sha256":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","skills":[],"specPath":"specs/agents/o.t27","summary":{"en":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","ru":"Оркестрация / фазы. Оркестрация — всевидящее око фаз."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Mouth - speech of universe","CLARA_ROLE":"TA1: AR Theoretical Foundations - provides mathematical basis for AR reasoning","DOMAIN":"Physics / SacredPhysics","ENABLED":true,"ENTRY_INVARIANT":"phi^2 + phi^-2 = 3 holds in all calculations","EXIT_INVARIANT":"Sacred constants (G, OmegaLambda, phi, tpresent) are verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/P","KEY_FILES":["t27/specs/math/sacred_physics.t27","specs/physics/su2_chern_simons.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"P","LETTER_NAME":"Pi","NAME":"Pi (Physics)","ORDINAL":16,"REGISTER":"R15","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/P","inSpecCorpus":true,"letter":"P","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_p","name":{"en":"Pi (Physics)","ru":"Пи (Физика)"},"ordinal":16,"sha256":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","skills":[],"specPath":"specs/agents/p.t27","summary":{"en":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","ru":"Физика / SacredPhysics. Физика — природа, говорящая через свои константы (phi, G, OmegaLambda)."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Needle's eye - bottleneck","CLARA_ROLE":"","DOMAIN":"Queue / Scheduling","ENABLED":true,"ENTRY_INVARIANT":"Queue is not empty (work exists)","EXIT_INVARIANT":"MNL (Most-Numerous-Loss) pattern enforced, no starvation","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Q","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"Q","LETTER_NAME":"Theta","NAME":"Theta (Queue)","ORDINAL":17,"REGISTER":"R16","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Queue / Scheduling. The queue is the needle's eye for tasks.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Q","inSpecCorpus":true,"letter":"Q","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_q","name":{"en":"Theta (Queue)","ru":"Тета (Очередь)"},"ordinal":17,"sha256":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","skills":[],"specPath":"specs/agents/q.t27","summary":{"en":"Queue / Scheduling. The queue is the needle's eye for tasks.","ru":"Очередь / планирование. Очередь — игольное ушко для задач."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Head - beginning of execution","CLARA_ROLE":"","DOMAIN":"Runtime / Bootstrap","ENABLED":true,"ENTRY_INVARIANT":"Runtime is initialized, ABI is defined","EXIT_INVARIANT":"No memory leaks, no resource exhaustion","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/R","KEY_FILES":["t27/compiler/runtime/","bootstrap/src/compiler.rs"],"KIND":"agent","LAYER":"Spiritual","LETTER":"R","LETTER_NAME":"Rho","NAME":"Rho (Runtime)","ORDINAL":18,"REGISTER":"R17","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Runtime / Bootstrap. Runtime is the head of the system during execution.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/R","inSpecCorpus":true,"letter":"R","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_r","name":{"en":"Rho (Runtime)","ru":"Ро (Рантайм)"},"ordinal":18,"sha256":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","skills":[],"specPath":"specs/agents/r.t27","summary":{"en":"Runtime / Bootstrap. Runtime is the head of the system during execution.","ru":"Рантайм / бутстрап. Рантайм — голова системы во время исполнения."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Teeth - sharpness, flame","CLARA_ROLE":"TA1: AR Spec Standards - defines and enforces AR spec conventions","DOMAIN":"Specs / Standardization / AR Specs","ENABLED":true,"ENTRY_INVARIANT":"All specs have TDD (test/invariant/bench)","EXIT_INVARIANT":"Standards are consistent, naming rules followed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/S","KEY_FILES":["specs/","specs/ar/*.t27","docs/NUMERIC-*.md"],"KIND":"agent","LAYER":"Physical","LETTER":"S","LETTER_NAME":"Sigma","NAME":"Sigma (Specs)","ORDINAL":19,"REGISTER":"R18","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/S","inSpecCorpus":true,"letter":"S","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_s","name":{"en":"Sigma (Specs)","ru":"Сигма (Спеки)"},"ordinal":19,"sha256":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","skills":[],"specPath":"specs/agents/s.t27","summary":{"en":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","ru":"Спеки / стандартизация / спеки AR. Спеки — зубы стандарта, перемалывающие всё в канон."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"CROSS - seal, signature, truth","CLARA_ROLE":"TA2: AR Orchestrator - coordinates all AR agents for CLARA submission","DOMAIN":"Queen / Lotus Orchestrator","ENABLED":true,"ENTRY_INVARIANT":"Queen health >= 0.9, graph is loaded","EXIT_INVARIANT":"All rings are sealed, verdict is clean","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/T","KEY_FILES":["t27/specs/queen/lotus.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"T","LETTER_NAME":"Tau","NAME":"Tau (TRINITY Queen)","ORDINAL":20,"REGISTER":"R19","SKILLS":["t27/phi-loop","t27/tri-pipeline"],"SKILLS_NOTE":".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.","SOUL":"SOUL.md","SUMMARY_EN":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","TOOLS":["tri/gen","tri/test","mcp/inngest-dev"],"TOOLS_NOTE":".claude/agents/trinity.md:68 (5. Gen - Run tri gen) and :70 (7. Verify - Run tri test); specs/automation/inngest-queen-scheduler.t27 OWNER = \"T\" binds the scheduler mcp/inngest-dev to the Queen (specs/OWNERS.md: skills/ and crons/ under T-Queen). No source binds tri loop or tri health to T."},"health":"ok","id":"t27/T","inSpecCorpus":true,"letter":"T","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_t","name":{"en":"Tau (TRINITY Queen)","ru":"Тау (Королева TRINITY)"},"ordinal":20,"sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","skills":[{"id":"t27/phi-loop","ok":true},{"id":"t27/tri-pipeline","ok":true}],"specPath":"specs/agents/t.t27","summary":{"en":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","ru":"Королева / оркестратор Lotus. T — королева: она ставит на всём финальную печать."},"tools":[{"id":"tri/gen","ok":true},{"id":"tri/test","ok":true},{"id":"mcp/inngest-dev","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fork - branching","CLARA_ROLE":"","DOMAIN":"Universe Levels / Domains","ENABLED":true,"ENTRY_INVARIANT":"Domain boundaries are defined","EXIT_INVARIANT":"No circular dependencies, domains are orthogonal","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/U","KEY_FILES":["t27/domains/"],"KIND":"agent","LAYER":"Physical","LETTER":"U","LETTER_NAME":"Upsilon","NAME":"Upsilon (Universe)","ORDINAL":21,"REGISTER":"R20","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Universe Levels / Domains. Universe levels are the branching of domains.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/U","inSpecCorpus":true,"letter":"U","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_u","name":{"en":"Upsilon (Universe)","ru":"Ипсилон (Вселенная)"},"ordinal":21,"sha256":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","skills":[],"specPath":"specs/agents/u.t27","summary":{"en":"Universe Levels / Domains. Universe levels are the branching of domains.","ru":"Уровни вселенной / домены. Уровни вселенной — ветвление доменов."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hook - connection, conjunction","CLARA_ROLE":"TA2: AR Validation & Proof - validates AR reasoning, generates proofs","DOMAIN":"Verdict / Bench / AR Validation","ENABLED":true,"ENTRY_INVARIANT":"Verdict engine is ready, toxic thresholds defined","EXIT_INVARIANT":"Toxicity is detected, proof traces are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/V","KEY_FILES":["src/tri/verdict.zig","specs/ar/proof_trace.t27","specs/ar/restraint.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"V","LETTER_NAME":"Vau (var.)","NAME":"Vau (Verdict)","ORDINAL":22,"REGISTER":"R21","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","TOOLS":["tri/test","tri/verdict"],"TOOLS_NOTE":".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."},"health":"ok","id":"t27/V","inSpecCorpus":true,"letter":"V","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_v","name":{"en":"Vau (Verdict)","ru":"Вау (Вердикт)"},"ordinal":22,"sha256":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","skills":[],"specPath":"specs/agents/v.t27","summary":{"en":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","ru":"Вердикт / бенч / валидация AR. Вердикт — крюк, который ловит проблему."},"tools":[{"id":"tri/test","ok":true},{"id":"tri/verdict","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Double hook - double seal","CLARA_ROLE":"","DOMAIN":"Workflow / tri cell","ENABLED":true,"ENTRY_INVARIANT":"Cell is sealed, hash is computed","EXIT_INVARIANT":"Hash is verified, commit is signed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/W","KEY_FILES":["src/tri/cell.zig"],"KIND":"agent","LAYER":"Physical","LETTER":"W","LETTER_NAME":"Double-Vav","NAME":"Double-Vav (Workflow)","ORDINAL":23,"REGISTER":"R22","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","TOOLS":["tri/cell"],"TOOLS_NOTE":"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)."},"health":"ok","id":"t27/W","inSpecCorpus":true,"letter":"W","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_w","name":{"en":"Double-Vav (Workflow)","ru":"Двойной Вав (Рабочий процесс)"},"ordinal":23,"sha256":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","skills":[],"specPath":"specs/agents/w.t27","summary":{"en":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","ru":"Рабочий процесс / tri cell. Рабочий процесс и tri cell — двойная хеш-печать."},"tools":[{"id":"tri/cell","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Intersection - point of exchange","CLARA_ROLE":"","DOMAIN":"External Bindings / Interop","ENABLED":true,"ENTRY_INVARIANT":"Bindings are documented","EXIT_INVARIANT":"Interop tests pass, external APIs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/X","KEY_FILES":["bindings/"],"KIND":"agent","LAYER":"Physical","LETTER":"X","LETTER_NAME":"Chi","NAME":"Chi (External)","ORDINAL":24,"REGISTER":"R23","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/X","inSpecCorpus":true,"letter":"X","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_x","name":{"en":"Chi (External)","ru":"Хи (Внешнее)"},"ordinal":24,"sha256":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","skills":[],"specPath":"specs/agents/x.t27","summary":{"en":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","ru":"Внешние привязки / интероперабельность. Внешние привязки — перекрёсток Trinity и внешних систем."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Merging paths - evolutionary selection","CLARA_ROLE":"","DOMAIN":"Yield / DePIN / Fitness","ENABLED":true,"ENTRY_INVARIANT":"DePIN nodes are defined","EXIT_INVARIANT":"Fitness score > 0.8, yield is optimized","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Y","KEY_FILES":["deploy/contracts/"],"KIND":"agent","LAYER":"Physical","LETTER":"Y","LETTER_NAME":"Psi","NAME":"Psi (Yield/DePIN)","ORDINAL":25,"REGISTER":"R24","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Y","inSpecCorpus":true,"letter":"Y","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_y","name":{"en":"Psi (Yield/DePIN)","ru":"Пси (Доход/DePIN)"},"ordinal":25,"sha256":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","skills":[],"specPath":"specs/agents/y.t27","summary":{"en":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","ru":"Доход / DePIN / приспособленность. Доход и DePIN — эволюционный перекрёсток."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Sword - cutting edge, point","CLARA_ROLE":"","DOMAIN":"Zero-Touch UX / Docs","ENABLED":true,"ENTRY_INVARIANT":"All docs are in English, ASCII-only","EXIT_INVARIANT":"DX score > 4/5, all docs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Z","KEY_FILES":["docs/"],"KIND":"agent","LAYER":"Physical","LETTER":"Z","LETTER_NAME":"Zeta","NAME":"Zeta (Zero-Touch)","ORDINAL":26,"REGISTER":"R25","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/Z","inSpecCorpus":true,"letter":"Z","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_z","name":{"en":"Zeta (Zero-Touch)","ru":"Дзета (Zero-Touch)"},"ordinal":26,"sha256":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","skills":[],"specPath":"specs/agents/z.t27","summary":{"en":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","ru":"Zero-Touch UX / документация. Zero-Touch — край UX и финальная полировка."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Egyptian cross - \"sacred gift\"","CLARA_ROLE":"","DOMAIN":"Security / Reserve","ENABLED":false,"ENTRY_INVARIANT":"Security policy exists","EXIT_INVARIANT":"AAIF compliance ready, no vulnerabilities","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/TI","KEY_FILES":[],"KIND":"agent","LAYER":"Physical","LETTER":"TI","LETTER_NAME":"Ti","NAME":"Ti (Security)","ORDINAL":27,"REGISTER":"R26","SKILLS":[],"SKILLS_NOTE":"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.","SOUL":"SOUL.md","SUMMARY_EN":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","TOOLS":[],"TOOLS_NOTE":"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."},"health":"ok","id":"t27/TI","inSpecCorpus":true,"letter":"TI","links":{"agentsDoc":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"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/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_ti","name":{"en":"Ti (Security)","ru":"Ти (Безопасность)"},"ordinal":27,"sha256":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","skills":[],"specPath":"specs/agents/ti.t27","summary":{"en":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","ru":"Безопасность / резерв. Безопасность и AAIF — то, что Trinity дарит миру; место зарезервировано (ключевые файлы: в будущем)."},"tools":[],"typecheckOk":true,"witness":"spec-only"}],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"eaa5c05dcd02b39ddac5a151020e771b2794d185870ef4f8a8bed844260649e1","counts":{"byLayer":{"Archetypal":9,"Physical":9,"Spiritual":9},"enabled":26,"episodesAttributed":0,"episodesTotal":386,"episodesUnattributed":386,"specOnly":27,"specPlusExperience":0,"specs":27,"typecheckOk":27,"withClaraRole":8,"withCrons":0,"withExperience":0,"withSkills":1,"withTools":5},"experienceSnapshot":{"attribution":{"fields":["agent_letter","letter","agent","agent_id","agents","owner"],"letters":["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","TI"],"rule":"A letter is assigned only from an agent field that is one letter A-Z, \"ti\"/\"27th\", \"t27/\", or \"agent-...\"; everything else is unattributed. See scripts/sync-agents-experience.mjs and specs/agents/README.md."},"counts":{"agentsWithEpisodes":0,"attributed":0,"episodes":386,"unattributed":386,"unreadableFiles":56},"generatedAt":"2026-09-09T17:16:31.473Z","sources":[{"commit":"ddceafb50cd0e620387161228fa2c9ae134047de","episodes":383,"files":440,"repo":"trinity","unreadable":56},{"commit":"93727f733e23baf032d54505095777f16676d70b","episodes":3,"files":2,"repo":"t27","unreadable":0}]},"generatedAt":"2026-10-04T18:34:00.105Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":27,"total":27},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"version":1} diff --git a/apps/website/public/crons/spec-crons.json b/apps/website/public/crons/spec-crons.json index 1255f821f4..f84dc587b4 100644 --- a/apps/website/public/crons/spec-crons.json +++ b/apps/website/public/crons/spec-crons.json @@ -1 +1 @@ -{"codeOnly":[],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"1401f0e5cd3657d95c80bbaf8a5ded4eb28a6e588b47eaaa6302469a1ccf026a","counts":{"byHost":{"github-actions":12,"inngest":6,"railway-cron":1,"timer":14},"codeOnly":0,"specOnly":0,"specPlusCode":33,"specs":33,"typecheckOk":33,"withRuns":0},"crons":[{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/ci.yml#L10","where":{"file":".github/workflows/ci.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/ci","KIND":"cron","NAME":"CI/CD Pipeline","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 2 * * *","SERVICE":".github/workflows/ci.yml","SUMMARY_EN":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_ci","name":{"en":"CI/CD Pipeline"},"runNow":{"kind":"link","url":"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/gHashTag/999-multibots-telegraf/actions/workflows/ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","specPath":"specs/crons/999-multibots-telegraf-ci.t27","summary":{"en":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","ru":"Раз в день прогоняет весь конвейер сборки, проверки типов и тестов, чтобы зависимость, гниющая без пуша, всё равно была поймана."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/security.yml#L10","where":{"file":".github/workflows/security.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/security","KIND":"cron","NAME":"Security Checks","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 3 * * 0","SERVICE":".github/workflows/security.yml","SUMMARY_EN":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/security","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_security","name":{"en":"Security Checks"},"runNow":{"kind":"link","url":"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/gHashTag/999-multibots-telegraf/actions/workflows/security.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","specPath":"specs/crons/999-multibots-telegraf-security.t27","summary":{"en":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","ru":"Еженедельная проверка безопасности: поиск секретов по всей истории, аудит зависимостей и сканирование кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/formal-mutation.yml#L25","where":{"file":".github/workflows/formal-mutation.yml","host":"github-actions","line":25,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/formal-mutation","KIND":"cron","NAME":"formal-mutation","NOTE":"Weekly rather than per-push because a full run costs about thirty yosys invocations.","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 5 * * 1","SERVICE":".github/workflows/formal-mutation.yml","SUMMARY_EN":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/formal-mutation","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_formal_mutation","name":{"en":"formal-mutation"},"runNow":{"kind":"link","url":"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/gHashTag/t27/actions/workflows/formal-mutation.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","specPath":"specs/crons/t27-formal-mutation.t27","summary":{"en":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","ru":"Раз в неделю мутирует сгенерированный RTL и требует, чтобы каждый формальный гейт покраснел на своей мутации — доказательство, что гейты кусаются."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/pr-dashboard.yml#L6","where":{"file":".github/workflows/pr-dashboard.yml","host":"github-actions","line":6,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/pr-dashboard","KIND":"cron","NAME":"PR Dashboard","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":".github/workflows/pr-dashboard.yml","SUMMARY_EN":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/pr-dashboard","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_pr_dashboard","name":{"en":"PR Dashboard"},"runNow":{"kind":"link","url":"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/gHashTag/t27/actions/workflows/pr-dashboard.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","specPath":"specs/crons/t27-pr-dashboard.t27","summary":{"en":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","ru":"Каждый час пересобирает панель pull request из текущего состояния открытых PR."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-cron-cleanup.yml#L4","where":{"file":".github/workflows/agent-cron-cleanup.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-cron-cleanup","KIND":"cron","NAME":"Trinity Agent Cron Cleanup","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 */2 * * *","SERVICE":".github/workflows/agent-cron-cleanup.yml","SUMMARY_EN":"Finds agent deployments that got stuck and kills them, every two hours.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-cron-cleanup","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_cron_cleanup","name":{"en":"Trinity Agent Cron Cleanup"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/agent-cron-cleanup.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","specPath":"specs/crons/trinity-agent-cron-cleanup.t27","summary":{"en":"Finds agent deployments that got stuck and kills them, every two hours.","ru":"Каждые два часа находит застрявшие деплои агентов и убивает их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-queue-drain.yml#L4","where":{"file":".github/workflows/agent-queue-drain.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-queue-drain","KIND":"cron","NAME":"Trinity Agent Queue Drain","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"dispatches agent-spawn-pool.yml for a queued issue; no named skill invocation found in source","SCHEDULE":"*/5 * * * *","SERVICE":".github/workflows/agent-queue-drain.yml","SUMMARY_EN":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-queue-drain","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_queue_drain","name":{"en":"Trinity Agent Queue Drain"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/agent-queue-drain.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","specPath":"specs/crons/trinity-agent-queue-drain.t27","summary":{"en":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","ru":"Каждые пять минут ищет задачи в очереди и свободные слоты агентов и запускает следующего агента, когда есть место."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/brain-ci.yml#L11","where":{"file":".github/workflows/brain-ci.yml","host":"github-actions","line":11,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/brain-ci","KIND":"cron","NAME":"S³AI Brain CI — \"Functional MRI\" Gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * 0","SERVICE":".github/workflows/brain-ci.yml","SUMMARY_EN":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/brain-ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_brain_ci","name":{"en":"S³AI Brain CI — \"Functional MRI\" Gate"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/brain-ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","specPath":"specs/crons/trinity-brain-ci.t27","summary":{"en":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","ru":"Еженедельный стресс-тест мозга — длинная версия гейта здоровья, который получает каждый коммит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/codegen.yml#L10","where":{"file":".github/workflows/codegen.yml","host":"github-actions","line":10,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/codegen","KIND":"cron","NAME":"Codegen Validation","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * *","SERVICE":".github/workflows/codegen.yml","SUMMARY_EN":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/codegen","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_codegen","name":{"en":"Codegen Validation"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/codegen.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","specPath":"specs/crons/trinity-codegen.t27","summary":{"en":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","ru":"Раз в день проверяет генератор кода VIBEE независимо от того, пушил ли кто-нибудь."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/discover-callers.yml#L16","where":{"file":".github/workflows/discover-callers.yml","host":"github-actions","line":16,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/discover-callers","KIND":"cron","NAME":"Discover RTL check callers","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"41 5 * * *","SERVICE":".github/workflows/discover-callers.yml","SUMMARY_EN":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/discover-callers","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_discover_callers","name":{"en":"Discover RTL check callers"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/discover-callers.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","specPath":"specs/crons/trinity-discover-callers.t27","summary":{"en":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","ru":"Читает GitHub в поисках репозиториев, запускающих RTL-проверку, чтобы галерея считала своих пользователей сама."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/pages-health-check.yml#L17","where":{"file":".github/workflows/pages-health-check.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/pages-health-check","KIND":"cron","NAME":"Pages Health Check","NOTE":"An earlier version judged a bare status code, failed ninety-six times a day on a site that was up, and dispatched a redeploy each time.","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/15 * * * *","SERVICE":".github/workflows/pages-health-check.yml","SUMMARY_EN":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/pages-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_pages_health_check","name":{"en":"Pages Health Check"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/pages-health-check.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","specPath":"specs/crons/trinity-pages-health-check.t27","summary":{"en":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","ru":"Каждые пятнадцать минут запрашивает опубликованный сайт, следует редиректу и передеплоит только когда свидетельства говорят, что сломан именно деплой."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/signal-health-self.yml#L17","where":{"file":".github/workflows/signal-health-self.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/signal-health-self","KIND":"cron","NAME":"Signal health (self)","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"23 4 * * *","SERVICE":".github/workflows/signal-health-self.yml","SUMMARY_EN":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/signal-health-self","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_signal_health_self","name":{"en":"Signal health (self)"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/signal-health-self.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","specPath":"specs/crons/trinity-signal-health-self.t27","summary":{"en":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","ru":"Применяет проверку signal-health к репозиторию, который её продаёт, и записывает числа в данные сайта."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/site-live-gate.yml#L33","where":{"file":".github/workflows/site-live-gate.yml","host":"github-actions","line":33,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/site-live-gate","KIND":"cron","NAME":"Site live gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"17 6 * * *","SERVICE":".github/workflows/site-live-gate.yml","SUMMARY_EN":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/site-live-gate","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_site_live_gate","name":{"en":"Site live gate"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/site-live-gate.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","specPath":"specs/crons/trinity-site-live-gate.t27","summary":{"en":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","ru":"Сравнивает бандл с контент-хешем на апексе со сборкой main, чтобы «задеплоено» означало, что читатель это видит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/training/checkStuckTrainings.ts#L53","where":{"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","host":"railway:999-multibots-telegraf","line":53,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/check-stuck-trainings","KIND":"cron","NAME":"check-stuck-trainings","NOTE":"Records whose Replicate id is still a placeholder are skipped, because there is nothing on the provider to ask about.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts","SUMMARY_EN":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/check-stuck-trainings","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_check_stuck_trainings","name":{"en":"check-stuck-trainings"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","specPath":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","summary":{"en":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","ru":"Находит обучения моделей, застрявшие в pending или processing дольше порога, и сверяет их с Replicate."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56","where":{"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","host":"railway:999-multibots-telegraf","line":56,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/daily-sales-advisor","KIND":"cron","NAME":"daily-sales-advisor","NOTE":"One report per owner across all of their bots, assembled from the payments ledger rather than from a balance column.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 9 * * *","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","SUMMARY_EN":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/daily-sales-advisor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_daily_sales_advisor","name":{"en":"daily-sales-advisor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","specPath":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","summary":{"en":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","ru":"Собирает каждому владельцу бота утренний отчёт: вчерашняя выручка, расходы недели и что реально покупали пользователи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243","where":{"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","host":"railway:999-multibots-telegraf","line":243,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/health-check","KIND":"cron","NAME":"health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","SUMMARY_EN":"Probes the main API and the Inngest service every half hour and reports what answered.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_health_check","name":{"en":"health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","specPath":"specs/crons/999-multibots-telegraf-health-check.t27","summary":{"en":"Probes the main API and the Inngest service every half hour and reports what answered.","ru":"Каждые полчаса опрашивает основной API и сервис Inngest и сообщает, кто ответил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/logMonitor.ts#L360","where":{"file":"src/inngest_app/functions/monitoring/logMonitor.ts","host":"railway:999-multibots-telegraf","line":360,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/log-monitor","KIND":"cron","NAME":"log-monitor","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts","SUMMARY_EN":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/log-monitor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_log_monitor","name":{"en":"log-monitor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","specPath":"specs/crons/999-multibots-telegraf-log-monitor.t27","summary":{"en":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","ru":"Раз в день читает логи приложения, поручает модели свести ошибки и предупреждения и отправляет дайджест в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/webhookHealthGuard.ts#L218","where":{"file":"src/inngest_app/functions/webhookHealthGuard.ts","host":"railway:999-multibots-telegraf","line":218,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/periodic-webhook-health-check","KIND":"cron","NAME":"periodic-webhook-health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts","SUMMARY_EN":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/periodic-webhook-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_periodic_webhook_health_check","name":{"en":"periodic-webhook-health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","specPath":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","summary":{"en":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","ru":"Каждый час проверяет оба URL вебхука Telegram и шлёт админу критическую тревогу, когда не отвечает ни один."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/skillDetector.ts#L32","where":{"file":"src/inngest_app/functions/analytics/skillDetector.ts","host":"railway:999-multibots-telegraf","line":32,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/skill-detector","KIND":"cron","NAME":"skill-detector","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"the \"skills\" it saves are bot prompt patterns, not Claude Code skills; no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts","SUMMARY_EN":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/skill-detector","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_skill_detector","name":{"en":"skill-detector"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","specPath":"specs/crons/999-multibots-telegraf-skill-detector.t27","summary":{"en":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","ru":"Раз в день ищет в успешных генерациях повторяющиеся паттерны моделей и промптов и сохраняет новые как переиспользуемые навыки бота."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"railway-cron","repoPrivate":true,"sourceUrl":null,"where":{"file":null,"host":"railway:jobsearch-cron","line":null,"service":"jobsearch-cron"}},"control":"railway-dashboard","discarded":0,"fields":{"CONTROL":"railway-dashboard","ENABLED":true,"HOST":"railway-cron","ID":"railway-cron/999/jobsearch-cron","KIND":"cron","NAME":"jobsearch-cron","NOTE":"The schedule is configured in the Railway dashboard for project 999 and is not readable from the checkout; the probe below is what this catalog can verify.","ON_FAILURE":"unknown","REPO":"railway","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"","SCHEDULE_NOTE":"configured in the Railway dashboard (project 999); not readable from the checkout","SERVICE":"jobsearch-cron","SUMMARY_EN":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","TZ":"UTC"},"health":"ok","id":"railway-cron/999/jobsearch-cron","inSpecCorpus":true,"messages":[],"moduleName":"cron_railway_jobsearch_cron","name":{"en":"jobsearch-cron"},"runNow":{"kind":"link","url":"https://railway.com/project/564d9ebd-7aa8-44fe-93ec-e0b03c87158d/service/3196472e-b885-43e0-b553-0644664e4496","via":"railway"},"runs":[],"runsResolved":[],"sha256":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","specPath":"specs/crons/railway-jobsearch-cron.t27","summary":{"en":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","ru":"Сервис поиска вакансий по расписанию в проекте Railway, доступен на cron.t27.ai."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118","where":{"file":"apps/vibee-editor/render/scripts/agent-autopilot.ts","host":"railway:vibee-render","line":1118,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/agent-autopilot-L1118","INTERVAL_MS":1800000,"KIND":"cron","NAME":"agent-autopilot-L1118","NOTE":"Daemon mode only, under --loop or AUTOPILOT_LOOP=1; AUTOPILOT_INTERVAL_MS overrides the thirty-minute period, with a one-minute floor.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/scripts/agent-autopilot.ts:1118","SUMMARY_EN":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/agent-autopilot-L1118","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_agent_autopilot_L1118","name":{"en":"agent-autopilot-L1118"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","specPath":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","summary":{"en":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","ru":"Один цикл автопилота — проход генерации и затем тик канала; тик пропускается целиком, если предыдущий цикл ещё идёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/bot-owner-billing.ts#L474","where":{"file":"src/services/bot-owner-billing.ts","host":"railway:999-multibots-telegraf","line":474,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/bot-owner-billing-L474","INTERVAL_MS":86400000,"KIND":"cron","NAME":"bot-owner-billing-L474","NOTE":"The first run after a restart is skipped on purpose, and an owner whose payments cannot be read is left alone rather than accused.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/bot-owner-billing.ts:474","SUMMARY_EN":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/bot-owner-billing-L474","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_bot_owner_billing_L474","name":{"en":"bot-owner-billing-L474"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","specPath":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","summary":{"en":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","ru":"Пересчитывает долг каждого владельца бота по журналу платежей, предупреждает на мягком, тревожном и критическом порогах и отключает бота, три дня остающегося критическим."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/crmProactive.ts#L375","where":{"file":"src/services/crmProactive.ts","host":"railway:999-multibots-telegraf","line":375,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/crmProactive-L375","INTERVAL_MS":1800000,"KIND":"cron","NAME":"crmProactive-L375","NOTE":"The period is CRM_PROACTIVE_MINUTES from src/index.ts, thirty minutes by default; the first sweep waits two minutes after start.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/crmProactive.ts:375","SUMMARY_EN":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/crmProactive-L375","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_crmProactive_L375","name":{"en":"crmProactive-L375"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","specPath":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","summary":{"en":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","ru":"Один проактивный ход продавца для владельца: обходит очередь CRM и кладёт перед ним следующую карточку-черновик без просьбы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/generate-jobs.ts#L164","where":{"file":"apps/vibee-editor/render/generate-jobs.ts","host":"railway:vibee-render","line":164,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/generate-jobs-L164","INTERVAL_MS":300000,"KIND":"cron","NAME":"generate-jobs-L164","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/generate-jobs.ts:164","SUMMARY_EN":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/generate-jobs-L164","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_generate_jobs_L164","name":{"en":"generate-jobs-L164"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","specPath":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","summary":{"en":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","ru":"Через час после завершения выметает из памяти законченные задания генерации, когда потерявший соединение клиент успел забрать результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L318","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":318,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L318","INTERVAL_MS":60000,"KIND":"cron","NAME":"notificationHandler-L318","NOTE":"Wrapped in an exclusive tick, so two bot processes cannot deliver the same notification twice.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:318","SUMMARY_EN":"Drains the notification queue and delivers the Telegram messages waiting in it.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L318","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L318","name":{"en":"notificationHandler-L318"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","summary":{"en":"Drains the notification queue and delivers the Telegram messages waiting in it.","ru":"Разгружает очередь уведомлений и доставляет ждущие в ней сообщения Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L324","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":324,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L324","INTERVAL_MS":3600000,"KIND":"cron","NAME":"notificationHandler-L324","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:324","SUMMARY_EN":"Deletes notification messages old enough that nobody is going to read them.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L324","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L324","name":{"en":"notificationHandler-L324"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","summary":{"en":"Deletes notification messages old enough that nobody is going to read them.","ru":"Удаляет уведомления, настолько старые, что их уже никто не прочитает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/utils/production-monitor.ts#L80","where":{"file":"src/utils/production-monitor.ts","host":"railway:999-multibots-telegraf","line":80,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":false,"HOST":"timer","ID":"timer/999-multibots-telegraf/production-monitor-L80","INTERVAL_MS":300000,"KIND":"cron","NAME":"production-monitor-L80","NOTE":"Started only by running this module from the command line with the `monitor` argument; the bot's own entry point never starts it.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/utils/production-monitor.ts:80","SUMMARY_EN":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/production-monitor-L80","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_production_monitor_L80","name":{"en":"production-monitor-L80"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","specPath":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","summary":{"en":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","ru":"Повторяет проверки контейнера, nginx, порта, домена, вебхука и ресурсов системы и применяет включённые исправления."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/provider-health-monitor.ts#L344","where":{"file":"src/services/provider-health-monitor.ts","host":"railway:999-multibots-telegraf","line":344,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/provider-health-monitor-L344","INTERVAL_MS":300000,"KIND":"cron","NAME":"provider-health-monitor-L344","NOTE":"Providers listed in HEALTH_SKIP_PROVIDERS are deliberately not watched and do not raise the alarm.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/provider-health-monitor.ts:344","SUMMARY_EN":"Checks every AI provider that is not parked and records whether it is currently answering.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/provider-health-monitor-L344","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_provider_health_monitor_L344","name":{"en":"provider-health-monitor-L344"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","specPath":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","summary":{"en":"Checks every AI provider that is not parked and records whether it is currently answering.","ru":"Проверяет каждого не отключённого AI-провайдера и записывает, отвечает ли он сейчас."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L10845","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":10845,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L10845","INTERVAL_MS":30000,"KIND":"cron","NAME":"render-server-L10845","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:10845","SUMMARY_EN":"Pings every websocket peer and drops the ones that did not answer the previous round.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L10845","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L10845","name":{"en":"render-server-L10845"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","specPath":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","summary":{"en":"Pings every websocket peer and drops the ones that did not answer the previous round.","ru":"Пингует каждого websocket-пира и отключает тех, кто не ответил в прошлом раунде."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2301","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2301,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2301","INTERVAL_MS":60000,"KIND":"cron","NAME":"render-server-L2301","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2301","SUMMARY_EN":"Removes render jobs older than an hour from the in-memory job map.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2301","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2301","name":{"en":"render-server-L2301"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","specPath":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","summary":{"en":"Removes render jobs older than an hour from the in-memory job map.","ru":"Удаляет из карты в памяти задания рендера старше часа."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2325","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2325,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2325","INTERVAL_MS":600000,"KIND":"cron","NAME":"render-server-L2325","NOTE":"Checks often and writes rarely: the cursor lives in the database, because this Railway project has no volume and a deploy wipes local state.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2325","SUMMARY_EN":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2325","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2325","name":{"en":"render-server-L2325"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","specPath":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","summary":{"en":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","ru":"Читает журнал улья и доставляет отчёт королевы хранителям: тревоги — сразу, обычные события — пакетом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L919","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":919,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L919","INTERVAL_MS":5000,"KIND":"cron","NAME":"render-server-L919","NOTE":"Only starts when a session signing key is configured; a deployed render server refuses to boot without one.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:919","SUMMARY_EN":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L919","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L919","name":{"en":"render-server-L919"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","specPath":"specs/crons/999-multibots-telegraf-render-server-L919.t27","summary":{"en":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","ru":"Перечитывает из Postgres список отозванных сессий, чтобы отозванная сессия браузера перестала приниматься."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/modules/videoGenerator/taskCache.ts#L27","where":{"file":"src/modules/videoGenerator/taskCache.ts","host":"railway:999-multibots-telegraf","line":27,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/taskCache-L27","INTERVAL_MS":300000,"KIND":"cron","NAME":"taskCache-L27","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/modules/videoGenerator/taskCache.ts:27","SUMMARY_EN":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/taskCache-L27","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_taskCache_L27","name":{"en":"taskCache-L27"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","specPath":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","summary":{"en":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","ru":"Сбрасывает записи кэша видеогенерации старше пятнадцати минут, чтобы завершённая задача не блокировала следующий запрос."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/video-task-store.ts#L156","where":{"file":"src/services/video-task-store.ts","host":"railway:999-multibots-telegraf","line":156,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/video-task-store-L156","INTERVAL_MS":600000,"KIND":"cron","NAME":"video-task-store-L156","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/video-task-store.ts:156","SUMMARY_EN":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/video-task-store-L156","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_video_task_store_L156","name":{"en":"video-task-store-L156"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","specPath":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","summary":{"en":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","ru":"Забывает видеозадачи старше часа и переписывает хранилище на диск, если что-то было удалено."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-10-04T05:20:39.582Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":33,"total":33},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"version":1} +{"codeOnly":[],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"dd8aacec35727243b63f5ab9ba73f904094f8c8a637c5933a1668f451f0df598","counts":{"byHost":{"github-actions":12,"inngest":11,"railway-cron":1,"timer":14},"codeOnly":0,"specOnly":5,"specPlusCode":33,"specs":38,"typecheckOk":38,"withRuns":0},"crons":[{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/ci.yml#L10","where":{"file":".github/workflows/ci.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/ci","KIND":"cron","NAME":"CI/CD Pipeline","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 2 * * *","SERVICE":".github/workflows/ci.yml","SUMMARY_EN":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_ci","name":{"en":"CI/CD Pipeline"},"runNow":{"kind":"link","url":"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/gHashTag/999-multibots-telegraf/actions/workflows/ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","specPath":"specs/crons/999-multibots-telegraf-ci.t27","summary":{"en":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","ru":"Раз в день прогоняет весь конвейер сборки, проверки типов и тестов, чтобы зависимость, гниющая без пуша, всё равно была поймана."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/security.yml#L10","where":{"file":".github/workflows/security.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/security","KIND":"cron","NAME":"Security Checks","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 3 * * 0","SERVICE":".github/workflows/security.yml","SUMMARY_EN":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/security","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_security","name":{"en":"Security Checks"},"runNow":{"kind":"link","url":"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/gHashTag/999-multibots-telegraf/actions/workflows/security.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","specPath":"specs/crons/999-multibots-telegraf-security.t27","summary":{"en":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","ru":"Еженедельная проверка безопасности: поиск секретов по всей истории, аудит зависимостей и сканирование кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/formal-mutation.yml#L25","where":{"file":".github/workflows/formal-mutation.yml","host":"github-actions","line":25,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/formal-mutation","KIND":"cron","NAME":"formal-mutation","NOTE":"Weekly rather than per-push because a full run costs about thirty yosys invocations.","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 5 * * 1","SERVICE":".github/workflows/formal-mutation.yml","SUMMARY_EN":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/formal-mutation","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_formal_mutation","name":{"en":"formal-mutation"},"runNow":{"kind":"link","url":"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/gHashTag/t27/actions/workflows/formal-mutation.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","specPath":"specs/crons/t27-formal-mutation.t27","summary":{"en":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","ru":"Раз в неделю мутирует сгенерированный RTL и требует, чтобы каждый формальный гейт покраснел на своей мутации — доказательство, что гейты кусаются."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/pr-dashboard.yml#L6","where":{"file":".github/workflows/pr-dashboard.yml","host":"github-actions","line":6,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/pr-dashboard","KIND":"cron","NAME":"PR Dashboard","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":".github/workflows/pr-dashboard.yml","SUMMARY_EN":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/pr-dashboard","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_pr_dashboard","name":{"en":"PR Dashboard"},"runNow":{"kind":"link","url":"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/gHashTag/t27/actions/workflows/pr-dashboard.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","specPath":"specs/crons/t27-pr-dashboard.t27","summary":{"en":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","ru":"Каждый час пересобирает панель pull request из текущего состояния открытых PR."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-cron-cleanup.yml#L4","where":{"file":".github/workflows/agent-cron-cleanup.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-cron-cleanup","KIND":"cron","NAME":"Trinity Agent Cron Cleanup","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 */2 * * *","SERVICE":".github/workflows/agent-cron-cleanup.yml","SUMMARY_EN":"Finds agent deployments that got stuck and kills them, every two hours.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-cron-cleanup","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_cron_cleanup","name":{"en":"Trinity Agent Cron Cleanup"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/agent-cron-cleanup.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","specPath":"specs/crons/trinity-agent-cron-cleanup.t27","summary":{"en":"Finds agent deployments that got stuck and kills them, every two hours.","ru":"Каждые два часа находит застрявшие деплои агентов и убивает их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-queue-drain.yml#L4","where":{"file":".github/workflows/agent-queue-drain.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-queue-drain","KIND":"cron","NAME":"Trinity Agent Queue Drain","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"dispatches agent-spawn-pool.yml for a queued issue; no named skill invocation found in source","SCHEDULE":"*/5 * * * *","SERVICE":".github/workflows/agent-queue-drain.yml","SUMMARY_EN":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-queue-drain","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_queue_drain","name":{"en":"Trinity Agent Queue Drain"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/agent-queue-drain.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","specPath":"specs/crons/trinity-agent-queue-drain.t27","summary":{"en":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","ru":"Каждые пять минут ищет задачи в очереди и свободные слоты агентов и запускает следующего агента, когда есть место."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/brain-ci.yml#L11","where":{"file":".github/workflows/brain-ci.yml","host":"github-actions","line":11,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/brain-ci","KIND":"cron","NAME":"S³AI Brain CI — \"Functional MRI\" Gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * 0","SERVICE":".github/workflows/brain-ci.yml","SUMMARY_EN":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/brain-ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_brain_ci","name":{"en":"S³AI Brain CI — \"Functional MRI\" Gate"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/brain-ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","specPath":"specs/crons/trinity-brain-ci.t27","summary":{"en":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","ru":"Еженедельный стресс-тест мозга — длинная версия гейта здоровья, который получает каждый коммит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/codegen.yml#L10","where":{"file":".github/workflows/codegen.yml","host":"github-actions","line":10,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/codegen","KIND":"cron","NAME":"Codegen Validation","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * *","SERVICE":".github/workflows/codegen.yml","SUMMARY_EN":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/codegen","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_codegen","name":{"en":"Codegen Validation"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/codegen.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","specPath":"specs/crons/trinity-codegen.t27","summary":{"en":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","ru":"Раз в день проверяет генератор кода VIBEE независимо от того, пушил ли кто-нибудь."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/discover-callers.yml#L16","where":{"file":".github/workflows/discover-callers.yml","host":"github-actions","line":16,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/discover-callers","KIND":"cron","NAME":"Discover RTL check callers","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"41 5 * * *","SERVICE":".github/workflows/discover-callers.yml","SUMMARY_EN":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/discover-callers","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_discover_callers","name":{"en":"Discover RTL check callers"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/discover-callers.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","specPath":"specs/crons/trinity-discover-callers.t27","summary":{"en":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","ru":"Читает GitHub в поисках репозиториев, запускающих RTL-проверку, чтобы галерея считала своих пользователей сама."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/pages-health-check.yml#L17","where":{"file":".github/workflows/pages-health-check.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/pages-health-check","KIND":"cron","NAME":"Pages Health Check","NOTE":"An earlier version judged a bare status code, failed ninety-six times a day on a site that was up, and dispatched a redeploy each time.","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/15 * * * *","SERVICE":".github/workflows/pages-health-check.yml","SUMMARY_EN":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/pages-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_pages_health_check","name":{"en":"Pages Health Check"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/pages-health-check.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","specPath":"specs/crons/trinity-pages-health-check.t27","summary":{"en":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","ru":"Каждые пятнадцать минут запрашивает опубликованный сайт, следует редиректу и передеплоит только когда свидетельства говорят, что сломан именно деплой."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/signal-health-self.yml#L17","where":{"file":".github/workflows/signal-health-self.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/signal-health-self","KIND":"cron","NAME":"Signal health (self)","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"23 4 * * *","SERVICE":".github/workflows/signal-health-self.yml","SUMMARY_EN":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/signal-health-self","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_signal_health_self","name":{"en":"Signal health (self)"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/signal-health-self.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","specPath":"specs/crons/trinity-signal-health-self.t27","summary":{"en":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","ru":"Применяет проверку signal-health к репозиторию, который её продаёт, и записывает числа в данные сайта."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"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/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/site-live-gate.yml#L33","where":{"file":".github/workflows/site-live-gate.yml","host":"github-actions","line":33,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/site-live-gate","KIND":"cron","NAME":"Site live gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"17 6 * * *","SERVICE":".github/workflows/site-live-gate.yml","SUMMARY_EN":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/site-live-gate","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_site_live_gate","name":{"en":"Site live gate"},"runNow":{"kind":"link","url":"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/gHashTag/trinity/actions/workflows/site-live-gate.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","specPath":"specs/crons/trinity-site-live-gate.t27","summary":{"en":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","ru":"Сравнивает бандл с контент-хешем на апексе со сборкой main, чтобы «задеплоено» означало, что читатель это видит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/training/checkStuckTrainings.ts#L53","where":{"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","host":"railway:999-multibots-telegraf","line":53,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/check-stuck-trainings","KIND":"cron","NAME":"check-stuck-trainings","NOTE":"Records whose Replicate id is still a placeholder are skipped, because there is nothing on the provider to ask about.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts","SUMMARY_EN":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/check-stuck-trainings","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_check_stuck_trainings","name":{"en":"check-stuck-trainings"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","specPath":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","summary":{"en":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","ru":"Находит обучения моделей, застрявшие в pending или processing дольше порога, и сверяет их с Replicate."},"typecheckOk":true,"witness":"spec+code"},{"code":null,"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/client-telemetry-daily","KIND":"cron","NAME":"client-telemetry-daily","NOTE":"This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 7 * * *","SERVICE":"src/inngest_app/functions/analytics/clientTelemetryDaily.ts","SUMMARY_EN":"Sends the owner a daily report of where clients went and where they stopped, then prunes the events it accounted for.","TZ":"UTC"},"health":"warn","id":"inngest/999-multibots-telegraf/client-telemetry-daily","inSpecCorpus":false,"messages":["no job inngest/999-multibots-telegraf/client-telemetry-daily in public/crons/manifest.json"],"moduleName":"cron_999_multibots_telegraf_client_telemetry_daily","name":{"en":"client-telemetry-daily"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"825f844bc2da99cd31be217c74767e1f7308b5e92474e4b93b6083f3f83116e6","specPath":"specs/crons/999-multibots-telegraf-client-telemetry-daily.t27","summary":{"en":"Sends the owner a daily report of where clients went and where they stopped, then prunes the events it accounted for.","ru":"Отправляет владельцу ежедневный отчёт о том, куда дошли клиенты и где остановились, затем удаляет учтённые события."},"typecheckOk":true,"witness":"spec-only"},{"code":null,"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/club-invoice-abandoned-watch","KIND":"cron","NAME":"club-invoice-abandoned-watch","NOTE":"This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"20 * * * *","SERVICE":"src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts","SUMMARY_EN":"Marks the club invoices that went an hour with no charge after them as abandoned, once per invoice.","TZ":"UTC"},"health":"warn","id":"inngest/999-multibots-telegraf/club-invoice-abandoned-watch","inSpecCorpus":false,"messages":["no job inngest/999-multibots-telegraf/club-invoice-abandoned-watch in public/crons/manifest.json"],"moduleName":"cron_999_multibots_telegraf_club_invoice_abandoned_watch","name":{"en":"club-invoice-abandoned-watch"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"3819eaec27c9a304ee7665edd2f398b2d809fe302ff3cdb5fe7d3a8396ef26f0","specPath":"specs/crons/999-multibots-telegraf-club-invoice-abandoned-watch.t27","summary":{"en":"Marks the club invoices that went an hour with no charge after them as abandoned, once per invoice.","ru":"Помечает как брошенные клубные счета, после которых час не было оплаты, по одному разу на счёт."},"typecheckOk":true,"witness":"spec-only"},{"code":null,"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/crm-proactive-sweep","KIND":"cron","NAME":"crm-proactive-sweep","NOTE":"This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram. The same half hour is also stated by timer/999-multibots-telegraf/crmProactive-L375, the in-process interval this cron replaced on 2026-09-12; CRM_SWEEP_DRIVER=timer restores that one.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/crm/crmProactiveSweep.ts","SUMMARY_EN":"Sweeps every seller a registered carrier serves and may push one outreach card per seller to that seller's own chat.","TZ":"UTC"},"health":"warn","id":"inngest/999-multibots-telegraf/crm-proactive-sweep","inSpecCorpus":false,"messages":["no job inngest/999-multibots-telegraf/crm-proactive-sweep in public/crons/manifest.json"],"moduleName":"cron_999_multibots_telegraf_crm_proactive_sweep","name":{"en":"crm-proactive-sweep"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"717a0e26e5d68f82f05208a2925b0f49a891f1b554425c26997457649ede277e","specPath":"specs/crons/999-multibots-telegraf-crm-proactive-sweep.t27","summary":{"en":"Sweeps every seller a registered carrier serves and may push one outreach card per seller to that seller's own chat.","ru":"Обходит каждого продавца, которого обслуживает зарегистрированный носитель, и может прислать в его собственный чат по одной карточке для связи."},"typecheckOk":true,"witness":"spec-only"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56","where":{"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","host":"railway:999-multibots-telegraf","line":56,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/daily-sales-advisor","KIND":"cron","NAME":"daily-sales-advisor","NOTE":"One report per owner across all of their bots, assembled from the payments ledger rather than from a balance column.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 9 * * *","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","SUMMARY_EN":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/daily-sales-advisor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_daily_sales_advisor","name":{"en":"daily-sales-advisor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","specPath":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","summary":{"en":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","ru":"Собирает каждому владельцу бота утренний отчёт: вчерашняя выручка, расходы недели и что реально покупали пользователи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243","where":{"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","host":"railway:999-multibots-telegraf","line":243,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/health-check","KIND":"cron","NAME":"health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","SUMMARY_EN":"Probes the main API and the Inngest service every half hour and reports what answered.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_health_check","name":{"en":"health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","specPath":"specs/crons/999-multibots-telegraf-health-check.t27","summary":{"en":"Probes the main API and the Inngest service every half hour and reports what answered.","ru":"Каждые полчаса опрашивает основной API и сервис Inngest и сообщает, кто ответил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/logMonitor.ts#L360","where":{"file":"src/inngest_app/functions/monitoring/logMonitor.ts","host":"railway:999-multibots-telegraf","line":360,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/log-monitor","KIND":"cron","NAME":"log-monitor","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts","SUMMARY_EN":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/log-monitor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_log_monitor","name":{"en":"log-monitor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","specPath":"specs/crons/999-multibots-telegraf-log-monitor.t27","summary":{"en":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","ru":"Раз в день читает логи приложения, поручает модели свести ошибки и предупреждения и отправляет дайджест в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/webhookHealthGuard.ts#L218","where":{"file":"src/inngest_app/functions/webhookHealthGuard.ts","host":"railway:999-multibots-telegraf","line":218,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/periodic-webhook-health-check","KIND":"cron","NAME":"periodic-webhook-health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts","SUMMARY_EN":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/periodic-webhook-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_periodic_webhook_health_check","name":{"en":"periodic-webhook-health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","specPath":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","summary":{"en":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","ru":"Каждый час проверяет оба URL вебхука Telegram и шлёт админу критическую тревогу, когда не отвечает ни один."},"typecheckOk":true,"witness":"spec+code"},{"code":null,"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/robokassa-unclaimed-watch","KIND":"cron","NAME":"robokassa-unclaimed-watch","NOTE":"This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"20 7 * * *","SERVICE":"src/inngest_app/functions/money/robokassaUnclaimedWatch.ts","SUMMARY_EN":"Asks Robokassa every morning about the pending invoices of the last thirty days and reports the ones paid but never credited.","TZ":"UTC"},"health":"warn","id":"inngest/999-multibots-telegraf/robokassa-unclaimed-watch","inSpecCorpus":false,"messages":["no job inngest/999-multibots-telegraf/robokassa-unclaimed-watch in public/crons/manifest.json"],"moduleName":"cron_999_multibots_telegraf_robokassa_unclaimed_watch","name":{"en":"robokassa-unclaimed-watch"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"2a3e8a7c1d78f26a29e623e98d79abb407dc1b89245d50b9dd1a52544e5115ad","specPath":"specs/crons/999-multibots-telegraf-robokassa-unclaimed-watch.t27","summary":{"en":"Asks Robokassa every morning about the pending invoices of the last thirty days and reports the ones paid but never credited.","ru":"Каждое утро спрашивает Robokassa о незакрытых счетах за последние тридцать дней и сообщает о тех, что оплачены, но не зачислены."},"typecheckOk":true,"witness":"spec-only"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/skillDetector.ts#L32","where":{"file":"src/inngest_app/functions/analytics/skillDetector.ts","host":"railway:999-multibots-telegraf","line":32,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/skill-detector","KIND":"cron","NAME":"skill-detector","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"the \"skills\" it saves are bot prompt patterns, not Claude Code skills; no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts","SUMMARY_EN":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/skill-detector","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_skill_detector","name":{"en":"skill-detector"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","specPath":"specs/crons/999-multibots-telegraf-skill-detector.t27","summary":{"en":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","ru":"Раз в день ищет в успешных генерациях повторяющиеся паттерны моделей и промптов и сохраняет новые как переиспользуемые навыки бота."},"typecheckOk":true,"witness":"spec+code"},{"code":null,"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/ton-pending-watch","KIND":"cron","NAME":"ton-pending-watch","NOTE":"This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":"src/inngest_app/functions/money/tonPendingWatch.ts","SUMMARY_EN":"Asks the chain every hour whether coins arrived against a pending TON invoice that was never credited.","TZ":"UTC"},"health":"warn","id":"inngest/999-multibots-telegraf/ton-pending-watch","inSpecCorpus":false,"messages":["no job inngest/999-multibots-telegraf/ton-pending-watch in public/crons/manifest.json"],"moduleName":"cron_999_multibots_telegraf_ton_pending_watch","name":{"en":"ton-pending-watch"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"479d9b8bad59f36970cc890712e0798a1a869d7143796c3d96a6e17329017197","specPath":"specs/crons/999-multibots-telegraf-ton-pending-watch.t27","summary":{"en":"Asks the chain every hour whether coins arrived against a pending TON invoice that was never credited.","ru":"Каждый час спрашивает у сети, пришли ли монеты по незакрытому TON-счёту, который так и не зачислили."},"typecheckOk":true,"witness":"spec-only"},{"code":{"health":"warn","kind":"railway-cron","repoPrivate":true,"sourceUrl":null,"where":{"file":null,"host":"railway:jobsearch-cron","line":null,"service":"jobsearch-cron"}},"control":"railway-dashboard","discarded":0,"fields":{"CONTROL":"railway-dashboard","ENABLED":true,"HOST":"railway-cron","ID":"railway-cron/999/jobsearch-cron","KIND":"cron","NAME":"jobsearch-cron","NOTE":"The schedule is configured in the Railway dashboard for project 999 and is not readable from the checkout; the probe below is what this catalog can verify.","ON_FAILURE":"unknown","REPO":"railway","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"","SCHEDULE_NOTE":"configured in the Railway dashboard (project 999); not readable from the checkout","SERVICE":"jobsearch-cron","SUMMARY_EN":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","TZ":"UTC"},"health":"ok","id":"railway-cron/999/jobsearch-cron","inSpecCorpus":true,"messages":[],"moduleName":"cron_railway_jobsearch_cron","name":{"en":"jobsearch-cron"},"runNow":{"kind":"link","url":"https://railway.com/project/564d9ebd-7aa8-44fe-93ec-e0b03c87158d/service/3196472e-b885-43e0-b553-0644664e4496","via":"railway"},"runs":[],"runsResolved":[],"sha256":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","specPath":"specs/crons/railway-jobsearch-cron.t27","summary":{"en":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","ru":"Сервис поиска вакансий по расписанию в проекте Railway, доступен на cron.t27.ai."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118","where":{"file":"apps/vibee-editor/render/scripts/agent-autopilot.ts","host":"railway:vibee-render","line":1118,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/agent-autopilot-L1118","INTERVAL_MS":1800000,"KIND":"cron","NAME":"agent-autopilot-L1118","NOTE":"Daemon mode only, under --loop or AUTOPILOT_LOOP=1; AUTOPILOT_INTERVAL_MS overrides the thirty-minute period, with a one-minute floor.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/scripts/agent-autopilot.ts:1118","SUMMARY_EN":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/agent-autopilot-L1118","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_agent_autopilot_L1118","name":{"en":"agent-autopilot-L1118"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","specPath":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","summary":{"en":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","ru":"Один цикл автопилота — проход генерации и затем тик канала; тик пропускается целиком, если предыдущий цикл ещё идёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/bot-owner-billing.ts#L474","where":{"file":"src/services/bot-owner-billing.ts","host":"railway:999-multibots-telegraf","line":474,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/bot-owner-billing-L474","INTERVAL_MS":86400000,"KIND":"cron","NAME":"bot-owner-billing-L474","NOTE":"The first run after a restart is skipped on purpose, and an owner whose payments cannot be read is left alone rather than accused.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/bot-owner-billing.ts:474","SUMMARY_EN":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/bot-owner-billing-L474","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_bot_owner_billing_L474","name":{"en":"bot-owner-billing-L474"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","specPath":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","summary":{"en":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","ru":"Пересчитывает долг каждого владельца бота по журналу платежей, предупреждает на мягком, тревожном и критическом порогах и отключает бота, три дня остающегося критическим."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/crmProactive.ts#L375","where":{"file":"src/services/crmProactive.ts","host":"railway:999-multibots-telegraf","line":375,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/crmProactive-L375","INTERVAL_MS":1800000,"KIND":"cron","NAME":"crmProactive-L375","NOTE":"The period is CRM_PROACTIVE_MINUTES from src/index.ts, thirty minutes by default; the first sweep waits two minutes after start.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/crmProactive.ts:375","SUMMARY_EN":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/crmProactive-L375","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_crmProactive_L375","name":{"en":"crmProactive-L375"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","specPath":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","summary":{"en":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","ru":"Один проактивный ход продавца для владельца: обходит очередь CRM и кладёт перед ним следующую карточку-черновик без просьбы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/generate-jobs.ts#L164","where":{"file":"apps/vibee-editor/render/generate-jobs.ts","host":"railway:vibee-render","line":164,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/generate-jobs-L164","INTERVAL_MS":300000,"KIND":"cron","NAME":"generate-jobs-L164","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/generate-jobs.ts:164","SUMMARY_EN":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/generate-jobs-L164","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_generate_jobs_L164","name":{"en":"generate-jobs-L164"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","specPath":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","summary":{"en":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","ru":"Через час после завершения выметает из памяти законченные задания генерации, когда потерявший соединение клиент успел забрать результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L318","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":318,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L318","INTERVAL_MS":60000,"KIND":"cron","NAME":"notificationHandler-L318","NOTE":"Wrapped in an exclusive tick, so two bot processes cannot deliver the same notification twice.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:318","SUMMARY_EN":"Drains the notification queue and delivers the Telegram messages waiting in it.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L318","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L318","name":{"en":"notificationHandler-L318"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","summary":{"en":"Drains the notification queue and delivers the Telegram messages waiting in it.","ru":"Разгружает очередь уведомлений и доставляет ждущие в ней сообщения Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L324","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":324,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L324","INTERVAL_MS":3600000,"KIND":"cron","NAME":"notificationHandler-L324","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:324","SUMMARY_EN":"Deletes notification messages old enough that nobody is going to read them.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L324","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L324","name":{"en":"notificationHandler-L324"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","summary":{"en":"Deletes notification messages old enough that nobody is going to read them.","ru":"Удаляет уведомления, настолько старые, что их уже никто не прочитает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/utils/production-monitor.ts#L80","where":{"file":"src/utils/production-monitor.ts","host":"railway:999-multibots-telegraf","line":80,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":false,"HOST":"timer","ID":"timer/999-multibots-telegraf/production-monitor-L80","INTERVAL_MS":300000,"KIND":"cron","NAME":"production-monitor-L80","NOTE":"Started only by running this module from the command line with the `monitor` argument; the bot's own entry point never starts it.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/utils/production-monitor.ts:80","SUMMARY_EN":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/production-monitor-L80","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_production_monitor_L80","name":{"en":"production-monitor-L80"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","specPath":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","summary":{"en":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","ru":"Повторяет проверки контейнера, nginx, порта, домена, вебхука и ресурсов системы и применяет включённые исправления."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/provider-health-monitor.ts#L344","where":{"file":"src/services/provider-health-monitor.ts","host":"railway:999-multibots-telegraf","line":344,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/provider-health-monitor-L344","INTERVAL_MS":300000,"KIND":"cron","NAME":"provider-health-monitor-L344","NOTE":"Providers listed in HEALTH_SKIP_PROVIDERS are deliberately not watched and do not raise the alarm.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/provider-health-monitor.ts:344","SUMMARY_EN":"Checks every AI provider that is not parked and records whether it is currently answering.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/provider-health-monitor-L344","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_provider_health_monitor_L344","name":{"en":"provider-health-monitor-L344"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","specPath":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","summary":{"en":"Checks every AI provider that is not parked and records whether it is currently answering.","ru":"Проверяет каждого не отключённого AI-провайдера и записывает, отвечает ли он сейчас."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L10845","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":10845,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L10845","INTERVAL_MS":30000,"KIND":"cron","NAME":"render-server-L10845","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:10845","SUMMARY_EN":"Pings every websocket peer and drops the ones that did not answer the previous round.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L10845","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L10845","name":{"en":"render-server-L10845"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","specPath":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","summary":{"en":"Pings every websocket peer and drops the ones that did not answer the previous round.","ru":"Пингует каждого websocket-пира и отключает тех, кто не ответил в прошлом раунде."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2301","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2301,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2301","INTERVAL_MS":60000,"KIND":"cron","NAME":"render-server-L2301","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2301","SUMMARY_EN":"Removes render jobs older than an hour from the in-memory job map.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2301","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2301","name":{"en":"render-server-L2301"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","specPath":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","summary":{"en":"Removes render jobs older than an hour from the in-memory job map.","ru":"Удаляет из карты в памяти задания рендера старше часа."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2325","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2325,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2325","INTERVAL_MS":600000,"KIND":"cron","NAME":"render-server-L2325","NOTE":"Checks often and writes rarely: the cursor lives in the database, because this Railway project has no volume and a deploy wipes local state.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2325","SUMMARY_EN":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2325","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2325","name":{"en":"render-server-L2325"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","specPath":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","summary":{"en":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","ru":"Читает журнал улья и доставляет отчёт королевы хранителям: тревоги — сразу, обычные события — пакетом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L919","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":919,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L919","INTERVAL_MS":5000,"KIND":"cron","NAME":"render-server-L919","NOTE":"Only starts when a session signing key is configured; a deployed render server refuses to boot without one.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:919","SUMMARY_EN":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L919","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L919","name":{"en":"render-server-L919"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","specPath":"specs/crons/999-multibots-telegraf-render-server-L919.t27","summary":{"en":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","ru":"Перечитывает из Postgres список отозванных сессий, чтобы отозванная сессия браузера перестала приниматься."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/modules/videoGenerator/taskCache.ts#L27","where":{"file":"src/modules/videoGenerator/taskCache.ts","host":"railway:999-multibots-telegraf","line":27,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/taskCache-L27","INTERVAL_MS":300000,"KIND":"cron","NAME":"taskCache-L27","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/modules/videoGenerator/taskCache.ts:27","SUMMARY_EN":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/taskCache-L27","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_taskCache_L27","name":{"en":"taskCache-L27"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","specPath":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","summary":{"en":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","ru":"Сбрасывает записи кэша видеогенерации старше пятнадцати минут, чтобы завершённая задача не блокировала следующий запрос."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"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/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/video-task-store.ts#L156","where":{"file":"src/services/video-task-store.ts","host":"railway:999-multibots-telegraf","line":156,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/video-task-store-L156","INTERVAL_MS":600000,"KIND":"cron","NAME":"video-task-store-L156","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/video-task-store.ts:156","SUMMARY_EN":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/video-task-store-L156","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_video_task_store_L156","name":{"en":"video-task-store-L156"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","specPath":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","summary":{"en":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","ru":"Забывает видеозадачи старше часа и переписывает хранилище на диск, если что-то было удалено."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-10-04T18:34:00.105Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":38,"total":38},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"version":1} diff --git a/apps/website/public/functions/manifest.json b/apps/website/public/functions/manifest.json index 79a80bbbad..2bd4224898 100644 --- a/apps/website/public/functions/manifest.json +++ b/apps/website/public/functions/manifest.json @@ -1,17 +1,29 @@ { - "$source": "design/inngest-spec-first.md + functions-manifest.json (28 functions), the code witness for specs/functions", + "$source": "design/inngest-spec-first.md + functions-manifest.json (33 functions), the code witness for specs/functions", "repo": "gHashTag/999-multibots-telegraf", "generatedFrom": { "branch": "main", "commit": "a9c08b4", - "note": "Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet." + "note": "Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet.", + "addendum": { + "commit": "05fd960f1fef35d09e9ec04e642fcbe0b8c5610a", + "read_at": "2026-09-22", + "functions": [ + "crm-proactive-sweep", + "ton-pending-watch", + "club-invoice-abandoned-watch", + "robokassa-unclaimed-watch", + "client-telemetry-daily" + ], + "note": "Five functions registered after the 2026-09-09 pass were absent from this witness, so the site could draw no card for any of them -- including crm-proactive-sweep, which carried every failed run in the project over the week of 2026-09-22. Their rows are copied from the bot's own src/inngest_app/functions.manifest.json at this commit and carry read_at. probe_result is empty and deployed_2026_09_09 is null because no safe probe was sent to them and the 2026-09-09 deployment reading predates their registration; the deployed_2026_09_09 false the bot manifest still carries for three of them is that same stale pass, while the live status endpoint answered for all five on 2026-09-22. The 28 older rows are still as read at a9c08b4 and have drifted from this commit in about forty fields; re-pinning them is a separate pass." + } }, "probedAt": "2026-09-09", "deployedApp": { "name": "telegram-bot-client", "sdk": "js v3.54.2", "baseFunctions": 24, - "mainRegisters": 28 + "mainRegisters": 33 }, "functions": [ { @@ -873,6 +885,140 @@ "probe_result": "not-deployed", "deployed_2026_09_09": false, "control": "spec+code" + }, + { + "id": "crm-proactive-sweep", + "legacy_id": "", + "domain": "crm", + "trigger": "cron", + "event": "", + "legacy_events": [], + "cron": "*/30 * * * *", + "tz": "UTC", + "file": "src/inngest_app/functions/crm/crmProactiveSweep.ts", + "steps": [ + "resolve-sellers", + "sweep-${owner}" + ], + "retries": 0, + "on_failure": "admin-telegram", + "side_effects": [ + "messages-user", + "paid-api", + "db-write" + ], + "guard": "none", + "safe_probe": "{}", + "probe_result": "", + "deployed_2026_09_09": null, + "control": "spec+code", + "read_at": "05fd960" + }, + { + "id": "ton-pending-watch", + "legacy_id": "", + "domain": "money", + "trigger": "cron", + "event": "", + "legacy_events": [], + "cron": "0 * * * *", + "tz": "UTC", + "file": "src/inngest_app/functions/money/tonPendingWatch.ts", + "steps": [ + "look" + ], + "retries": 0, + "on_failure": "admin-telegram", + "side_effects": [ + "db-read", + "paid-api" + ], + "guard": "none", + "safe_probe": "{}", + "probe_result": "", + "deployed_2026_09_09": null, + "control": "spec+code", + "read_at": "05fd960" + }, + { + "id": "club-invoice-abandoned-watch", + "legacy_id": "", + "domain": "analytics", + "trigger": "cron", + "event": "", + "legacy_events": [], + "cron": "20 * * * *", + "tz": "UTC", + "file": "src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts", + "steps": [ + "mark" + ], + "retries": 0, + "on_failure": "admin-telegram", + "side_effects": [ + "db-read", + "db-write" + ], + "guard": "safe-mode", + "safe_probe": "{\"e2e_test\":true}", + "probe_result": "", + "deployed_2026_09_09": null, + "control": "spec+code", + "read_at": "05fd960" + }, + { + "id": "robokassa-unclaimed-watch", + "legacy_id": "", + "domain": "money", + "trigger": "cron", + "event": "", + "legacy_events": [], + "cron": "20 7 * * *", + "tz": "UTC", + "file": "src/inngest_app/functions/money/robokassaUnclaimedWatch.ts", + "steps": [ + "ask the provider" + ], + "retries": 0, + "on_failure": "admin-telegram", + "side_effects": [ + "db-read", + "paid-api" + ], + "guard": "none", + "safe_probe": "{}", + "probe_result": "", + "deployed_2026_09_09": null, + "control": "spec+code", + "read_at": "05fd960" + }, + { + "id": "client-telemetry-daily", + "legacy_id": "client-telemetry-daily", + "domain": "analytics", + "trigger": "cron", + "event": "", + "legacy_events": [], + "cron": "0 7 * * *", + "tz": "UTC", + "file": "src/inngest_app/functions/analytics/clientTelemetryDaily.ts", + "steps": [ + "build-report", + "send", + "prune" + ], + "retries": 0, + "on_failure": "admin-telegram", + "side_effects": [ + "messages-owners", + "db-write" + ], + "guard": "safe-mode", + "safe_probe": "{\"e2e_test\":true}", + "probe_result": "", + "deployed_2026_09_09": null, + "control": "spec+code", + "read_at": "05fd960" } ] } \ No newline at end of file diff --git a/apps/website/public/functions/spec-functions.json b/apps/website/public/functions/spec-functions.json index ba97dc6a98..e97435f276 100644 --- a/apps/website/public/functions/spec-functions.json +++ b/apps/website/public/functions/spec-functions.json @@ -1 +1 @@ -{"codeOnly":[],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"69ff64a1f8909df727b8ca8a137fd1a69f91984bc09121692d7a02efe8872142","counts":{"byDomain":{"analytics":2,"broadcast":1,"content":3,"instagram":3,"monitoring":4,"morph":1,"neuro":1,"payment":1,"reels":3,"render":3,"training":4,"webhook":1,"welcome":1},"byProbeResult":{"COMPLETED":7,"FAILED-at-guard":16,"not-deployed":4,"skipped":1},"bySideEffect":{"charges-balance":5,"db-write":16,"external-webhook":3,"messages-admin":6,"messages-owners":2,"messages-user":12,"none":0,"paid-api":19},"byTrigger":{"cron":5,"event":23},"codeOnly":0,"deployUnknown":0,"deployed":24,"notDeployed":4,"specOnly":0,"specPlusCode":28,"specs":28,"typecheckOk":28,"withCronSpec":5,"withDifferences":2},"functions":[{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","legacyId":"daily-sales-advisor","probeResult":"COMPLETED","retries":1,"steps":5},"cronSpec":"inngest/999-multibots-telegraf/daily-sales-advisor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 9 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-sales-advise","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"daily-sales-advisor","NAME":"Daily sales advisor","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/daily-sales-advisor. The step name report-${ownerId} is a template expanded once per owner. A manual invoke on 2026-09-09 messaged 13 owners; the hardening list asks this function to honour safe mode.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts:54","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-owners","load-payments-7d","load-payments-1d","load-payments-2d","report-${ownerId}"],"SUMMARY_EN":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-sales-advise","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_sales_advise","name":{"en":"Daily sales advisor","ru":"Ежедневный советник по продажам"},"sha256":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","specPath":"specs/functions/analytics-sales-advise.t27","summary":{"en":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","ru":"Каждый день в 09:00 UTC загружает владельцев ботов и их платежи за последние семь, два и один день и отправляет каждому владельцу отчёт о продажах с копией в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/skillDetector.ts","legacyId":"skill-detector","probeResult":"COMPLETED","retries":1,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/skill-detector","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-skills-detect","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"skill-detector","NAME":"Skill detector","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/skill-detector. The step name detect-${serviceType} is a template expanded once per service type.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts:30","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-existing-skills","detect-${serviceType}","notify-admin"],"SUMMARY_EN":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-skills-detect","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_skills_detect","name":{"en":"Skill detector","ru":"Детектор навыков"},"sha256":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","specPath":"specs/functions/analytics-skills-detect.t27","summary":{"en":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","ru":"Каждый день в 10:00 UTC загружает известные навыки, находит новые типы сервисов по недавнему использованию (по одному шагу на тип сервиса) и уведомляет админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"broadcast-message","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"broadcast","EVENT":"broadcast/message.send","GUARD":"validate-input","ID":"broadcast-message-send","KIND":"function","LEGACY_EVENTS":["broadcast/send-message"],"LEGACY_ID":"broadcast-message","NAME":"Broadcast message","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout (retries 3). Guard is validate-input. A test_telegram_id in the payload narrows the audience to one recipient.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/broadcast/broadcastMessage.ts:22","SIDE_EFFECTS":["messages-user"],"STEPS":["validate-input","check-permissions","fetch-users","send-messages","analyze-results"],"SUMMARY_EN":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"broadcast-message-send","inSpecCorpus":true,"messages":[],"moduleName":"fn_broadcast_message_send","name":{"en":"Broadcast message","ru":"Рассылка сообщения"},"sha256":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","specPath":"specs/functions/broadcast-message-send.t27","summary":{"en":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","ru":"Отправляет рассылку аудитории бота: проверяет запрос и права отправителя, получает список получателей, отправляет сообщения и подводит итоги доставки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateDetailedScript.ts","legacyId":"generate-detailed-script","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/detailed-script.generate","GUARD":"zod-schema","ID":"content-detailed-script-generate","KIND":"function","LEGACY_EVENTS":["content/generate-detailed-script"],"LEGACY_ID":"generate-detailed-script","NAME":"Generate detailed script","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateDetailedScript.ts:191","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-script-record","generate-detailed-scenes","save-detailed-script"],"SUMMARY_EN":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-detailed-script-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_detailed_script_generate","name":{"en":"Generate detailed script","ru":"Детальный сценарий"},"sha256":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","specPath":"specs/functions/content-detailed-script-generate.t27","summary":{"en":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","ru":"Разворачивает сценарий в подробные сцены: создаёт запись сценария, генерирует текст по сценам языковой моделью и сохраняет детальный сценарий."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateScenarioClips.ts","legacyId":"generate-scenario-clips","probeResult":"FAILED-at-guard","retries":null,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scenario-clips.generate","GUARD":"zod-schema","ID":"content-scenario-clips-generate","KIND":"function","LEGACY_EVENTS":["content/generate-scenario-clips"],"LEGACY_ID":"generate-scenario-clips","NAME":"Generate scenario clips","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateScenarioClips.ts:221","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-scenario-record","generate-detailed-scenes","create-text-reports-archive","update-scenario-record"],"SUMMARY_EN":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scenario-clips-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scenario_clips_generate","name":{"en":"Generate scenario clips","ru":"Клипы по сценарию"},"sha256":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","specPath":"specs/functions/content-scenario-clips-generate.t27","summary":{"en":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","ru":"Строит сценарий по скрипту: создаёт запись, генерирует подробные сцены, упаковывает текстовые отчёты в архив и обновляет запись."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateContentScripts.ts","legacyId":"generate-content-scripts","probeResult":"FAILED-at-guard","retries":null,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scripts.generate","GUARD":"zod-schema","ID":"content-scripts-generate","KIND":"function","LEGACY_EVENTS":["instagram/generate-scripts"],"LEGACY_ID":"generate-content-scripts","NAME":"Generate content scripts","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema. The legacy event name keeps the instagram/ prefix the function was first registered under.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateContentScripts.ts:44","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["get-reel-data","extract-audio","transcribe-audio","generate-scripts","save-scripts"],"SUMMARY_EN":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scripts-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scripts_generate","name":{"en":"Generate content scripts","ru":"Сценарии контента"},"sha256":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","specPath":"specs/functions/content-scripts-generate.t27","summary":{"en":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","ru":"Пишет сценарии контента по сохранённому рилсу: загружает рилс, извлекает и расшифровывает звук, генерирует сценарии языковой моделью и сохраняет их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/findCompetitors.ts","legacyId":"find-competitors","probeResult":"FAILED-at-guard","retries":null,"steps":6},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/competitors.find","GUARD":"validate-input","ID":"instagram-competitors-find","KIND":"function","LEGACY_EVENTS":["instagram/find-competitors"],"LEGACY_ID":"find-competitors","NAME":"Find competitors","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): saveCompetitors in src/core/instagram/index.ts is a stub that reports saved: N without writing, while the run makes paid RapidAPI calls. Code kept; re-register once the write is real and RapidAPI errors are classified.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/findCompetitors.ts:134","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-api","filter-by-followers","save-to-competitors-table","send-telegram-notification"],"SUMMARY_EN":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-competitors-find","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_competitors_find","name":{"en":"Find competitors","ru":"Поиск конкурентов"},"sha256":"3bbe8e9dcf6220cf1912a9eb736e7c54e866dd158ac95c2b89c5623f05149d1e","specPath":"specs/functions/instagram-competitors-find.t27","summary":{"en":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","ru":"Находит конкурентов в Instagram для проекта: проверяет запрос и проект, вызывает Instagram API, фильтрует по числу подписчиков, сохраняет конкурентов и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/analyzeCompetitorReels.ts","legacyId":"analyze-competitor-reels","probeResult":"FAILED-at-guard","retries":null,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/reels.analyze","GUARD":"validate-input","ID":"instagram-reels-analyze","KIND":"function","LEGACY_EVENTS":["instagram/analyze-reels"],"LEGACY_ID":"analyze-competitor-reels","NAME":"Analyze competitor reels","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): saveReelsAnalysis in src/core/instagram/index.ts is a stub that reports saved: N without writing, while the run makes up to 12 paid RapidAPI calls per event. Code kept; re-register once the write is real and RapidAPI errors are classified.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/analyzeCompetitorReels.ts:211","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-reels-api","filter-reels-by-date","calculate-metrics","save-to-reels-analysis-table","send-telegram-notification"],"SUMMARY_EN":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-reels-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_reels_analyze","name":{"en":"Analyze competitor reels","ru":"Анализ рилсов конкурента"},"sha256":"f0ba573788faf3273f35a4c256f805b893658c75d00d1a811f21a984d7e331cd","specPath":"specs/functions/instagram-reels-analyze.t27","summary":{"en":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","ru":"Анализирует недавние рилсы конкурента в Instagram для проекта: проверяет запрос и проект, вызывает API рилсов, фильтрует по дате, считает метрики, сохраняет анализ и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/extractTopContent.ts","legacyId":"extract-top-content","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/top-content.extract","GUARD":"zod-schema","ID":"instagram-top-content-extract","KIND":"function","LEGACY_EVENTS":["instagram/extract-top"],"LEGACY_ID":"extract-top-content","NAME":"Extract top content","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/extractTopContent.ts:33","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["query-top-reels","process-reels","format-report"],"SUMMARY_EN":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-top-content-extract","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_top_content_extract","name":{"en":"Extract top content","ru":"Лучший контент"},"sha256":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","specPath":"specs/functions/instagram-top-content-extract.t27","summary":{"en":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","ru":"Извлекает самые результативные рилсы, уже сохранённые для проекта: запрашивает их из базы, обрабатывает и формирует отчёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"critical-error-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/error.report","GUARD":"none","ID":"monitoring-error-report","KIND":"function","LEGACY_EVENTS":["app/error.critical"],"LEGACY_ID":"critical-error-monitor","NAME":"Critical error report","NOTE":"No guard: the event is emitted by the application itself. The hardening list asks the formatter to render string, Error and {message} payloads and never print [object Object].","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:175","SIDE_EFFECTS":["messages-admin"],"STEPS":["analyze-error","format-message","send-notification","log-for-analysis"],"SUMMARY_EN":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-error-report","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_error_report","name":{"en":"Critical error report","ru":"Отчёт о критической ошибке"},"sha256":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","specPath":"specs/functions/monitoring-error-report.t27","summary":{"en":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","ru":"Сообщает о критической ошибке приложения в админ-чат: анализирует ошибку, форматирует сообщение, отправляет уведомление и записывает инцидент для последующего разбора."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"health-check","probeResult":"COMPLETED","retries":2,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/health-check","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-health-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"health-check","NAME":"Health check","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/health-check. Lives in the same file as monitoring-error-report.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:235","SIDE_EFFECTS":["messages-admin"],"STEPS":["check-api-health","check-inngest-health","notify-unhealthy"],"SUMMARY_EN":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-health-check","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_health_check","name":{"en":"Health check","ru":"Проверка здоровья"},"sha256":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","specPath":"specs/functions/monitoring-health-check.t27","summary":{"en":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","ru":"Каждые 30 минут проверяет API-сервер и сервис Inngest и пишет в админ-чат, если один из них нездоров."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"log-monitor","probeResult":"COMPLETED","retries":2,"steps":4},"cronSpec":"inngest/999-multibots-telegraf/log-monitor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-logs-analyze","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"log-monitor","NAME":"Daily log analysis","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/log-monitor. When LOG_DIR is absent on the host the analysis has nothing to read; the hardening list asks for a fallback to the Inngest run summary.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:352","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-logs-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_analyze","name":{"en":"Daily log analysis","ru":"Ежедневный анализ логов"},"sha256":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","specPath":"specs/functions/monitoring-logs-analyze.t27","summary":{"en":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","ru":"Каждый день в 10:00 UTC читает логи приложения, ищет в них ошибки и предупреждения, формирует сводку и отправляет её в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"trigger-log-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/logs.trigger","GUARD":"none","ID":"monitoring-logs-trigger","KIND":"function","LEGACY_EVENTS":["logs/monitor.trigger"],"LEGACY_ID":"trigger-log-monitor","NAME":"Log analysis on demand","NOTE":"Shares its file and its four steps with monitoring-logs-analyze; only the trigger differs.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:408","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-logs-trigger","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_trigger","name":{"en":"Log analysis on demand","ru":"Анализ логов по запросу"},"sha256":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","specPath":"specs/functions/monitoring-logs-trigger.t27","summary":{"en":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","ru":"Выполняет тот же анализ логов, что и ежедневная задача, по событию: читает логи, анализирует их, формирует сводку и отправляет в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/training/morphImages.ts","legacyId":"morph-images","probeResult":"FAILED-at-guard","retries":3,"steps":8},"cronSpec":null,"differences":[{"code":["charges-balance","paid-api","messages-user"],"field":"SIDE_EFFECTS","spec":["paid-api","messages-user"]}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"morph","EVENT":"morph/images.generate","GUARD":"check-user-exists","ID":"morph-images-generate","KIND":"function","LEGACY_EVENTS":["morph/images.requested"],"LEGACY_ID":"morph-images","NAME":"Morph images","NOTE":"Guard is check-user-exists. A second, unregistered copy of this function exists in the tree (src/inngest_app/functions/morphImages.ts); the registered one is the file named in SERVICE. 2026-09-17: charges-balance removed from SIDE_EFFECTS -- the file imports getUserBalance only; check-balance reads the balance against a constant of 50 and nothing in the file deducts it, so the manifest and this spec overstated what the function does with money. deliver-result: video_url is a path on the worker written by concatenate-all-videos, not a URL; the code passed the bare string to sendVideo and sendDocument (read by Telegram as file_id or URL), fell into the catch and sent the user that same path as a download link while returning delivered. Now the file is streamed as { source }, and a failed delivery rethrows so the step is retried and, after RETRIES, onFailure tells the admin. Not verified: a live morph run; the paid Kling calls in process-all-pairs remain unmetered. Test: 999-multibots-telegraf src/__tests__/render/deliveryIsNotSwallowed.test.ts.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"is_ru\": true, \"job_id\": \"e2e-probe\", \"image_files\": [], \"extraction_path\": \"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/nonexistent/e2e\", \"morphing_type\": \"seamless\", \"model\": \"kling-v1.6-pro\"}","SERVICE":"src/inngest_app/functions/training/morphImages.ts:30","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["check-user-exists","check-balance","notify-start","process-all-pairs","process-loop-pair","concatenate-all-videos","cleanup-temp-files","deliver-result"],"SUMMARY_EN":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"morph-images-generate","inSpecCorpus":true,"messages":["SIDE_EFFECTS [\"paid-api\",\"messages-user\"] differs from the manifest ([\"charges-balance\",\"paid-api\",\"messages-user\"])"],"moduleName":"fn_morph_images_generate","name":{"en":"Morph images","ru":"Морфинг изображений"},"sha256":"21e644a9c57ab27f06d0622aec834802dba71ddf07077710b4bbd489b479789c","specPath":"specs/functions/morph-images-generate.t27","summary":{"en":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","ru":"Превращает последовательность изображений пользователя в одно видео: проверяет пользователя и баланс, сообщает о старте, обрабатывает каждую пару изображений в клип, склеивает клипы, очищает временные файлы и отдаёт результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/neuroImageGeneration.ts","legacyId":"neuro-image-generation","probeResult":"FAILED-at-guard","retries":3,"steps":11},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"neuro","EVENT":"neuro/image.generate","GUARD":"check-user","ID":"neuro-image-generate","KIND":"function","LEGACY_EVENTS":["neuro/photo.generate"],"LEGACY_ID":"neuro-image-generation","NAME":"Neuro image generation","NOTE":"Guard is check-user: an unknown telegram_id stops the run before any payment or paid API call. The step names generate-image-${i} and notify-image-${i} are templates the code expands once per requested image. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): no producer in the repo sends neuro/image.generate or neuro/photo.generate, the balance is charged before generation with no refund in onFailure, and processBalanceOperation carries no inv_id, so a retried step would charge twice. Code kept; re-register as reserve -> generate -> commit with inv_id = event.id and a real producer.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"prompt\": \"safe-mode probe\", \"is_ru\": true, \"num_images\": 1, \"model_url\": \"e2e/none\"}","SERVICE":"src/inngest_app/functions/neuroImageGeneration.ts:56","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["get-bot","check-user","get-user-gender","update-level","calculate-total-cost","process-payment","get-aspect-ratio","generate-image-${i}","notify-image-${i}","deduct-balance-final","final-notification"],"SUMMARY_EN":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"neuro-image-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_neuro_image_generate","name":{"en":"Neuro image generation","ru":"Нейро-генерация изображений"},"sha256":"59c6d36a7d14cec3721983edd83118f5c958db29278a557c0cf301cbebfa3dc4","specPath":"specs/functions/neuro-image-generate.t27","summary":{"en":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","ru":"Генерирует одно или несколько изображений для пользователя Telegram по промпту и URL модели: загружает бота и пользователя, считает полную стоимость, списывает баланс, затем генерирует и отправляет каждое изображение и сводит баланс в конце."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"payment-processing-ai-server","probeResult":"COMPLETED","retries":null,"steps":0},"cronSpec":null,"differences":[{"code":"log","field":"ON_FAILURE","spec":"admin-telegram"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"payment","EVENT":"payment/ai-server.process","GUARD":"amount-match","ID":"payment-ai-server-process","KIND":"function","LEGACY_EVENTS":["payment/process-ai-server"],"LEGACY_ID":"payment-processing-ai-server","NAME":"AI-server payment processing","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout, where retries is declared as 3 and onFailure is createInngestFailureHandler, which logs and messages the admin chat -- the manifest says on_failure log. Guard is amount-match: an amount matching no plan or option stops the run, which is why the 2026-09-09 probe with IncSum 0.01 COMPLETED without a balance change.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"IncSum\": \"0.01\", \"inv_id\": \"e2e-safe-mode-probe\"}","SERVICE":"src/inngest_app/functions/payments/paymentProcessing.ts:64","SIDE_EFFECTS":["db-write","messages-user"],"STEPS":["check-subscription-plan","check-payment-option","get-user-info","get-bot-config","update-user-balance","send-notification"],"SUMMARY_EN":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"payment-ai-server-process","inSpecCorpus":true,"messages":["ON_FAILURE \"admin-telegram\" differs from the manifest (\"log\")"],"moduleName":"fn_payment_ai_server_process","name":{"en":"AI-server payment processing","ru":"Обработка платежа AI-сервера"},"sha256":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","specPath":"specs/functions/payment-ai-server-process.t27","summary":{"en":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","ru":"Обрабатывает платёж, о котором сообщил AI-сервер: сопоставляет сумму с планом подписки или вариантом оплаты, загружает пользователя и конфигурацию бота, обновляет баланс и отправляет уведомление о платеже."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/ai-reels-callback.ts","legacyId":"ai-reels-callback","probeResult":"FAILED-at-guard","retries":3,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.callback","GUARD":"extract-job-id","ID":"reels-ai-callback","KIND":"function","LEGACY_EVENTS":["ai-reels-callback"],"LEGACY_ID":"ai-reels-callback","NAME":"AI reels callback","NOTE":"Guard is extract-job-id: a payload without a job id fails before anything is sent.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/ai-reels-callback.ts:158","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["send-completed-video","send-failed-message","send-processing-update"],"SUMMARY_EN":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-callback","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_callback","name":{"en":"AI reels callback","ru":"Колбэк AI-рилсов"},"sha256":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","specPath":"specs/functions/reels-ai-callback.t27","summary":{"en":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","ru":"Обрабатывает колбэк провайдера по задаче AI-рилса: извлекает id задачи, затем отправляет заказчику готовое видео, сообщение об ошибке или статус обработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAIReelsFunction.ts","legacyId":"ai-reels-generation","probeResult":"skipped","retries":2,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.generate","GUARD":"none","ID":"reels-ai-generate","KIND":"function","LEGACY_EVENTS":["ai-reels/generate"],"LEGACY_ID":"ai-reels-generation","NAME":"AI reels generation","NOTE":"No guard: the first step already calls a paid API, so the 2026-09-09 probe skipped this function (PROBE_RESULT skipped). The hardening list asks for a validate-input step before that call.","ON_FAILURE":"log","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/generateAIReelsFunction.ts:44","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-lipsync-video","generate-wan25-video","merge-videos","notify-telegram"],"SUMMARY_EN":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_generate","name":{"en":"AI reels generation","ru":"Генерация AI-рилсов"},"sha256":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","specPath":"specs/functions/reels-ai-generate.t27","summary":{"en":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","ru":"Собирает короткий AI-рилс: липсинк-видео из изображения и текста или аудио, второй сгенерированный клип, их склейка и отправка результата пользователю в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts","legacyId":"generate-advanced-looping-video","probeResult":"FAILED-at-guard","retries":2,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/loop.generate","GUARD":"min-images","ID":"reels-loop-generate","KIND":"function","LEGACY_EVENTS":["reels/generate-advanced-loop"],"LEGACY_ID":"generate-advanced-looping-video","NAME":"Advanced looping video","NOTE":"Guard is min-images: fewer images than the minimum stops the run before any clip is generated.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"image_urls\": [], \"bot_token\": \"\", \"prompt\": \"safe-mode probe\"}","SERVICE":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts:77","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-morphing-clips","download-video-clips","combine-video-clips","add-music","send-to-telegram","send-to-pulse","cleanup"],"SUMMARY_EN":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-loop-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_loop_generate","name":{"en":"Advanced looping video","ru":"Зацикленное видео"},"sha256":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","specPath":"specs/functions/reels-loop-generate.t27","summary":{"en":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","ru":"Превращает набор изображений пользователя в зацикленное видео: морфинг-клипы между изображениями, скачивание и склейка, фоновая музыка, доставка пользователю в Telegram и в пульс-канал, затем очистка."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderAvatarVideo.ts","legacyId":"render-avatar-video","probeResult":"FAILED-at-guard","retries":3,"steps":13},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/avatar-video.run","GUARD":"zod-schema","ID":"render-avatar-video-run","KIND":"function","LEGACY_EVENTS":["render/avatar-video"],"LEGACY_ID":"render-avatar-video","NAME":"Render avatar video","NOTE":"Guard is zod-schema. Each wait-* step polls a provider job until it completes. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): the pipeline runs on stub services (src/services/hedra.ts, heygen.ts, kieAI.ts, elevenLabs.ts announce stub mode), so a run would report a video that was never rendered. Code kept; re-register when the providers are real.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderAvatarVideo.ts:174","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job","generate-speech-audio","start-hedra-generation","wait-hedra-completion","start-heygen-generation","wait-heygen-completion","generate-transcription","generate-broll-prompts","generate-brolls-parallel","wait-brolls-completion","create-job-settings","upload-settings-to-s3","trigger-render"],"SUMMARY_EN":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-avatar-video-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_avatar_video_run","name":{"en":"Render avatar video","ru":"Рендер аватар-видео"},"sha256":"4a70bb6cf93bfdf3f5ab5a55ed7e3c657771849d1c78e1384b61e2ce17fd7860","specPath":"specs/functions/render-avatar-video-run.t27","summary":{"en":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","ru":"Создаёт аватар-видео: генерирует речь, запускает генерацию аватара (Hedra, затем HeyGen), расшифровывает, пишет промпты B-roll и параллельно генерирует B-roll, затем записывает настройки задачи в S3 и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/render.ts","legacyId":"render","probeResult":"FAILED-at-guard","retries":3,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/job.run","GUARD":"zod-schema","ID":"render-job-run","KIND":"function","LEGACY_EVENTS":["render"],"LEGACY_ID":"render","NAME":"Render job","NOTE":"Guard is zod-schema: the payload is parsed before any file is downloaded. 2026-09-17: the callback step must fail when the callback fails. sendCallback (helpers/renderSteps.ts) caught the axios error and returned, so the step COMPLETED on a dead callback URL, the try/catch around it in render.ts never fired and the run reported a delivered render that no client heard about. Now sendCallback rethrows, the try/catch is gone: Inngest retries the step RETRIES times, then the run fails and onFailure messages the admin; the rendered file is already in S3 by then and its URL sits in the upload-to-s3 step output. create-job-folder: the plan asked for mkdir -p, but the render host is Windows (helpers/config.ts) and ssh.exec resolves on any exit code, so a re-run over an existing folder does not fail; left as is. Test: 999-multibots-telegraf src/__tests__/render/deliveryIsNotSwallowed.test.ts.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/render.ts:38","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job-folder","download-files","render","upload-to-s3","callback"],"SUMMARY_EN":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-job-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_job_run","name":{"en":"Render job","ru":"Задача рендера"},"sha256":"4a41dba0e307deac4bb9336fb009306d6ea9f0efd86e2dd291e6a00b545241b3","specPath":"specs/functions/render-job-run.t27","summary":{"en":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","ru":"Рендерит видеозадачу на рендер-сервере: создаёт папку задачи, скачивает входные файлы, рендерит, загружает результат в S3 и вызывает колбэк задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderRiddle.ts","legacyId":"render-riddle","probeResult":"FAILED-at-guard","retries":3,"steps":15},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/riddle.run","GUARD":"zod-schema","ID":"render-riddle-run","KIND":"function","LEGACY_EVENTS":["render-riddle"],"LEGACY_ID":"render-riddle","NAME":"Render riddle video","NOTE":"Guard is zod-schema. The step names generate-broll-${index} and wait-broll-${index} are templates expanded once per scene; start-avatar-generation and wait-avatar-completion appear twice in the code and are listed twice here.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderRiddle.ts:59","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["preflight-render-capacity","load-template-json","create-job","generate-speech-audio","start-avatar-generation","wait-avatar-completion","start-avatar-generation","wait-avatar-completion","extract-avatar-speech-url","generate-transcription","generate-broll-prompts","generate-broll-${index}","wait-broll-${index}","prepare-template-json","trigger-render"],"SUMMARY_EN":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-riddle-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_riddle_run","name":{"en":"Render riddle video","ru":"Рендер видео-загадки"},"sha256":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","specPath":"specs/functions/render-riddle-run.t27","summary":{"en":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","ru":"Создаёт видео-загадку по шаблону: проверяет ёмкость рендера, загружает шаблон, генерирует речь и клипы аватара, расшифровывает, генерирует по одному B-roll на сцену, готовит JSON шаблона и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts","legacyId":"handle-model-training-completed","probeResult":"not-deployed","retries":2,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.complete","GUARD":"unknown","ID":"training-model-complete","KIND":"function","LEGACY_EVENTS":["model/training.completed"],"LEGACY_ID":"handle-model-training-completed","NAME":"Model training completed","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest): the deployed app registers 24 base functions and this one is not among them. Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-training-record","update-training-status","send-telegram-notification"],"SUMMARY_EN":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-complete","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_model_complete","name":{"en":"Model training completed","ru":"Обучение модели завершено"},"sha256":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","specPath":"specs/functions/training-model-complete.t27","summary":{"en":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","ru":"Обрабатывает событие завершения обучения от провайдера: находит запись обучения, обновляет её статус и список моделей и отправляет пользователю уведомление в Telegram о завершённом или упавшем обучении."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts","legacyId":"generate-model-training","probeResult":"FAILED-at-guard","retries":0,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.start","GUARD":"validate-steps","ID":"training-model-start","KIND":"function","LEGACY_EVENTS":["model/training.start"],"LEGACY_ID":"generate-model-training","NAME":"Model training start (v1)","NOTE":"RETRIES is 0 by declaration: a failed start is not retried, because a retry would create a second Replicate training. Guard is validate-steps.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"steps\": -1, \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"is_ru\": true}","SERVICE":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["validate-credentials","check-duplicates","validate-zip-url","create-replicate-model","save-pending-record","create-replicate-training","update-training-record","notify-user-started"],"SUMMARY_EN":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_start","name":{"en":"Model training start (v1)","ru":"Старт обучения модели (v1)"},"sha256":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","specPath":"specs/functions/training-model-start.t27","summary":{"en":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","ru":"Запускает дообучение на Replicate для пользователя: проверяет учётные данные, отклоняет дубликаты, проверяет URL архива, создаёт модель и обучение на Replicate, записывает их и сообщает пользователю о старте."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"model-training-v2","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model-v2.start","GUARD":"check-user-exists","ID":"training-model-v2-start","KIND":"function","LEGACY_EVENTS":["model/training.v2.requested"],"LEGACY_ID":"model-training-v2","NAME":"Model training start (v2)","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout. RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is check-user-exists. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): the get-bot step returns the Telegraf instance, so the bot token is serialized into the step output; the DB row is written after the paid API call; the BFL branch has no completion handler. Code kept; re-register only after those three are fixed and a safe probe passes.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"steps\": 1, \"is_ru\": true, \"gender\": \"male\"}","SERVICE":"src/inngest_app/functions/training/modelTrainingV2.ts:45","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["check-user-exists","update-user-level","get-bot","check-balance","encode-zip","create-training","save-training-to-db","notify-user","deduct-balance","refund-balance","handle-error"],"SUMMARY_EN":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-v2-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_v2_start","name":{"en":"Model training start (v2)","ru":"Старт обучения модели (v2)"},"sha256":"e5edc7cadfbf77aa69568280fc20db256f9a607864d9b680198db132fa6e967c","specPath":"specs/functions/training-model-v2-start.t27","summary":{"en":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","ru":"Запускает дообучение v2 для пользователя: проверяет пользователя и баланс, кодирует архив обучения, создаёт обучение у провайдера, записывает его, списывает баланс и уведомляет пользователя; при последующем сбое баланс возвращается."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","legacyId":"check-stuck-trainings","probeResult":"not-deployed","retries":null,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/check-stuck-trainings","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"training","EVENT":"","GUARD":"none","ID":"training-stuck-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"check-stuck-trainings","NAME":"Stuck trainings check","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings. Since host PR #2328 (2026-09-10) a training that Replicate answers 404 for is retired: model_trainings.status set to failed with the fixed error text, one warn to the admin, no event and no user message; two rows from 2025-12-02 had been re-asked every 30 minutes for nine months. Skipped in safe mode. The 404 branch is not yet stated as a step; the code is its only witness.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts:47","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-stuck-trainings","check-replicate-status","send-completion-events"],"SUMMARY_EN":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"training-stuck-check","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_stuck_check","name":{"en":"Stuck trainings check","ru":"Проверка застрявших обучений"},"sha256":"e78e6abf68de0ce2b1f2810e02555111fcccd78a5e27765d7d54c0440936dfa2","specPath":"specs/functions/training-stuck-check.t27","summary":{"en":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","ru":"Каждые 30 минут находит обучения моделей, всё ещё отмеченные как pending или processing дольше порога, запрашивает у Replicate их реальный статус и порождает события завершения, которые их сверяют."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/webhookHealthGuard.ts","legacyId":"validate-webhook-before-generation","probeResult":"not-deployed","retries":1,"steps":1},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"webhook","EVENT":"webhook/generation.validate","GUARD":"unknown","ID":"webhook-generation-validate","KIND":"function","LEGACY_EVENTS":["video/generation-validate-webhook"],"LEGACY_ID":"validate-webhook-before-generation","NAME":"Webhook validation before generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there. Two other functions in the same file (webhook-health-check, periodic-webhook-health-check) are not registered and have no spec.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts:147","SIDE_EFFECTS":["db-write"],"STEPS":["check-webhook-availability"],"SUMMARY_EN":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"webhook-generation-validate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_webhook_generation_validate","name":{"en":"Webhook validation before generation","ru":"Проверка вебхука перед генерацией"},"sha256":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","specPath":"specs/functions/webhook-generation-validate.t27","summary":{"en":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","ru":"Проверяет, что эндпоинт вебхука видеогенерации доступен до старта генерации, и записывает результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/welcomeAvatarGeneration.ts","legacyId":"welcome-avatar-generation","probeResult":"not-deployed","retries":2,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"welcome","EVENT":"welcome/avatar.generate","GUARD":"unknown","ID":"welcome-avatar-generate","KIND":"function","LEGACY_EVENTS":["user/welcome.avatar.generate"],"LEGACY_ID":"welcome-avatar-generation","NAME":"Welcome avatar generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/welcomeAvatarGeneration.ts:108","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["validate-bot","select-hero","reserve-gift-slot","generate-image","send-welcome"],"SUMMARY_EN":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"welcome-avatar-generate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_welcome_avatar_generate","name":{"en":"Welcome avatar generation","ru":"Приветственный аватар"},"sha256":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","specPath":"specs/functions/welcome-avatar-generate.t27","summary":{"en":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","ru":"Генерирует приветственный аватар для нового пользователя: проверяет бота, выбирает героя, резервирует слот подарка, генерирует изображение и отправляет приветственное сообщение."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-10-04T05:20:39.582Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":28,"total":28},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"manifest":{"deployedApp":{"baseFunctions":24,"mainRegisters":28,"name":"telegram-bot-client","sdk":"js v3.54.2"},"entries":28,"generatedFrom":{"branch":"main","commit":"a9c08b4","note":"Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet."},"probedAt":"2026-09-09","repo":"gHashTag/999-multibots-telegraf"},"version":1} +{"codeOnly":[],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"1b52b3f84bb42921c7be953ef48d44da1cbf27f836ab8366857aad305893b703","counts":{"byDomain":{"analytics":4,"broadcast":1,"content":3,"crm":1,"instagram":3,"money":2,"monitoring":4,"morph":1,"neuro":1,"payment":1,"reels":3,"render":3,"training":4,"webhook":1,"welcome":1},"byProbeResult":{"COMPLETED":7,"FAILED-at-guard":16,"not-deployed":4,"skipped":6},"bySideEffect":{"charges-balance":5,"db-write":19,"external-webhook":6,"messages-admin":6,"messages-owners":4,"messages-user":12,"none":0,"paid-api":22},"byTrigger":{"cron":10,"event":23},"codeOnly":0,"deployUnknown":5,"deployed":24,"notDeployed":4,"specOnly":0,"specPlusCode":33,"specs":33,"typecheckOk":33,"withCronSpec":10,"withDifferences":6},"functions":[{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","legacyId":"daily-sales-advisor","probeResult":"COMPLETED","retries":1,"steps":5},"cronSpec":"inngest/999-multibots-telegraf/daily-sales-advisor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 9 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-sales-advise","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"daily-sales-advisor","NAME":"Daily sales advisor","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/daily-sales-advisor. The step name report-${ownerId} is a template expanded once per owner. A manual invoke on 2026-09-09 messaged 13 owners; the hardening list asks this function to honour safe mode.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts:54","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-owners","load-payments-7d","load-payments-1d","load-payments-2d","report-${ownerId}"],"SUMMARY_EN":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-sales-advise","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_sales_advise","name":{"en":"Daily sales advisor","ru":"Ежедневный советник по продажам"},"sha256":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","specPath":"specs/functions/analytics-sales-advise.t27","summary":{"en":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","ru":"Каждый день в 09:00 UTC загружает владельцев ботов и их платежи за последние семь, два и один день и отправляет каждому владельцу отчёт о продажах с копией в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/skillDetector.ts","legacyId":"skill-detector","probeResult":"COMPLETED","retries":1,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/skill-detector","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-skills-detect","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"skill-detector","NAME":"Skill detector","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/skill-detector. The step name detect-${serviceType} is a template expanded once per service type.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts:30","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-existing-skills","detect-${serviceType}","notify-admin"],"SUMMARY_EN":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-skills-detect","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_skills_detect","name":{"en":"Skill detector","ru":"Детектор навыков"},"sha256":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","specPath":"specs/functions/analytics-skills-detect.t27","summary":{"en":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","ru":"Каждый день в 10:00 UTC загружает известные навыки, находит новые типы сервисов по недавнему использованию (по одному шагу на тип сервиса) и уведомляет админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"broadcast-message","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"broadcast","EVENT":"broadcast/message.send","GUARD":"validate-input","ID":"broadcast-message-send","KIND":"function","LEGACY_EVENTS":["broadcast/send-message"],"LEGACY_ID":"broadcast-message","NAME":"Broadcast message","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout (retries 3). Guard is validate-input. A test_telegram_id in the payload narrows the audience to one recipient.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/broadcast/broadcastMessage.ts:22","SIDE_EFFECTS":["messages-user"],"STEPS":["validate-input","check-permissions","fetch-users","send-messages","analyze-results"],"SUMMARY_EN":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"broadcast-message-send","inSpecCorpus":true,"messages":[],"moduleName":"fn_broadcast_message_send","name":{"en":"Broadcast message","ru":"Рассылка сообщения"},"sha256":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","specPath":"specs/functions/broadcast-message-send.t27","summary":{"en":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","ru":"Отправляет рассылку аудитории бота: проверяет запрос и права отправителя, получает список получателей, отправляет сообщения и подводит итоги доставки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":null,"file":"src/inngest_app/functions/analytics/clientTelemetryDaily.ts","legacyId":"client-telemetry-daily","probeResult":"","retries":0,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/client-telemetry-daily","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 7 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"safe-mode","ID":"client-telemetry-daily","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"client-telemetry-daily","NAME":"Clients: daily usage report to the owner","NOTE":"No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 2 runs over seven days and none failed. RETRIES is 0 on purpose: a retry after a partial send would deliver the owner the same report twice. 07:00 UTC is 10:00 in Moscow, which keeps no summer time. A read of the events table that fails is logged and does not become an empty report.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/analytics/clientTelemetryDaily.ts:62","SIDE_EFFECTS":["messages-owners","db-write"],"STEPS":["build-report","send","prune"],"SUMMARY_EN":"Every day at 07:00 UTC builds a report of where clients went and where they stopped, sends it to the owner, and prunes the events it has already accounted for. Where the daily sales advisor reports cash, this one reports product usage.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"client-telemetry-daily","inSpecCorpus":false,"messages":[],"moduleName":"fn_client_telemetry_daily","name":{"en":"Clients: daily usage report to the owner","ru":"Клиенты: ежедневный отчёт о пользовании владельцу"},"sha256":"b7dc7072f8b3e1221285154addd1fad2a50ad9269e80a199067fe188a12c793f","specPath":"specs/functions/client-telemetry-daily.t27","summary":{"en":"Every day at 07:00 UTC builds a report of where clients went and where they stopped, sends it to the owner, and prunes the events it has already accounted for. Where the daily sales advisor reports cash, this one reports product usage.","ru":"Каждый день в 07:00 UTC собирает отчёт о том, куда дошли клиенты и где остановились, отправляет его владельцу и удаляет уже учтённые события. Там, где ежедневный советник отчитывается о деньгах, этот отчитывается о пользовании продуктом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":null,"file":"src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts","legacyId":"","probeResult":"","retries":0,"steps":1},"cronSpec":"inngest/999-multibots-telegraf/club-invoice-abandoned-watch","differences":[{"code":["db-read","db-write"],"field":"SIDE_EFFECTS","spec":["db-write"]}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"20 * * * *","DOMAIN":"analytics","EVENT":"","GUARD":"safe-mode","ID":"club-invoice-abandoned-watch","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"club-invoice-abandoned-watch","NAME":"Funnel: club invoices nobody paid","NOTE":"No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 11 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say; the run reads the invoices it marks. Abandonment is a conclusion, not a report: Telegram tells nobody when a person closes a payment window, so the rule is an invoice older than an hour with no charge after it, and it lives in services/trackEvent.ts where it is tested apart from the schedule. A unique index makes the row land once however often the job runs, and an unreadable table throws so that could not look reaches the failure handler instead of printing as nobody walked away.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts:22","SIDE_EFFECTS":["db-write"],"STEPS":["mark"],"SUMMARY_EN":"Every hour marks the club invoices that are older than an hour with no charge after them as abandoned, writing one funnel row per invoice so that the path from card to invoice to paid or abandoned can be read without joining tables by hand. It charges nothing and messages nobody.","TRIGGER":"cron","TZ":"UTC"},"health":"warn","id":"club-invoice-abandoned-watch","inSpecCorpus":false,"messages":["SIDE_EFFECTS [\"db-write\"] differs from the manifest ([\"db-read\",\"db-write\"])"],"moduleName":"fn_club_invoice_abandoned_watch","name":{"en":"Funnel: club invoices nobody paid","ru":"Воронка: клубные счета, которые никто не оплатил"},"sha256":"d365d8277639e58c0df6b633be0669dad530dbb7421665579fc521b1c2b50364","specPath":"specs/functions/club-invoice-abandoned-watch.t27","summary":{"en":"Every hour marks the club invoices that are older than an hour with no charge after them as abandoned, writing one funnel row per invoice so that the path from card to invoice to paid or abandoned can be read without joining tables by hand. It charges nothing and messages nobody.","ru":"Каждый час помечает как брошенные те клубные счета, которым больше часа и после которых не было оплаты, записывая по одной строке воронки на счёт, чтобы путь от карточки к счёту и дальше к оплате или отказу читался без ручного соединения таблиц. Ничего не списывает и никому не пишет."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateDetailedScript.ts","legacyId":"generate-detailed-script","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/detailed-script.generate","GUARD":"zod-schema","ID":"content-detailed-script-generate","KIND":"function","LEGACY_EVENTS":["content/generate-detailed-script"],"LEGACY_ID":"generate-detailed-script","NAME":"Generate detailed script","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateDetailedScript.ts:191","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-script-record","generate-detailed-scenes","save-detailed-script"],"SUMMARY_EN":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-detailed-script-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_detailed_script_generate","name":{"en":"Generate detailed script","ru":"Детальный сценарий"},"sha256":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","specPath":"specs/functions/content-detailed-script-generate.t27","summary":{"en":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","ru":"Разворачивает сценарий в подробные сцены: создаёт запись сценария, генерирует текст по сценам языковой моделью и сохраняет детальный сценарий."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateScenarioClips.ts","legacyId":"generate-scenario-clips","probeResult":"FAILED-at-guard","retries":null,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scenario-clips.generate","GUARD":"zod-schema","ID":"content-scenario-clips-generate","KIND":"function","LEGACY_EVENTS":["content/generate-scenario-clips"],"LEGACY_ID":"generate-scenario-clips","NAME":"Generate scenario clips","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateScenarioClips.ts:221","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-scenario-record","generate-detailed-scenes","create-text-reports-archive","update-scenario-record"],"SUMMARY_EN":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scenario-clips-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scenario_clips_generate","name":{"en":"Generate scenario clips","ru":"Клипы по сценарию"},"sha256":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","specPath":"specs/functions/content-scenario-clips-generate.t27","summary":{"en":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","ru":"Строит сценарий по скрипту: создаёт запись, генерирует подробные сцены, упаковывает текстовые отчёты в архив и обновляет запись."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateContentScripts.ts","legacyId":"generate-content-scripts","probeResult":"FAILED-at-guard","retries":null,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scripts.generate","GUARD":"zod-schema","ID":"content-scripts-generate","KIND":"function","LEGACY_EVENTS":["instagram/generate-scripts"],"LEGACY_ID":"generate-content-scripts","NAME":"Generate content scripts","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema. The legacy event name keeps the instagram/ prefix the function was first registered under.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateContentScripts.ts:44","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["get-reel-data","extract-audio","transcribe-audio","generate-scripts","save-scripts"],"SUMMARY_EN":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scripts-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scripts_generate","name":{"en":"Generate content scripts","ru":"Сценарии контента"},"sha256":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","specPath":"specs/functions/content-scripts-generate.t27","summary":{"en":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","ru":"Пишет сценарии контента по сохранённому рилсу: загружает рилс, извлекает и расшифровывает звук, генерирует сценарии языковой моделью и сохраняет их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":null,"file":"src/inngest_app/functions/crm/crmProactiveSweep.ts","legacyId":"","probeResult":"","retries":0,"steps":2},"cronSpec":"inngest/999-multibots-telegraf/crm-proactive-sweep","differences":[{"code":["messages-user","paid-api","db-write"],"field":"SIDE_EFFECTS","spec":["messages-owners","paid-api","external-webhook","db-write"]},{"code":"none","field":"GUARD","spec":"safe-mode"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"crm","EVENT":"","GUARD":"safe-mode","ID":"crm-proactive-sweep","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"crm-proactive-sweep","NAME":"CRM: proactive seller sweep","NOTE":"No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 337 runs over seven days and 5 failed, the only function in the project with a failure in that window, so this card exists to make that number reachable. The step name sweep-${owner} is a template expanded once per seller. SIDE_EFFECTS reads the service the run calls into (services/crmProactive.ts): the outreach card goes to the seller who owns the bot, not to the end client, so it is messages-owners and not the manifest's messages-user; the render's MCP route is called over HTTPS (external-webhook) and a model turn is paid for (paid-api). GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. The same schedule is also stated by the timer cron card timer/999-multibots-telegraf/crmProactive-L375, the in-process setInterval this cron replaced on 2026-09-12; CRM_SWEEP_DRIVER=timer restores it.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/crm/crmProactiveSweep.ts:101","SIDE_EFFECTS":["messages-owners","paid-api","external-webhook","db-write"],"STEPS":["resolve-sellers","sweep-${owner}"],"SUMMARY_EN":"Every half hour resolves the sellers a registered carrier serves and sweeps each one: the render's CRM tools are called over HTTP, a model is asked what to do next, and an outreach card is pushed to that seller's own chat. Safe mode skips the whole run.","TRIGGER":"cron","TZ":"UTC"},"health":"warn","id":"crm-proactive-sweep","inSpecCorpus":false,"messages":["SIDE_EFFECTS [\"messages-owners\",\"paid-api\",\"external-webhook\",\"db-write\"] differs from the manifest ([\"messages-user\",\"paid-api\",\"db-write\"])","GUARD \"safe-mode\" differs from the manifest (\"none\")"],"moduleName":"fn_crm_proactive_sweep","name":{"en":"CRM: proactive seller sweep","ru":"CRM: проактивный обход продавцов"},"sha256":"991b7b34a38442cd1c493fa250f836256aa232499c70031619a2fbedde7bb970","specPath":"specs/functions/crm-proactive-sweep.t27","summary":{"en":"Every half hour resolves the sellers a registered carrier serves and sweeps each one: the render's CRM tools are called over HTTP, a model is asked what to do next, and an outreach card is pushed to that seller's own chat. Safe mode skips the whole run.","ru":"Каждые полчаса определяет продавцов, которых обслуживает зарегистрированный носитель, и обходит каждого: по HTTP вызывает CRM-инструменты рендера, спрашивает модель, что делать дальше, и присылает продавцу в его собственный чат карточку для связи. В безопасном режиме прогон пропускается целиком."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/findCompetitors.ts","legacyId":"find-competitors","probeResult":"FAILED-at-guard","retries":null,"steps":6},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/competitors.find","GUARD":"validate-input","ID":"instagram-competitors-find","KIND":"function","LEGACY_EVENTS":["instagram/find-competitors"],"LEGACY_ID":"find-competitors","NAME":"Find competitors","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): saveCompetitors in src/core/instagram/index.ts is a stub that reports saved: N without writing, while the run makes paid RapidAPI calls. Code kept; re-register once the write is real and RapidAPI errors are classified.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/findCompetitors.ts:134","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-api","filter-by-followers","save-to-competitors-table","send-telegram-notification"],"SUMMARY_EN":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-competitors-find","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_competitors_find","name":{"en":"Find competitors","ru":"Поиск конкурентов"},"sha256":"3bbe8e9dcf6220cf1912a9eb736e7c54e866dd158ac95c2b89c5623f05149d1e","specPath":"specs/functions/instagram-competitors-find.t27","summary":{"en":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","ru":"Находит конкурентов в Instagram для проекта: проверяет запрос и проект, вызывает Instagram API, фильтрует по числу подписчиков, сохраняет конкурентов и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/analyzeCompetitorReels.ts","legacyId":"analyze-competitor-reels","probeResult":"FAILED-at-guard","retries":null,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/reels.analyze","GUARD":"validate-input","ID":"instagram-reels-analyze","KIND":"function","LEGACY_EVENTS":["instagram/analyze-reels"],"LEGACY_ID":"analyze-competitor-reels","NAME":"Analyze competitor reels","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): saveReelsAnalysis in src/core/instagram/index.ts is a stub that reports saved: N without writing, while the run makes up to 12 paid RapidAPI calls per event. Code kept; re-register once the write is real and RapidAPI errors are classified.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/analyzeCompetitorReels.ts:211","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-reels-api","filter-reels-by-date","calculate-metrics","save-to-reels-analysis-table","send-telegram-notification"],"SUMMARY_EN":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-reels-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_reels_analyze","name":{"en":"Analyze competitor reels","ru":"Анализ рилсов конкурента"},"sha256":"f0ba573788faf3273f35a4c256f805b893658c75d00d1a811f21a984d7e331cd","specPath":"specs/functions/instagram-reels-analyze.t27","summary":{"en":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","ru":"Анализирует недавние рилсы конкурента в Instagram для проекта: проверяет запрос и проект, вызывает API рилсов, фильтрует по дате, считает метрики, сохраняет анализ и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/extractTopContent.ts","legacyId":"extract-top-content","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/top-content.extract","GUARD":"zod-schema","ID":"instagram-top-content-extract","KIND":"function","LEGACY_EVENTS":["instagram/extract-top"],"LEGACY_ID":"extract-top-content","NAME":"Extract top content","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/extractTopContent.ts:33","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["query-top-reels","process-reels","format-report"],"SUMMARY_EN":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-top-content-extract","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_top_content_extract","name":{"en":"Extract top content","ru":"Лучший контент"},"sha256":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","specPath":"specs/functions/instagram-top-content-extract.t27","summary":{"en":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","ru":"Извлекает самые результативные рилсы, уже сохранённые для проекта: запрашивает их из базы, обрабатывает и формирует отчёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"critical-error-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/error.report","GUARD":"none","ID":"monitoring-error-report","KIND":"function","LEGACY_EVENTS":["app/error.critical"],"LEGACY_ID":"critical-error-monitor","NAME":"Critical error report","NOTE":"No guard: the event is emitted by the application itself. The hardening list asks the formatter to render string, Error and {message} payloads and never print [object Object].","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:175","SIDE_EFFECTS":["messages-admin"],"STEPS":["analyze-error","format-message","send-notification","log-for-analysis"],"SUMMARY_EN":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-error-report","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_error_report","name":{"en":"Critical error report","ru":"Отчёт о критической ошибке"},"sha256":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","specPath":"specs/functions/monitoring-error-report.t27","summary":{"en":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","ru":"Сообщает о критической ошибке приложения в админ-чат: анализирует ошибку, форматирует сообщение, отправляет уведомление и записывает инцидент для последующего разбора."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"health-check","probeResult":"COMPLETED","retries":2,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/health-check","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-health-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"health-check","NAME":"Health check","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/health-check. Lives in the same file as monitoring-error-report.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:235","SIDE_EFFECTS":["messages-admin"],"STEPS":["check-api-health","check-inngest-health","notify-unhealthy"],"SUMMARY_EN":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-health-check","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_health_check","name":{"en":"Health check","ru":"Проверка здоровья"},"sha256":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","specPath":"specs/functions/monitoring-health-check.t27","summary":{"en":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","ru":"Каждые 30 минут проверяет API-сервер и сервис Inngest и пишет в админ-чат, если один из них нездоров."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"log-monitor","probeResult":"COMPLETED","retries":2,"steps":4},"cronSpec":"inngest/999-multibots-telegraf/log-monitor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-logs-analyze","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"log-monitor","NAME":"Daily log analysis","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/log-monitor. When LOG_DIR is absent on the host the analysis has nothing to read; the hardening list asks for a fallback to the Inngest run summary.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:352","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-logs-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_analyze","name":{"en":"Daily log analysis","ru":"Ежедневный анализ логов"},"sha256":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","specPath":"specs/functions/monitoring-logs-analyze.t27","summary":{"en":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","ru":"Каждый день в 10:00 UTC читает логи приложения, ищет в них ошибки и предупреждения, формирует сводку и отправляет её в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"trigger-log-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/logs.trigger","GUARD":"none","ID":"monitoring-logs-trigger","KIND":"function","LEGACY_EVENTS":["logs/monitor.trigger"],"LEGACY_ID":"trigger-log-monitor","NAME":"Log analysis on demand","NOTE":"Shares its file and its four steps with monitoring-logs-analyze; only the trigger differs.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:408","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-logs-trigger","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_trigger","name":{"en":"Log analysis on demand","ru":"Анализ логов по запросу"},"sha256":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","specPath":"specs/functions/monitoring-logs-trigger.t27","summary":{"en":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","ru":"Выполняет тот же анализ логов, что и ежедневная задача, по событию: читает логи, анализирует их, формирует сводку и отправляет в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/training/morphImages.ts","legacyId":"morph-images","probeResult":"FAILED-at-guard","retries":3,"steps":8},"cronSpec":null,"differences":[{"code":["charges-balance","paid-api","messages-user"],"field":"SIDE_EFFECTS","spec":["paid-api","messages-user"]}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"morph","EVENT":"morph/images.generate","GUARD":"check-user-exists","ID":"morph-images-generate","KIND":"function","LEGACY_EVENTS":["morph/images.requested"],"LEGACY_ID":"morph-images","NAME":"Morph images","NOTE":"Guard is check-user-exists. A second, unregistered copy of this function exists in the tree (src/inngest_app/functions/morphImages.ts); the registered one is the file named in SERVICE. 2026-09-17: charges-balance removed from SIDE_EFFECTS -- the file imports getUserBalance only; check-balance reads the balance against a constant of 50 and nothing in the file deducts it, so the manifest and this spec overstated what the function does with money. deliver-result: video_url is a path on the worker written by concatenate-all-videos, not a URL; the code passed the bare string to sendVideo and sendDocument (read by Telegram as file_id or URL), fell into the catch and sent the user that same path as a download link while returning delivered. Now the file is streamed as { source }, and a failed delivery rethrows so the step is retried and, after RETRIES, onFailure tells the admin. Not verified: a live morph run; the paid Kling calls in process-all-pairs remain unmetered. Test: 999-multibots-telegraf src/__tests__/render/deliveryIsNotSwallowed.test.ts.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"is_ru\": true, \"job_id\": \"e2e-probe\", \"image_files\": [], \"extraction_path\": \"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/nonexistent/e2e\", \"morphing_type\": \"seamless\", \"model\": \"kling-v1.6-pro\"}","SERVICE":"src/inngest_app/functions/training/morphImages.ts:30","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["check-user-exists","check-balance","notify-start","process-all-pairs","process-loop-pair","concatenate-all-videos","cleanup-temp-files","deliver-result"],"SUMMARY_EN":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"morph-images-generate","inSpecCorpus":true,"messages":["SIDE_EFFECTS [\"paid-api\",\"messages-user\"] differs from the manifest ([\"charges-balance\",\"paid-api\",\"messages-user\"])"],"moduleName":"fn_morph_images_generate","name":{"en":"Morph images","ru":"Морфинг изображений"},"sha256":"21e644a9c57ab27f06d0622aec834802dba71ddf07077710b4bbd489b479789c","specPath":"specs/functions/morph-images-generate.t27","summary":{"en":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","ru":"Превращает последовательность изображений пользователя в одно видео: проверяет пользователя и баланс, сообщает о старте, обрабатывает каждую пару изображений в клип, склеивает клипы, очищает временные файлы и отдаёт результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/neuroImageGeneration.ts","legacyId":"neuro-image-generation","probeResult":"FAILED-at-guard","retries":3,"steps":11},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"neuro","EVENT":"neuro/image.generate","GUARD":"check-user","ID":"neuro-image-generate","KIND":"function","LEGACY_EVENTS":["neuro/photo.generate"],"LEGACY_ID":"neuro-image-generation","NAME":"Neuro image generation","NOTE":"Guard is check-user: an unknown telegram_id stops the run before any payment or paid API call. The step names generate-image-${i} and notify-image-${i} are templates the code expands once per requested image. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): no producer in the repo sends neuro/image.generate or neuro/photo.generate, the balance is charged before generation with no refund in onFailure, and processBalanceOperation carries no inv_id, so a retried step would charge twice. Code kept; re-register as reserve -> generate -> commit with inv_id = event.id and a real producer.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"prompt\": \"safe-mode probe\", \"is_ru\": true, \"num_images\": 1, \"model_url\": \"e2e/none\"}","SERVICE":"src/inngest_app/functions/neuroImageGeneration.ts:56","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["get-bot","check-user","get-user-gender","update-level","calculate-total-cost","process-payment","get-aspect-ratio","generate-image-${i}","notify-image-${i}","deduct-balance-final","final-notification"],"SUMMARY_EN":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"neuro-image-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_neuro_image_generate","name":{"en":"Neuro image generation","ru":"Нейро-генерация изображений"},"sha256":"59c6d36a7d14cec3721983edd83118f5c958db29278a557c0cf301cbebfa3dc4","specPath":"specs/functions/neuro-image-generate.t27","summary":{"en":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","ru":"Генерирует одно или несколько изображений для пользователя Telegram по промпту и URL модели: загружает бота и пользователя, считает полную стоимость, списывает баланс, затем генерирует и отправляет каждое изображение и сводит баланс в конце."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"payment-processing-ai-server","probeResult":"COMPLETED","retries":null,"steps":0},"cronSpec":null,"differences":[{"code":"log","field":"ON_FAILURE","spec":"admin-telegram"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"payment","EVENT":"payment/ai-server.process","GUARD":"amount-match","ID":"payment-ai-server-process","KIND":"function","LEGACY_EVENTS":["payment/process-ai-server"],"LEGACY_ID":"payment-processing-ai-server","NAME":"AI-server payment processing","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout, where retries is declared as 3 and onFailure is createInngestFailureHandler, which logs and messages the admin chat -- the manifest says on_failure log. Guard is amount-match: an amount matching no plan or option stops the run, which is why the 2026-09-09 probe with IncSum 0.01 COMPLETED without a balance change.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"IncSum\": \"0.01\", \"inv_id\": \"e2e-safe-mode-probe\"}","SERVICE":"src/inngest_app/functions/payments/paymentProcessing.ts:64","SIDE_EFFECTS":["db-write","messages-user"],"STEPS":["check-subscription-plan","check-payment-option","get-user-info","get-bot-config","update-user-balance","send-notification"],"SUMMARY_EN":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"payment-ai-server-process","inSpecCorpus":true,"messages":["ON_FAILURE \"admin-telegram\" differs from the manifest (\"log\")"],"moduleName":"fn_payment_ai_server_process","name":{"en":"AI-server payment processing","ru":"Обработка платежа AI-сервера"},"sha256":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","specPath":"specs/functions/payment-ai-server-process.t27","summary":{"en":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","ru":"Обрабатывает платёж, о котором сообщил AI-сервер: сопоставляет сумму с планом подписки или вариантом оплаты, загружает пользователя и конфигурацию бота, обновляет баланс и отправляет уведомление о платеже."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/ai-reels-callback.ts","legacyId":"ai-reels-callback","probeResult":"FAILED-at-guard","retries":3,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.callback","GUARD":"extract-job-id","ID":"reels-ai-callback","KIND":"function","LEGACY_EVENTS":["ai-reels-callback"],"LEGACY_ID":"ai-reels-callback","NAME":"AI reels callback","NOTE":"Guard is extract-job-id: a payload without a job id fails before anything is sent.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/ai-reels-callback.ts:158","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["send-completed-video","send-failed-message","send-processing-update"],"SUMMARY_EN":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-callback","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_callback","name":{"en":"AI reels callback","ru":"Колбэк AI-рилсов"},"sha256":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","specPath":"specs/functions/reels-ai-callback.t27","summary":{"en":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","ru":"Обрабатывает колбэк провайдера по задаче AI-рилса: извлекает id задачи, затем отправляет заказчику готовое видео, сообщение об ошибке или статус обработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAIReelsFunction.ts","legacyId":"ai-reels-generation","probeResult":"skipped","retries":2,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.generate","GUARD":"none","ID":"reels-ai-generate","KIND":"function","LEGACY_EVENTS":["ai-reels/generate"],"LEGACY_ID":"ai-reels-generation","NAME":"AI reels generation","NOTE":"No guard: the first step already calls a paid API, so the 2026-09-09 probe skipped this function (PROBE_RESULT skipped). The hardening list asks for a validate-input step before that call.","ON_FAILURE":"log","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/generateAIReelsFunction.ts:44","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-lipsync-video","generate-wan25-video","merge-videos","notify-telegram"],"SUMMARY_EN":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_generate","name":{"en":"AI reels generation","ru":"Генерация AI-рилсов"},"sha256":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","specPath":"specs/functions/reels-ai-generate.t27","summary":{"en":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","ru":"Собирает короткий AI-рилс: липсинк-видео из изображения и текста или аудио, второй сгенерированный клип, их склейка и отправка результата пользователю в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts","legacyId":"generate-advanced-looping-video","probeResult":"FAILED-at-guard","retries":2,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/loop.generate","GUARD":"min-images","ID":"reels-loop-generate","KIND":"function","LEGACY_EVENTS":["reels/generate-advanced-loop"],"LEGACY_ID":"generate-advanced-looping-video","NAME":"Advanced looping video","NOTE":"Guard is min-images: fewer images than the minimum stops the run before any clip is generated.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"image_urls\": [], \"bot_token\": \"\", \"prompt\": \"safe-mode probe\"}","SERVICE":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts:77","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-morphing-clips","download-video-clips","combine-video-clips","add-music","send-to-telegram","send-to-pulse","cleanup"],"SUMMARY_EN":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-loop-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_loop_generate","name":{"en":"Advanced looping video","ru":"Зацикленное видео"},"sha256":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","specPath":"specs/functions/reels-loop-generate.t27","summary":{"en":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","ru":"Превращает набор изображений пользователя в зацикленное видео: морфинг-клипы между изображениями, скачивание и склейка, фоновая музыка, доставка пользователю в Telegram и в пульс-канал, затем очистка."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderAvatarVideo.ts","legacyId":"render-avatar-video","probeResult":"FAILED-at-guard","retries":3,"steps":13},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/avatar-video.run","GUARD":"zod-schema","ID":"render-avatar-video-run","KIND":"function","LEGACY_EVENTS":["render/avatar-video"],"LEGACY_ID":"render-avatar-video","NAME":"Render avatar video","NOTE":"Guard is zod-schema. Each wait-* step polls a provider job until it completes. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): the pipeline runs on stub services (src/services/hedra.ts, heygen.ts, kieAI.ts, elevenLabs.ts announce stub mode), so a run would report a video that was never rendered. Code kept; re-register when the providers are real.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderAvatarVideo.ts:174","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job","generate-speech-audio","start-hedra-generation","wait-hedra-completion","start-heygen-generation","wait-heygen-completion","generate-transcription","generate-broll-prompts","generate-brolls-parallel","wait-brolls-completion","create-job-settings","upload-settings-to-s3","trigger-render"],"SUMMARY_EN":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-avatar-video-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_avatar_video_run","name":{"en":"Render avatar video","ru":"Рендер аватар-видео"},"sha256":"4a70bb6cf93bfdf3f5ab5a55ed7e3c657771849d1c78e1384b61e2ce17fd7860","specPath":"specs/functions/render-avatar-video-run.t27","summary":{"en":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","ru":"Создаёт аватар-видео: генерирует речь, запускает генерацию аватара (Hedra, затем HeyGen), расшифровывает, пишет промпты B-roll и параллельно генерирует B-roll, затем записывает настройки задачи в S3 и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/render.ts","legacyId":"render","probeResult":"FAILED-at-guard","retries":3,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/job.run","GUARD":"zod-schema","ID":"render-job-run","KIND":"function","LEGACY_EVENTS":["render"],"LEGACY_ID":"render","NAME":"Render job","NOTE":"Guard is zod-schema: the payload is parsed before any file is downloaded. 2026-09-17: the callback step must fail when the callback fails. sendCallback (helpers/renderSteps.ts) caught the axios error and returned, so the step COMPLETED on a dead callback URL, the try/catch around it in render.ts never fired and the run reported a delivered render that no client heard about. Now sendCallback rethrows, the try/catch is gone: Inngest retries the step RETRIES times, then the run fails and onFailure messages the admin; the rendered file is already in S3 by then and its URL sits in the upload-to-s3 step output. create-job-folder: the plan asked for mkdir -p, but the render host is Windows (helpers/config.ts) and ssh.exec resolves on any exit code, so a re-run over an existing folder does not fail; left as is. Test: 999-multibots-telegraf src/__tests__/render/deliveryIsNotSwallowed.test.ts.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/render.ts:38","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job-folder","download-files","render","upload-to-s3","callback"],"SUMMARY_EN":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-job-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_job_run","name":{"en":"Render job","ru":"Задача рендера"},"sha256":"4a41dba0e307deac4bb9336fb009306d6ea9f0efd86e2dd291e6a00b545241b3","specPath":"specs/functions/render-job-run.t27","summary":{"en":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","ru":"Рендерит видеозадачу на рендер-сервере: создаёт папку задачи, скачивает входные файлы, рендерит, загружает результат в S3 и вызывает колбэк задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderRiddle.ts","legacyId":"render-riddle","probeResult":"FAILED-at-guard","retries":3,"steps":15},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/riddle.run","GUARD":"zod-schema","ID":"render-riddle-run","KIND":"function","LEGACY_EVENTS":["render-riddle"],"LEGACY_ID":"render-riddle","NAME":"Render riddle video","NOTE":"Guard is zod-schema. The step names generate-broll-${index} and wait-broll-${index} are templates expanded once per scene; start-avatar-generation and wait-avatar-completion appear twice in the code and are listed twice here.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderRiddle.ts:59","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["preflight-render-capacity","load-template-json","create-job","generate-speech-audio","start-avatar-generation","wait-avatar-completion","start-avatar-generation","wait-avatar-completion","extract-avatar-speech-url","generate-transcription","generate-broll-prompts","generate-broll-${index}","wait-broll-${index}","prepare-template-json","trigger-render"],"SUMMARY_EN":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-riddle-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_riddle_run","name":{"en":"Render riddle video","ru":"Рендер видео-загадки"},"sha256":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","specPath":"specs/functions/render-riddle-run.t27","summary":{"en":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","ru":"Создаёт видео-загадку по шаблону: проверяет ёмкость рендера, загружает шаблон, генерирует речь и клипы аватара, расшифровывает, генерирует по одному B-roll на сцену, готовит JSON шаблона и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":null,"file":"src/inngest_app/functions/money/robokassaUnclaimedWatch.ts","legacyId":"","probeResult":"","retries":0,"steps":1},"cronSpec":"inngest/999-multibots-telegraf/robokassa-unclaimed-watch","differences":[{"code":["db-read","paid-api"],"field":"SIDE_EFFECTS","spec":["paid-api","external-webhook"]},{"code":"none","field":"GUARD","spec":"safe-mode"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"20 7 * * *","DOMAIN":"money","EVENT":"","GUARD":"safe-mode","ID":"robokassa-unclaimed-watch","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"robokassa-unclaimed-watch","NAME":"Money: roubles that arrived and were never credited","NOTE":"No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 4 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say, and adds external-webhook for the note the run posts to the render; the table read is stated here instead. GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. Without merchant credentials the run returns did=cannot ask and says nothing about money, because reporting none unclaimed would be inventing reassurance; the invoices older than thirty days are known debt recorded elsewhere and are deliberately not re-alarmed every morning.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/money/robokassaUnclaimedWatch.ts:44","SIDE_EFFECTS":["paid-api","external-webhook"],"STEPS":["ask the provider"],"SUMMARY_EN":"Every morning reads the pending Robokassa invoices of the last thirty days, asks the provider what state each one is in, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment.","TRIGGER":"cron","TZ":"UTC"},"health":"warn","id":"robokassa-unclaimed-watch","inSpecCorpus":false,"messages":["SIDE_EFFECTS [\"paid-api\",\"external-webhook\"] differs from the manifest ([\"db-read\",\"paid-api\"])","GUARD \"safe-mode\" differs from the manifest (\"none\")"],"moduleName":"fn_robokassa_unclaimed_watch","name":{"en":"Money: roubles that arrived and were never credited","ru":"Деньги: рубли пришли, но не зачислены"},"sha256":"c3ef6af233da10f21c52f6dc9963e27803596dfb8305ebb82cdd2883213a5b82","specPath":"specs/functions/robokassa-unclaimed-watch.t27","summary":{"en":"Every morning reads the pending Robokassa invoices of the last thirty days, asks the provider what state each one is in, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment.","ru":"Каждое утро читает незакрытые счета Robokassa за последние тридцать дней, спрашивает у провайдера состояние каждого и пишет в журнал рендера одну строку: либо что невостребованных нет, либо что человек заплатил, а зачисления не было. Только читает: платёж никогда не закрывает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":null,"file":"src/inngest_app/functions/money/tonPendingWatch.ts","legacyId":"","probeResult":"","retries":0,"steps":1},"cronSpec":"inngest/999-multibots-telegraf/ton-pending-watch","differences":[{"code":["db-read","paid-api"],"field":"SIDE_EFFECTS","spec":["paid-api","external-webhook"]},{"code":"none","field":"GUARD","spec":"safe-mode"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 * * * *","DOMAIN":"money","EVENT":"","GUARD":"safe-mode","ID":"ton-pending-watch","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"ton-pending-watch","NAME":"Money: TON that arrived and was never credited","NOTE":"No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 94 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say, and adds external-webhook for the note the run posts to the render; the table read is stated here instead. GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. A chain the watcher cannot read returns did=unreadable and writes no quiet note, so a broken read never records a clean channel; that alarm is throttled to once every six hours.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/money/tonPendingWatch.ts:51","SIDE_EFFECTS":["paid-api","external-webhook"],"STEPS":["look"],"SUMMARY_EN":"Every hour reads the pending TON invoices, asks the chain whether the coins actually arrived, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment.","TRIGGER":"cron","TZ":"UTC"},"health":"warn","id":"ton-pending-watch","inSpecCorpus":false,"messages":["SIDE_EFFECTS [\"paid-api\",\"external-webhook\"] differs from the manifest ([\"db-read\",\"paid-api\"])","GUARD \"safe-mode\" differs from the manifest (\"none\")"],"moduleName":"fn_ton_pending_watch","name":{"en":"Money: TON that arrived and was never credited","ru":"Деньги: TON пришёл, но не зачислен"},"sha256":"f06dd22b47ae3e8cf57c0cfc3cf541eea9106dca0441e4287afef92b2dd099cd","specPath":"specs/functions/ton-pending-watch.t27","summary":{"en":"Every hour reads the pending TON invoices, asks the chain whether the coins actually arrived, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment.","ru":"Каждый час читает незакрытые TON-счета, спрашивает у сети, действительно ли монеты пришли, и пишет в журнал рендера одну строку: либо что невостребованных нет, либо что человек заплатил, а зачисления не было. Только читает: платёж никогда не закрывает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts","legacyId":"handle-model-training-completed","probeResult":"not-deployed","retries":2,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.complete","GUARD":"unknown","ID":"training-model-complete","KIND":"function","LEGACY_EVENTS":["model/training.completed"],"LEGACY_ID":"handle-model-training-completed","NAME":"Model training completed","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest): the deployed app registers 24 base functions and this one is not among them. Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-training-record","update-training-status","send-telegram-notification"],"SUMMARY_EN":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-complete","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_model_complete","name":{"en":"Model training completed","ru":"Обучение модели завершено"},"sha256":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","specPath":"specs/functions/training-model-complete.t27","summary":{"en":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","ru":"Обрабатывает событие завершения обучения от провайдера: находит запись обучения, обновляет её статус и список моделей и отправляет пользователю уведомление в Telegram о завершённом или упавшем обучении."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts","legacyId":"generate-model-training","probeResult":"FAILED-at-guard","retries":0,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.start","GUARD":"validate-steps","ID":"training-model-start","KIND":"function","LEGACY_EVENTS":["model/training.start"],"LEGACY_ID":"generate-model-training","NAME":"Model training start (v1)","NOTE":"RETRIES is 0 by declaration: a failed start is not retried, because a retry would create a second Replicate training. Guard is validate-steps.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"steps\": -1, \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"is_ru\": true}","SERVICE":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["validate-credentials","check-duplicates","validate-zip-url","create-replicate-model","save-pending-record","create-replicate-training","update-training-record","notify-user-started"],"SUMMARY_EN":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_start","name":{"en":"Model training start (v1)","ru":"Старт обучения модели (v1)"},"sha256":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","specPath":"specs/functions/training-model-start.t27","summary":{"en":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","ru":"Запускает дообучение на Replicate для пользователя: проверяет учётные данные, отклоняет дубликаты, проверяет URL архива, создаёт модель и обучение на Replicate, записывает их и сообщает пользователю о старте."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"model-training-v2","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model-v2.start","GUARD":"check-user-exists","ID":"training-model-v2-start","KIND":"function","LEGACY_EVENTS":["model/training.v2.requested"],"LEGACY_ID":"model-training-v2","NAME":"Model training start (v2)","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout. RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is check-user-exists. Withdrawn from registerFunctions on 2026-09-17 (999-multibots-telegraf): the get-bot step returns the Telegraf instance, so the bot token is serialized into the step output; the DB row is written after the paid API call; the BFL branch has no completion handler. Code kept; re-register only after those three are fixed and a safe probe passes.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"steps\": 1, \"is_ru\": true, \"gender\": \"male\"}","SERVICE":"src/inngest_app/functions/training/modelTrainingV2.ts:45","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["check-user-exists","update-user-level","get-bot","check-balance","encode-zip","create-training","save-training-to-db","notify-user","deduct-balance","refund-balance","handle-error"],"SUMMARY_EN":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-v2-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_v2_start","name":{"en":"Model training start (v2)","ru":"Старт обучения модели (v2)"},"sha256":"e5edc7cadfbf77aa69568280fc20db256f9a607864d9b680198db132fa6e967c","specPath":"specs/functions/training-model-v2-start.t27","summary":{"en":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","ru":"Запускает дообучение v2 для пользователя: проверяет пользователя и баланс, кодирует архив обучения, создаёт обучение у провайдера, записывает его, списывает баланс и уведомляет пользователя; при последующем сбое баланс возвращается."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","legacyId":"check-stuck-trainings","probeResult":"not-deployed","retries":null,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/check-stuck-trainings","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"training","EVENT":"","GUARD":"none","ID":"training-stuck-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"check-stuck-trainings","NAME":"Stuck trainings check","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings. Since host PR #2328 (2026-09-10) a training that Replicate answers 404 for is retired: model_trainings.status set to failed with the fixed error text, one warn to the admin, no event and no user message; two rows from 2025-12-02 had been re-asked every 30 minutes for nine months. Skipped in safe mode. The 404 branch is not yet stated as a step; the code is its only witness.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts:47","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-stuck-trainings","check-replicate-status","send-completion-events"],"SUMMARY_EN":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"training-stuck-check","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_stuck_check","name":{"en":"Stuck trainings check","ru":"Проверка застрявших обучений"},"sha256":"e78e6abf68de0ce2b1f2810e02555111fcccd78a5e27765d7d54c0440936dfa2","specPath":"specs/functions/training-stuck-check.t27","summary":{"en":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","ru":"Каждые 30 минут находит обучения моделей, всё ещё отмеченные как pending или processing дольше порога, запрашивает у Replicate их реальный статус и порождает события завершения, которые их сверяют."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/webhookHealthGuard.ts","legacyId":"validate-webhook-before-generation","probeResult":"not-deployed","retries":1,"steps":1},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"webhook","EVENT":"webhook/generation.validate","GUARD":"unknown","ID":"webhook-generation-validate","KIND":"function","LEGACY_EVENTS":["video/generation-validate-webhook"],"LEGACY_ID":"validate-webhook-before-generation","NAME":"Webhook validation before generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there. Two other functions in the same file (webhook-health-check, periodic-webhook-health-check) are not registered and have no spec.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts:147","SIDE_EFFECTS":["db-write"],"STEPS":["check-webhook-availability"],"SUMMARY_EN":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"webhook-generation-validate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_webhook_generation_validate","name":{"en":"Webhook validation before generation","ru":"Проверка вебхука перед генерацией"},"sha256":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","specPath":"specs/functions/webhook-generation-validate.t27","summary":{"en":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","ru":"Проверяет, что эндпоинт вебхука видеогенерации доступен до старта генерации, и записывает результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/welcomeAvatarGeneration.ts","legacyId":"welcome-avatar-generation","probeResult":"not-deployed","retries":2,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"welcome","EVENT":"welcome/avatar.generate","GUARD":"unknown","ID":"welcome-avatar-generate","KIND":"function","LEGACY_EVENTS":["user/welcome.avatar.generate"],"LEGACY_ID":"welcome-avatar-generation","NAME":"Welcome avatar generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/welcomeAvatarGeneration.ts:108","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["validate-bot","select-hero","reserve-gift-slot","generate-image","send-welcome"],"SUMMARY_EN":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"welcome-avatar-generate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_welcome_avatar_generate","name":{"en":"Welcome avatar generation","ru":"Приветственный аватар"},"sha256":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","specPath":"specs/functions/welcome-avatar-generate.t27","summary":{"en":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","ru":"Генерирует приветственный аватар для нового пользователя: проверяет бота, выбирает героя, резервирует слот подарка, генерирует изображение и отправляет приветственное сообщение."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-10-04T18:34:00.105Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":33,"total":33},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"manifest":{"deployedApp":{"baseFunctions":24,"mainRegisters":33,"name":"telegram-bot-client","sdk":"js v3.54.2"},"entries":33,"generatedFrom":{"addendum":{"commit":"05fd960f1fef35d09e9ec04e642fcbe0b8c5610a","functions":["crm-proactive-sweep","ton-pending-watch","club-invoice-abandoned-watch","robokassa-unclaimed-watch","client-telemetry-daily"],"note":"Five functions registered after the 2026-09-09 pass were absent from this witness, so the site could draw no card for any of them -- including crm-proactive-sweep, which carried every failed run in the project over the week of 2026-09-22. Their rows are copied from the bot's own src/inngest_app/functions.manifest.json at this commit and carry read_at. probe_result is empty and deployed_2026_09_09 is null because no safe probe was sent to them and the 2026-09-09 deployment reading predates their registration; the deployed_2026_09_09 false the bot manifest still carries for three of them is that same stale pass, while the live status endpoint answered for all five on 2026-09-22. The 28 older rows are still as read at a9c08b4 and have drifted from this commit in about forty fields; re-pinning them is a separate pass.","read_at":"2026-09-22"},"branch":"main","commit":"a9c08b4","note":"Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet."},"probedAt":"2026-09-09","repo":"gHashTag/999-multibots-telegraf"},"version":1} diff --git a/apps/website/public/providers/spec-providers.json b/apps/website/public/providers/spec-providers.json index 92a5d72d79..fd4960c0b0 100644 --- a/apps/website/public/providers/spec-providers.json +++ b/apps/website/public/providers/spec-providers.json @@ -1 +1 @@ -{"catalog":{"callRule":"needs-key: the endpoint exists and answers OpenAI-compatible requests, but every request is paid and signed, so the site never calls it and never takes a key; none: there is no endpoint to call","calls":["needs-key","none"],"commonFields":["KIND","ID","FAMILY","NETWORK","NAME","SUMMARY_EN","STATUS","WITNESS","CHECKED","SOURCES","NOTE","ENABLED"],"directories":["gonka/.t27 (FAMILY model: one card per model in the chain's models_all)","trinet/.t27 (FAMILY host-class: one card per device class our network would pay $TRI for)"],"families":["model","host-class"],"fieldSourceRule":"a model card copies the chain: MODEL_ID, HF_COMMIT, VRAM_GB (v_ram), THROUGHPUT_PER_NONCE, VALIDATION_PERMILLE (validation_threshold x 1000) and UNITS_OF_COMPUTE_PER_TOKEN from models_all; CONTEXT_TOKENS from the --max-model-len in its model_args; POC_MODEL and POC_WEIGHT_SCALE_E4 (weight_scale_factor x 10000) from params.poc_params.models; HOSTS from the count of active participants of EPOCH whose models list names MODEL_ID; PRICE_PER_TOKEN from /v1/governance/pricing","hostFields":["DEVICE","MEMORY_GB","UNITS_PER_GONKA_NODE","PROOF","REWARD","STAKE","GONKA_PARALLEL","MEASURED","GAPS","TOKEN"],"idRule":"ID is the path under specs/providers without .t27, for example gonka/minimax-m2-7; the module is provider_","modelFields":["MODEL_ID","HF_COMMIT","CONTEXT_TOKENS","VRAM_GB","THROUGHPUT_PER_NONCE","VALIDATION_PERMILLE","POC_MODEL","POC_WEIGHT_SCALE_E4","HOSTS","EPOCH","UNITS_OF_COMPUTE_PER_TOKEN","PRICE_PER_TOKEN","PRICE_UNIT","API","CALL","VLLM_ARGS"],"networks":["gonka","trinet"],"schemaVersion":1,"sha256":"d1adddc73509e07c5114581ea59c3adb7e024a215286a7191ae1f0065ad8faa5","specPath":"specs/providers/catalog.t27","statusRule":"serving: on chain and at least one host of EPOCH serves it; listed: on chain, no host serves it; measured: our hardware, with a bench record a reader can rerun; planned: no code and no record, a design only","statuses":["serving","listed","measured","planned"],"typecheckOk":true,"witnessRule":"chain-read: copied from a public chain endpoint on CHECKED; bench-measured: a record of runs on our boards, named in SOURCES; design-only: nothing has run. A design never claims a measurement","witnesses":["chain-read","bench-measured","design-only"]},"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"c169812e8540e85dd489876f66c4066d5b04d92c7c9390152b8d35aa03f4a9ec","counts":{"byFamily":{"host-class":2,"model":5},"byNetwork":{"gonka":5,"trinet":2},"byStatus":{"listed":2,"measured":1,"planned":1,"serving":3},"byWitness":{"bench-measured":1,"chain-read":5,"design-only":1},"enabled":7,"specs":7,"typecheckOk":7},"generatedAt":"2026-10-03T18:22:37.972Z","i18n":[],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"providers":[{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":180000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"d494266a4affc0d2995ba1fa35c8481cbd84294b","HOSTS":26,"ID":"gonka/minimax-m2-7","KIND":"provider","MODEL_ID":"MiniMaxAI/MiniMax-M2.7","NAME":"MiniMax M2.7","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 278: seq_len 1024, dist_threshold 0.75, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":3024,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/MiniMaxAI/MiniMax-M2.7"],"STATUS":"serving","SUMMARY_EN":"MiniMax M2.7 by MiniMax, served on the Gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":5000,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":922,"VLLM_ARGS":["--enable-auto-tool-choice","--max-model-len","180000","--kv-cache-dtype","fp8","--tool-call-parser","minimax_m2","--reasoning-parser","minimax_m2_append_think"],"VRAM_GB":320,"WITNESS":"chain-read"},"health":"ok","id":"gonka/minimax-m2-7","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_minimax_m2_7","name":{"en":"MiniMax M2.7"},"network":"gonka","searchText":"gonka/minimax-m2-7 minimax m2.7 minimax m2.7 by minimax, served on the gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 gb of gpu memory for it. minimaxai/minimax-m2.7 serving chain-read gonka","sha256":"636869c98c612f5d8d032bea4887d18a28b0b749524958095ec4b0286ffc1f3c","specPath":"specs/providers/gonka/minimax-m2-7.t27","status":"serving","summary":{"en":"MiniMax M2.7 by MiniMax, served on the Gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"7872f01b1d1fe23eabc4c98b48bffcef5a386062","HOSTS":11,"ID":"gonka/deepseek-v4-flash-0731","KIND":"provider","MODEL_ID":"deepseek-ai/DeepSeek-V4-Flash-0731","NAME":"DeepSeek V4 Flash (0731)","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 360: seq_len 1024, dist_threshold 0.41, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":2460,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"],"STATUS":"serving","SUMMARY_EN":"DeepSeek V4 Flash (0731) by DeepSeek, served on the Gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1700,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":900,"VLLM_ARGS":["--max-model-len","400000","--kv-cache-dtype","fp8","--tokenizer-mode","deepseek_v4","--enable-auto-tool-choice","--tool-call-parser","deepseek_v4","--reasoning-parser","deepseek_v4","--trust-remote-code"],"VRAM_GB":280,"WITNESS":"chain-read"},"health":"ok","id":"gonka/deepseek-v4-flash-0731","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_deepseek_v4_flash_0731","name":{"en":"DeepSeek V4 Flash (0731)"},"network":"gonka","searchText":"gonka/deepseek-v4-flash-0731 deepseek v4 flash (0731) deepseek v4 flash (0731) by deepseek, served on the gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 gb of gpu memory for it. deepseek-ai/deepseek-v4-flash-0731 serving chain-read gonka","sha256":"941fd9fed2fff986e89f40624bfc2e4c76a1a637bbacb90d6fe76ee5843a5a78","specPath":"specs/providers/gonka/deepseek-v4-flash-0731.t27","status":"serving","summary":{"en":"DeepSeek V4 Flash (0731) by DeepSeek, served on the Gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"04c4e9e95c5da8862dced7e5056455116f83a7e0","HOSTS":6,"ID":"gonka/glm-5-3-flash","KIND":"provider","MODEL_ID":"zai-org/GLM-5.3-Flash","NAME":"GLM-5.3 Flash","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 394: seq_len 1024, dist_threshold 0.44, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":6200,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/zai-org/GLM-5.3-Flash"],"STATUS":"serving","SUMMARY_EN":"GLM-5.3 Flash by Z.ai, served on the Gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1500,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":951,"VLLM_ARGS":["--max-model-len","400000","--kv-cache-dtype","fp8","--enable-auto-tool-choice","--tool-call-parser","glm47","--reasoning-parser","glm45","--trust-remote-code"],"VRAM_GB":560,"WITNESS":"chain-read"},"health":"ok","id":"gonka/glm-5-3-flash","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_glm_5_3_flash","name":{"en":"GLM-5.3 Flash"},"network":"gonka","searchText":"gonka/glm-5-3-flash glm-5.3 flash glm-5.3 flash by z.ai, served on the gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 gb of gpu memory for it. zai-org/glm-5.3-flash serving chain-read gonka","sha256":"846d6404ebcabdae60204cba910c611d784536c8fb0962b0505963dd32d81c62","specPath":"specs/providers/gonka/glm-5-3-flash.t27","status":"serving","summary":{"en":"GLM-5.3 Flash by Z.ai, served on the Gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"70311cfa0158cce7dd2cf5d2e04f68e3fdc3efc1","HOSTS":0,"ID":"gonka/glm-5-2-fp8","KIND":"provider","MODEL_ID":"zai-org/GLM-5.2-FP8","NAME":"GLM-5.2 (FP8)","NETWORK":"gonka","NOTE":"Removed from poc_params.models by governance proposal 101 (passed, voting ended 2026-09-10): still listed in models_all, but a host can no longer earn PoC weight with it, and no host of epoch 413 serves it. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":false,"POC_WEIGHT_SCALE_E4":0,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/zai-org/GLM-5.2-FP8"],"STATUS":"listed","SUMMARY_EN":"GLM-5.2 (FP8) by Z.ai, still listed on the Gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":700,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":750,"VLLM_ARGS":["--reasoning-parser","glm45","--enable-auto-tool-choice","--tool-call-parser","glm47","--max-model-len","400000"],"VRAM_GB":1120,"WITNESS":"chain-read"},"health":"warn","id":"gonka/glm-5-2-fp8","inSpecCorpus":false,"messages":["on chain, removed from the PoC models: no host of epoch 413 serves it"],"moduleName":"provider_gonka_glm_5_2_fp8","name":{"en":"GLM-5.2 (FP8)"},"network":"gonka","searchText":"gonka/glm-5-2-fp8 glm-5.2 (fp8) glm-5.2 (fp8) by z.ai, still listed on the gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 gb of gpu memory for it. zai-org/glm-5.2-fp8 listed chain-read gonka","sha256":"eedfdcf40aca8cbeb02ed5c7d8c1ecc9cda63676a06fdfe8220dac4e38854ec4","specPath":"specs/providers/gonka/glm-5-2-fp8.t27","status":"listed","summary":{"en":"GLM-5.2 (FP8) by Z.ai, still listed on the Gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":240000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"5a49d036ab7472b7d5912ded487150ec1358c11d","HOSTS":0,"ID":"gonka/kimi-k2-6","KIND":"provider","MODEL_ID":"moonshotai/Kimi-K2.6","NAME":"Kimi K2.6","NETWORK":"gonka","NOTE":"Removed from poc_params.models by governance proposal 101 (passed, voting ended 2026-09-10): still listed in models_all, but a host can no longer earn PoC weight with it, and no host of epoch 413 serves it. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":false,"POC_WEIGHT_SCALE_E4":0,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/moonshotai/Kimi-K2.6"],"STATUS":"listed","SUMMARY_EN":"Kimi K2.6 by Moonshot AI, still listed on the Gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1500,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":900,"VLLM_ARGS":["--enable-auto-tool-choice","--max-model-len","240000","--tool-call-parser","kimi_k2","--reasoning-parser","kimi_k2"],"VRAM_GB":720,"WITNESS":"chain-read"},"health":"warn","id":"gonka/kimi-k2-6","inSpecCorpus":false,"messages":["on chain, removed from the PoC models: no host of epoch 413 serves it"],"moduleName":"provider_gonka_kimi_k2_6","name":{"en":"Kimi K2.6"},"network":"gonka","searchText":"gonka/kimi-k2-6 kimi k2.6 kimi k2.6 by moonshot ai, still listed on the gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 gb of gpu memory for it. moonshotai/kimi-k2.6 listed chain-read gonka","sha256":"254dc9e53bf4a4843038d2c6cdc9c0f86dc8dddc58215d5ae57b7fac3b3a6ee8","specPath":"specs/providers/gonka/kimi-k2-6.t27","status":"listed","summary":{"en":"Kimi K2.6 by Moonshot AI, still listed on the Gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"host-class","fields":{"CHECKED":"2026-10-03","DEVICE":"Xilinx Artix-7 XC7A200T. TRI-NET ran on three Alinx AX7203 boards (IDCODE 0x13636093); the t27 bench is three QMTech Wukong V1 boards (IDCODE 0x03636093), the same die","ENABLED":true,"FAMILY":"host-class","GAPS":["the node keys are not on any host: no receipt from the three boards can be verified until they are re-keyed (ternary_hw_verification.t27 KEYS_NOT_ON_THIS_HOST)","nobody buys ternary compute: settlement_law.t27 EFFICIENCY_IS_NOT_DEMAND is resolved false and WHO_BUYS_TERNARY_COMPUTE is open","$TRI is on no mainnet: the site's jetton is on TON testnet","the UART, not the cell, bounds throughput; a faster transport is not built"],"GONKA_PARALLEL":"Gonka's Proof of Compute v2 races seeded transformer forward passes and accepts a host within a distance threshold by a binomial test; 20% of a host's weight needs no collateral and 20% of collateral is slashed for invalid work. Here the job is integer, so acceptance is equality and needs no threshold; stake and slash play the part of collateral","ID":"trinet/fpga-xc7a200t","KIND":"provider","MEASURED":["TRINET MAC32, a 32-wide balanced-ternary dot product computed as popcount(agreements) - popcount(disagreements), bit-exact on the board: 512/512 (ternary_hw_verification.t27)","6400/6400 jobs on each of three nodes at their own baud window centres, zero failures (ternary_hw_verification.t27)","over the UART transport no node can exceed about 4770 jobs/s, against a compute ceiling about 480 times higher (TRI_NET_HANDOFF.md)"],"MEMORY_GB":0,"NAME":"Artix-7 XC7A200T FPGA host","NETWORK":"trinet","NOTE":"Gonka has no FPGA path at all: its hosts run vLLM on GPUs and its proof races transformer forward passes. An FPGA earns on TRI-NET only through jobs written for the FPGA cell, which today means the 32-wide ternary dot product.","PROOF":"bit-exact recompute: a job is 24 bytes, the answer 19 bytes carrying the node id and a tag; the verifier recomputes the 32-wide balanced-ternary dot product and credits only an identical answer (settlement_law.t27, AUDIT_RATE_PERCENT 100: every job is checked while the network is small)","REWARD":"1 mTRI per accepted job (REWARD_PER_JOB_MTRI 1, 1000 mTRI = 1 TRI), minted when the verifier accepts the job; nothing is minted for a job nobody checked","SOURCES":["gHashTag/trinity-fpga@167d2c77f5acefb8a215e21fdecdae10d5d4af9f:specs/trinet/ternary_hw_verification.t27","gHashTag/trinity-fpga@c31157ae0dca4e1448f4c80b1c1884d298c40696:specs/trinet/settlement_law.t27","gHashTag/trinity-fpga@ff2962d710f1b1b5e032fd7af875b20af2a8fd9a:docs/TRI_NET_HANDOFF.md","gHashTag/t27:fpga/HARDWARE_SSOT.md"],"STAKE":"1000 mTRI minimum stake (MIN_STAKE_MTRI), 200 mTRI slashed per bad receipt (SLASH_PER_BAD_RECEIPT_MTRI); a damaged receipt is neither credited nor slashed","STATUS":"measured","SUMMARY_EN":"An FPGA board its owner rents out to TRI-NET for $TRI. The board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. Measured on three boards; nobody buys this compute yet.","TOKEN":"$TRI: cap 3^21 = 10460353203, all of it mined on accepted work, no pre-mine and no sale (settlement_law.t27); issued on TON and Solana by owner decision 2026-09-24; today only a TON testnet jetton exists (gHashTag/trinity apps/website/src/lib/triToken.ts, TRI_NETWORK testnet)","UNITS_PER_GONKA_NODE":0,"WITNESS":"bench-measured"},"health":"ok","id":"trinet/fpga-xc7a200t","inSpecCorpus":false,"messages":[],"moduleName":"provider_trinet_fpga_xc7a200t","name":{"en":"Artix-7 XC7A200T FPGA host"},"network":"trinet","searchText":"trinet/fpga-xc7a200t artix-7 xc7a200t fpga host an fpga board its owner rents out to tri-net for $tri. the board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. measured on three boards; nobody buys this compute yet. xilinx artix-7 xc7a200t. tri-net ran on three alinx ax7203 boards (idcode 0x13636093); the t27 bench is three qmtech wukong v1 boards (idcode 0x03636093), the same die measured bench-measured trinet","sha256":"80f07aff80a345c86c9e139645bdfbff3f58af0b4ed2bdc5c6ad584e8a911a2f","specPath":"specs/providers/trinet/fpga-xc7a200t.t27","status":"measured","summary":{"en":"An FPGA board its owner rents out to TRI-NET for $TRI. The board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. Measured on three boards; nobody buys this compute yet."},"typecheckOk":true,"witness":"bench-measured"},{"discarded":0,"family":"host-class","fields":{"CHECKED":"2026-10-03","DEVICE":"NVIDIA RTX 3090 / RTX 4090 class, 24 GB","ENABLED":true,"FAMILY":"host-class","GAPS":["no GPU worker exists in any repository","no GPU job format: the 24-byte ternary job is sized for the FPGA cell","no sampling verifier for a second host","nobody buys this compute yet (settlement_law.t27 EFFICIENCY_IS_NOT_DEMAND, resolved false)","$TRI is on no mainnet: the site's jetton is on TON testnet"],"GONKA_PARALLEL":"Gonka admitted consumer cards from 2025-11-05 (gonka-docs 3480cc7382, 40 GB minimum across the cards of one node) and stopped on 2026-06-05 (gonka-docs ff70a0f856); the models it serves on 2026-10-03 need 280 to 560 GB per host. The class Gonka left behind is the class TRI-NET would serve","ID":"trinet/gpu-consumer-24gb","KIND":"provider","MEASURED":[],"MEMORY_GB":24,"NAME":"Consumer GPU host (24 GB)","NETWORK":"trinet","NOTE":"Market rent for this class, from our own bills: RTX 4090 at 0.34 USD (community) to 0.74 USD (secure) per GPU-hour on RunPod (igla-coder-gpu LEDGER.md). A $TRI reward only competes with that once $TRI has a market price, which it does not have.","PROOF":"design: deterministic integer or ternary kernels whose answer is identical on any card, checked by recomputing a sample on a second host and credited only on equality, the FPGA rule carried over; a floating-point job would need Gonka-style statistical acceptance with its own threshold per device class","REWARD":"design: the FPGA law, mTRI per accepted job minted on acceptance, scaled by a per-class weight factor (Gonka's weight_scale_factor per model) so that one device class cannot drown another","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","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/gonka-ai/gonka-docs (commits 3480cc7382 and ff70a0f856)","gHashTag/trinity-fpga@c31157ae0dca4e1448f4c80b1c1884d298c40696:specs/trinet/settlement_law.t27","gHashTag/igla-coder-gpu:LEDGER.md"],"STAKE":"design: the FPGA law, 1000 mTRI minimum stake and 200 mTRI slashed per bad receipt (settlement_law.t27); not in force for GPUs","STATUS":"planned","SUMMARY_EN":"A gaming GPU its owner would rent out to TRI-NET for $TRI. Gonka no longer admits a card like this: a Gonka ML node now needs about 320 GB of GPU memory, fourteen of these cards. TRI-NET could take one card at a time, with jobs that fit it and are checked by recomputation. Nothing is built yet.","TOKEN":"$TRI: cap 3^21 = 10460353203, all of it mined on accepted work, no pre-mine and no sale (settlement_law.t27); issued on TON and Solana by owner decision 2026-09-24; today only a TON testnet jetton exists (gHashTag/trinity apps/website/src/lib/triToken.ts, TRI_NETWORK testnet)","UNITS_PER_GONKA_NODE":14,"WITNESS":"design-only"},"health":"warn","id":"trinet/gpu-consumer-24gb","inSpecCorpus":false,"messages":["a design: nothing has run"],"moduleName":"provider_trinet_gpu_consumer_24gb","name":{"en":"Consumer GPU host (24 GB)"},"network":"trinet","searchText":"trinet/gpu-consumer-24gb consumer gpu host (24 gb) a gaming gpu its owner would rent out to tri-net for $tri. gonka no longer admits a card like this: a gonka ml node now needs about 320 gb of gpu memory, fourteen of these cards. tri-net could take one card at a time, with jobs that fit it and are checked by recomputation. nothing is built yet. nvidia rtx 3090 / rtx 4090 class, 24 gb planned design-only trinet","sha256":"0f80aac84abffb6854a0d0a45888ad921b3283af262a5449885f3d0dc2f60591","specPath":"specs/providers/trinet/gpu-consumer-24gb.t27","status":"planned","summary":{"en":"A gaming GPU its owner would rent out to TRI-NET for $TRI. Gonka no longer admits a card like this: a Gonka ML node now needs about 320 GB of GPU memory, fourteen of these cards. TRI-NET could take one card at a time, with jobs that fit it and are checked by recomputation. Nothing is built yet."},"typecheckOk":true,"witness":"design-only"}],"study":{"derived":{"allowlistActive":false,"consumerCardsPerNode":{"largest":24,"mostServed":14,"smallest":12},"subsidyPerFee":"102921","vestingDays":171},"fields":{"ACTIVE_HOSTS":30,"ALLOWLIST_UNTIL_HEIGHT":"2475000","BASE_WEIGHT_PERMILLE":200,"BRIDGE_CHAINS":["ethereum"],"CHAIN_HEIGHT":"6375920","CHECKED":"2026-10-03","CONFLICT":"the owner decided $TRI lives on TON and Solana; GNK lives on the Gonka chain and, wrapped, on Ethereum. No chain holds both, so every route either puts $TRI on a chain not chosen for it or needs a bridge nobody has built. Before any route, $TRI needs a mainnet issue: a testnet jetton cannot be paired","CONSUMER_CARD_GB":24,"CONSUMER_ERA_MIN_GB":40,"DATACENTER_CARD_GB":80,"EPOCH":413,"EPOCH_LENGTH_BLOCKS":15391,"EPOCH_SECONDS_MEASURED":82285,"GNK_DECIMALS":9,"GONKA_APPROVED_FOR_TRADE":["ethereum USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","ethereum USDT 0xdac17f958d2ee523a2206206994597c13d831ec7","kava_2222-10 USDT over IBC transfer/channel-5 (ibc/115F68FBA220A028C6F6ED08EA0C1A9C8C52798B14FB66E6C89D5D8C06A524D4)"],"GONKA_POOL_REGISTERED":false,"IBC_CHANNELS":["channel-1 Osmosis (no GNK on Osmosis on CHECKED)","channel-3 Neutron","channel-5 Kava","channel-0 and channel-2 Axelar"],"ID":"providers/tri_gnk_pair","INITIAL_EPOCH_REWARD_NGONKA":"323000000000000","KIND":"providers-study","LARGEST_POC_MODEL_GB":560,"MOST_SERVED_MODEL_GB":320,"PARALLELS":["who pays: Gonka pays its hosts almost entirely by issuance, its subsidies were about 100000 times its fees on CHECKED; TRI-NET mints on accepted jobs, so both pay for work before anyone buys it, and both wait on demand (settlement_law.t27 WHO_BUYS_TERNARY_COMPUTE)","proof: Gonka's Proof of Compute v2 is statistical, seeded forward passes accepted within a distance threshold by a binomial test; TRI-NET's is exact, a bit-identical recompute, which is cheaper to check and works only for integer jobs","entry: a Gonka host needs 280 to 560 GB of GPU memory on CHECKED, so one 24 GB card is out; TRI-NET would take one card or one FPGA board","weight: Gonka scales the PoC weight of each model (weight_scale_factor) so that one model cannot crowd out another; TRI-NET would need the same per device class","collateral: Gonka gives 20% of a host's weight without collateral and slashes 20% for invalid work and 10% for downtime; TRI-NET asks a 1000 mTRI stake and slashes 200 mTRI per bad receipt","vesting: Gonka vests rewards over 180 epochs, about 171 days at the measured epoch; TRI-NET has no vesting","admission: Gonka's allowlist ended at height 2475000 and anyone may register a host; TRI-NET has three boards and no public registration"],"ROUTES":["ethereum-uniswap: issue $TRI as an ERC-20 on Ethereum and open a TRI/WGNK pool on Uniswap v3 beside the WGNK/USDT pool; needs nobody's permission, and puts $TRI on a chain the owner did not choose","gonka-pool: bring $TRI to the Gonka chain (an Ethereum ERC-20 through the Gonka bridge, or an IBC denom) and win a Gonka governance vote approving it for trade (MsgApproveBridgeTokenForTrading or MsgApproveIbcTokenForTrading); the chain's singleton pool is not registered yet and the approved list holds only USDC and USDT","osmosis-ibc: send GNK to Osmosis over IBC channel-1 and pair it there with $TRI as an Osmosis tokenfactory denom; needs nobody's permission, puts $TRI on a third chain, and Osmosis holds no GNK today","ton-or-solana: pair on the chains $TRI was decided for, on a TON or Solana exchange; needs GNK carried to TON or Solana, and the Gonka bridge serves only Ethereum"],"ROUTE_ETHEREUM_UNISWAP":0,"ROUTE_GONKA_POOL":1,"ROUTE_OSMOSIS_IBC":2,"ROUTE_TON_SOLANA":3,"SLASH_DOWNTIME_PERMILLE":100,"SLASH_INVALID_PERMILLE":200,"SMALLEST_POC_MODEL_GB":280,"SUPPLY_NGONKA":"446378386939836973","TOTAL_BURNED_NGONKA":"1284341372978310","TOTAL_FEES_NGONKA":"1174606773777","TOTAL_SUBSIDIES_NGONKA":"120892672230996302","TRI_CAP":"10460353203","TRI_CHAINS":["ton","solana"],"TRI_MAINNET":false,"VESTING_EPOCHS":180,"WGNK_DECIMALS":9,"WGNK_ETHEREUM":"0x972a7a92d92796a98801a8818bcf91f1648f2f68","WGNK_USDT_UNISWAP_V3_POOL":"0x203EE836d417CF944133bbdd2c62B4BC7388C55D"},"id":"providers/tri_gnk_pair","moduleName":"ProvidersTriGnkPair","sha256":"0fb1a494572f8e8940da73519a67b6d0291826ee0915266b1a3754768ccd6949","specPath":"specs/providers/tri_gnk_pair.t27","typecheckOk":true},"version":1} +{"catalog":{"callRule":"needs-key: the endpoint exists and answers OpenAI-compatible requests, but every request is paid and signed, so the site never calls it and never takes a key; none: there is no endpoint to call","calls":["needs-key","none"],"commonFields":["KIND","ID","FAMILY","NETWORK","NAME","SUMMARY_EN","STATUS","WITNESS","CHECKED","SOURCES","NOTE","ENABLED"],"directories":["gonka/.t27 (FAMILY model: one card per model in the chain's models_all)","trinet/.t27 (FAMILY host-class: one card per device class our network would pay $TRI for)"],"families":["model","host-class"],"fieldSourceRule":"a model card copies the chain: MODEL_ID, HF_COMMIT, VRAM_GB (v_ram), THROUGHPUT_PER_NONCE, VALIDATION_PERMILLE (validation_threshold x 1000) and UNITS_OF_COMPUTE_PER_TOKEN from models_all; CONTEXT_TOKENS from the --max-model-len in its model_args; POC_MODEL and POC_WEIGHT_SCALE_E4 (weight_scale_factor x 10000) from params.poc_params.models; HOSTS from the count of active participants of EPOCH whose models list names MODEL_ID; PRICE_PER_TOKEN from /v1/governance/pricing","hostFields":["DEVICE","MEMORY_GB","UNITS_PER_GONKA_NODE","PROOF","REWARD","STAKE","GONKA_PARALLEL","MEASURED","GAPS","TOKEN"],"idRule":"ID is the path under specs/providers without .t27, for example gonka/minimax-m2-7; the module is provider_","modelFields":["MODEL_ID","HF_COMMIT","CONTEXT_TOKENS","VRAM_GB","THROUGHPUT_PER_NONCE","VALIDATION_PERMILLE","POC_MODEL","POC_WEIGHT_SCALE_E4","HOSTS","EPOCH","UNITS_OF_COMPUTE_PER_TOKEN","PRICE_PER_TOKEN","PRICE_UNIT","API","CALL","VLLM_ARGS"],"networks":["gonka","trinet"],"schemaVersion":1,"sha256":"d1adddc73509e07c5114581ea59c3adb7e024a215286a7191ae1f0065ad8faa5","specPath":"specs/providers/catalog.t27","statusRule":"serving: on chain and at least one host of EPOCH serves it; listed: on chain, no host serves it; measured: our hardware, with a bench record a reader can rerun; planned: no code and no record, a design only","statuses":["serving","listed","measured","planned"],"typecheckOk":true,"witnessRule":"chain-read: copied from a public chain endpoint on CHECKED; bench-measured: a record of runs on our boards, named in SOURCES; design-only: nothing has run. A design never claims a measurement","witnesses":["chain-read","bench-measured","design-only"]},"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"b2c5fe585510ee389fcf1b1ef713ea2ce0ae8463f1023d884615459b31155590","counts":{"byFamily":{"host-class":2,"model":5},"byNetwork":{"gonka":5,"trinet":2},"byStatus":{"listed":2,"measured":1,"planned":1,"serving":3},"byWitness":{"bench-measured":1,"chain-read":5,"design-only":1},"enabled":7,"specs":7,"typecheckOk":7},"generatedAt":"2026-10-04T18:34:00.105Z","i18n":[],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"providers":[{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":180000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"d494266a4affc0d2995ba1fa35c8481cbd84294b","HOSTS":26,"ID":"gonka/minimax-m2-7","KIND":"provider","MODEL_ID":"MiniMaxAI/MiniMax-M2.7","NAME":"MiniMax M2.7","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 278: seq_len 1024, dist_threshold 0.75, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":3024,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/MiniMaxAI/MiniMax-M2.7"],"STATUS":"serving","SUMMARY_EN":"MiniMax M2.7 by MiniMax, served on the Gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":5000,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":922,"VLLM_ARGS":["--enable-auto-tool-choice","--max-model-len","180000","--kv-cache-dtype","fp8","--tool-call-parser","minimax_m2","--reasoning-parser","minimax_m2_append_think"],"VRAM_GB":320,"WITNESS":"chain-read"},"health":"ok","id":"gonka/minimax-m2-7","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_minimax_m2_7","name":{"en":"MiniMax M2.7"},"network":"gonka","searchText":"gonka/minimax-m2-7 minimax m2.7 minimax m2.7 by minimax, served on the gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 gb of gpu memory for it. minimaxai/minimax-m2.7 serving chain-read gonka","sha256":"636869c98c612f5d8d032bea4887d18a28b0b749524958095ec4b0286ffc1f3c","specPath":"specs/providers/gonka/minimax-m2-7.t27","status":"serving","summary":{"en":"MiniMax M2.7 by MiniMax, served on the Gonka network: 26 of the 30 active hosts of epoch 413 run it; context 180000 tokens, a host needs 320 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"7872f01b1d1fe23eabc4c98b48bffcef5a386062","HOSTS":11,"ID":"gonka/deepseek-v4-flash-0731","KIND":"provider","MODEL_ID":"deepseek-ai/DeepSeek-V4-Flash-0731","NAME":"DeepSeek V4 Flash (0731)","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 360: seq_len 1024, dist_threshold 0.41, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":2460,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"],"STATUS":"serving","SUMMARY_EN":"DeepSeek V4 Flash (0731) by DeepSeek, served on the Gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1700,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":900,"VLLM_ARGS":["--max-model-len","400000","--kv-cache-dtype","fp8","--tokenizer-mode","deepseek_v4","--enable-auto-tool-choice","--tool-call-parser","deepseek_v4","--reasoning-parser","deepseek_v4","--trust-remote-code"],"VRAM_GB":280,"WITNESS":"chain-read"},"health":"ok","id":"gonka/deepseek-v4-flash-0731","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_deepseek_v4_flash_0731","name":{"en":"DeepSeek V4 Flash (0731)"},"network":"gonka","searchText":"gonka/deepseek-v4-flash-0731 deepseek v4 flash (0731) deepseek v4 flash (0731) by deepseek, served on the gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 gb of gpu memory for it. deepseek-ai/deepseek-v4-flash-0731 serving chain-read gonka","sha256":"941fd9fed2fff986e89f40624bfc2e4c76a1a637bbacb90d6fe76ee5843a5a78","specPath":"specs/providers/gonka/deepseek-v4-flash-0731.t27","status":"serving","summary":{"en":"DeepSeek V4 Flash (0731) by DeepSeek, served on the Gonka network: 11 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 280 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"04c4e9e95c5da8862dced7e5056455116f83a7e0","HOSTS":6,"ID":"gonka/glm-5-3-flash","KIND":"provider","MODEL_ID":"zai-org/GLM-5.3-Flash","NAME":"GLM-5.3 Flash","NETWORK":"gonka","NOTE":"PoC v2 model since penalty_start_epoch 394: seq_len 1024, dist_threshold 0.44, p_mismatch 0.1, p_value_threshold 0.05. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":true,"POC_WEIGHT_SCALE_E4":6200,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/zai-org/GLM-5.3-Flash"],"STATUS":"serving","SUMMARY_EN":"GLM-5.3 Flash by Z.ai, served on the Gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1500,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":951,"VLLM_ARGS":["--max-model-len","400000","--kv-cache-dtype","fp8","--enable-auto-tool-choice","--tool-call-parser","glm47","--reasoning-parser","glm45","--trust-remote-code"],"VRAM_GB":560,"WITNESS":"chain-read"},"health":"ok","id":"gonka/glm-5-3-flash","inSpecCorpus":false,"messages":[],"moduleName":"provider_gonka_glm_5_3_flash","name":{"en":"GLM-5.3 Flash"},"network":"gonka","searchText":"gonka/glm-5-3-flash glm-5.3 flash glm-5.3 flash by z.ai, served on the gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 gb of gpu memory for it. zai-org/glm-5.3-flash serving chain-read gonka","sha256":"846d6404ebcabdae60204cba910c611d784536c8fb0962b0505963dd32d81c62","specPath":"specs/providers/gonka/glm-5-3-flash.t27","status":"serving","summary":{"en":"GLM-5.3 Flash by Z.ai, served on the Gonka network: 6 of the 30 active hosts of epoch 413 run it; context 400000 tokens, a host needs 560 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":400000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"70311cfa0158cce7dd2cf5d2e04f68e3fdc3efc1","HOSTS":0,"ID":"gonka/glm-5-2-fp8","KIND":"provider","MODEL_ID":"zai-org/GLM-5.2-FP8","NAME":"GLM-5.2 (FP8)","NETWORK":"gonka","NOTE":"Removed from poc_params.models by governance proposal 101 (passed, voting ended 2026-09-10): still listed in models_all, but a host can no longer earn PoC weight with it, and no host of epoch 413 serves it. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":false,"POC_WEIGHT_SCALE_E4":0,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/zai-org/GLM-5.2-FP8"],"STATUS":"listed","SUMMARY_EN":"GLM-5.2 (FP8) by Z.ai, still listed on the Gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":700,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":750,"VLLM_ARGS":["--reasoning-parser","glm45","--enable-auto-tool-choice","--tool-call-parser","glm47","--max-model-len","400000"],"VRAM_GB":1120,"WITNESS":"chain-read"},"health":"warn","id":"gonka/glm-5-2-fp8","inSpecCorpus":false,"messages":["on chain, removed from the PoC models: no host of epoch 413 serves it"],"moduleName":"provider_gonka_glm_5_2_fp8","name":{"en":"GLM-5.2 (FP8)"},"network":"gonka","searchText":"gonka/glm-5-2-fp8 glm-5.2 (fp8) glm-5.2 (fp8) by z.ai, still listed on the gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 gb of gpu memory for it. zai-org/glm-5.2-fp8 listed chain-read gonka","sha256":"eedfdcf40aca8cbeb02ed5c7d8c1ecc9cda63676a06fdfe8220dac4e38854ec4","specPath":"specs/providers/gonka/glm-5-2-fp8.t27","status":"listed","summary":{"en":"GLM-5.2 (FP8) by Z.ai, still listed on the Gonka chain but served by no host in epoch 413; context 400000 tokens, a host needs 1120 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"model","fields":{"API":"OpenAI-compatible POST /v1/chat/completions with model = MODEL_ID: signed by a funded Gonka account (gonka-openai SDK for Python, TypeScript and Go) or sent through a third-party broker with that broker's API key","CALL":"needs-key","CHECKED":"2026-10-03","CONTEXT_TOKENS":240000,"ENABLED":true,"EPOCH":413,"FAMILY":"model","HF_COMMIT":"5a49d036ab7472b7d5912ded487150ec1358c11d","HOSTS":0,"ID":"gonka/kimi-k2-6","KIND":"provider","MODEL_ID":"moonshotai/Kimi-K2.6","NAME":"Kimi K2.6","NETWORK":"gonka","NOTE":"Removed from poc_params.models by governance proposal 101 (passed, voting ended 2026-09-10): still listed in models_all, but a host can no longer earn PoC weight with it, and no host of epoch 413 serves it. PRICE_PER_TOKEN is the live dynamic price the pricing endpoint returns; the endpoint names no unit, the Gonka docs denominate prices in ngonka (1 GNK = 10^9 ngonka).","POC_MODEL":false,"POC_WEIGHT_SCALE_E4":0,"PRICE_PER_TOKEN":1,"PRICE_UNIT":"ngonka per token (Gonka docs; the endpoint itself names no unit)","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","https://node3.gonka.ai/chain-api/productscience/inference/inference/params","https://node3.gonka.ai/v1/governance/pricing","https://node3.gonka.ai/v1/epochs/current/participants","https://huggingface.co/moonshotai/Kimi-K2.6"],"STATUS":"listed","SUMMARY_EN":"Kimi K2.6 by Moonshot AI, still listed on the Gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 GB of GPU memory for it.","THROUGHPUT_PER_NONCE":1500,"UNITS_OF_COMPUTE_PER_TOKEN":10000,"VALIDATION_PERMILLE":900,"VLLM_ARGS":["--enable-auto-tool-choice","--max-model-len","240000","--tool-call-parser","kimi_k2","--reasoning-parser","kimi_k2"],"VRAM_GB":720,"WITNESS":"chain-read"},"health":"warn","id":"gonka/kimi-k2-6","inSpecCorpus":false,"messages":["on chain, removed from the PoC models: no host of epoch 413 serves it"],"moduleName":"provider_gonka_kimi_k2_6","name":{"en":"Kimi K2.6"},"network":"gonka","searchText":"gonka/kimi-k2-6 kimi k2.6 kimi k2.6 by moonshot ai, still listed on the gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 gb of gpu memory for it. moonshotai/kimi-k2.6 listed chain-read gonka","sha256":"254dc9e53bf4a4843038d2c6cdc9c0f86dc8dddc58215d5ae57b7fac3b3a6ee8","specPath":"specs/providers/gonka/kimi-k2-6.t27","status":"listed","summary":{"en":"Kimi K2.6 by Moonshot AI, still listed on the Gonka chain but served by no host in epoch 413; context 240000 tokens, a host needs 720 GB of GPU memory for it."},"typecheckOk":true,"witness":"chain-read"},{"discarded":0,"family":"host-class","fields":{"CHECKED":"2026-10-03","DEVICE":"Xilinx Artix-7 XC7A200T. TRI-NET ran on three Alinx AX7203 boards (IDCODE 0x13636093); the t27 bench is three QMTech Wukong V1 boards (IDCODE 0x03636093), the same die","ENABLED":true,"FAMILY":"host-class","GAPS":["the node keys are not on any host: no receipt from the three boards can be verified until they are re-keyed (ternary_hw_verification.t27 KEYS_NOT_ON_THIS_HOST)","nobody buys ternary compute: settlement_law.t27 EFFICIENCY_IS_NOT_DEMAND is resolved false and WHO_BUYS_TERNARY_COMPUTE is open","$TRI is on no mainnet: the site's jetton is on TON testnet","the UART, not the cell, bounds throughput; a faster transport is not built"],"GONKA_PARALLEL":"Gonka's Proof of Compute v2 races seeded transformer forward passes and accepts a host within a distance threshold by a binomial test; 20% of a host's weight needs no collateral and 20% of collateral is slashed for invalid work. Here the job is integer, so acceptance is equality and needs no threshold; stake and slash play the part of collateral","ID":"trinet/fpga-xc7a200t","KIND":"provider","MEASURED":["TRINET MAC32, a 32-wide balanced-ternary dot product computed as popcount(agreements) - popcount(disagreements), bit-exact on the board: 512/512 (ternary_hw_verification.t27)","6400/6400 jobs on each of three nodes at their own baud window centres, zero failures (ternary_hw_verification.t27)","over the UART transport no node can exceed about 4770 jobs/s, against a compute ceiling about 480 times higher (TRI_NET_HANDOFF.md)"],"MEMORY_GB":0,"NAME":"Artix-7 XC7A200T FPGA host","NETWORK":"trinet","NOTE":"Gonka has no FPGA path at all: its hosts run vLLM on GPUs and its proof races transformer forward passes. An FPGA earns on TRI-NET only through jobs written for the FPGA cell, which today means the 32-wide ternary dot product.","PROOF":"bit-exact recompute: a job is 24 bytes, the answer 19 bytes carrying the node id and a tag; the verifier recomputes the 32-wide balanced-ternary dot product and credits only an identical answer (settlement_law.t27, AUDIT_RATE_PERCENT 100: every job is checked while the network is small)","REWARD":"1 mTRI per accepted job (REWARD_PER_JOB_MTRI 1, 1000 mTRI = 1 TRI), minted when the verifier accepts the job; nothing is minted for a job nobody checked","SOURCES":["gHashTag/trinity-fpga@167d2c77f5acefb8a215e21fdecdae10d5d4af9f:specs/trinet/ternary_hw_verification.t27","gHashTag/trinity-fpga@c31157ae0dca4e1448f4c80b1c1884d298c40696:specs/trinet/settlement_law.t27","gHashTag/trinity-fpga@ff2962d710f1b1b5e032fd7af875b20af2a8fd9a:docs/TRI_NET_HANDOFF.md","gHashTag/t27:fpga/HARDWARE_SSOT.md"],"STAKE":"1000 mTRI minimum stake (MIN_STAKE_MTRI), 200 mTRI slashed per bad receipt (SLASH_PER_BAD_RECEIPT_MTRI); a damaged receipt is neither credited nor slashed","STATUS":"measured","SUMMARY_EN":"An FPGA board its owner rents out to TRI-NET for $TRI. The board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. Measured on three boards; nobody buys this compute yet.","TOKEN":"$TRI: cap 3^21 = 10460353203, all of it mined on accepted work, no pre-mine and no sale (settlement_law.t27); issued on TON and Solana by owner decision 2026-09-24; today only a TON testnet jetton exists (gHashTag/trinity apps/website/src/lib/triToken.ts, TRI_NETWORK testnet)","UNITS_PER_GONKA_NODE":0,"WITNESS":"bench-measured"},"health":"ok","id":"trinet/fpga-xc7a200t","inSpecCorpus":false,"messages":[],"moduleName":"provider_trinet_fpga_xc7a200t","name":{"en":"Artix-7 XC7A200T FPGA host"},"network":"trinet","searchText":"trinet/fpga-xc7a200t artix-7 xc7a200t fpga host an fpga board its owner rents out to tri-net for $tri. the board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. measured on three boards; nobody buys this compute yet. xilinx artix-7 xc7a200t. tri-net ran on three alinx ax7203 boards (idcode 0x13636093); the t27 bench is three qmtech wukong v1 boards (idcode 0x03636093), the same die measured bench-measured trinet","sha256":"80f07aff80a345c86c9e139645bdfbff3f58af0b4ed2bdc5c6ad584e8a911a2f","specPath":"specs/providers/trinet/fpga-xc7a200t.t27","status":"measured","summary":{"en":"An FPGA board its owner rents out to TRI-NET for $TRI. The board computes balanced-ternary dot products bit-exactly, so a job is checked by recomputing it and comparing for equality, not by a statistical test. Measured on three boards; nobody buys this compute yet."},"typecheckOk":true,"witness":"bench-measured"},{"discarded":0,"family":"host-class","fields":{"CHECKED":"2026-10-03","DEVICE":"NVIDIA RTX 3090 / RTX 4090 class, 24 GB","ENABLED":true,"FAMILY":"host-class","GAPS":["no GPU worker exists in any repository","no GPU job format: the 24-byte ternary job is sized for the FPGA cell","no sampling verifier for a second host","nobody buys this compute yet (settlement_law.t27 EFFICIENCY_IS_NOT_DEMAND, resolved false)","$TRI is on no mainnet: the site's jetton is on TON testnet"],"GONKA_PARALLEL":"Gonka admitted consumer cards from 2025-11-05 (gonka-docs 3480cc7382, 40 GB minimum across the cards of one node) and stopped on 2026-06-05 (gonka-docs ff70a0f856); the models it serves on 2026-10-03 need 280 to 560 GB per host. The class Gonka left behind is the class TRI-NET would serve","ID":"trinet/gpu-consumer-24gb","KIND":"provider","MEASURED":[],"MEMORY_GB":24,"NAME":"Consumer GPU host (24 GB)","NETWORK":"trinet","NOTE":"Market rent for this class, from our own bills: RTX 4090 at 0.34 USD (community) to 0.74 USD (secure) per GPU-hour on RunPod (igla-coder-gpu LEDGER.md). A $TRI reward only competes with that once $TRI has a market price, which it does not have.","PROOF":"design: deterministic integer or ternary kernels whose answer is identical on any card, checked by recomputing a sample on a second host and credited only on equality, the FPGA rule carried over; a floating-point job would need Gonka-style statistical acceptance with its own threshold per device class","REWARD":"design: the FPGA law, mTRI per accepted job minted on acceptance, scaled by a per-class weight factor (Gonka's weight_scale_factor per model) so that one device class cannot drown another","SOURCES":["https://node3.gonka.ai/chain-api/productscience/inference/inference/models_all","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/gonka-ai/gonka-docs (commits 3480cc7382 and ff70a0f856)","gHashTag/trinity-fpga@c31157ae0dca4e1448f4c80b1c1884d298c40696:specs/trinet/settlement_law.t27","gHashTag/igla-coder-gpu:LEDGER.md"],"STAKE":"design: the FPGA law, 1000 mTRI minimum stake and 200 mTRI slashed per bad receipt (settlement_law.t27); not in force for GPUs","STATUS":"planned","SUMMARY_EN":"A gaming GPU its owner would rent out to TRI-NET for $TRI. Gonka no longer admits a card like this: a Gonka ML node now needs about 320 GB of GPU memory, fourteen of these cards. TRI-NET could take one card at a time, with jobs that fit it and are checked by recomputation. Nothing is built yet.","TOKEN":"$TRI: cap 3^21 = 10460353203, all of it mined on accepted work, no pre-mine and no sale (settlement_law.t27); issued on TON and Solana by owner decision 2026-09-24; today only a TON testnet jetton exists (gHashTag/trinity apps/website/src/lib/triToken.ts, TRI_NETWORK testnet)","UNITS_PER_GONKA_NODE":14,"WITNESS":"design-only"},"health":"warn","id":"trinet/gpu-consumer-24gb","inSpecCorpus":false,"messages":["a design: nothing has run"],"moduleName":"provider_trinet_gpu_consumer_24gb","name":{"en":"Consumer GPU host (24 GB)"},"network":"trinet","searchText":"trinet/gpu-consumer-24gb consumer gpu host (24 gb) a gaming gpu its owner would rent out to tri-net for $tri. gonka no longer admits a card like this: a gonka ml node now needs about 320 gb of gpu memory, fourteen of these cards. tri-net could take one card at a time, with jobs that fit it and are checked by recomputation. nothing is built yet. nvidia rtx 3090 / rtx 4090 class, 24 gb planned design-only trinet","sha256":"0f80aac84abffb6854a0d0a45888ad921b3283af262a5449885f3d0dc2f60591","specPath":"specs/providers/trinet/gpu-consumer-24gb.t27","status":"planned","summary":{"en":"A gaming GPU its owner would rent out to TRI-NET for $TRI. Gonka no longer admits a card like this: a Gonka ML node now needs about 320 GB of GPU memory, fourteen of these cards. TRI-NET could take one card at a time, with jobs that fit it and are checked by recomputation. Nothing is built yet."},"typecheckOk":true,"witness":"design-only"}],"study":{"derived":{"allowlistActive":false,"consumerCardsPerNode":{"largest":24,"mostServed":14,"smallest":12},"subsidyPerFee":"102921","vestingDays":171},"fields":{"ACTIVE_HOSTS":30,"ALLOWLIST_UNTIL_HEIGHT":"2475000","BASE_WEIGHT_PERMILLE":200,"BRIDGE_CHAINS":["ethereum"],"CHAIN_HEIGHT":"6375920","CHECKED":"2026-10-03","CONFLICT":"the owner decided $TRI lives on TON and Solana; GNK lives on the Gonka chain and, wrapped, on Ethereum. No chain holds both, so every route either puts $TRI on a chain not chosen for it or needs a bridge nobody has built. Before any route, $TRI needs a mainnet issue: a testnet jetton cannot be paired","CONSUMER_CARD_GB":24,"CONSUMER_ERA_MIN_GB":40,"DATACENTER_CARD_GB":80,"EPOCH":413,"EPOCH_LENGTH_BLOCKS":15391,"EPOCH_SECONDS_MEASURED":82285,"GNK_DECIMALS":9,"GONKA_APPROVED_FOR_TRADE":["ethereum USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","ethereum USDT 0xdac17f958d2ee523a2206206994597c13d831ec7","kava_2222-10 USDT over IBC transfer/channel-5 (ibc/115F68FBA220A028C6F6ED08EA0C1A9C8C52798B14FB66E6C89D5D8C06A524D4)"],"GONKA_POOL_REGISTERED":false,"IBC_CHANNELS":["channel-1 Osmosis (no GNK on Osmosis on CHECKED)","channel-3 Neutron","channel-5 Kava","channel-0 and channel-2 Axelar"],"ID":"providers/tri_gnk_pair","INITIAL_EPOCH_REWARD_NGONKA":"323000000000000","KIND":"providers-study","LARGEST_POC_MODEL_GB":560,"MOST_SERVED_MODEL_GB":320,"PARALLELS":["who pays: Gonka pays its hosts almost entirely by issuance, its subsidies were about 100000 times its fees on CHECKED; TRI-NET mints on accepted jobs, so both pay for work before anyone buys it, and both wait on demand (settlement_law.t27 WHO_BUYS_TERNARY_COMPUTE)","proof: Gonka's Proof of Compute v2 is statistical, seeded forward passes accepted within a distance threshold by a binomial test; TRI-NET's is exact, a bit-identical recompute, which is cheaper to check and works only for integer jobs","entry: a Gonka host needs 280 to 560 GB of GPU memory on CHECKED, so one 24 GB card is out; TRI-NET would take one card or one FPGA board","weight: Gonka scales the PoC weight of each model (weight_scale_factor) so that one model cannot crowd out another; TRI-NET would need the same per device class","collateral: Gonka gives 20% of a host's weight without collateral and slashes 20% for invalid work and 10% for downtime; TRI-NET asks a 1000 mTRI stake and slashes 200 mTRI per bad receipt","vesting: Gonka vests rewards over 180 epochs, about 171 days at the measured epoch; TRI-NET has no vesting","admission: Gonka's allowlist ended at height 2475000 and anyone may register a host; TRI-NET has three boards and no public registration"],"ROUTES":["ethereum-uniswap: issue $TRI as an ERC-20 on Ethereum and open a TRI/WGNK pool on Uniswap v3 beside the WGNK/USDT pool; needs nobody's permission, and puts $TRI on a chain the owner did not choose","gonka-pool: bring $TRI to the Gonka chain (an Ethereum ERC-20 through the Gonka bridge, or an IBC denom) and win a Gonka governance vote approving it for trade (MsgApproveBridgeTokenForTrading or MsgApproveIbcTokenForTrading); the chain's singleton pool is not registered yet and the approved list holds only USDC and USDT","osmosis-ibc: send GNK to Osmosis over IBC channel-1 and pair it there with $TRI as an Osmosis tokenfactory denom; needs nobody's permission, puts $TRI on a third chain, and Osmosis holds no GNK today","ton-or-solana: pair on the chains $TRI was decided for, on a TON or Solana exchange; needs GNK carried to TON or Solana, and the Gonka bridge serves only Ethereum"],"ROUTE_ETHEREUM_UNISWAP":0,"ROUTE_GONKA_POOL":1,"ROUTE_OSMOSIS_IBC":2,"ROUTE_TON_SOLANA":3,"SLASH_DOWNTIME_PERMILLE":100,"SLASH_INVALID_PERMILLE":200,"SMALLEST_POC_MODEL_GB":280,"SUPPLY_NGONKA":"446378386939836973","TOTAL_BURNED_NGONKA":"1284341372978310","TOTAL_FEES_NGONKA":"1174606773777","TOTAL_SUBSIDIES_NGONKA":"120892672230996302","TRI_CAP":"10460353203","TRI_CHAINS":["ton","solana"],"TRI_MAINNET":false,"VESTING_EPOCHS":180,"WGNK_DECIMALS":9,"WGNK_ETHEREUM":"0x972a7a92d92796a98801a8818bcf91f1648f2f68","WGNK_USDT_UNISWAP_V3_POOL":"0x203EE836d417CF944133bbdd2c62B4BC7388C55D"},"id":"providers/tri_gnk_pair","moduleName":"ProvidersTriGnkPair","sha256":"0fb1a494572f8e8940da73519a67b6d0291826ee0915266b1a3754768ccd6949","specPath":"specs/providers/tri_gnk_pair.t27","typecheckOk":true},"version":1} diff --git a/apps/website/public/skills/spec-skills.json b/apps/website/public/skills/spec-skills.json index e78094c3c3..ef19c61050 100644 --- a/apps/website/public/skills/spec-skills.json +++ b/apps/website/public/skills/spec-skills.json @@ -1 +1 @@ -{"codeOnly":["trinity/connect-accounts"],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"f4e14bcf62b52747bf82eb9b9e843510c1f050ee18e67d28c1dfed02f5916ec1","counts":{"codeOnly":1,"runBy":0,"specOnly":0,"specPlusCode":26,"specs":26,"typecheckOk":26},"generatedAt":"2026-10-04T05:20:39.582Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":26,"total":26},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"skills":[{"code":{"health":"warn","link":"unbound","path":"t27/measure-corpus/SKILL.md","sha256":"b8fb7503f660a81b2fee57cde8998b18bbf6c6f334ca2ee69424c3ccf99f3211"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/measure-corpus","KIND":"skill","NAME":"MEASURE THE CORPUS","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","TAGS":["corpus","measurement","honesty"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/measure-corpus","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_measure_corpus","name":{"en":"MEASURE THE CORPUS"},"runBy":[],"sha256":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","specPath":"specs/skills/t27-measure-corpus.t27","summary":{"en":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","ru":"Выбор правильного инструмента для любого утверждения о корпусе спек t27 и список ловушек, которые уже давали неверные опубликованные числа. Использовать перед тем, как цитировать любое число о корпусе."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/phi-loop/SKILL.md","sha256":"d8af7f6a9cbc39ed4557291528f36748e07292ef752f5159e2827f59b2dd7bc6"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/phi-loop","KIND":"skill","NAME":"PHI LOOP","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","TAGS":["workflow","spec-first","tdd"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/phi-loop","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_phi_loop","name":{"en":"PHI LOOP"},"runBy":[],"sha256":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","specPath":"specs/skills/t27-phi-loop.t27","summary":{"en":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","ru":"Девятифазный цикл spec-first разработки: Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri/skill.md","sha256":"8fb4d4796c2dc7adab9670a65709ce0451633e6f1f076d5e490270596636042a"},"discarded":0,"fields":{"COMMAND":"/tri","ENABLED":true,"ID":"t27/tri","KIND":"skill","NAME":"tri","REPO":"t27","SOURCE":"skill.md","SPECS":["compiler/skill/registry.t27"],"SUMMARY_EN":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","TAGS":["tri","workflow","seal"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri","name":{"en":"tri"},"runBy":[],"sha256":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","specPath":"specs/skills/t27-tri.t27","summary":{"en":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","ru":"Команды tri для работы со скилом: begin, правка .t27-спеки, seal hash, gen, test, verdict, experience. Реестр скилов описан в compiler/skill/registry.t27."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri-pipeline/SKILL.md","sha256":"b4bfc290b86a4a1d4513cf9ace0a43526ca8fe98e0d97ff1eb59ea7997aa7427"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/tri-pipeline","KIND":"skill","NAME":"TRI Pipeline","REPO":"t27","SOURCE":"SKILL.md","SPECS":["specs/pipeline/e2e_test.t27"],"SUMMARY_EN":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","TAGS":["tri","pipeline","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri-pipeline","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri_pipeline","name":{"en":"TRI Pipeline"},"runBy":[],"sha256":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","specPath":"specs/skills/t27-tri-pipeline.t27","summary":{"en":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","ru":"Выполнение команд tri (gen, test, verify, seal, verdict) для spec-first разработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/wave-audit/SKILL.md","sha256":"4cd0dd22105ae7fe86091a69ec297df729661181f147c0b59f8e8e94a90e9100"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/wave-audit","KIND":"skill","NAME":"Wave Audit — Comprehensive Project Analysis","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","TAGS":["audit","issues","plan"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wave-audit","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wave_audit","name":{"en":"Wave Audit — Comprehensive Project Analysis"},"runBy":[],"sha256":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","specPath":"specs/skills/t27-wave-audit.t27","summary":{"en":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","ru":"Полный аудит проекта t27: разбор GitHub issues, поиск слабых мест, обзор SOTA, декомпозированный план и реализация критичных исправлений."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/wrap-up/skill.md","sha256":"a4a9b4fd9d022c212add3479cde725f6b9bd56bc31d2d600ba771cbd009329f9"},"discarded":0,"fields":{"COMMAND":"/wrap-up","ENABLED":true,"ID":"t27/wrap-up","KIND":"skill","NAME":"wrap-up","REPO":"t27","SOURCE":"skill.md","SPECS":["specs/automation/wrapup-auto.t27"],"SUMMARY_EN":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","TAGS":["memory","notebooklm","session"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wrap-up","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wrap_up","name":{"en":"wrap-up"},"runBy":[],"sha256":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","specPath":"specs/skills/t27-wrap-up.t27","summary":{"en":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","ru":"Оформление и загрузка итогов сессии в NotebookLM как постоянной семантической памяти."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/blog-post/SKILL.md","sha256":"2cb755fd4a60a76d568a0742aeda34da60a2441774139646e0ebf4bd2a185493"},"discarded":0,"fields":{"COMMAND":"/blog-post","ENABLED":true,"ID":"trinity/blog-post","KIND":"skill","NAME":"blog-post","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","TAGS":["blog","publish","website"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/blog-post","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_blog_post","name":{"en":"blog-post"},"runBy":[],"sha256":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","specPath":"specs/skills/trinity-blog-post.t27","summary":{"en":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","ru":"Написать и опубликовать пост в блог t27.ai: где блог реально живёт, схема Post с обязательными свидетельствами, обложка и проверки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/board-sync/SKILL.md","sha256":"f4bfa63737cf7a2078ae6e42f68943384214159243243ae8ec971ddeaac1825e"},"discarded":0,"fields":{"COMMAND":"/board [sync|audit|fix]","ENABLED":true,"ID":"trinity/board-sync","KIND":"skill","NAME":"board","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","TAGS":["github","board","labels"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/board-sync","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_board_sync","name":{"en":"board"},"runBy":[],"sha256":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","specPath":"specs/skills/trinity-board-sync.t27","summary":{"en":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","ru":"Автосинхронизация GitHub Project Board: заполнить пустые поля, согласовать метки со статусом доски, проверить полноту полей."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/cloud/SKILL.md","sha256":"53aa338dddc4e6b8a0fd82f6d3b8dc9ac9b245b3457559c3c44f325ede0130e6"},"discarded":0,"fields":{"COMMAND":"/cloud [status|agents|events|full]","ENABLED":true,"ID":"trinity/cloud","KIND":"skill","NAME":"cloud","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","TAGS":["dashboard","railway","agents"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/cloud","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_cloud","name":{"en":"cloud"},"runBy":[],"sha256":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","specPath":"specs/skills/trinity-cloud.t27","summary":{"en":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","ru":"Панель Trinity Cloud Dev: контейнеры, тренировочная ферма, issues, PR, расходы. Для проверки состояния роя агентов и CI/CD."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/doctor/SKILL.md","sha256":"68efdf79301066d5e64e72babc91ddb867899786186fa360e6775b8365059815"},"discarded":0,"fields":{"COMMAND":"/doctor [quick|full|scan|junk|docs|dupes] [lang:ru|en]","ENABLED":true,"ID":"trinity/doctor","KIND":"skill","NAME":"doctor","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","TAGS":["health","repo","report"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/doctor","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_doctor","name":{"en":"doctor"},"runBy":[],"sha256":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","specPath":"specs/skills/trinity-doctor.t27","summary":{"en":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","ru":"ЛЕКАРЬ: диагностика, лечение, коммит грязных файлов, надзор за мусором, документацией и дубликатами, честный отчёт. Каждый цикл = действие + доказательство."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/farm-garden/SKILL.md","sha256":"6721489885755a64bfdd07f0407b0ddad366c713cb2723098c0fc63b4e196bb4"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"trinity/farm-garden","KIND":"skill","NAME":"Garden — Quantum Gardener for Trinity Farm","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","TAGS":["farm","hslm","workers"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/farm-garden","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_farm_garden","name":{"en":"Garden — Quantum Gardener for Trinity Farm"},"runBy":[],"sha256":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","specPath":"specs/skills/trinity-farm-garden.t27","summary":{"en":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","ru":"Автономный управляющий популяцией фермы: наблюдает, эволюционирует и перерабатывает рабочих обучения HSLM."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/fpga-synth/SKILL.md","sha256":"de3915e66cdab0f3207f53f6ea22a85b258c8a998b614231eebf7afab2ca9ec3"},"discarded":0,"fields":{"COMMAND":"/fpga-synth ","ENABLED":true,"ID":"trinity/fpga-synth","KIND":"skill","NAME":"fpga-synth","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","TAGS":["fpga","verilog","synthesis"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/fpga-synth","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_fpga_synth","name":{"en":"fpga-synth"},"runBy":[],"sha256":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","specPath":"specs/skills/trinity-fpga-synth.t27","summary":{"en":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","ru":"Конвейер синтеза FPGA от .tri-спеки до битстрима. Для работы с Verilog, FPGA и аппаратным синтезом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/god-mode/SKILL.md","sha256":"0c48e328ae4cf1cbaffef270e7dbe16fac59a7fba845547179bcfe078f65ee7a"},"discarded":0,"fields":{"COMMAND":"/god-mode [status|agents|tasks|violations]","ENABLED":true,"ID":"trinity/god-mode","KIND":"skill","NAME":"god-mode","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","TAGS":["dashboard","agents","monitoring"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/god-mode","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_god_mode","name":{"en":"god-mode"},"runBy":[],"sha256":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","specPath":"specs/skills/trinity-god-mode.t27","summary":{"en":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","ru":"GOD MODE: панель наблюдения за агентами — состояние роя, очередь задач, соблюдение конвейера, предохранители, активность git, нарушения правил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/implement-issue/SKILL.md","sha256":"88ccafaece204489bd38ee3f2fbd5f7db3d38275c2ba7e5a9bfca2852be596bb"},"discarded":0,"fields":{"COMMAND":"/implement-issue [issue-number]","ENABLED":true,"ID":"trinity/implement-issue","KIND":"skill","NAME":"implement-issue","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","TAGS":["github","issue","pr"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/implement-issue","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_implement_issue","name":{"en":"implement-issue"},"runBy":[],"sha256":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","specPath":"specs/skills/trinity-implement-issue.t27","summary":{"en":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","ru":"Прочитать GitHub issue, создать ветку, реализовать решение и открыть PR. Для работы по номеру задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/queen-hive-visuals/SKILL.md","sha256":"c6d914dc81c84fc13dacca37de258563261a451a139e3c1644bbdc8b7a97b414"},"discarded":0,"fields":{"COMMAND":"/queen-hive-visuals","ENABLED":true,"ID":"trinity/queen-hive-visuals","KIND":"skill","NAME":"queen-hive-visuals","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","TAGS":["queen","ui","3d"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/queen-hive-visuals","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_queen_hive_visuals","name":{"en":"queen-hive-visuals"},"runBy":[],"sha256":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","specPath":"specs/skills/trinity-queen-hive-visuals.t27","summary":{"en":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","ru":"Поддержка плавающего улья Королевы, оригинального логотипа TRINITY остриём вниз, чётких табло задач и согласованных движений камеры."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/review-code/SKILL.md","sha256":"e5712744615c2422d9a0c81413422e6e1a2ac97c4bfac8bb508f1cd04bf05d75"},"discarded":0,"fields":{"COMMAND":"/review-code [file-or-branch] (optional)","ENABLED":true,"ID":"trinity/review-code","KIND":"skill","NAME":"review-code","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","TAGS":["review","quality"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/review-code","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_review_code","name":{"en":"review-code"},"runBy":[],"sha256":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","specPath":"specs/skills/trinity-review-code.t27","summary":{"en":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","ru":"Ревью недавних изменений кода: ошибки, стиль, улучшения. После написания кода или перед коммитом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/run-tests/SKILL.md","sha256":"7ead75ab36b840ec5588013b0de8f2c23ed3a27a0d3a5160d7e68334e5992a79"},"discarded":0,"fields":{"COMMAND":"/run-tests [module] (optional - all, vsa, vm, bsd, hslm, tri-api)","ENABLED":true,"ID":"trinity/run-tests","KIND":"skill","NAME":"run-tests","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","TAGS":["tests","build","zig"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/run-tests","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_run_tests","name":{"en":"run-tests"},"runBy":[],"sha256":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","specPath":"specs/skills/trinity-run-tests.t27","summary":{"en":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","ru":"Собрать проект, проверить предупреждения, прогнать все тесты и отчитаться. Быстрая проверка здоровья кодовой базы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/scholar/SKILL.md","sha256":"5c35431008a4d2694cf2e7ad65c01d6f1559d5836b8f7cfb0c3422f752d5b2c2"},"discarded":0,"fields":{"COMMAND":"/scholar [scan|eval|apply|full|report|topic:\"query\"]","ENABLED":true,"ID":"trinity/scholar","KIND":"skill","NAME":"scholar","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","TAGS":["research","perplexity","mcp"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/scholar","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_scholar","name":{"en":"scholar"},"runBy":[],"sha256":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","specPath":"specs/skills/trinity-scholar.t27","summary":{"en":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","ru":"Саморазвивающийся исследовательский агент: сканирует веб на релевантные технологии, оценивает находки, предлагает улучшения. Perplexity Sonar через MCP."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/status/SKILL.md","sha256":"e4bc75ff45cdc52968f1ef0ac6e1a1a482072f78e14283b1e71b6fe13a054890"},"discarded":0,"fields":{"COMMAND":"/status [quick|full] [lang:ru|en]","ENABLED":true,"ID":"trinity/status","KIND":"skill","NAME":"status","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","TAGS":["dashboard","ouroboros","verdict"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/status","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_status","name":{"en":"status"},"runBy":[],"sha256":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","specPath":"specs/skills/trinity-status.t27","summary":{"en":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","ru":"Живая панель системы: 12-мерная оценка уробороса, verdict v3, агенты, здоровье сборки, рекомендации."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tech-tree/SKILL.md","sha256":"f84c8ea67ab696a9bc3828ccfe8b8708572fe5ddb7574f409ddf75c467744a0f"},"discarded":0,"fields":{"COMMAND":"/tree [next|path|blocked|update]","ENABLED":true,"ID":"trinity/tech-tree","KIND":"skill","NAME":"tree","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","TAGS":["issues","dag","planning"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tech-tree","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tech_tree","name":{"en":"tree"},"runBy":[],"sha256":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","specPath":"specs/skills/trinity-tech-tree.t27","summary":{"en":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","ru":"Дерево технологических зависимостей: DAG задач, предпосылки, критический путь, заблокированные и готовые задачи. Единый источник порядка работ."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tri/SKILL.md","sha256":"4c38d1005219336c88583e985b5208653fa199d12481d98173604922dc35e4a5"},"discarded":0,"fields":{"COMMAND":"/tri [short] [full] [audit] [coverage] [lang:ru|en] [humor|prof|toxic|zen]","ENABLED":true,"ID":"trinity/tri","KIND":"skill","NAME":"tri","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","TAGS":["tri","dashboard","status"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tri","name":{"en":"tri"},"runBy":[],"sha256":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","specPath":"specs/skills/trinity-tri.t27","summary":{"en":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","ru":"Панель статуса TRI: по умолчанию режим мысли агента, /tri full — визуальная панель."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/trinity-test/SKILL.md","sha256":"648c7f095f0b9739a17d7a5d47fbfbe3e6dc2b2bd940fb6cea837632940b6c56"},"discarded":0,"fields":{"COMMAND":"/trinity-test [module] (vsa, vm, firebird, all)","ENABLED":true,"ID":"trinity/trinity-test","KIND":"skill","NAME":"trinity-test","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","TAGS":["tests","vsa","vm"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/trinity-test","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_trinity_test","name":{"en":"trinity-test"},"runBy":[],"sha256":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","specPath":"specs/skills/trinity-trinity-test.t27","summary":{"en":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","ru":"Прогон тестовых наборов Trinity и разбор результатов: VSA, VM, Firebird, WASM или всё целиком."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/ux-wave/SKILL.md","sha256":"9690999e8d1e2091c80ef838e41a1d4dc48d9ffea1cf29a39294238f69954b28"},"discarded":0,"fields":{"COMMAND":"/ux-wave [wave-number] [audit]","ENABLED":true,"ID":"trinity/ux-wave","KIND":"skill","NAME":"ux-wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","TAGS":["ux","agents","queen"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/ux-wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_ux_wave","name":{"en":"ux-wave"},"runBy":[],"sha256":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","specPath":"specs/skills/trinity-ux-wave.t27","summary":{"en":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","ru":"Автономные волны улучшения UX: 4 параллельных агента на волну, аудит каждые 5 волн, коммит исправлений. Для чата и сети Queen UI."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vibee-gen/SKILL.md","sha256":"fc01e69f1395b590603692a29d9bb1ee533104bb716b5bb284738027df17b395"},"discarded":0,"fields":{"COMMAND":"/vibee-gen ","ENABLED":true,"ID":"trinity/vibee-gen","KIND":"skill","NAME":"vibee-gen","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","TAGS":["codegen","zig","verilog"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vibee-gen","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vibee_gen","name":{"en":"vibee-gen"},"runBy":[],"sha256":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","specPath":"specs/skills/trinity-vibee-gen.t27","summary":{"en":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","ru":"Генерация кода Zig или Verilog из спецификаций VIBEE. При создании или обновлении .tri-спек и перегенерации кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vsa-verify/SKILL.md","sha256":"8b9c4518b1bc5dd468b12697a436f7d959278466b5282e575709d7981722905b"},"discarded":0,"fields":{"COMMAND":"/vsa-verify [operation or proof to verify]","ENABLED":true,"ID":"trinity/vsa-verify","KIND":"skill","NAME":"vsa-verify","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","TAGS":["vsa","math","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vsa-verify","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vsa_verify","name":{"en":"vsa-verify"},"runBy":[],"sha256":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","specPath":"specs/skills/trinity-vsa-verify.t27","summary":{"en":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","ru":"Проверка математических доказательств и операций VSA: bind/unbind/bundle, тождества phi."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/wave/SKILL.md","sha256":"ecf06fdfa467158f6758066aba41a8e49699f37e61c18e62716da765a7eb5487"},"discarded":0,"fields":{"COMMAND":"/wave [status|spawn |deploy|progress]","ENABLED":true,"ID":"trinity/wave","KIND":"skill","NAME":"wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","TAGS":["farm","railway","scaling"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_wave","name":{"en":"wave"},"runBy":[],"sha256":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","specPath":"specs/skills/trinity-wave.t27","summary":{"en":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","ru":"Управление волнами фермы: аккаунты Railway, запуск рабочих, раскатка конфигов, прогресс волны. Для масштабирования тренировочной фермы."},"typecheckOk":true,"witness":"spec+code"}],"version":1} +{"codeOnly":["trinity/connect-accounts"],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"9a70a956a6f382f73a25fdec77e414a48fcd147b10db1225e0b82c11554c9698","counts":{"codeOnly":1,"runBy":0,"specOnly":0,"specPlusCode":26,"specs":26,"typecheckOk":26},"generatedAt":"2026-10-04T18:34:00.105Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":26,"total":26},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"skills":[{"code":{"health":"warn","link":"unbound","path":"t27/measure-corpus/SKILL.md","sha256":"b8fb7503f660a81b2fee57cde8998b18bbf6c6f334ca2ee69424c3ccf99f3211"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/measure-corpus","KIND":"skill","NAME":"MEASURE THE CORPUS","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","TAGS":["corpus","measurement","honesty"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/measure-corpus","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_measure_corpus","name":{"en":"MEASURE THE CORPUS"},"runBy":[],"sha256":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","specPath":"specs/skills/t27-measure-corpus.t27","summary":{"en":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","ru":"Выбор правильного инструмента для любого утверждения о корпусе спек t27 и список ловушек, которые уже давали неверные опубликованные числа. Использовать перед тем, как цитировать любое число о корпусе."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/phi-loop/SKILL.md","sha256":"d8af7f6a9cbc39ed4557291528f36748e07292ef752f5159e2827f59b2dd7bc6"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/phi-loop","KIND":"skill","NAME":"PHI LOOP","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","TAGS":["workflow","spec-first","tdd"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/phi-loop","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_phi_loop","name":{"en":"PHI LOOP"},"runBy":[],"sha256":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","specPath":"specs/skills/t27-phi-loop.t27","summary":{"en":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","ru":"Девятифазный цикл spec-first разработки: Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri/skill.md","sha256":"8fb4d4796c2dc7adab9670a65709ce0451633e6f1f076d5e490270596636042a"},"discarded":0,"fields":{"COMMAND":"/tri","ENABLED":true,"ID":"t27/tri","KIND":"skill","NAME":"tri","REPO":"t27","SOURCE":"skill.md","SPECS":["compiler/skill/registry.t27"],"SUMMARY_EN":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","TAGS":["tri","workflow","seal"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri","name":{"en":"tri"},"runBy":[],"sha256":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","specPath":"specs/skills/t27-tri.t27","summary":{"en":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","ru":"Команды tri для работы со скилом: begin, правка .t27-спеки, seal hash, gen, test, verdict, experience. Реестр скилов описан в compiler/skill/registry.t27."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri-pipeline/SKILL.md","sha256":"b4bfc290b86a4a1d4513cf9ace0a43526ca8fe98e0d97ff1eb59ea7997aa7427"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/tri-pipeline","KIND":"skill","NAME":"TRI Pipeline","REPO":"t27","SOURCE":"SKILL.md","SPECS":["specs/pipeline/e2e_test.t27"],"SUMMARY_EN":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","TAGS":["tri","pipeline","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri-pipeline","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri_pipeline","name":{"en":"TRI Pipeline"},"runBy":[],"sha256":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","specPath":"specs/skills/t27-tri-pipeline.t27","summary":{"en":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","ru":"Выполнение команд tri (gen, test, verify, seal, verdict) для spec-first разработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/wave-audit/SKILL.md","sha256":"4cd0dd22105ae7fe86091a69ec297df729661181f147c0b59f8e8e94a90e9100"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/wave-audit","KIND":"skill","NAME":"Wave Audit — Comprehensive Project Analysis","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","TAGS":["audit","issues","plan"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wave-audit","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wave_audit","name":{"en":"Wave Audit — Comprehensive Project Analysis"},"runBy":[],"sha256":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","specPath":"specs/skills/t27-wave-audit.t27","summary":{"en":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","ru":"Полный аудит проекта t27: разбор GitHub issues, поиск слабых мест, обзор SOTA, декомпозированный план и реализация критичных исправлений."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/wrap-up/skill.md","sha256":"a4a9b4fd9d022c212add3479cde725f6b9bd56bc31d2d600ba771cbd009329f9"},"discarded":0,"fields":{"COMMAND":"/wrap-up","ENABLED":true,"ID":"t27/wrap-up","KIND":"skill","NAME":"wrap-up","REPO":"t27","SOURCE":"skill.md","SPECS":["specs/automation/wrapup-auto.t27"],"SUMMARY_EN":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","TAGS":["memory","notebooklm","session"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wrap-up","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wrap_up","name":{"en":"wrap-up"},"runBy":[],"sha256":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","specPath":"specs/skills/t27-wrap-up.t27","summary":{"en":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","ru":"Оформление и загрузка итогов сессии в NotebookLM как постоянной семантической памяти."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/blog-post/SKILL.md","sha256":"2cb755fd4a60a76d568a0742aeda34da60a2441774139646e0ebf4bd2a185493"},"discarded":0,"fields":{"COMMAND":"/blog-post","ENABLED":true,"ID":"trinity/blog-post","KIND":"skill","NAME":"blog-post","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","TAGS":["blog","publish","website"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/blog-post","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_blog_post","name":{"en":"blog-post"},"runBy":[],"sha256":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","specPath":"specs/skills/trinity-blog-post.t27","summary":{"en":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","ru":"Написать и опубликовать пост в блог t27.ai: где блог реально живёт, схема Post с обязательными свидетельствами, обложка и проверки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/board-sync/SKILL.md","sha256":"f4bfa63737cf7a2078ae6e42f68943384214159243243ae8ec971ddeaac1825e"},"discarded":0,"fields":{"COMMAND":"/board [sync|audit|fix]","ENABLED":true,"ID":"trinity/board-sync","KIND":"skill","NAME":"board","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","TAGS":["github","board","labels"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/board-sync","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_board_sync","name":{"en":"board"},"runBy":[],"sha256":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","specPath":"specs/skills/trinity-board-sync.t27","summary":{"en":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","ru":"Автосинхронизация GitHub Project Board: заполнить пустые поля, согласовать метки со статусом доски, проверить полноту полей."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/cloud/SKILL.md","sha256":"53aa338dddc4e6b8a0fd82f6d3b8dc9ac9b245b3457559c3c44f325ede0130e6"},"discarded":0,"fields":{"COMMAND":"/cloud [status|agents|events|full]","ENABLED":true,"ID":"trinity/cloud","KIND":"skill","NAME":"cloud","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","TAGS":["dashboard","railway","agents"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/cloud","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_cloud","name":{"en":"cloud"},"runBy":[],"sha256":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","specPath":"specs/skills/trinity-cloud.t27","summary":{"en":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","ru":"Панель Trinity Cloud Dev: контейнеры, тренировочная ферма, issues, PR, расходы. Для проверки состояния роя агентов и CI/CD."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/doctor/SKILL.md","sha256":"68efdf79301066d5e64e72babc91ddb867899786186fa360e6775b8365059815"},"discarded":0,"fields":{"COMMAND":"/doctor [quick|full|scan|junk|docs|dupes] [lang:ru|en]","ENABLED":true,"ID":"trinity/doctor","KIND":"skill","NAME":"doctor","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","TAGS":["health","repo","report"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/doctor","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_doctor","name":{"en":"doctor"},"runBy":[],"sha256":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","specPath":"specs/skills/trinity-doctor.t27","summary":{"en":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","ru":"ЛЕКАРЬ: диагностика, лечение, коммит грязных файлов, надзор за мусором, документацией и дубликатами, честный отчёт. Каждый цикл = действие + доказательство."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/farm-garden/SKILL.md","sha256":"6721489885755a64bfdd07f0407b0ddad366c713cb2723098c0fc63b4e196bb4"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"trinity/farm-garden","KIND":"skill","NAME":"Garden — Quantum Gardener for Trinity Farm","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","TAGS":["farm","hslm","workers"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/farm-garden","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_farm_garden","name":{"en":"Garden — Quantum Gardener for Trinity Farm"},"runBy":[],"sha256":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","specPath":"specs/skills/trinity-farm-garden.t27","summary":{"en":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","ru":"Автономный управляющий популяцией фермы: наблюдает, эволюционирует и перерабатывает рабочих обучения HSLM."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/fpga-synth/SKILL.md","sha256":"de3915e66cdab0f3207f53f6ea22a85b258c8a998b614231eebf7afab2ca9ec3"},"discarded":0,"fields":{"COMMAND":"/fpga-synth ","ENABLED":true,"ID":"trinity/fpga-synth","KIND":"skill","NAME":"fpga-synth","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","TAGS":["fpga","verilog","synthesis"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/fpga-synth","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_fpga_synth","name":{"en":"fpga-synth"},"runBy":[],"sha256":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","specPath":"specs/skills/trinity-fpga-synth.t27","summary":{"en":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","ru":"Конвейер синтеза FPGA от .tri-спеки до битстрима. Для работы с Verilog, FPGA и аппаратным синтезом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/god-mode/SKILL.md","sha256":"0c48e328ae4cf1cbaffef270e7dbe16fac59a7fba845547179bcfe078f65ee7a"},"discarded":0,"fields":{"COMMAND":"/god-mode [status|agents|tasks|violations]","ENABLED":true,"ID":"trinity/god-mode","KIND":"skill","NAME":"god-mode","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","TAGS":["dashboard","agents","monitoring"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/god-mode","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_god_mode","name":{"en":"god-mode"},"runBy":[],"sha256":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","specPath":"specs/skills/trinity-god-mode.t27","summary":{"en":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","ru":"GOD MODE: панель наблюдения за агентами — состояние роя, очередь задач, соблюдение конвейера, предохранители, активность git, нарушения правил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/implement-issue/SKILL.md","sha256":"88ccafaece204489bd38ee3f2fbd5f7db3d38275c2ba7e5a9bfca2852be596bb"},"discarded":0,"fields":{"COMMAND":"/implement-issue [issue-number]","ENABLED":true,"ID":"trinity/implement-issue","KIND":"skill","NAME":"implement-issue","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","TAGS":["github","issue","pr"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/implement-issue","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_implement_issue","name":{"en":"implement-issue"},"runBy":[],"sha256":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","specPath":"specs/skills/trinity-implement-issue.t27","summary":{"en":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","ru":"Прочитать GitHub issue, создать ветку, реализовать решение и открыть PR. Для работы по номеру задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/queen-hive-visuals/SKILL.md","sha256":"c6d914dc81c84fc13dacca37de258563261a451a139e3c1644bbdc8b7a97b414"},"discarded":0,"fields":{"COMMAND":"/queen-hive-visuals","ENABLED":true,"ID":"trinity/queen-hive-visuals","KIND":"skill","NAME":"queen-hive-visuals","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","TAGS":["queen","ui","3d"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/queen-hive-visuals","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_queen_hive_visuals","name":{"en":"queen-hive-visuals"},"runBy":[],"sha256":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","specPath":"specs/skills/trinity-queen-hive-visuals.t27","summary":{"en":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","ru":"Поддержка плавающего улья Королевы, оригинального логотипа TRINITY остриём вниз, чётких табло задач и согласованных движений камеры."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/review-code/SKILL.md","sha256":"e5712744615c2422d9a0c81413422e6e1a2ac97c4bfac8bb508f1cd04bf05d75"},"discarded":0,"fields":{"COMMAND":"/review-code [file-or-branch] (optional)","ENABLED":true,"ID":"trinity/review-code","KIND":"skill","NAME":"review-code","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","TAGS":["review","quality"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/review-code","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_review_code","name":{"en":"review-code"},"runBy":[],"sha256":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","specPath":"specs/skills/trinity-review-code.t27","summary":{"en":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","ru":"Ревью недавних изменений кода: ошибки, стиль, улучшения. После написания кода или перед коммитом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/run-tests/SKILL.md","sha256":"7ead75ab36b840ec5588013b0de8f2c23ed3a27a0d3a5160d7e68334e5992a79"},"discarded":0,"fields":{"COMMAND":"/run-tests [module] (optional - all, vsa, vm, bsd, hslm, tri-api)","ENABLED":true,"ID":"trinity/run-tests","KIND":"skill","NAME":"run-tests","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","TAGS":["tests","build","zig"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/run-tests","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_run_tests","name":{"en":"run-tests"},"runBy":[],"sha256":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","specPath":"specs/skills/trinity-run-tests.t27","summary":{"en":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","ru":"Собрать проект, проверить предупреждения, прогнать все тесты и отчитаться. Быстрая проверка здоровья кодовой базы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/scholar/SKILL.md","sha256":"5c35431008a4d2694cf2e7ad65c01d6f1559d5836b8f7cfb0c3422f752d5b2c2"},"discarded":0,"fields":{"COMMAND":"/scholar [scan|eval|apply|full|report|topic:\"query\"]","ENABLED":true,"ID":"trinity/scholar","KIND":"skill","NAME":"scholar","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","TAGS":["research","perplexity","mcp"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/scholar","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_scholar","name":{"en":"scholar"},"runBy":[],"sha256":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","specPath":"specs/skills/trinity-scholar.t27","summary":{"en":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","ru":"Саморазвивающийся исследовательский агент: сканирует веб на релевантные технологии, оценивает находки, предлагает улучшения. Perplexity Sonar через MCP."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/status/SKILL.md","sha256":"e4bc75ff45cdc52968f1ef0ac6e1a1a482072f78e14283b1e71b6fe13a054890"},"discarded":0,"fields":{"COMMAND":"/status [quick|full] [lang:ru|en]","ENABLED":true,"ID":"trinity/status","KIND":"skill","NAME":"status","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","TAGS":["dashboard","ouroboros","verdict"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/status","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_status","name":{"en":"status"},"runBy":[],"sha256":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","specPath":"specs/skills/trinity-status.t27","summary":{"en":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","ru":"Живая панель системы: 12-мерная оценка уробороса, verdict v3, агенты, здоровье сборки, рекомендации."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tech-tree/SKILL.md","sha256":"f84c8ea67ab696a9bc3828ccfe8b8708572fe5ddb7574f409ddf75c467744a0f"},"discarded":0,"fields":{"COMMAND":"/tree [next|path|blocked|update]","ENABLED":true,"ID":"trinity/tech-tree","KIND":"skill","NAME":"tree","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","TAGS":["issues","dag","planning"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tech-tree","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tech_tree","name":{"en":"tree"},"runBy":[],"sha256":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","specPath":"specs/skills/trinity-tech-tree.t27","summary":{"en":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","ru":"Дерево технологических зависимостей: DAG задач, предпосылки, критический путь, заблокированные и готовые задачи. Единый источник порядка работ."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tri/SKILL.md","sha256":"4c38d1005219336c88583e985b5208653fa199d12481d98173604922dc35e4a5"},"discarded":0,"fields":{"COMMAND":"/tri [short] [full] [audit] [coverage] [lang:ru|en] [humor|prof|toxic|zen]","ENABLED":true,"ID":"trinity/tri","KIND":"skill","NAME":"tri","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","TAGS":["tri","dashboard","status"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tri","name":{"en":"tri"},"runBy":[],"sha256":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","specPath":"specs/skills/trinity-tri.t27","summary":{"en":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","ru":"Панель статуса TRI: по умолчанию режим мысли агента, /tri full — визуальная панель."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/trinity-test/SKILL.md","sha256":"648c7f095f0b9739a17d7a5d47fbfbe3e6dc2b2bd940fb6cea837632940b6c56"},"discarded":0,"fields":{"COMMAND":"/trinity-test [module] (vsa, vm, firebird, all)","ENABLED":true,"ID":"trinity/trinity-test","KIND":"skill","NAME":"trinity-test","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","TAGS":["tests","vsa","vm"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/trinity-test","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_trinity_test","name":{"en":"trinity-test"},"runBy":[],"sha256":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","specPath":"specs/skills/trinity-trinity-test.t27","summary":{"en":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","ru":"Прогон тестовых наборов Trinity и разбор результатов: VSA, VM, Firebird, WASM или всё целиком."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/ux-wave/SKILL.md","sha256":"9690999e8d1e2091c80ef838e41a1d4dc48d9ffea1cf29a39294238f69954b28"},"discarded":0,"fields":{"COMMAND":"/ux-wave [wave-number] [audit]","ENABLED":true,"ID":"trinity/ux-wave","KIND":"skill","NAME":"ux-wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","TAGS":["ux","agents","queen"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/ux-wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_ux_wave","name":{"en":"ux-wave"},"runBy":[],"sha256":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","specPath":"specs/skills/trinity-ux-wave.t27","summary":{"en":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","ru":"Автономные волны улучшения UX: 4 параллельных агента на волну, аудит каждые 5 волн, коммит исправлений. Для чата и сети Queen UI."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vibee-gen/SKILL.md","sha256":"fc01e69f1395b590603692a29d9bb1ee533104bb716b5bb284738027df17b395"},"discarded":0,"fields":{"COMMAND":"/vibee-gen ","ENABLED":true,"ID":"trinity/vibee-gen","KIND":"skill","NAME":"vibee-gen","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","TAGS":["codegen","zig","verilog"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vibee-gen","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vibee_gen","name":{"en":"vibee-gen"},"runBy":[],"sha256":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","specPath":"specs/skills/trinity-vibee-gen.t27","summary":{"en":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","ru":"Генерация кода Zig или Verilog из спецификаций VIBEE. При создании или обновлении .tri-спек и перегенерации кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vsa-verify/SKILL.md","sha256":"8b9c4518b1bc5dd468b12697a436f7d959278466b5282e575709d7981722905b"},"discarded":0,"fields":{"COMMAND":"/vsa-verify [operation or proof to verify]","ENABLED":true,"ID":"trinity/vsa-verify","KIND":"skill","NAME":"vsa-verify","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","TAGS":["vsa","math","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vsa-verify","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vsa_verify","name":{"en":"vsa-verify"},"runBy":[],"sha256":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","specPath":"specs/skills/trinity-vsa-verify.t27","summary":{"en":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","ru":"Проверка математических доказательств и операций VSA: bind/unbind/bundle, тождества phi."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/wave/SKILL.md","sha256":"ecf06fdfa467158f6758066aba41a8e49699f37e61c18e62716da765a7eb5487"},"discarded":0,"fields":{"COMMAND":"/wave [status|spawn |deploy|progress]","ENABLED":true,"ID":"trinity/wave","KIND":"skill","NAME":"wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","TAGS":["farm","railway","scaling"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_wave","name":{"en":"wave"},"runBy":[],"sha256":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","specPath":"specs/skills/trinity-wave.t27","summary":{"en":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","ru":"Управление волнами фермы: аккаунты Railway, запуск рабочих, раскатка конфигов, прогресс волны. Для масштабирования тренировочной фермы."},"typecheckOk":true,"witness":"spec+code"}],"version":1} diff --git a/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-client-telemetry-daily.t27 b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-client-telemetry-daily.t27 new file mode 100644 index 0000000000..77e0d7cdb6 --- /dev/null +++ b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-client-telemetry-daily.t27 @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/crons/999-multibots-telegraf-client-telemetry-daily.t27 -- cron inngest/999-multibots-telegraf/client-telemetry-daily +; Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/client-telemetry-daily). +; The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/clientTelemetryDaily.ts#L62 (main @05fd960). +; A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty +; unless the source evidently invokes one -- nothing here is inferred from a name. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module cron_999_multibots_telegraf_client_telemetry_daily; + +pub const KIND : str = "cron"; +pub const ID : str = "inngest/999-multibots-telegraf/client-telemetry-daily"; +pub const NAME : str = "client-telemetry-daily"; +pub const HOST : str = "inngest"; +pub const REPO : str = "999-multibots-telegraf"; +pub const SERVICE : str = "src/inngest_app/functions/analytics/clientTelemetryDaily.ts"; +pub const SUMMARY_EN : str = "Sends the owner a daily report of where clients went and where they stopped, then prunes the events it accounted for."; +pub const SCHEDULE : str = "0 7 * * *"; +pub const TZ : str = "UTC"; +pub const RUNS : [0]str = []; +pub const RUNS_NOTE : str = "no skill invocation found in source"; +pub const ENABLED : bool = true; +pub const ON_FAILURE : str = "log"; +pub const CONTROL : str = "inngest-dashboard"; +pub const NOTE : str = "This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram."; diff --git a/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-club-invoice-abandoned-watch.t27 b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-club-invoice-abandoned-watch.t27 new file mode 100644 index 0000000000..670ca05d1a --- /dev/null +++ b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-club-invoice-abandoned-watch.t27 @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/crons/999-multibots-telegraf-club-invoice-abandoned-watch.t27 -- cron inngest/999-multibots-telegraf/club-invoice-abandoned-watch +; Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/club-invoice-abandoned-watch). +; The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts#L22 (main @05fd960). +; A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty +; unless the source evidently invokes one -- nothing here is inferred from a name. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module cron_999_multibots_telegraf_club_invoice_abandoned_watch; + +pub const KIND : str = "cron"; +pub const ID : str = "inngest/999-multibots-telegraf/club-invoice-abandoned-watch"; +pub const NAME : str = "club-invoice-abandoned-watch"; +pub const HOST : str = "inngest"; +pub const REPO : str = "999-multibots-telegraf"; +pub const SERVICE : str = "src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts"; +pub const SUMMARY_EN : str = "Marks the club invoices that went an hour with no charge after them as abandoned, once per invoice."; +pub const SCHEDULE : str = "20 * * * *"; +pub const TZ : str = "UTC"; +pub const RUNS : [0]str = []; +pub const RUNS_NOTE : str = "no skill invocation found in source"; +pub const ENABLED : bool = true; +pub const ON_FAILURE : str = "log"; +pub const CONTROL : str = "inngest-dashboard"; +pub const NOTE : str = "This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram."; diff --git a/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-crm-proactive-sweep.t27 b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-crm-proactive-sweep.t27 new file mode 100644 index 0000000000..69aaf3609d --- /dev/null +++ b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-crm-proactive-sweep.t27 @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/crons/999-multibots-telegraf-crm-proactive-sweep.t27 -- cron inngest/999-multibots-telegraf/crm-proactive-sweep +; Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/crm-proactive-sweep). +; The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/crm/crmProactiveSweep.ts#L101 (main @05fd960). +; A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty +; unless the source evidently invokes one -- nothing here is inferred from a name. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module cron_999_multibots_telegraf_crm_proactive_sweep; + +pub const KIND : str = "cron"; +pub const ID : str = "inngest/999-multibots-telegraf/crm-proactive-sweep"; +pub const NAME : str = "crm-proactive-sweep"; +pub const HOST : str = "inngest"; +pub const REPO : str = "999-multibots-telegraf"; +pub const SERVICE : str = "src/inngest_app/functions/crm/crmProactiveSweep.ts"; +pub const SUMMARY_EN : str = "Sweeps every seller a registered carrier serves and may push one outreach card per seller to that seller's own chat."; +pub const SCHEDULE : str = "*/30 * * * *"; +pub const TZ : str = "UTC"; +pub const RUNS : [0]str = []; +pub const RUNS_NOTE : str = "no skill invocation found in source"; +pub const ENABLED : bool = true; +pub const ON_FAILURE : str = "log"; +pub const CONTROL : str = "inngest-dashboard"; +pub const NOTE : str = "This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram. The same half hour is also stated by timer/999-multibots-telegraf/crmProactive-L375, the in-process interval this cron replaced on 2026-09-12; CRM_SWEEP_DRIVER=timer restores that one."; diff --git a/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-robokassa-unclaimed-watch.t27 b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-robokassa-unclaimed-watch.t27 new file mode 100644 index 0000000000..79b666b45a --- /dev/null +++ b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-robokassa-unclaimed-watch.t27 @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/crons/999-multibots-telegraf-robokassa-unclaimed-watch.t27 -- cron inngest/999-multibots-telegraf/robokassa-unclaimed-watch +; Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/robokassa-unclaimed-watch). +; The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/money/robokassaUnclaimedWatch.ts#L44 (main @05fd960). +; A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty +; unless the source evidently invokes one -- nothing here is inferred from a name. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module cron_999_multibots_telegraf_robokassa_unclaimed_watch; + +pub const KIND : str = "cron"; +pub const ID : str = "inngest/999-multibots-telegraf/robokassa-unclaimed-watch"; +pub const NAME : str = "robokassa-unclaimed-watch"; +pub const HOST : str = "inngest"; +pub const REPO : str = "999-multibots-telegraf"; +pub const SERVICE : str = "src/inngest_app/functions/money/robokassaUnclaimedWatch.ts"; +pub const SUMMARY_EN : str = "Asks Robokassa every morning about the pending invoices of the last thirty days and reports the ones paid but never credited."; +pub const SCHEDULE : str = "20 7 * * *"; +pub const TZ : str = "UTC"; +pub const RUNS : [0]str = []; +pub const RUNS_NOTE : str = "no skill invocation found in source"; +pub const ENABLED : bool = true; +pub const ON_FAILURE : str = "log"; +pub const CONTROL : str = "inngest-dashboard"; +pub const NOTE : str = "This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram."; diff --git a/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-ton-pending-watch.t27 b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-ton-pending-watch.t27 new file mode 100644 index 0000000000..22c2528fbd --- /dev/null +++ b/apps/website/public/t27/files/specs/crons/999-multibots-telegraf-ton-pending-watch.t27 @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/crons/999-multibots-telegraf-ton-pending-watch.t27 -- cron inngest/999-multibots-telegraf/ton-pending-watch +; Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/ton-pending-watch). +; The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/money/tonPendingWatch.ts#L51 (main @05fd960). +; A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty +; unless the source evidently invokes one -- nothing here is inferred from a name. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module cron_999_multibots_telegraf_ton_pending_watch; + +pub const KIND : str = "cron"; +pub const ID : str = "inngest/999-multibots-telegraf/ton-pending-watch"; +pub const NAME : str = "ton-pending-watch"; +pub const HOST : str = "inngest"; +pub const REPO : str = "999-multibots-telegraf"; +pub const SERVICE : str = "src/inngest_app/functions/money/tonPendingWatch.ts"; +pub const SUMMARY_EN : str = "Asks the chain every hour whether coins arrived against a pending TON invoice that was never credited."; +pub const SCHEDULE : str = "0 * * * *"; +pub const TZ : str = "UTC"; +pub const RUNS : [0]str = []; +pub const RUNS_NOTE : str = "no skill invocation found in source"; +pub const ENABLED : bool = true; +pub const ON_FAILURE : str = "log"; +pub const CONTROL : str = "inngest-dashboard"; +pub const NOTE : str = "This job is not in public/crons/manifest.json, which is produced by scripts/sync-crons.mjs from on-disk checkouts, so the card reads spec-only until that sync runs again. A failure does not open an issue; the Inngest registration carries a failure handler that messages the admin channel, which the function card states as ON_FAILURE admin-telegram."; diff --git a/apps/website/public/t27/files/specs/functions/client-telemetry-daily.t27 b/apps/website/public/t27/files/specs/functions/client-telemetry-daily.t27 new file mode 100644 index 0000000000..a6813a5631 --- /dev/null +++ b/apps/website/public/t27/files/specs/functions/client-telemetry-daily.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/functions/client-telemetry-daily.t27 -- function client-telemetry-daily (Inngest, 999-multibots-telegraf) +; Source of truth for the function card on t27.ai (#/functions?function=client-telemetry-daily). +; The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/clientTelemetryDaily.ts#L62 (main @05fd960). +; ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the +; deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a +; name is a template the code expands per item. Values here are read from the source, not +; inferred from a name; what could not be read says so in NOTE. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module fn_client_telemetry_daily; + +pub const KIND : str = "function"; +pub const ID : str = "client-telemetry-daily"; +pub const LEGACY_ID : str = "client-telemetry-daily"; +pub const NAME : str = "Clients: daily usage report to the owner"; +pub const REPO : str = "999-multibots-telegraf"; +; file:line of inngest.createFunction( in the repo named in REPO +pub const SERVICE : str = "src/inngest_app/functions/analytics/clientTelemetryDaily.ts:62"; +pub const DOMAIN : str = "analytics"; +; "event" or "cron"; an event function has EVENT (+ LEGACY_EVENTS), a cron function has CRON +pub const TRIGGER : str = "cron"; +pub const EVENT : str = ""; +pub const LEGACY_EVENTS : [0]str = []; +pub const CRON : str = "0 7 * * *"; +pub const TZ : str = "UTC"; +pub const SUMMARY_EN : str = "Every day at 07:00 UTC builds a report of where clients went and where they stopped, sends it to the owner, and prunes the events it has already accounted for. Where the daily sales advisor reports cash, this one reports product usage."; +; step.run names in source order +pub const STEPS : [3]str = ["build-report", "send", "prune"]; +; retries declared on the function; when the code declares none, the Inngest JS SDK v3 default (4) is written and NOTE says so +pub const RETRIES : u8 = 0; +; "admin-telegram" (onFailure handler messages the admin chat), "log" (no handler) or "refund+notify" +pub const ON_FAILURE : str = "admin-telegram"; +; what a run touches outside the function, from a fixed vocabulary (see README) +pub const SIDE_EFFECTS : [2]str = ["messages-owners", "db-write"]; +; the first step that stops a bad payload; "none" when the first step already acts, "unknown" when not probed +pub const GUARD : str = "safe-mode"; +; JSON payload of the 2026-09-09 safe probe and what it reached ("" / "skipped" when none was sent; "not-deployed" when the function is not on the probed build) +pub const SAFE_PROBE : str = ""; +pub const PROBE_RESULT : str = "skipped"; +pub const CONTROL : str = "spec+code"; +pub const NOTE : str = "No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 2 runs over seven days and none failed. RETRIES is 0 on purpose: a retry after a partial send would deliver the owner the same report twice. 07:00 UTC is 10:00 in Moscow, which keeps no summer time. A read of the events table that fails is logged and does not become an empty report."; diff --git a/apps/website/public/t27/files/specs/functions/club-invoice-abandoned-watch.t27 b/apps/website/public/t27/files/specs/functions/club-invoice-abandoned-watch.t27 new file mode 100644 index 0000000000..9710941f4b --- /dev/null +++ b/apps/website/public/t27/files/specs/functions/club-invoice-abandoned-watch.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/functions/club-invoice-abandoned-watch.t27 -- function club-invoice-abandoned-watch (Inngest, 999-multibots-telegraf) +; Source of truth for the function card on t27.ai (#/functions?function=club-invoice-abandoned-watch). +; The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts#L22 (main @05fd960). +; ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the +; deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a +; name is a template the code expands per item. Values here are read from the source, not +; inferred from a name; what could not be read says so in NOTE. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module fn_club_invoice_abandoned_watch; + +pub const KIND : str = "function"; +pub const ID : str = "club-invoice-abandoned-watch"; +pub const LEGACY_ID : str = "club-invoice-abandoned-watch"; +pub const NAME : str = "Funnel: club invoices nobody paid"; +pub const REPO : str = "999-multibots-telegraf"; +; file:line of inngest.createFunction( in the repo named in REPO +pub const SERVICE : str = "src/inngest_app/functions/analytics/clubInvoiceAbandonedWatch.ts:22"; +pub const DOMAIN : str = "analytics"; +; "event" or "cron"; an event function has EVENT (+ LEGACY_EVENTS), a cron function has CRON +pub const TRIGGER : str = "cron"; +pub const EVENT : str = ""; +pub const LEGACY_EVENTS : [0]str = []; +pub const CRON : str = "20 * * * *"; +pub const TZ : str = "UTC"; +pub const SUMMARY_EN : str = "Every hour marks the club invoices that are older than an hour with no charge after them as abandoned, writing one funnel row per invoice so that the path from card to invoice to paid or abandoned can be read without joining tables by hand. It charges nothing and messages nobody."; +; step.run names in source order +pub const STEPS : [1]str = ["mark"]; +; retries declared on the function; when the code declares none, the Inngest JS SDK v3 default (4) is written and NOTE says so +pub const RETRIES : u8 = 0; +; "admin-telegram" (onFailure handler messages the admin chat), "log" (no handler) or "refund+notify" +pub const ON_FAILURE : str = "admin-telegram"; +; what a run touches outside the function, from a fixed vocabulary (see README) +pub const SIDE_EFFECTS : [1]str = ["db-write"]; +; the first step that stops a bad payload; "none" when the first step already acts, "unknown" when not probed +pub const GUARD : str = "safe-mode"; +; JSON payload of the 2026-09-09 safe probe and what it reached ("" / "skipped" when none was sent; "not-deployed" when the function is not on the probed build) +pub const SAFE_PROBE : str = ""; +pub const PROBE_RESULT : str = "skipped"; +pub const CONTROL : str = "spec+code"; +pub const NOTE : str = "No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 11 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say; the run reads the invoices it marks. Abandonment is a conclusion, not a report: Telegram tells nobody when a person closes a payment window, so the rule is an invoice older than an hour with no charge after it, and it lives in services/trackEvent.ts where it is tested apart from the schedule. A unique index makes the row land once however often the job runs, and an unreadable table throws so that could not look reaches the failure handler instead of printing as nobody walked away."; diff --git a/apps/website/public/t27/files/specs/functions/crm-proactive-sweep.t27 b/apps/website/public/t27/files/specs/functions/crm-proactive-sweep.t27 new file mode 100644 index 0000000000..4bd3d0532c --- /dev/null +++ b/apps/website/public/t27/files/specs/functions/crm-proactive-sweep.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/functions/crm-proactive-sweep.t27 -- function crm-proactive-sweep (Inngest, 999-multibots-telegraf) +; Source of truth for the function card on t27.ai (#/functions?function=crm-proactive-sweep). +; The registration was read from 999-multibots-telegraf:src/inngest_app/functions/crm/crmProactiveSweep.ts#L101 (main @05fd960). +; ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the +; deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a +; name is a template the code expands per item. Values here are read from the source, not +; inferred from a name; what could not be read says so in NOTE. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module fn_crm_proactive_sweep; + +pub const KIND : str = "function"; +pub const ID : str = "crm-proactive-sweep"; +pub const LEGACY_ID : str = "crm-proactive-sweep"; +pub const NAME : str = "CRM: proactive seller sweep"; +pub const REPO : str = "999-multibots-telegraf"; +; file:line of inngest.createFunction( in the repo named in REPO +pub const SERVICE : str = "src/inngest_app/functions/crm/crmProactiveSweep.ts:101"; +pub const DOMAIN : str = "crm"; +; "event" or "cron"; an event function has EVENT (+ LEGACY_EVENTS), a cron function has CRON +pub const TRIGGER : str = "cron"; +pub const EVENT : str = ""; +pub const LEGACY_EVENTS : [0]str = []; +pub const CRON : str = "*/30 * * * *"; +pub const TZ : str = "UTC"; +pub const SUMMARY_EN : str = "Every half hour resolves the sellers a registered carrier serves and sweeps each one: the render's CRM tools are called over HTTP, a model is asked what to do next, and an outreach card is pushed to that seller's own chat. Safe mode skips the whole run."; +; step.run names in source order +pub const STEPS : [2]str = ["resolve-sellers", "sweep-${owner}"]; +; retries declared on the function; when the code declares none, the Inngest JS SDK v3 default (4) is written and NOTE says so +pub const RETRIES : u8 = 0; +; "admin-telegram" (onFailure handler messages the admin chat), "log" (no handler) or "refund+notify" +pub const ON_FAILURE : str = "admin-telegram"; +; what a run touches outside the function, from a fixed vocabulary (see README) +pub const SIDE_EFFECTS : [4]str = ["messages-owners", "paid-api", "external-webhook", "db-write"]; +; the first step that stops a bad payload; "none" when the first step already acts, "unknown" when not probed +pub const GUARD : str = "safe-mode"; +; JSON payload of the 2026-09-09 safe probe and what it reached ("" / "skipped" when none was sent; "not-deployed" when the function is not on the probed build) +pub const SAFE_PROBE : str = ""; +pub const PROBE_RESULT : str = "skipped"; +pub const CONTROL : str = "spec+code"; +pub const NOTE : str = "No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 337 runs over seven days and 5 failed, the only function in the project with a failure in that window, so this card exists to make that number reachable. The step name sweep-${owner} is a template expanded once per seller. SIDE_EFFECTS reads the service the run calls into (services/crmProactive.ts): the outreach card goes to the seller who owns the bot, not to the end client, so it is messages-owners and not the manifest's messages-user; the render's MCP route is called over HTTPS (external-webhook) and a model turn is paid for (paid-api). GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. The same schedule is also stated by the timer cron card timer/999-multibots-telegraf/crmProactive-L375, the in-process setInterval this cron replaced on 2026-09-12; CRM_SWEEP_DRIVER=timer restores it."; diff --git a/apps/website/public/t27/files/specs/functions/robokassa-unclaimed-watch.t27 b/apps/website/public/t27/files/specs/functions/robokassa-unclaimed-watch.t27 new file mode 100644 index 0000000000..f4e36d920c --- /dev/null +++ b/apps/website/public/t27/files/specs/functions/robokassa-unclaimed-watch.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/functions/robokassa-unclaimed-watch.t27 -- function robokassa-unclaimed-watch (Inngest, 999-multibots-telegraf) +; Source of truth for the function card on t27.ai (#/functions?function=robokassa-unclaimed-watch). +; The registration was read from 999-multibots-telegraf:src/inngest_app/functions/money/robokassaUnclaimedWatch.ts#L44 (main @05fd960). +; ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the +; deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a +; name is a template the code expands per item. Values here are read from the source, not +; inferred from a name; what could not be read says so in NOTE. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module fn_robokassa_unclaimed_watch; + +pub const KIND : str = "function"; +pub const ID : str = "robokassa-unclaimed-watch"; +pub const LEGACY_ID : str = "robokassa-unclaimed-watch"; +pub const NAME : str = "Money: roubles that arrived and were never credited"; +pub const REPO : str = "999-multibots-telegraf"; +; file:line of inngest.createFunction( in the repo named in REPO +pub const SERVICE : str = "src/inngest_app/functions/money/robokassaUnclaimedWatch.ts:44"; +pub const DOMAIN : str = "money"; +; "event" or "cron"; an event function has EVENT (+ LEGACY_EVENTS), a cron function has CRON +pub const TRIGGER : str = "cron"; +pub const EVENT : str = ""; +pub const LEGACY_EVENTS : [0]str = []; +pub const CRON : str = "20 7 * * *"; +pub const TZ : str = "UTC"; +pub const SUMMARY_EN : str = "Every morning reads the pending Robokassa invoices of the last thirty days, asks the provider what state each one is in, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment."; +; step.run names in source order +pub const STEPS : [1]str = ["ask the provider"]; +; retries declared on the function; when the code declares none, the Inngest JS SDK v3 default (4) is written and NOTE says so +pub const RETRIES : u8 = 0; +; "admin-telegram" (onFailure handler messages the admin chat), "log" (no handler) or "refund+notify" +pub const ON_FAILURE : str = "admin-telegram"; +; what a run touches outside the function, from a fixed vocabulary (see README) +pub const SIDE_EFFECTS : [2]str = ["paid-api", "external-webhook"]; +; the first step that stops a bad payload; "none" when the first step already acts, "unknown" when not probed +pub const GUARD : str = "safe-mode"; +; JSON payload of the 2026-09-09 safe probe and what it reached ("" / "skipped" when none was sent; "not-deployed" when the function is not on the probed build) +pub const SAFE_PROBE : str = ""; +pub const PROBE_RESULT : str = "skipped"; +pub const CONTROL : str = "spec+code"; +pub const NOTE : str = "No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 4 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say, and adds external-webhook for the note the run posts to the render; the table read is stated here instead. GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. Without merchant credentials the run returns did=cannot ask and says nothing about money, because reporting none unclaimed would be inventing reassurance; the invoices older than thirty days are known debt recorded elsewhere and are deliberately not re-alarmed every morning."; diff --git a/apps/website/public/t27/files/specs/functions/ton-pending-watch.t27 b/apps/website/public/t27/files/specs/functions/ton-pending-watch.t27 new file mode 100644 index 0000000000..11ca3df144 --- /dev/null +++ b/apps/website/public/t27/files/specs/functions/ton-pending-watch.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/functions/ton-pending-watch.t27 -- function ton-pending-watch (Inngest, 999-multibots-telegraf) +; Source of truth for the function card on t27.ai (#/functions?function=ton-pending-watch). +; The registration was read from 999-multibots-telegraf:src/inngest_app/functions/money/tonPendingWatch.ts#L51 (main @05fd960). +; ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the +; deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a +; name is a template the code expands per item. Values here are read from the source, not +; inferred from a name; what could not be read says so in NOTE. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module fn_ton_pending_watch; + +pub const KIND : str = "function"; +pub const ID : str = "ton-pending-watch"; +pub const LEGACY_ID : str = "ton-pending-watch"; +pub const NAME : str = "Money: TON that arrived and was never credited"; +pub const REPO : str = "999-multibots-telegraf"; +; file:line of inngest.createFunction( in the repo named in REPO +pub const SERVICE : str = "src/inngest_app/functions/money/tonPendingWatch.ts:51"; +pub const DOMAIN : str = "money"; +; "event" or "cron"; an event function has EVENT (+ LEGACY_EVENTS), a cron function has CRON +pub const TRIGGER : str = "cron"; +pub const EVENT : str = ""; +pub const LEGACY_EVENTS : [0]str = []; +pub const CRON : str = "0 * * * *"; +pub const TZ : str = "UTC"; +pub const SUMMARY_EN : str = "Every hour reads the pending TON invoices, asks the chain whether the coins actually arrived, and writes one journal line to the render saying either that nothing is unclaimed or that somebody paid and was never credited. It reads only; it never completes a payment."; +; step.run names in source order +pub const STEPS : [1]str = ["look"]; +; retries declared on the function; when the code declares none, the Inngest JS SDK v3 default (4) is written and NOTE says so +pub const RETRIES : u8 = 0; +; "admin-telegram" (onFailure handler messages the admin chat), "log" (no handler) or "refund+notify" +pub const ON_FAILURE : str = "admin-telegram"; +; what a run touches outside the function, from a fixed vocabulary (see README) +pub const SIDE_EFFECTS : [2]str = ["paid-api", "external-webhook"]; +; the first step that stops a bad payload; "none" when the first step already acts, "unknown" when not probed +pub const GUARD : str = "safe-mode"; +; JSON payload of the 2026-09-09 safe probe and what it reached ("" / "skipped" when none was sent; "not-deployed" when the function is not on the probed build) +pub const SAFE_PROBE : str = ""; +pub const PROBE_RESULT : str = "skipped"; +pub const CONTROL : str = "spec+code"; +pub const NOTE : str = "No safe probe has been sent: the 2026-09-09 probe pass predates this registration, which is why the manifest row carries no deployment reading. The live status endpoint answered on 2026-09-22 with 94 runs over seven days and none failed. SIDE_EFFECTS drops the manifest's db-read, which the catalog vocabulary cannot say, and adds external-webhook for the note the run posts to the render; the table read is stated here instead. GUARD is the isSafeMode early return at the top of the handler, which the manifest recorded as none. A chain the watcher cannot read returns did=unreadable and writes no quiet note, so a broken read never records a clean channel; that alarm is throttled to once every six hours."; diff --git a/apps/website/public/tools/spec-tools.json b/apps/website/public/tools/spec-tools.json index 783485e021..144d7a0bc1 100644 --- a/apps/website/public/tools/spec-tools.json +++ b/apps/website/public/tools/spec-tools.json @@ -1 +1 @@ -{"collisions":[{"name":"cell","t27":"gHashTag/t27:tri/cell","trinity":"gHashTag/trinity:tri/cell"},{"name":"doctor","t27":"gHashTag/t27:tri/doctor","trinity":"gHashTag/trinity:tri/doctor"},{"name":"experience","t27":"gHashTag/t27:tri/experience","trinity":"gHashTag/trinity:tri/experience"},{"name":"fmt","t27":"gHashTag/t27:tri/fmt","trinity":"gHashTag/trinity:tri/fmt"},{"name":"fpga","t27":"gHashTag/t27:tri/fpga","trinity":"gHashTag/trinity:tri/fpga"},{"name":"gen","t27":"gHashTag/t27:tri/gen","trinity":"gHashTag/trinity:tri/gen"},{"name":"loop","t27":"gHashTag/t27:tri/loop","trinity":"gHashTag/trinity:tri/loop"},{"name":"pr","t27":"gHashTag/t27:tri/pr","trinity":"gHashTag/trinity:tri/pr"},{"name":"serve","t27":"gHashTag/t27:tri/serve","trinity":"gHashTag/trinity:tri/serve"},{"name":"status","t27":"gHashTag/t27:tri/status","trinity":"gHashTag/trinity:tri/status"},{"name":"test","t27":"gHashTag/t27:tri/test","trinity":"gHashTag/trinity:tri/test"},{"name":"verdict","t27":"gHashTag/t27:tri/verdict","trinity":"gHashTag/trinity:tri/verdict"}],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"41e5fdab74db147aac564b9fd39f084a509b8033536e37de17b74cb8a07e4135","counts":{"byRepo":{"gHashTag/BrowserOS":295,"gHashTag/t27":58,"gHashTag/trinity":254},"byWitness":{"help-output":1,"registry-export":29,"runtime":0,"source-parse":577},"collisions":12,"enabled":607,"mcp":11,"mcpExternal":6,"mcpTools":255,"mcpWithTools":6,"schema2":607,"specs":607,"tri":596,"triActions":146,"triWithActions":44,"trinityTri":249,"triosTri":295,"typecheckOk":607,"withAgents":6,"withCast":35,"withSkills":5},"generatedAt":"2026-10-04T05:20:39.582Z","groups":{"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"triByAgent":{"-":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer","gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]},"triByRepo":{"gHashTag/BrowserOS":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer"],"gHashTag/t27":["tri/abandoned","tri/cell","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/experience","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/gen","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/test","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/verdict","tri/vsim","tri/window","tri/worktrees"],"gHashTag/trinity":["gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo"]}},"i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":92,"total":607},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer","gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo"],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"providers":7,"skills":26,"specs":1776,"tools":607},"legacy":{"mcp/gitbutler":"gHashTag/t27:mcp/gitbutler","mcp/inngest-dev":"gHashTag/t27:mcp/inngest-dev","mcp/needle":"gHashTag/trinity:mcp/needle","mcp/neon":"gHashTag/trinity:mcp/neon","mcp/notebooklm":"gHashTag/t27:mcp/notebooklm","mcp/railway-mcp-server":"gHashTag/trinity:mcp/railway-mcp-server","mcp/t27-traceability":"gHashTag/t27:mcp/t27-traceability","mcp/tri-mcp":"gHashTag/t27:mcp/tri-mcp","mcp/tri-ssot":"gHashTag/t27:mcp/tri-ssot","mcp/trinity":"gHashTag/trinity:mcp/trinity","mcp/zig-docs":"gHashTag/trinity:mcp/zig-docs","tri/abandoned":"gHashTag/t27:tri/abandoned","tri/cell":"gHashTag/t27:tri/cell","tri/census":"gHashTag/t27:tri/census","tri/ci":"gHashTag/t27:tri/ci","tri/competitors":"gHashTag/t27:tri/competitors","tri/discard":"gHashTag/t27:tri/discard","tri/doctor":"gHashTag/t27:tri/doctor","tri/elab":"gHashTag/t27:tri/elab","tri/emit":"gHashTag/t27:tri/emit","tri/experience":"gHashTag/t27:tri/experience","tri/fleet":"gHashTag/t27:tri/fleet","tri/fmt":"gHashTag/t27:tri/fmt","tri/fpga":"gHashTag/t27:tri/fpga","tri/gates":"gHashTag/t27:tri/gates","tri/gen":"gHashTag/t27:tri/gen","tri/harness":"gHashTag/t27:tri/harness","tri/health":"gHashTag/t27:tri/health","tri/hooks":"gHashTag/t27:tri/hooks","tri/issues":"gHashTag/t27:tri/issues","tri/jumps":"gHashTag/t27:tri/jumps","tri/kinds":"gHashTag/t27:tri/kinds","tri/lean":"gHashTag/t27:tri/lean","tri/ledgers":"gHashTag/t27:tri/ledgers","tri/loop":"gHashTag/t27:tri/loop","tri/merging":"gHashTag/t27:tri/merging","tri/misread":"gHashTag/t27:tri/misread","tri/mods":"gHashTag/t27:tri/mods","tri/mutate":"gHashTag/t27:tri/mutate","tri/now":"gHashTag/t27:tri/now","tri/one-away":"gHashTag/t27:tri/one-away","tri/orphaned":"gHashTag/t27:tri/orphaned","tri/pr":"gHashTag/t27:tri/pr","tri/prose":"gHashTag/t27:tri/prose","tri/quantifiers":"gHashTag/t27:tri/quantifiers","tri/red":"gHashTag/t27:tri/red","tri/reseal":"gHashTag/t27:tri/reseal","tri/rtl":"gHashTag/t27:tri/rtl","tri/seals":"gHashTag/t27:tri/seals","tri/serve":"gHashTag/t27:tri/serve","tri/skill":"gHashTag/t27:tri/skill","tri/status":"gHashTag/t27:tri/status","tri/sweep":"gHashTag/t27:tri/sweep","tri/synth":"gHashTag/t27:tri/synth","tri/test":"gHashTag/t27:tri/test","tri/topic":"gHashTag/t27:tri/topic","tri/types":"gHashTag/t27:tri/types","tri/unparsed":"gHashTag/t27:tri/unparsed","tri/vectors":"gHashTag/t27:tri/vectors","tri/verdict":"gHashTag/t27:tri/verdict","tri/vsim":"gHashTag/t27:tri/vsim","tri/window":"gHashTag/t27:tri/window","tri/worktrees":"gHashTag/t27:tri/worktrees"},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"schema":2,"tools":[{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"cast":null,"config":".mcp.json","discarded":0,"env":["GITBUTLER_REPO"],"external":true,"family":"mcp","fields":{"ABOUT":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".mcp.json","ENABLED":true,"ENV":["GITBUTLER_REPO"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/gitbutler","KIND":"tool","LAUNCH":"but mcp","QUALIFIED_ID":"gHashTag/t27:mcp/gitbutler","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"gitbutler","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/gitbutler","inSpecCorpus":true,"launch":"but mcp","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_gitbutler","name":{"en":"gitbutler"},"qualifiedId":"gHashTag/t27:mcp/gitbutler","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/gitbutler gitbutler external gitbutler mcp server launched as `but mcp`; the repository only registers it in .mcp.json.","server":"gitbutler","serverVersion":"","sha256":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/gitbutler.t27","summary":{"en":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ru":"Внешний MCP-сервер GitButler, запускаемый как `but mcp`; репозиторий лишь регистрирует его в .mcp.json."},"tools":[],"toolsNote":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","agents":[{"letter":"T","ok":true}],"cast":null,"config":"","discarded":0,"env":["INNGEST_SIGNING_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ABOUT_SOURCE":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","AGENTS":["T"],"AGENTS_NOTE":"specs/agents/t.t27 TOOLS names mcp/inngest-dev: the Queen (Tau) holds the scheduler; a bee reaches it through the Queen's brief, not by its own registration.","CONFIG":"","ENABLED":true,"ENV":["INNGEST_SIGNING_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/inngest-dev","KIND":"tool","LAUNCH":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","QUALIFIED_ID":"gHashTag/t27:mcp/inngest-dev","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"inngest-dev","SERVER_VERSION":"1.0.0","SOURCE":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","TOOLS":["cancel_run","get_app","get_apps","get_event_runs","get_function","get_run","get_run_status","get_run_trace","grep_docs","health","invoke_function","invoke_function_sync","list_docs","list_function_runs","list_functions","list_runs","poll_run_status","read_doc","rerun","send_event"],"TOOLS_ABOUT":["Cancels an in-progress function run","Fetches details for a single app, including sync metadata and function count","Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","Lists function runs triggered by a specific event","Fetches function configuration and status details for a function within an app","Fetches the canonical run summary for a single function run","Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","Fetches the trace tree for a single function run","Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","Returns the health status of the API service","Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","List all available documentation categories and their document counts. No parameters required.","Lists runs for one function in the authenticated environment","Lists function configuration and status details for an app","Lists runs in the authenticated environment, optionally filtered by app and function IDs","Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","Creates a new run using the original run's triggering event data","Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID"],"TOOLS_INPUTS":["runId","appId","archived,cursor,limit","cursor,eventId,includeOutput,limit","appId,functionId","includeOutput,runId","runId","includeOutput,runId","pattern,limit","","appId,data,functionId,idempotencyKey","functionId,data,user,timeout","","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","appId,cursor,limit","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","runIds,timeout,pollInterval","path","fromStep,runId","name,data,user,eventIdSeed"],"TOOLS_NOTE":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","TRANSPORT":"http","WITNESS":"help-output"},"health":"ok","id":"mcp/inngest-dev","inSpecCorpus":true,"launch":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)"},"messages":["external package: tool list not in the repository"],"moduleName":"tool_mcp_inngest_dev","name":{"en":"inngest-dev"},"qualifiedId":"gHashTag/t27:mcp/inngest-dev","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/inngest-dev inngest-dev mcp face of the self-hosted inngest server (railway project 999) that runs the queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels. cancel_run cancels an in-progress function run get_app fetches details for a single app, including sync metadata and function count get_apps lists active apps in the authenticated environment. set archived to true to list archived apps instead. get_event_runs lists function runs triggered by a specific event get_function fetches function configuration and status details for a function within an app get_run fetches the canonical run summary for a single function run get_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run and get_run_trace for new integrations. parameters: get_run_trace fetches the trace tree for a single function run grep_docs search documentation using exact string matching (grep). useful for finding specific api names, error codes, or identifiers. parameters: pat health returns the health status of the api service invoke_function invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body invoke_function_sync deprecated compatibility tool retained for existing dev server integrations. use invoke_function for the shared asynchronous cloud and dev s list_docs list all available documentation categories and their document counts. no parameters required. list_function_runs lists runs for one function in the authenticated environment list_functions lists function configuration and status details for an app list_runs lists runs in the authenticated environment, optionally filtered by app and function ids poll_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run for new integrations. poll multiple function runs u read_doc read the full content of a specific documentation file. parameters: path (required string - the doc file path relative to docs directory) rerun creates a new run using the original run's triggering event data send_event deprecated compatibility tool retained for existing dev server integrations. send an event to the inngest dev server and return the event id t","server":"inngest-dev","serverVersion":"1.0.0","sha256":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","skills":[],"source":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","specPath":"specs/tools/mcp/inngest-dev.t27","summary":{"en":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ru":"MCP-лицо самостоятельно размещённого сервера Inngest (проект Railway 999), который исполняет кроны и скиллы Королевы как функции приложения t27-queen; перечисляет приложения и функции, читает запуски и трассы, запускает, перезапускает и отменяет."},"tools":[{"about":"Cancels an in-progress function run","inputs":["runId"],"name":"cancel_run"},{"about":"Fetches details for a single app, including sync metadata and function count","inputs":["appId"],"name":"get_app"},{"about":"Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","inputs":["archived","cursor","limit"],"name":"get_apps"},{"about":"Lists function runs triggered by a specific event","inputs":["cursor","eventId","includeOutput","limit"],"name":"get_event_runs"},{"about":"Fetches function configuration and status details for a function within an app","inputs":["appId","functionId"],"name":"get_function"},{"about":"Fetches the canonical run summary for a single function run","inputs":["includeOutput","runId"],"name":"get_run"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","inputs":["runId"],"name":"get_run_status"},{"about":"Fetches the trace tree for a single function run","inputs":["includeOutput","runId"],"name":"get_run_trace"},{"about":"Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","inputs":["pattern","limit"],"name":"grep_docs"},{"about":"Returns the health status of the API service","inputs":[],"name":"health"},{"about":"Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","inputs":["appId","data","functionId","idempotencyKey"],"name":"invoke_function"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","inputs":["functionId","data","user","timeout"],"name":"invoke_function_sync"},{"about":"List all available documentation categories and their document counts. No parameters required.","inputs":[],"name":"list_docs"},{"about":"Lists runs for one function in the authenticated environment","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_function_runs"},{"about":"Lists function configuration and status details for an app","inputs":["appId","cursor","limit"],"name":"list_functions"},{"about":"Lists runs in the authenticated environment, optionally filtered by app and function IDs","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_runs"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","inputs":["runIds","timeout","pollInterval"],"name":"poll_run_status"},{"about":"Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","inputs":["path"],"name":"read_doc"},{"about":"Creates a new run using the original run's triggering event data","inputs":["fromStep","runId"],"name":"rerun"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID","inputs":["name","data","user","eventIdSeed"],"name":"send_event"}],"toolsNote":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","transport":"http","typecheckOk":true,"witness":"help-output"},{"aboutSource":".claude/mcp.json entry; no tool list in this repository","agents":[],"cast":null,"config":".claude/mcp.json","discarded":0,"env":["NOTEBOOKLM_STORAGE_STATE"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ABOUT_SOURCE":".claude/mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".claude/mcp.json","ENABLED":true,"ENV":["NOTEBOOKLM_STORAGE_STATE"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/notebooklm","KIND":"tool","LAUNCH":"notebooklm-mcp --notebook-id auto","QUALIFIED_ID":"gHashTag/t27:mcp/notebooklm","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"notebooklm","SERVER_VERSION":"","SOURCE":".claude/mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external package, not in this repository.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/notebooklm","inSpecCorpus":true,"launch":"notebooklm-mcp --notebook-id auto","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_notebooklm","name":{"en":"notebooklm"},"qualifiedId":"gHashTag/t27:mcp/notebooklm","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/notebooklm notebooklm external mcp server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","server":"notebooklm","serverVersion":"","sha256":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","skills":[],"source":".claude/mcp.json","specPath":"specs/tools/mcp/notebooklm.t27","summary":{"en":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ru":"Внешний MCP-сервер `notebooklm`, зарегистрированный в .claude/mcp.json; запускается как `notebooklm-mcp`."},"tools":[],"toolsNote":"Tool list lives in the external package, not in this repository.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","agents":[],"cast":null,"config":".mcp.json","discarded":0,"env":["PROJECT_ROOT","ENFORCE_L1"],"external":false,"family":"mcp","fields":{"ABOUT":"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.","ABOUT_SOURCE":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".mcp.json","ENABLED":true,"ENV":["PROJECT_ROOT","ENFORCE_L1"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/t27-traceability","KIND":"tool","LAUNCH":"node scripts/mcp-traceability-server.js","QUALIFIED_ID":"gHashTag/t27:mcp/t27-traceability","REPO":"gHashTag/t27","RESOURCES":["docs/T27-CONSTITUTION.md","docs/l1-traceability-audit.md"],"RESOURCES_ABOUT":["Constitutional laws including L1 TRACEABILITY","Audit report for L1 TRACEABILITY compliance"],"SCHEMA":2,"SERVER":"t27-traceability","SERVER_VERSION":"1.0.0","SOURCE":"scripts/mcp-traceability-server.js","TOOLS":["check_traceability","generate_commit_message","validate_branch_name","get_phi_loop_template"],"TOOLS_ABOUT":["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"],"TOOLS_INPUTS":["message","type,scope,description,issueNumber,invariantLaws,body","branchName","ringNumber"],"TOOLS_NOTE":"","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/t27-traceability","inSpecCorpus":true,"launch":"node scripts/mcp-traceability-server.js","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/scripts/mcp-traceability-server.js"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_t27_traceability","name":{"en":"t27-traceability"},"qualifiedId":"gHashTag/t27:mcp/t27-traceability","repo":"gHashTag/t27","resources":[{"about":"Constitutional laws including L1 TRACEABILITY","path":"docs/T27-CONSTITUTION.md"},{"about":"Audit report for L1 TRACEABILITY compliance","path":"docs/l1-traceability-audit.md"}],"schema":2,"searchText":"mcp/t27-traceability t27-traceability 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. check_traceability check if a commit message or pr description complies with l1 traceability (closes #n required) generate_commit_message generate a compliant commit message for t27 including required l1 traceability reference validate_branch_name validate branch name follows t27 naming conventions get_phi_loop_template get phi loop stacked branch template for ring development","server":"t27-traceability","serverVersion":"1.0.0","sha256":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","skills":[],"source":"scripts/mcp-traceability-server.js","specPath":"specs/tools/mcp/t27-traceability.t27","summary":{"en":"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.","ru":"MCP-сервер по stdio, проверяющий L1 TRACEABILITY (Closes #N) в сообщениях коммитов и описаниях PR, генерирующий соответствующие сообщения коммитов, валидирующий имена веток и отдающий шаблон стековых веток PHI LOOP; ресурсы открывают конституцию и аудит L1."},"tools":[{"about":"Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","inputs":["message"],"name":"check_traceability"},{"about":"Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","inputs":["type","scope","description","issueNumber","invariantLaws","body"],"name":"generate_commit_message"},{"about":"Validate branch name follows t27 naming conventions","inputs":["branchName"],"name":"validate_branch_name"},{"about":"Get PHI LOOP stacked branch template for ring development","inputs":["ringNumber"],"name":"get_phi_loop_template"}],"toolsNote":"","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","agents":[],"cast":null,"config":"","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ABOUT_SOURCE":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":"","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-mcp","KIND":"tool","LAUNCH":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","QUALIFIED_ID":"gHashTag/t27:mcp/tri-mcp","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-mcp","SERVER_VERSION":"0.1.0","SOURCE":"cli/tri-mcp/src/main.rs","TOOLS":["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"],"TOOLS_ABOUT":["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."],"TOOLS_INPUTS":["","issue,description","","step","","spec_path","spec_path","","episode_type,summary,ring",""],"TOOLS_NOTE":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-mcp","inSpecCorpus":true,"launch":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri-mcp/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_mcp","name":{"en":"tri-mcp"},"qualifiedId":"gHashTag/t27:mcp/tri-mcp","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-mcp tri-mcp rust mcp server exposing the phi loop tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health. tri_status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. tri_skill_begin begins a new phi loop skill session bound to an issue. tri_skill_end ends the active phi loop skill session. tri_cell_checkpoint records a checkpoint step in the active cell. tri_cell_seal seals the active cell by computing a sha-256 hash of its checkpoint history. tri_gen generates backends from a .t27 spec file using t27c. tri_test runs tests for a .t27 spec file using t27c. tri_verdict checks for toxic regressions by analyzing swarm health metrics. tri_experience_save saves an experience episode to the akashic log. tri_health returns queen and swarm health status from .trinity state.","server":"tri-mcp","serverVersion":"0.1.0","sha256":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","skills":[],"source":"cli/tri-mcp/src/main.rs","specPath":"specs/tools/mcp/tri-mcp.t27","summary":{"en":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ru":"MCP-сервер на Rust, открывающий команды tri PHI LOOP как инструменты: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."},"tools":[{"about":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","inputs":[],"name":"tri_status"},{"about":"Begins a new PHI LOOP skill session bound to an issue.","inputs":["issue","description"],"name":"tri_skill_begin"},{"about":"Ends the active PHI LOOP skill session.","inputs":[],"name":"tri_skill_end"},{"about":"Records a checkpoint step in the active cell.","inputs":["step"],"name":"tri_cell_checkpoint"},{"about":"Seals the active cell by computing a SHA-256 hash of its checkpoint history.","inputs":[],"name":"tri_cell_seal"},{"about":"Generates backends from a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_gen"},{"about":"Runs tests for a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_test"},{"about":"Checks for toxic regressions by analyzing swarm health metrics.","inputs":[],"name":"tri_verdict"},{"about":"Saves an experience episode to the akashic log.","inputs":["episode_type","summary","ring"],"name":"tri_experience_save"},{"about":"Returns queen and swarm health status from .trinity state.","inputs":[],"name":"tri_health"}],"toolsNote":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"manifest.json description","agents":[],"cast":null,"config":".claude/mcp/tri-ssot/manifest.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ABOUT_SOURCE":"manifest.json description","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".claude/mcp/tri-ssot/manifest.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-ssot","KIND":"tool","LAUNCH":"python3 -m contrib.backend.github.mcp_server","QUALIFIED_ID":"gHashTag/t27:mcp/tri-ssot","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-ssot","SERVER_VERSION":"1.0.0","SOURCE":".claude/mcp/tri-ssot/manifest.json","TOOLS":["tri_issue","tri_pr","tri_docs","tri_sync","tri_search"],"TOOLS_ABOUT":["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"],"TOOLS_INPUTS":["action,title,body,labels,issue_id,state","action,title,body,pr_id,issue_id","action,file_path,title","scope","query"],"TOOLS_NOTE":"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).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-ssot","inSpecCorpus":true,"launch":"python3 -m contrib.backend.github.mcp_server","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_ssot","name":{"en":"tri-ssot"},"qualifiedId":"gHashTag/t27:mcp/tri-ssot","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-ssot tri-ssot ssot integration for t27: github issues + prs + documentation -> notebooklm tri_issue github issue management: create, update, list, close tri_pr github pr management: create, merge, close, get status tri_docs documentation management: upload to notebooklm, sync, query tri_sync unified sync: sync all entities (issues, prs, docs) with notebooklm tri_search unified search across github issues, prs, notebooklm docs","server":"tri-ssot","serverVersion":"1.0.0","sha256":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","skills":[],"source":".claude/mcp/tri-ssot/manifest.json","specPath":"specs/tools/mcp/tri-ssot.t27","summary":{"en":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ru":"Интеграция SSOT для t27: GitHub Issues + PR + документация -> NotebookLM."},"tools":[{"about":"GitHub Issue management: create, update, list, close","inputs":["action","title","body","labels","issue_id","state"],"name":"tri_issue"},{"about":"GitHub PR management: create, merge, close, get status","inputs":["action","title","body","pr_id","issue_id"],"name":"tri_pr"},{"about":"Documentation management: upload to NotebookLM, sync, query","inputs":["action","file_path","title"],"name":"tri_docs"},{"about":"Unified sync: sync all entities (issues, prs, docs) with NotebookLM","inputs":["scope"],"name":"tri_sync"},{"about":"Unified search across GitHub Issues, PRs, NotebookLM docs","inputs":["query"],"name":"tri_search"}],"toolsNote":"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).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","actions":[{"about":"List recovery sites whose preceding comment names a concrete construct.","name":"list"}],"agents":[],"args":[],"cast":null,"command":"tri abandoned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recovery sites whose own comment names the construct they discard.","ABOUT_SOURCE":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List recovery sites whose preceding comment names a concrete construct."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri abandoned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/abandoned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/abandoned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/abandoned.rs","VARIANT":"Commands::Abandoned","WHEN_TO_USE":"Recovery sites whose own comment names the construct they discard.","WITNESS":"source-parse"},"health":"ok","id":"tri/abandoned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/abandoned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_abandoned","name":{"en":"tri abandoned"},"qualifiedId":"gHashTag/t27:tri/abandoned","repo":"gHashTag/t27","schema":2,"searchText":"tri/abandoned tri abandoned recovery sites whose own comment names the construct they discard. recovery sites whose own comment names the construct they discard. list list recovery sites whose preceding comment names a concrete construct.","sha256":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","skills":[],"source":"cli/tri/src/abandoned.rs","specPath":"specs/tools/tri/abandoned.t27","summary":{"en":"Recovery sites whose own comment names the construct they discard.","ru":"Точки восстановления, чей собственный комментарий называет отбрасываемую конструкцию."},"typecheckOk":true,"variant":"Commands::Abandoned","whenToUse":"Recovery sites whose own comment names the construct they discard.","witness":"source-parse"},{"aboutSource":"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","actions":[{"about":"","name":"checkpoint"},{"about":"","name":"seal"}],"agents":[{"letter":"W","ok":true}],"args":[],"cast":null,"command":"tri cell","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ABOUT_SOURCE":"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","ACTIONS":["checkpoint","seal"],"ACTIONS_ABOUT":["",""],"AGENTS":["W"],"AGENTS_NOTE":"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).","ARGS":[],"COMMAND":"tri cell","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/cell","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/cell","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Cell","WHEN_TO_USE":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","WITNESS":"source-parse"},"health":"ok","id":"tri/cell","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_cell","name":{"en":"tri cell"},"qualifiedId":"gHashTag/t27:tri/cell","repo":"gHashTag/t27","schema":2,"searchText":"tri/cell tri cell records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. checkpoint seal w","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/cell.t27","summary":{"en":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ru":"Записывает шаг-контрольную точку в активной ячейке; запечатывает активную ячейку, вычисляя SHA-256 истории её контрольных точек."},"typecheckOk":true,"variant":"Commands::Cell","whenToUse":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","actions":[{"about":"Every census's printed population, against one counted another way.","name":"audit"},{"about":"Pin each pure census's output, so a change that moves one has to say so.","name":"pin"}],"agents":[],"args":[],"cast":{"commands":["tri census audit"],"id":"t27-tri-census","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-census/","src":"term/t27-tri-census/session.cast","title":"tri census audit: every census, counted twice"},"command":"tri census","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ABOUT_SOURCE":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","ACTIONS":["audit","pin"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-census/session.cast","COMMAND":"tri census","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/census","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/census","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/census.rs","VARIANT":"Commands::Census","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","WITNESS":"source-parse"},"health":"ok","id":"tri/census","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/census.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_census","name":{"en":"tri census"},"qualifiedId":"gHashTag/t27:tri/census","repo":"gHashTag/t27","schema":2,"searchText":"tri/census tri census specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. audit every census's printed population, against one counted another way. pin pin each pure census's output, so a change that moves one has to say so.","sha256":"2e8093fdbaf186c821daacb78c0dcb69b5f495fe07eac09413748825fe8d85ea","skills":[],"source":"cli/tri/src/census.rs","specPath":"specs/tools/tri/census.t27","summary":{"en":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по конструкции, которая его останавливает. Напечатанная популяция каждой переписи против одной, посчитанной иначе."},"typecheckOk":true,"variant":"Commands::Census","whenToUse":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","actions":[{"about":"List PR gates that have never run on the default branch.","name":"baseline"}],"agents":[],"args":[],"cast":null,"command":"tri ci","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ABOUT_SOURCE":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","ACTIONS":["baseline"],"ACTIONS_ABOUT":["List PR gates that have never run on the default branch."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri ci","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ci","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ci","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/cibase.rs","VARIANT":"Commands::Ci","WHEN_TO_USE":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/ci","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/cibase.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ci","name":{"en":"tri ci"},"qualifiedId":"gHashTag/t27:tri/ci","repo":"gHashTag/t27","schema":2,"searchText":"tri/ci tri ci is the hardware this plan assumes actually attached? ci questions about the repository's own gates. is the hardware this plan assumes actually attached? ci questions about the repository's own gates. baseline list pr gates that have never run on the default branch.","sha256":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","skills":[],"source":"cli/tri/src/cibase.rs","specPath":"specs/tools/tri/ci.t27","summary":{"en":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ru":"Действительно ли подключено оборудование, которое предполагает этот план? Вопросы CI о собственных гейтах репозитория."},"typecheckOk":true,"variant":"Commands::Ci","whenToUse":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","actions":[{"about":"Count the records, the double-entered papers and the unpublished zeros.","name":"audit"},{"about":"When the survey behind this table last read a paper, by the month its citations encode.","name":"freshness"}],"agents":[],"args":[],"cast":{"commands":["tri competitors audit"],"id":"t27-tri-competitors","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-competitors/","src":"term/t27-tri-competitors/session.cast","title":"tri competitors audit: the table, audited"},"command":"tri competitors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ABOUT_SOURCE":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","ACTIONS":["audit","freshness"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-competitors/session.cast","COMMAND":"tri competitors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/competitors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/competitors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/competitors.rs","VARIANT":"Commands::Competitors","WHEN_TO_USE":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/competitors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/competitors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_competitors","name":{"en":"tri competitors"},"qualifiedId":"gHashTag/t27:tri/competitors","repo":"gHashTag/t27","schema":2,"searchText":"tri/competitors tri competitors the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. audit count the records, the double-entered papers and the unpublished zeros. freshness when the survey behind this table last read a paper, by the month its citations encode.","sha256":"3306c38768838b334ddc8e3f5f4abc2efca7addf713af3e578bbba90fa68d0c3","skills":[],"source":"cli/tri/src/competitors.rs","specPath":"specs/tools/tri/competitors.t27","summary":{"en":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ru":"Таблица конкурентов против собственного контракта: сколько её опубликованных оценок никогда не публиковались и сколько статей она считает дважды."},"typecheckOk":true,"variant":"Commands::Competitors","whenToUse":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","actions":[{"about":"Rank the discarding specs, largest first, against the pinned volume.","name":"top"},{"about":"Group the discard by which recovery threw it away, and what it stopped on.","name":"classify"}],"agents":[],"args":[],"cast":{"commands":["tri discard top"],"id":"t27-tri-discard","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-discard/","src":"term/t27-tri-discard/session.cast","title":"tri discard top: what the parser throws away"},"command":"tri discard","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the parser reads and throws away, ranked against its pinned bound.","ABOUT_SOURCE":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","ACTIONS":["top","classify"],"ACTIONS_ABOUT":["Rank the discarding specs, largest first, against the pinned volume.","Group the discard by which recovery threw it away, and what it stopped on."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-discard/session.cast","COMMAND":"tri discard","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/discard","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/discard","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/discard.rs","VARIANT":"Commands::Discard","WHEN_TO_USE":"What the parser reads and throws away, ranked against its pinned bound.","WITNESS":"source-parse"},"health":"ok","id":"tri/discard","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/discard.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_discard","name":{"en":"tri discard"},"qualifiedId":"gHashTag/t27:tri/discard","repo":"gHashTag/t27","schema":2,"searchText":"tri/discard tri discard what the parser reads and throws away, ranked against its pinned bound. what the parser reads and throws away, ranked against its pinned bound. top rank the discarding specs, largest first, against the pinned volume. classify group the discard by which recovery threw it away, and what it stopped on.","sha256":"e8ca3d0adcebc0fc9890233b186ad922e4a1e676d67775ee6635e362c26face4","skills":[],"source":"cli/tri/src/discard.rs","specPath":"specs/tools/tri/discard.t27","summary":{"en":"What the parser reads and throws away, ranked against its pinned bound.","ru":"Что парсер читает и выбрасывает, в сравнении с закреплённой границей."},"typecheckOk":true,"variant":"Commands::Discard","whenToUse":"What the parser reads and throws away, ranked against its pinned bound.","witness":"source-parse"},{"aboutSource":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","actions":[],"agents":[],"args":[{"about":"","name":""}],"cast":null,"command":"tri doctor","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ABOUT_SOURCE":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[""],"COMMAND":"tri doctor","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/doctor","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/doctor","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Doctor","WHEN_TO_USE":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","WITNESS":"source-parse"},"health":"ok","id":"tri/doctor","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_doctor","name":{"en":"tri doctor"},"qualifiedId":"gHashTag/t27:tri/doctor","repo":"gHashTag/t27","schema":2,"searchText":"tri/doctor tri doctor start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status). start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","sha256":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/doctor.t27","summary":{"en":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ru":"Запускает, останавливает или показывает состояние doctor, хранимое в .trinity/state/doctor.json (действия: start | stop | status)."},"typecheckOk":true,"variant":"Commands::Doctor","whenToUse":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","actions":[{"about":"Distribution of elaboration diagnostics by message shape.","name":"classify"},{"about":"How many diagnostics are secondary -- same source line as one above.","name":"secondary"}],"agents":[],"args":[],"cast":null,"command":"tri elab","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Classify a compiler's error output before quoting a number from it.","ABOUT_SOURCE":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","ACTIONS":["classify","secondary"],"ACTIONS_ABOUT":["Distribution of elaboration diagnostics by message shape.","How many diagnostics are secondary -- same source line as one above."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri elab","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/elab","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/elab","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/elab.rs","VARIANT":"Commands::Elab","WHEN_TO_USE":"Classify a compiler's error output before quoting a number from it.","WITNESS":"source-parse"},"health":"ok","id":"tri/elab","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/elab.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_elab","name":{"en":"tri elab"},"qualifiedId":"gHashTag/t27:tri/elab","repo":"gHashTag/t27","schema":2,"searchText":"tri/elab tri elab classify a compiler's error output before quoting a number from it. classify a compiler's error output before quoting a number from it. classify distribution of elaboration diagnostics by message shape. secondary how many diagnostics are secondary -- same source line as one above.","sha256":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","skills":[],"source":"cli/tri/src/elab.rs","specPath":"specs/tools/tri/elab.t27","summary":{"en":"Classify a compiler's error output before quoting a number from it.","ru":"Классифицирует вывод ошибок компилятора прежде, чем цитировать из него число."},"typecheckOk":true,"variant":"Commands::Elab","whenToUse":"Classify a compiler's error output before quoting a number from it.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","actions":[{"about":"Generate the corpus twice with the same binary and name what differs.","name":"determinism"}],"agents":[],"args":[],"cast":null,"command":"tri emit","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does the same binary produce the same generated code twice?","ABOUT_SOURCE":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","ACTIONS":["determinism"],"ACTIONS_ABOUT":["Generate the corpus twice with the same binary and name what differs."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri emit","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/emit","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/emit","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gendet.rs","VARIANT":"Commands::Emit","WHEN_TO_USE":"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`.)","WITNESS":"source-parse"},"health":"ok","id":"tri/emit","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gendet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_emit","name":{"en":"tri emit"},"qualifiedId":"gHashTag/t27:tri/emit","repo":"gHashTag/t27","schema":2,"searchText":"tri/emit tri emit does the same binary produce the same generated code twice? 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`.) determinism generate the corpus twice with the same binary and name what differs.","sha256":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","skills":[],"source":"cli/tri/src/gendet.rs","specPath":"specs/tools/tri/emit.t27","summary":{"en":"Does the same binary produce the same generated code twice?","ru":"Даёт ли один и тот же бинарник один и тот же сгенерированный код дважды?"},"typecheckOk":true,"variant":"Commands::Emit","whenToUse":"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`.)","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","actions":[{"about":"","name":"save"}],"agents":[{"letter":"E","ok":true}],"args":[],"cast":null,"command":"tri experience","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Saves an experience episode to the akashic log.","ABOUT_SOURCE":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","ACTIONS":["save"],"ACTIONS_ABOUT":[""],"AGENTS":["E"],"AGENTS_NOTE":".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.","ARGS":[],"COMMAND":"tri experience","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/experience","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/experience","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Experience","WHEN_TO_USE":"Saves an experience episode to the akashic log.","WITNESS":"source-parse"},"health":"ok","id":"tri/experience","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_experience","name":{"en":"tri experience"},"qualifiedId":"gHashTag/t27:tri/experience","repo":"gHashTag/t27","schema":2,"searchText":"tri/experience tri experience saves an experience episode to the akashic log. saves an experience episode to the akashic log. save e","sha256":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/experience.t27","summary":{"en":"Saves an experience episode to the akashic log.","ru":"Сохраняет эпизод опыта в акашический журнал."},"typecheckOk":true,"variant":"Commands::Experience","whenToUse":"Saves an experience episode to the akashic log.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/fleet.rs:1","actions":[{"about":"Scan the USB bus and say plainly what hardware is present.","name":"scan"},{"about":"Check the environments a claim depends on before repeating the claim.","name":"asof"}],"agents":[],"args":[],"cast":null,"command":"tri fleet","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri fleet` -- is the hardware this plan assumes actually attached?","ABOUT_SOURCE":"//! module doc, cli/tri/src/fleet.rs:1","ACTIONS":["scan","asof"],"ACTIONS_ABOUT":["Scan the USB bus and say plainly what hardware is present.","Check the environments a claim depends on before repeating the claim."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri fleet","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fleet","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fleet","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fleet.rs","VARIANT":"Commands::Fleet","WHEN_TO_USE":"`tri fleet` -- is the hardware this plan assumes actually attached?","WITNESS":"source-parse"},"health":"ok","id":"tri/fleet","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fleet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fleet","name":{"en":"tri fleet"},"qualifiedId":"gHashTag/t27:tri/fleet","repo":"gHashTag/t27","schema":2,"searchText":"tri/fleet tri fleet `tri fleet` -- is the hardware this plan assumes actually attached? `tri fleet` -- is the hardware this plan assumes actually attached? scan scan the usb bus and say plainly what hardware is present. asof check the environments a claim depends on before repeating the claim.","sha256":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","skills":[],"source":"cli/tri/src/fleet.rs","specPath":"specs/tools/tri/fleet.t27","summary":{"en":"`tri fleet` -- is the hardware this plan assumes actually attached?","ru":"`tri fleet` -- действительно ли подключено оборудование, которое предполагает этот план?"},"typecheckOk":true,"variant":"Commands::Fleet","whenToUse":"`tri fleet` -- is the hardware this plan assumes actually attached?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"One package instead of the whole workspace.","name":"--package"},{"about":"Report what is dirty and whether a workflow formats, and stop.","name":"--dry-run"}],"cast":null,"command":"tri fmt","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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.","ABOUT_SOURCE":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--package: One package instead of the whole workspace.","--dry-run: Report what is dirty and whether a workflow formats, and stop."],"COMMAND":"tri fmt","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fmt","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fmt","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Fmt","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/fmt","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fmt","name":{"en":"tri fmt"},"qualifiedId":"gHashTag/t27:tri/fmt","repo":"gHashTag/t27","schema":2,"searchText":"tri/fmt tri fmt 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. 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.","sha256":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/fmt.t27","summary":{"en":"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.","ru":"Имена типов с более чем одним определением в дереве спеков. Запускает форматтер и восстанавливает каждый переписанный им файл, которого вы не трогали."},"typecheckOk":true,"variant":"Commands::Fmt","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","actions":[{"about":"Read and print the JTAG IDCODE of the attached DLC10 cable target.","name":"idcode"},{"about":"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.","name":"idcode-cfg"},{"about":"Program FPGA SRAM (volatile -- lost on power-cycle).","name":"sram"},{"about":"Program the on-board SPI flash (non-volatile / persistent).","name":"program"},{"about":"Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","name":"flash-id"},{"about":"Read the raw CFG_OUT status register.","name":"status"},{"about":"Decode 7-series configuration registers for DONE=LOW diagnosis.","name":"debug"},{"about":"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).","name":"load-sram"},{"about":"Read and decode the FPGA STAT register via openFPGALoader.","name":"stat"},{"about":"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`.","name":"read-xadc"},{"about":"Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","name":"synth-gf16"},{"about":"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).","name":"program-flash"},{"about":"Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","name":"dump-flash"},{"about":"Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","name":"bit-config"},{"about":"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.","name":"round-trip-verify"},{"about":"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.","name":"boot-log"},{"about":"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.","name":"cold-por"},{"about":"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.","name":"smoke-gate"},{"about":"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.","name":"boot-protocol"},{"about":"Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","name":"patch-cor0"},{"about":"Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","name":"cclk-variants"},{"about":"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.","name":"cclk-sweep"},{"about":"Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","name":"sweep-report"},{"about":"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`).","name":"measure-cclk"},{"about":"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.","name":"flash-status"},{"about":"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.","name":"proxy-load"},{"about":"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.","name":"proxy-status"},{"about":"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).","name":"spi-raw"},{"about":"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.","name":"ir-probe"},{"about":"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.","name":"flash-id-debug"},{"about":"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.","name":"build-proxy"},{"about":"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/`.","name":"setup-openxc7-chipdb"},{"about":"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.","name":"measured-to-lean"},{"about":"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.","name":"pvt-envelope"},{"about":"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.","name":"build-proxy-docker"}],"agents":[],"args":[],"cast":null,"command":"tri fpga","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ABOUT_SOURCE":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","ACTIONS":["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"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri fpga","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fpga","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fpga","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fpga.rs","VARIANT":"Commands::Fpga","WHEN_TO_USE":"FPGA programming via the in-tree DLC10 driver (pure Rust).","WITNESS":"source-parse"},"health":"ok","id":"tri/fpga","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fpga.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/t27:tri/fpga","repo":"gHashTag/t27","schema":2,"searchText":"tri/fpga tri fpga fpga programming via the in-tree dlc10 driver (pure rust). fpga programming via the in-tree dlc10 driver (pure rust). idcode read and print the jtag idcode of the attached dlc10 cable target. idcode-cfg 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. sram program fpga sram (volatile -- lost on power-cycle). program program the on-board spi flash (non-volatile / persistent). flash-id read the spi flash jedec id via the jtag-to-spi bridge. status read the raw cfg_out status register. debug decode 7-series configuration registers for done=low diagnosis. load-sram 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). stat read and decode the fpga stat register via openfpgaloader. read-xadc 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`. synth-gf16 synthesize the gf16 4x4 matrix design through the openxc7 toolchain. output is written to `/gf16_matmul4x4_top.bit`. program-flash 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-flash dump spi flash contents to a file via openfpgaloader's jtag-to-spi bridge. bit-config parse the .bit header and print the configuration registers that affect master spi boot (cor0, cor1, wbstar, timer, ctl0, ctl1, idcode, bspi). round-trip-verify 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. boot-log 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. cold-por 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. smoke-gate 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. boot-protocol 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-cor0 patch the raw oscfsel field (cor0[22:17]) of a 7-series .bit file. cclk-variants generate a set of oscfsel variants from a single input .bit file. outputs one file per requested value to the given directory. cclk-sweep 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. sweep-report read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working cclk variant. measure-cclk 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`). flash-status 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. proxy-load 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. proxy-status 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. spi-raw 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). ir-probe 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. flash-id-debug 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-proxy 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. setup-openxc7-chipdb 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/`. measured-to-lean 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. pvt-envelope 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-proxy-docker 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.","sha256":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","skills":[],"source":"cli/tri/src/fpga.rs","specPath":"specs/tools/tri/fpga.t27","summary":{"en":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ru":"Программирование FPGA через встроенный драйвер DLC10 (чистый Rust)."},"typecheckOk":true,"variant":"Commands::Fpga","whenToUse":"FPGA programming via the in-tree DLC10 driver (pure Rust).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","actions":[{"about":"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.","name":"warnings"},{"about":"Run every gate script and its negative control; name the ones with none.","name":"sweep"},{"about":"Break each gate's failure path and demand its control notices.","name":"mutate"},{"about":"Open pull requests whose path-filtered CI never ran.","name":"prs"},{"about":"What the tree says is required, against what the ruleset requires.","name":"preview"},{"about":"Which interpreter each gate step is handed to, and who says so.","name":"shell"},{"about":"Gate steps whose PASS is reachable with the thing they check absent.","name":"quiet"},{"about":"Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","name":"fetches"},{"about":"Run every gate CI runs, in an EMPTY tree, and report what still passes.","name":"empty"},{"about":"","name":"required"},{"about":"List active workflows whose lifetime success count is zero.","name":"dead"},{"about":"Workflows with no recent run on the default branch: their green is about frequency, not health.","name":"tests"},{"about":"","name":"unmeasured"}],"agents":[],"args":[],"cast":null,"command":"tri gates","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find workflows that have never once succeeded.","ABOUT_SOURCE":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","ACTIONS":["warnings","sweep","mutate","prs","preview","shell","quiet","fetches","empty","required","dead","tests","unmeasured"],"ACTIONS_ABOUT":["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.",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri gates","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gates","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gates","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gates.rs","VARIANT":"Commands::Gates","WHEN_TO_USE":"Find workflows that have never once succeeded.","WITNESS":"source-parse"},"health":"ok","id":"tri/gates","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gates.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_gates","name":{"en":"tri gates"},"qualifiedId":"gHashTag/t27:tri/gates","repo":"gHashTag/t27","schema":2,"searchText":"tri/gates tri gates find workflows that have never once succeeded. find workflows that have never once succeeded. warnings 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. sweep run every gate script and its negative control; name the ones with none. mutate break each gate's failure path and demand its control notices. prs open pull requests whose path-filtered ci never ran. preview what the tree says is required, against what the ruleset requires. shell which interpreter each gate step is handed to, and who says so. quiet gate steps whose pass is reachable with the thing they check absent. fetches every bounded github fetch in this crate, and whether it can tell a page from a total. empty run every gate ci runs, in an empty tree, and report what still passes. required dead list active workflows whose lifetime success count is zero. tests workflows with no recent run on the default branch: their green is about frequency, not health. unmeasured","sha256":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","skills":[],"source":"cli/tri/src/gates.rs","specPath":"specs/tools/tri/gates.t27","summary":{"en":"Find workflows that have never once succeeded.","ru":"Находит воркфлоу, которые ни разу не завершались успешно."},"typecheckOk":true,"variant":"Commands::Gates","whenToUse":"Find workflows that have never once succeeded.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[{"letter":"C","ok":true},{"letter":"T","ok":true}],"args":[{"about":"","name":""}],"cast":null,"command":"tri gen","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Generates backends from a .t27 spec file using t27c.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["C","T"],"AGENTS_NOTE":".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).","ARGS":[""],"COMMAND":"tri gen","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gen","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gen","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Gen","WHEN_TO_USE":"Generates backends from a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/gen","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_gen","name":{"en":"tri gen"},"qualifiedId":"gHashTag/t27:tri/gen","repo":"gHashTag/t27","schema":2,"searchText":"tri/gen tri gen generates backends from a .t27 spec file using t27c. generates backends from a .t27 spec file using t27c. c t","sha256":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/gen.t27","summary":{"en":"Generates backends from a .t27 spec file using t27c.","ru":"Генерирует бэкенды из файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Gen","whenToUse":"Generates backends from a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","actions":[{"about":"Test binaries whose tests share one scratch directory.","name":"scratch"}],"agents":[],"args":[],"cast":null,"command":"tri harness","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ABOUT_SOURCE":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","ACTIONS":["scratch"],"ACTIONS_ABOUT":["Test binaries whose tests share one scratch directory."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri harness","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/harness","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/harness","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Harness","WHEN_TO_USE":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","WITNESS":"source-parse"},"health":"ok","id":"tri/harness","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_harness","name":{"en":"tri harness"},"qualifiedId":"gHashTag/t27:tri/harness","repo":"gHashTag/t27","schema":2,"searchText":"tri/harness tri harness source files no crate root reaches, and so nothing compiles. test-harness hygiene. source files no crate root reaches, and so nothing compiles. test-harness hygiene. scratch test binaries whose tests share one scratch directory.","sha256":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/harness.t27","summary":{"en":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ru":"Исходные файлы, до которых не доходит ни один корень крейта, и потому ничего не компилируется. Гигиена тестового харнесса."},"typecheckOk":true,"variant":"Commands::Harness","whenToUse":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[],"args":[{"about":"","name":""}],"cast":null,"command":"tri health","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns queen and swarm health status from .trinity state.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[""],"COMMAND":"tri health","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/health","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/health","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Health","WHEN_TO_USE":"Returns queen and swarm health status from .trinity state.","WITNESS":"source-parse"},"health":"ok","id":"tri/health","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_health","name":{"en":"tri health"},"qualifiedId":"gHashTag/t27:tri/health","repo":"gHashTag/t27","schema":2,"searchText":"tri/health tri health returns queen and swarm health status from .trinity state. returns queen and swarm health status from .trinity state.","sha256":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/health.t27","summary":{"en":"Returns queen and swarm health status from .trinity state.","ru":"Показывает состояние здоровья королевы и роя из состояния .trinity."},"typecheckOk":true,"variant":"Commands::Health","whenToUse":"Returns queen and swarm health status from .trinity state.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","actions":[{"about":"Run every migrated commit-time gate in sequence (l1-check + now-gate).","name":"pre-commit"},{"about":"A pull request whose title claims a compiler fix must carry a source file.","name":"fix-carries-source"},{"about":"Ask the required NOW gate's own script whether this push adds an entry.","name":"pre-push"},{"about":"L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","name":"commit-msg"},{"about":"L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","name":"l1-check"},{"about":"Verify a fresh `docs/now/-.md` entry exists.","name":"now-gate"},{"about":"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).","name":"session-gate"},{"about":"Which hooks git will actually run, and whose installer output is dead.","name":"status"}],"agents":[],"args":[],"cast":null,"command":"tri hooks","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Pure-Rust ports of repository commit / push gates.","ABOUT_SOURCE":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","ACTIONS":["pre-commit","fix-carries-source","pre-push","commit-msg","l1-check","now-gate","session-gate","status"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri hooks","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/hooks","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/hooks","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/hooks.rs","VARIANT":"Commands::Hooks","WHEN_TO_USE":"Pure-Rust ports of repository commit / push gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/hooks","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/hooks.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_hooks","name":{"en":"tri hooks"},"qualifiedId":"gHashTag/t27:tri/hooks","repo":"gHashTag/t27","schema":2,"searchText":"tri/hooks tri hooks pure-rust ports of repository commit / push gates. pure-rust ports of repository commit / push gates. pre-commit run every migrated commit-time gate in sequence (l1-check + now-gate). fix-carries-source a pull request whose title claims a compiler fix must carry a source file. pre-push ask the required now gate's own script whether this push adds an entry. commit-msg l1 traceability over the message being written, from the commit-msg hook. l1-check l1 traceability: last commit message must reference an issue (`closes #n` / `fixes #n` / `resolves #n` / `reference #n`). now-gate verify a fresh `docs/now/-.md` entry exists. session-gate 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). status which hooks git will actually run, and whose installer output is dead.","sha256":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","skills":[],"source":"cli/tri/src/hooks.rs","specPath":"specs/tools/tri/hooks.t27","summary":{"en":"Pure-Rust ports of repository commit / push gates.","ru":"Порты гейтов коммита/пуша репозитория на чистом Rust."},"typecheckOk":true,"variant":"Commands::Hooks","whenToUse":"Pure-Rust ports of repository commit / push gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","actions":[{"about":"Open issues whose title calls a workflow red, and what it does today.","name":"stale"},{"about":"Open issues that state a COUNT in the title, and a reproducible sample.","name":"numbers"},{"about":"Open issues whose figure is ANCHORED, so re-measuring it proves nothing.","name":"dated"}],"agents":[],"args":[],"cast":null,"command":"tri issues","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ABOUT_SOURCE":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","ACTIONS":["stale","numbers","dated"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri issues","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/issues","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/issues","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/issues.rs","VARIANT":"Commands::Issues","WHEN_TO_USE":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","WITNESS":"source-parse"},"health":"ok","id":"tri/issues","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/issues.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_issues","name":{"en":"tri issues"},"qualifiedId":"gHashTag/t27:tri/issues","repo":"gHashTag/t27","schema":2,"searchText":"tri/issues tri issues open issues whose headline calls a workflow red, against what that workflow concludes on master today. open issues whose headline calls a workflow red, against what that workflow concludes on master today. stale open issues whose title calls a workflow red, and what it does today. numbers open issues that state a count in the title, and a reproducible sample. dated open issues whose figure is anchored, so re-measuring it proves nothing.","sha256":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","skills":[],"source":"cli/tri/src/issues.rs","specPath":"specs/tools/tri/issues.t27","summary":{"en":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ru":"Открытые issue, чей заголовок называет воркфлоу красным, против того, к чему этот воркфлоу приходит на master сегодня."},"typecheckOk":true,"variant":"Commands::Issues","whenToUse":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","actions":[{"about":"Name every `break`/`continue` site in the generated Verilog and say what it lowered to.","name":"census"}],"agents":[],"args":[],"cast":null,"command":"tri jumps","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ABOUT_SOURCE":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","ACTIONS":["census"],"ACTIONS_ABOUT":["Name every `break`/`continue` site in the generated Verilog and say what it lowered to."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri jumps","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/jumps","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/jumps","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/jumps.rs","VARIANT":"Commands::Jumps","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/jumps","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/jumps.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_jumps","name":{"en":"tri jumps"},"qualifiedId":"gHashTag/t27:tri/jumps","repo":"gHashTag/t27","schema":2,"searchText":"tri/jumps tri jumps what happened to every `break` and `continue` the verilog emitter had to lower? 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. census name every `break`/`continue` site in the generated verilog and say what it lowered to.","sha256":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","skills":[],"source":"cli/tri/src/jumps.rs","specPath":"specs/tools/tri/jumps.t27","summary":{"en":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ru":"Что случилось с каждым `break` и `continue`, которые эмиттеру Verilog пришлось опустить?"},"typecheckOk":true,"variant":"Commands::Jumps","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","actions":[{"about":"Match arms whose comment names a construct the pattern does not cover.","name":"drift"}],"agents":[],"args":[],"cast":null,"command":"tri kinds","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Match arms whose own comment names a case the pattern omits.","ABOUT_SOURCE":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","ACTIONS":["drift"],"ACTIONS_ABOUT":["Match arms whose comment names a construct the pattern does not cover."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri kinds","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/kinds","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/kinds","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/kinddrift.rs","VARIANT":"Commands::Kinds","WHEN_TO_USE":"Match arms whose own comment names a case the pattern omits.","WITNESS":"source-parse"},"health":"ok","id":"tri/kinds","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/kinddrift.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_kinds","name":{"en":"tri kinds"},"qualifiedId":"gHashTag/t27:tri/kinds","repo":"gHashTag/t27","schema":2,"searchText":"tri/kinds tri kinds match arms whose own comment names a case the pattern omits. match arms whose own comment names a case the pattern omits. drift match arms whose comment names a construct the pattern does not cover.","sha256":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","skills":[],"source":"cli/tri/src/kinddrift.rs","specPath":"specs/tools/tri/kinds.t27","summary":{"en":"Match arms whose own comment names a case the pattern omits.","ru":"Ветви match, чей собственный комментарий называет случай, который паттерн пропускает."},"typecheckOk":true,"variant":"Commands::Kinds","whenToUse":"Match arms whose own comment names a case the pattern omits.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","actions":[{"about":"Completeness theorems whose model has no functions.","name":"vacuous"},{"about":"Proof files the build root does not reach, and so nothing compiles.","name":"reach"}],"agents":[],"args":[],"cast":{"commands":["tri lean vacuous","tri lean reach"],"id":"t27-tri-lean","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-lean/","src":"term/t27-tri-lean/session.cast","title":"tri lean: proofs that nothing compiles"},"command":"tri lean","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Completeness theorems whose Lean model is empty.","ABOUT_SOURCE":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","ACTIONS":["vacuous","reach"],"ACTIONS_ABOUT":["Completeness theorems whose model has no functions.","Proof files the build root does not reach, and so nothing compiles."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-lean/session.cast","COMMAND":"tri lean","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/lean","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/lean","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/leanvac.rs","VARIANT":"Commands::Lean","WHEN_TO_USE":"Completeness theorems whose Lean model is empty.","WITNESS":"source-parse"},"health":"ok","id":"tri/lean","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/leanvac.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_lean","name":{"en":"tri lean"},"qualifiedId":"gHashTag/t27:tri/lean","repo":"gHashTag/t27","schema":2,"searchText":"tri/lean tri lean completeness theorems whose lean model is empty. completeness theorems whose lean model is empty. vacuous completeness theorems whose model has no functions. reach proof files the build root does not reach, and so nothing compiles.","sha256":"63132dbe9a003cce04220c8a2348e84f871da78edb128a159618843e9f825ba0","skills":[],"source":"cli/tri/src/leanvac.rs","specPath":"specs/tools/tri/lean.t27","summary":{"en":"Completeness theorems whose Lean model is empty.","ru":"Теоремы полноты, у которых модель Lean пуста."},"typecheckOk":true,"variant":"Commands::Lean","whenToUse":"Completeness theorems whose Lean model is empty.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","actions":[{"about":"Plant a stale entry in each ledger and demand its gate fail.","name":"audit"}],"agents":[],"args":[],"cast":null,"command":"tri ledgers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does each ledger's gate notice when one of its entries stops being true?","ABOUT_SOURCE":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","ACTIONS":["audit"],"ACTIONS_ABOUT":["Plant a stale entry in each ledger and demand its gate fail."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri ledgers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ledgers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ledgers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/ledgers.rs","VARIANT":"Commands::Ledgers","WHEN_TO_USE":"Does each ledger's gate notice when one of its entries stops being true?","WITNESS":"source-parse"},"health":"ok","id":"tri/ledgers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/ledgers.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ledgers","name":{"en":"tri ledgers"},"qualifiedId":"gHashTag/t27:tri/ledgers","repo":"gHashTag/t27","schema":2,"searchText":"tri/ledgers tri ledgers does each ledger's gate notice when one of its entries stops being true? does each ledger's gate notice when one of its entries stops being true? audit plant a stale entry in each ledger and demand its gate fail.","sha256":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","skills":[],"source":"cli/tri/src/ledgers.rs","specPath":"specs/tools/tri/ledgers.t27","summary":{"en":"Does each ledger's gate notice when one of its entries stops being true?","ru":"Замечает ли гейт каждого леджера, когда одна из его записей перестаёт быть истинной?"},"typecheckOk":true,"variant":"Commands::Ledgers","whenToUse":"Does each ledger's gate notice when one of its entries stops being true?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","actions":[{"about":"Take the named claim, or say who already holds it.","name":"claim"}],"agents":[],"args":[],"cast":null,"command":"tri loop","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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.","ABOUT_SOURCE":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","ACTIONS":["claim"],"ACTIONS_ABOUT":["Take the named claim, or say who already holds it."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri loop","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/loop","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/loop","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/loopclaim.rs","VARIANT":"Commands::Loop","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/loop","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/loopclaim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_loop","name":{"en":"tri loop"},"qualifiedId":"gHashTag/t27:tri/loop","repo":"gHashTag/t27","schema":2,"searchText":"tri/loop tri loop 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. 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. claim take the named claim, or say who already holds it.","sha256":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","skills":[],"source":"cli/tri/src/loopclaim.rs","specPath":"specs/tools/tri/loop.t27","summary":{"en":"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.","ru":"Что падает на ветке по умолчанию прямо сейчас и с какого момента. Берёт именованную заявку, чтобы две сессии лупа не взяли одну задачу."},"typecheckOk":true,"variant":"Commands::Loop","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","actions":[],"agents":[],"args":[{"about":"The base this branch is supposed to carry. A ref, not a URL.","name":"--base"},{"about":"Also check the commits behind HEAD, not only HEAD itself.","name":"--depth"}],"cast":null,"command":"tri merging","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is a merge in flight here, and does this branch carry the base?","ABOUT_SOURCE":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri merging","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/merging","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/merging","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/inflight.rs","VARIANT":"Commands::Merging","WHEN_TO_USE":"Is a merge in flight here, and does this branch carry the base?","WITNESS":"source-parse"},"health":"ok","id":"tri/merging","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/inflight.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_merging","name":{"en":"tri merging"},"qualifiedId":"gHashTag/t27:tri/merging","repo":"gHashTag/t27","schema":2,"searchText":"tri/merging tri merging is a merge in flight here, and does this branch carry the base? is a merge in flight here, and does this branch carry the base?","sha256":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","skills":[],"source":"cli/tri/src/inflight.rs","specPath":"specs/tools/tri/merging.t27","summary":{"en":"Is a merge in flight here, and does this branch carry the base?","ru":"Идёт ли здесь мерж, и несёт ли эта ветка базу?"},"typecheckOk":true,"variant":"Commands::Merging","whenToUse":"Is a merge in flight here, and does this branch carry the base?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","actions":[],"agents":[],"args":[{"about":"Root of the spec tree.","name":"--specs-dir"},{"about":"Name every spec under each shape rather than only counting.","name":"--list"}],"cast":{"commands":["tri misread"],"id":"t27-tri-misread","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-misread/","src":"term/t27-tri-misread/session.cast","title":"tri misread: code that compiles and is wrong"},"command":"tri misread","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The specs the compiler reads WRONGLY. Every gate is green on them.","ABOUT_SOURCE":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--specs-dir: Root of the spec tree.","--list: Name every spec under each shape rather than only counting."],"CAST":"term/t27-tri-misread/session.cast","COMMAND":"tri misread","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/misread","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/misread","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/misread.rs","VARIANT":"Commands::Misread","WHEN_TO_USE":"The specs the compiler reads WRONGLY. Every gate is green on them.","WITNESS":"source-parse"},"health":"ok","id":"tri/misread","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/misread.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_misread","name":{"en":"tri misread"},"qualifiedId":"gHashTag/t27:tri/misread","repo":"gHashTag/t27","schema":2,"searchText":"tri/misread tri misread the specs the compiler reads wrongly. every gate is green on them. the specs the compiler reads wrongly. every gate is green on them.","sha256":"4a9acbb1459ea28a2b63dd53eb5c8a10234e66f14da305d75382fc849309ecd0","skills":[],"source":"cli/tri/src/misread.rs","specPath":"specs/tools/tri/misread.t27","summary":{"en":"The specs the compiler reads WRONGLY. Every gate is green on them.","ru":"Спеки, которые компилятор читает НЕВЕРНО. Все гейты на них зелёные."},"typecheckOk":true,"variant":"Commands::Misread","whenToUse":"The specs the compiler reads WRONGLY. Every gate is green on them.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","actions":[{"about":"List them.","name":"orphan"}],"agents":[],"args":[],"cast":null,"command":"tri mods","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri mods orphan` -- `.rs` files no crate root reaches.","ABOUT_SOURCE":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","ACTIONS":["orphan"],"ACTIONS_ABOUT":["List them."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri mods","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mods","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mods","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Mods","WHEN_TO_USE":"`tri mods orphan` -- `.rs` files no crate root reaches.","WITNESS":"source-parse"},"health":"ok","id":"tri/mods","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mods","name":{"en":"tri mods"},"qualifiedId":"gHashTag/t27:tri/mods","repo":"gHashTag/t27","schema":2,"searchText":"tri/mods tri mods `tri mods orphan` -- `.rs` files no crate root reaches. `tri mods orphan` -- `.rs` files no crate root reaches. orphan list them.","sha256":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/mods.t27","summary":{"en":"`tri mods orphan` -- `.rs` files no crate root reaches.","ru":"`tri mods orphan` -- файлы `.rs`, до которых не доходит ни один корень крейта."},"typecheckOk":true,"variant":"Commands::Mods","whenToUse":"`tri mods orphan` -- `.rs` files no crate root reaches.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","actions":[{"about":"Perturb each numeric literal in a file and report which ones the checker does not notice.","name":"run"}],"agents":[],"args":[],"cast":null,"command":"tri mutate","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find the constants in a checker that nothing actually checks.","ABOUT_SOURCE":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","ACTIONS":["run"],"ACTIONS_ABOUT":["Perturb each numeric literal in a file and report which ones the checker does not notice."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri mutate","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mutate","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mutate","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/mutate.rs","VARIANT":"Commands::Mutate","WHEN_TO_USE":"Find the constants in a checker that nothing actually checks.","WITNESS":"source-parse"},"health":"ok","id":"tri/mutate","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/mutate.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mutate","name":{"en":"tri mutate"},"qualifiedId":"gHashTag/t27:tri/mutate","repo":"gHashTag/t27","schema":2,"searchText":"tri/mutate tri mutate find the constants in a checker that nothing actually checks. find the constants in a checker that nothing actually checks. run perturb each numeric literal in a file and report which ones the checker does not notice.","sha256":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","skills":[],"source":"cli/tri/src/mutate.rs","specPath":"specs/tools/tri/mutate.t27","summary":{"en":"Find the constants in a checker that nothing actually checks.","ru":"Находит в чекере константы, которые на деле ничем не проверяются."},"typecheckOk":true,"variant":"Commands::Mutate","whenToUse":"Find the constants in a checker that nothing actually checks.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","actions":[{"about":"Write a docs/now/ entry: title, bullets, optional issue ref.","name":"add"},{"about":"Ask the REQUIRED `check` gate its own question, before pushing.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri now","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Write a docs/now/ entry without hand-writing the frame.","ABOUT_SOURCE":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","ACTIONS":["add","check"],"ACTIONS_ABOUT":["Write a docs/now/ entry: title, bullets, optional issue ref.","Ask the REQUIRED `check` gate its own question, before pushing."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri now","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/now","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/now","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/nownote.rs","VARIANT":"Commands::Now","WHEN_TO_USE":"Write a docs/now/ entry without hand-writing the frame.","WITNESS":"source-parse"},"health":"ok","id":"tri/now","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/nownote.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_now","name":{"en":"tri now"},"qualifiedId":"gHashTag/t27:tri/now","repo":"gHashTag/t27","schema":2,"searchText":"tri/now tri now write a docs/now/ entry without hand-writing the frame. write a docs/now/ entry without hand-writing the frame. add write a docs/now/ entry: title, bullets, optional issue ref. check ask the required `check` gate its own question, before pushing.","sha256":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","skills":[],"source":"cli/tri/src/nownote.rs","specPath":"specs/tools/tri/now.t27","summary":{"en":"Write a docs/now/ entry without hand-writing the frame.","ru":"Пишет запись docs/now/ без ручного набора рамки."},"typecheckOk":true,"variant":"Commands::Now","whenToUse":"Write a docs/now/ entry without hand-writing the frame.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","actions":[],"agents":[],"args":[{"about":"Also list every spec, not only the class tally.","name":"--names"},{"about":"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.","name":"--errors"},{"about":"Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","name":"--limit"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"cast":null,"command":"tri one-away","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Failing specs one defect from compiling, and what that defect is","ABOUT_SOURCE":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri one-away","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/one-away","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/one-away","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/oneaway.rs","VARIANT":"Commands::OneAway","WHEN_TO_USE":"Failing specs one defect from compiling, and what that defect is","WITNESS":"source-parse"},"health":"ok","id":"tri/one-away","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/oneaway.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_one_away","name":{"en":"tri one-away"},"qualifiedId":"gHashTag/t27:tri/one-away","repo":"gHashTag/t27","schema":2,"searchText":"tri/one-away tri one-away failing specs one defect from compiling, and what that defect is failing specs one defect from compiling, and what that defect is","sha256":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","skills":[],"source":"cli/tri/src/oneaway.rs","specPath":"specs/tools/tri/one-away.t27","summary":{"en":"Failing specs one defect from compiling, and what that defect is","ru":"Падающие спеки, которым до компиляции один дефект, и какой именно."},"typecheckOk":true,"variant":"Commands::OneAway","whenToUse":"Failing specs one defect from compiling, and what that defect is","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","actions":[{"about":"List gate and tool sources that name an input which is not in the tree.","name":"list"}],"agents":[],"args":[],"cast":null,"command":"tri orphaned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks whose input is not in the tree.","ABOUT_SOURCE":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List gate and tool sources that name an input which is not in the tree."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri orphaned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/orphaned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/orphaned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/orphaned.rs","VARIANT":"Commands::Orphaned","WHEN_TO_USE":"Checks whose input is not in the tree.","WITNESS":"source-parse"},"health":"ok","id":"tri/orphaned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/orphaned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_orphaned","name":{"en":"tri orphaned"},"qualifiedId":"gHashTag/t27:tri/orphaned","repo":"gHashTag/t27","schema":2,"searchText":"tri/orphaned tri orphaned checks whose input is not in the tree. checks whose input is not in the tree. list list gate and tool sources that name an input which is not in the tree.","sha256":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","skills":[],"source":"cli/tri/src/orphaned.rs","specPath":"specs/tools/tri/orphaned.t27","summary":{"en":"Checks whose input is not in the tree.","ru":"Проверки, чей вход отсутствует в дереве."},"typecheckOk":true,"variant":"Commands::Orphaned","whenToUse":"Checks whose input is not in the tree.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","actions":[{"about":"Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?","name":"landed"},{"about":"","name":"ready"}],"agents":[],"args":[],"cast":null,"command":"tri pr","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is this pull request actually safe to merge?","ABOUT_SOURCE":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","ACTIONS":["landed","ready"],"ACTIONS_ABOUT":["Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri pr","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/pr","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/pr","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prcheck.rs","VARIANT":"Commands::Pr","WHEN_TO_USE":"Is this pull request actually safe to merge?","WITNESS":"source-parse"},"health":"ok","id":"tri/pr","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prcheck.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_pr","name":{"en":"tri pr"},"qualifiedId":"gHashTag/t27:tri/pr","repo":"gHashTag/t27","schema":2,"searchText":"tri/pr tri pr is this pull request actually safe to merge? is this pull request actually safe to merge? landed classify every failing check and say plainly whether it is safe to merge. did this pull request's content actually reach the default branch? ready","sha256":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","skills":[],"source":"cli/tri/src/prcheck.rs","specPath":"specs/tools/tri/pr.t27","summary":{"en":"Is this pull request actually safe to merge?","ru":"Действительно ли этот pull request безопасно мержить?"},"typecheckOk":true,"variant":"Commands::Pr","whenToUse":"Is this pull request actually safe to merge?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","actions":[{"about":"Which specs are blocked only by prose, and how many lines that is.","name":"report"}],"agents":[],"args":[],"cast":{"commands":["tri prose report"],"id":"t27-tri-prose","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-prose/","src":"term/t27-tri-prose/session.cast","title":"tri prose report: prose, or code?"},"command":"tri prose","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs a literate author left prose in, and how far that prose is from code.","ABOUT_SOURCE":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","ACTIONS":["report"],"ACTIONS_ABOUT":["Which specs are blocked only by prose, and how many lines that is."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-prose/session.cast","COMMAND":"tri prose","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/prose","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/prose","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prose.rs","VARIANT":"Commands::Prose","WHEN_TO_USE":"Specs a literate author left prose in, and how far that prose is from code.","WITNESS":"source-parse"},"health":"ok","id":"tri/prose","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prose.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_prose","name":{"en":"tri prose"},"qualifiedId":"gHashTag/t27:tri/prose","repo":"gHashTag/t27","schema":2,"searchText":"tri/prose tri prose specs a literate author left prose in, and how far that prose is from code. specs a literate author left prose in, and how far that prose is from code. report which specs are blocked only by prose, and how many lines that is.","sha256":"335037d593359d8b267fecdfadeb7166f7ad5a262177d4214159e5c239020118","skills":[],"source":"cli/tri/src/prose.rs","specPath":"specs/tools/tri/prose.t27","summary":{"en":"Specs a literate author left prose in, and how far that prose is from code.","ru":"Спеки, в которых литературный автор оставил прозу, и насколько эта проза далека от кода."},"typecheckOk":true,"variant":"Commands::Prose","whenToUse":"Specs a literate author left prose in, and how far that prose is from code.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","actions":[{"about":"Every quantified clause, its binders, and the size of its domain.","name":"report"},{"about":"Every line carrying a quantifier keyword, and whether the census read it.","name":"audit"}],"agents":[],"args":[],"cast":null,"command":"tri quantifiers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Every quantified clause, its binders, and the size of its domain.","ABOUT_SOURCE":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","ACTIONS":["report","audit"],"ACTIONS_ABOUT":["Every quantified clause, its binders, and the size of its domain.","Every line carrying a quantifier keyword, and whether the census read it."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri quantifiers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/quantifiers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/quantifiers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/quant.rs","VARIANT":"Commands::Quantifiers","WHEN_TO_USE":"Every quantified clause, its binders, and the size of its domain.","WITNESS":"source-parse"},"health":"ok","id":"tri/quantifiers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/quant.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_quantifiers","name":{"en":"tri quantifiers"},"qualifiedId":"gHashTag/t27:tri/quantifiers","repo":"gHashTag/t27","schema":2,"searchText":"tri/quantifiers tri quantifiers every quantified clause, its binders, and the size of its domain. every quantified clause, its binders, and the size of its domain. report every quantified clause, its binders, and the size of its domain. audit every line carrying a quantifier keyword, and whether the census read it.","sha256":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","skills":[],"source":"cli/tri/src/quant.rs","specPath":"specs/tools/tri/quantifiers.t27","summary":{"en":"Every quantified clause, its binders, and the size of its domain.","ru":"Каждая квантифицированная клауза, её связанные переменные и размер её домена."},"typecheckOk":true,"variant":"Commands::Quantifiers","whenToUse":"Every quantified clause, its binders, and the size of its domain.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/red.rs:1","actions":[{"about":"Show workflows whose most recent run on the default branch failed.","name":"now"},{"about":"Which STEP each recent failure of one workflow died at, oldest first.","name":"why"}],"agents":[],"args":[],"cast":null,"command":"tri red","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri red` -- what is failing on main right now, and since when.","ABOUT_SOURCE":"//! module doc, cli/tri/src/red.rs:1","ACTIONS":["now","why"],"ACTIONS_ABOUT":["Show workflows whose most recent run on the default branch failed.","Which STEP each recent failure of one workflow died at, oldest first."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri red","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/red","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/red","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/red.rs","VARIANT":"Commands::Red","WHEN_TO_USE":"`tri red` -- what is failing on main right now, and since when.","WITNESS":"source-parse"},"health":"ok","id":"tri/red","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/red.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_red","name":{"en":"tri red"},"qualifiedId":"gHashTag/t27:tri/red","repo":"gHashTag/t27","schema":2,"searchText":"tri/red tri red `tri red` -- what is failing on main right now, and since when. `tri red` -- what is failing on main right now, and since when. now show workflows whose most recent run on the default branch failed. why which step each recent failure of one workflow died at, oldest first.","sha256":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","skills":[],"source":"cli/tri/src/red.rs","specPath":"specs/tools/tri/red.t27","summary":{"en":"`tri red` -- what is failing on main right now, and since when.","ru":"`tri red` -- что падает на main прямо сейчас и с какого момента."},"typecheckOk":true,"variant":"Commands::Red","whenToUse":"`tri red` -- what is failing on main right now, and since when.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","actions":[{"about":"Rewrite FROZEN_HASH from the current bytes of the sealed file.","name":"write"},{"about":"Report whether the seal matches, and exit non-zero if it does not.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri reseal","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recompute the FROZEN_HASH seal from the file it seals.","ABOUT_SOURCE":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","ACTIONS":["write","check"],"ACTIONS_ABOUT":["Rewrite FROZEN_HASH from the current bytes of the sealed file.","Report whether the seal matches, and exit non-zero if it does not."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri reseal","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/reseal","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/reseal","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/reseal.rs","VARIANT":"Commands::Reseal","WHEN_TO_USE":"Recompute the FROZEN_HASH seal from the file it seals.","WITNESS":"source-parse"},"health":"ok","id":"tri/reseal","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/reseal.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_reseal","name":{"en":"tri reseal"},"qualifiedId":"gHashTag/t27:tri/reseal","repo":"gHashTag/t27","schema":2,"searchText":"tri/reseal tri reseal recompute the frozen_hash seal from the file it seals. recompute the frozen_hash seal from the file it seals. write rewrite frozen_hash from the current bytes of the sealed file. check report whether the seal matches, and exit non-zero if it does not.","sha256":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","skills":[],"source":"cli/tri/src/reseal.rs","specPath":"specs/tools/tri/reseal.t27","summary":{"en":"Recompute the FROZEN_HASH seal from the file it seals.","ru":"Пересчитывает печать FROZEN_HASH по файлу, который она запечатывает."},"typecheckOk":true,"variant":"Commands::Reseal","whenToUse":"Recompute the FROZEN_HASH seal from the file it seals.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","actions":[{"about":"Run the five structural checks on a design directory.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri rtl","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ABOUT_SOURCE":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","ACTIONS":["check"],"ACTIONS_ABOUT":["Run the five structural checks on a design directory."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri rtl","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/rtl","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/rtl","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/rtl.rs","VARIANT":"Commands::Rtl","WHEN_TO_USE":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","WITNESS":"source-parse"},"health":"ok","id":"tri/rtl","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/rtl.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_rtl","name":{"en":"tri rtl"},"qualifiedId":"gHashTag/t27:tri/rtl","repo":"gHashTag/t27","schema":2,"searchText":"tri/rtl tri rtl the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. check run the five structural checks on a design directory.","sha256":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","skills":[],"source":"cli/tri/src/rtl.rs","specPath":"specs/tools/tri/rtl.t27","summary":{"en":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ru":"Структурная проверка, которую предлагает t27.ai, локально: пять вердиктов, версия yosys рядом с числами и никаких заявлений о корректности."},"typecheckOk":true,"variant":"Commands::Rtl","whenToUse":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","actions":[{"about":"Is the built compiler newer than the source the seals are checked against?","name":"fresh"},{"about":"Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","name":"drift"},{"about":"Specs that carry more than one seal, and which of those pairs disagree.","name":"twins"},{"about":"Copy the NEWEST seal's claims onto its twins, after a re-seal.","name":"sync-twins"},{"about":"Seals that record `gen_hash=none` -- a spec that produced no output, sealed.","name":"hollow"}],"agents":[],"args":[],"cast":{"commands":["tri seals fresh","tri seals hollow"],"id":"t27-tri-seals","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-seals/","src":"term/t27-tri-seals/session.cast","title":"tri seals: hollow seals that pass every check"},"command":"tri seals","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What `.trinity/seals` says about a spec, when it says it twice.","ABOUT_SOURCE":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","ACTIONS":["fresh","drift","twins","sync-twins","hollow"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-seals/session.cast","COMMAND":"tri seals","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/seals","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/seals","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/seals.rs","VARIANT":"Commands::Seals","WHEN_TO_USE":"What `.trinity/seals` says about a spec, when it says it twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/seals","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/seals.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_seals","name":{"en":"tri seals"},"qualifiedId":"gHashTag/t27:tri/seals","repo":"gHashTag/t27","schema":2,"searchText":"tri/seals tri seals what `.trinity/seals` says about a spec, when it says it twice. what `.trinity/seals` says about a spec, when it says it twice. fresh is the built compiler newer than the source the seals are checked against? drift seals whose claims no longer match what the compiler produces, and the one command that repairs them. twins specs that carry more than one seal, and which of those pairs disagree. sync-twins copy the newest seal's claims onto its twins, after a re-seal. hollow seals that record `gen_hash=none` -- a spec that produced no output, sealed.","sha256":"ad21abf89970a7fc3b06e3459be5bbd2e8e8110fd0b76b0bbfa7e26676910423","skills":[],"source":"cli/tri/src/seals.rs","specPath":"specs/tools/tri/seals.t27","summary":{"en":"What `.trinity/seals` says about a spec, when it says it twice.","ru":"Что `.trinity/seals` говорит о спеке, когда говорит это дважды."},"typecheckOk":true,"variant":"Commands::Seals","whenToUse":"What `.trinity/seals` says about a spec, when it says it twice.","witness":"source-parse"},{"aboutSource":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","actions":[],"agents":[],"args":[{"about":"","name":"--addr"}],"cast":null,"command":"tri serve","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ABOUT_SOURCE":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--addr"],"COMMAND":"tri serve","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/serve","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/serve","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Serve","WHEN_TO_USE":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","WITNESS":"source-parse"},"health":"ok","id":"tri/serve","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_serve","name":{"en":"tri serve"},"qualifiedId":"gHashTag/t27:tri/serve","repo":"gHashTag/t27","schema":2,"searchText":"tri/serve tri serve serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on . serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on .","sha256":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/serve.t27","summary":{"en":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ru":"Поднимает HTTP API trinity depin на axum: POST /prove, GET /epoch-challenge, GET /health; печатает «trinity depin v0.1.0 -- listening on »."},"typecheckOk":true,"variant":"Commands::Serve","whenToUse":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","witness":"source-parse"},{"aboutSource":"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","actions":[{"about":"Write a new lesson to the spool, unnumbered.","name":"add"},{"about":"Fold every spooled lesson into SKILL.md, numbering them on the way in.","name":"fold"},{"about":"Check every SKILL.md's section numbering for collisions.","name":"check"},{"about":"Sections whose body was cut short at some point in the file's history.","name":"lost"},{"about":"Every cross-reference in the skills, and whether it resolves.","name":"refs"},{"about":"Sections that state a FIGURE, and which of those a reader can re-take.","name":"claims"},{"about":"Move sections you appended to the numbers the base branch left free.","name":"renumber"},{"about":"","name":"begin"},{"about":"","name":"end"}],"agents":[],"args":[],"cast":null,"command":"tri skill","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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).","ABOUT_SOURCE":"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","ACTIONS":["add","fold","check","lost","refs","claims","renumber","begin","end"],"ACTIONS_ABOUT":["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.","",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri skill","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/skill","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/skill","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Skill","WHEN_TO_USE":"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).","WITNESS":"source-parse"},"health":"ok","id":"tri/skill","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_skill","name":{"en":"tri skill"},"qualifiedId":"gHashTag/t27:tri/skill","repo":"gHashTag/t27","schema":2,"searchText":"tri/skill tri skill 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). 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). add write a new lesson to the spool, unnumbered. fold fold every spooled lesson into skill.md, numbering them on the way in. check check every skill.md's section numbering for collisions. lost sections whose body was cut short at some point in the file's history. refs every cross-reference in the skills, and whether it resolves. claims sections that state a figure, and which of those a reader can re-take. renumber move sections you appended to the numbers the base branch left free. begin end","sha256":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/skill.t27","summary":{"en":"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).","ru":"Начинает новую сессию скилла PHI LOOP, привязанную к issue; завершает активную сессию. Действия add/fold/check/lost/refs/claims/renumber ведут спул уроков SKILL.md и описаны в своих clap-доках."},"typecheckOk":true,"variant":"Commands::Skill","whenToUse":"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).","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[],"args":[],"cast":null,"command":"tri status","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri status","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/status","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/status","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Status","WHEN_TO_USE":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","WITNESS":"source-parse"},"health":"ok","id":"tri/status","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_status","name":{"en":"tri status"},"qualifiedId":"gHashTag/t27:tri/status","repo":"gHashTag/t27","schema":2,"searchText":"tri/status tri status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. returns phi loop status including active skill, cell, issue binding, and uncommitted changes.","sha256":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/status.t27","summary":{"en":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ru":"Показывает статус PHI LOOP: активный скилл, ячейку, привязку к issue и незакоммиченные изменения."},"typecheckOk":true,"variant":"Commands::Status","whenToUse":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","actions":[{"about":"Synthesise a top across values of one parameter and report the trend.","name":"area"}],"agents":[],"args":[],"cast":null,"command":"tri sweep","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise across a parameter and check the area actually moves.","ABOUT_SOURCE":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top across values of one parameter and report the trend."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri sweep","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/sweep","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/sweep","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/sweep.rs","VARIANT":"Commands::Sweep","WHEN_TO_USE":"Synthesise across a parameter and check the area actually moves.","WITNESS":"source-parse"},"health":"ok","id":"tri/sweep","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/sweep.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_sweep","name":{"en":"tri sweep"},"qualifiedId":"gHashTag/t27:tri/sweep","repo":"gHashTag/t27","schema":2,"searchText":"tri/sweep tri sweep synthesise across a parameter and check the area actually moves. synthesise across a parameter and check the area actually moves. area synthesise a top across values of one parameter and report the trend.","sha256":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","skills":[],"source":"cli/tri/src/sweep.rs","specPath":"specs/tools/tri/sweep.t27","summary":{"en":"Synthesise across a parameter and check the area actually moves.","ru":"Синтез по параметру с проверкой, что площадь действительно меняется."},"typecheckOk":true,"variant":"Commands::Sweep","whenToUse":"Synthesise across a parameter and check the area actually moves.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","actions":[{"about":"Synthesise a top module and report LUT/DSP/FF/CARRY4 counts.","name":"area"}],"agents":[],"args":[],"cast":null,"command":"tri synth","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise a top module and report area, with the instrument named.","ABOUT_SOURCE":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top module and report LUT/DSP/FF/CARRY4 counts."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri synth","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/synth","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/synth","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/synth.rs","VARIANT":"Commands::Synth","WHEN_TO_USE":"Synthesise a top module and report area, with the instrument named.","WITNESS":"source-parse"},"health":"ok","id":"tri/synth","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/synth.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_synth","name":{"en":"tri synth"},"qualifiedId":"gHashTag/t27:tri/synth","repo":"gHashTag/t27","schema":2,"searchText":"tri/synth tri synth synthesise a top module and report area, with the instrument named. synthesise a top module and report area, with the instrument named. area synthesise a top module and report lut/dsp/ff/carry4 counts.","sha256":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","skills":[],"source":"cli/tri/src/synth.rs","specPath":"specs/tools/tri/synth.t27","summary":{"en":"Synthesise a top module and report area, with the instrument named.","ru":"Синтезирует top-модуль и сообщает площадь с указанием инструмента."},"typecheckOk":true,"variant":"Commands::Synth","whenToUse":"Synthesise a top module and report area, with the instrument named.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","actions":[],"agents":[{"letter":"T","ok":true},{"letter":"V","ok":true}],"args":[{"about":"","name":""}],"cast":null,"command":"tri test","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Runs tests for a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["T","V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test -- Run conformance tests); .claude/agents/trinity.md:70 (7. Verify - Run tri test).","ARGS":[""],"COMMAND":"tri test","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/test","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/test","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Test","WHEN_TO_USE":"Runs tests for a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/test","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/t27:tri/test","repo":"gHashTag/t27","schema":2,"searchText":"tri/test tri test runs tests for a .t27 spec file using t27c. runs tests for a .t27 spec file using t27c. t v","sha256":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/test.t27","summary":{"en":"Runs tests for a .t27 spec file using t27c.","ru":"Запускает тесты для файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Test","whenToUse":"Runs tests for a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"Words to look for. A row matches on any; rows carrying more come first.","name":""},{"about":"How many recent commits on the base branch to read.","name":"--commits"}],"cast":null,"command":"tri topic","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Has anyone already done this, or are they doing it now?","ABOUT_SOURCE":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[": 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."],"COMMAND":"tri topic","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/topic","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/topic","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Topic","WHEN_TO_USE":"Has anyone already done this, or are they doing it now?","WITNESS":"source-parse"},"health":"ok","id":"tri/topic","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_topic","name":{"en":"tri topic"},"qualifiedId":"gHashTag/t27:tri/topic","repo":"gHashTag/t27","schema":2,"searchText":"tri/topic tri topic has anyone already done this, or are they doing it now? has anyone already done this, or are they doing it now?","sha256":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/topic.t27","summary":{"en":"Has anyone already done this, or are they doing it now?","ru":"Кто-нибудь уже делал это или делает сейчас?"},"typecheckOk":true,"variant":"Commands::Topic","whenToUse":"Has anyone already done this, or are they doing it now?","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/types_dup.rs:1","actions":[{"about":"Type names with more than one definition in the spec tree.","name":"dup"},{"about":"Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","name":"ratchet"},{"about":"Cross-check the written classification against what the tree says today.","name":"classified"},{"about":"Names defined more than once INSIDE ONE FILE.","name":"redef"}],"agents":[],"args":[],"cast":null,"command":"tri types","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"One type name, more than one definition.","ABOUT_SOURCE":"//! module doc, cli/tri/src/types_dup.rs:1","ACTIONS":["dup","ratchet","classified","redef"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri types","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/types","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/types","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/types_dup.rs","VARIANT":"Commands::Types","WHEN_TO_USE":"One type name, more than one definition.","WITNESS":"source-parse"},"health":"ok","id":"tri/types","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/types_dup.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_types","name":{"en":"tri types"},"qualifiedId":"gHashTag/t27:tri/types","repo":"gHashTag/t27","schema":2,"searchText":"tri/types tri types one type name, more than one definition. one type name, more than one definition. dup type names with more than one definition in the spec tree. ratchet hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away. classified cross-check the written classification against what the tree says today. redef names defined more than once inside one file.","sha256":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","skills":[],"source":"cli/tri/src/types_dup.rs","specPath":"specs/tools/tri/types.t27","summary":{"en":"One type name, more than one definition.","ru":"Одно имя типа, больше одного определения."},"typecheckOk":true,"variant":"Commands::Types","whenToUse":"One type name, more than one definition.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/unparsed.rs:1","actions":[{"about":"Rank the constructs that stop the compiler, most specs first.","name":"report"},{"about":"For each unreadable spec, the ITEM whose presence causes the failure.","name":"locate"},{"about":"Cross-check the census against an INDEPENDENTLY built population.","name":"agree"},{"about":"Run every construct's minimal source and say which the compiler rejects.","name":"probe"}],"agents":[],"args":[],"cast":null,"command":"tri unparsed","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ABOUT_SOURCE":"//! module doc, cli/tri/src/unparsed.rs:1","ACTIONS":["report","locate","agree","probe"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri unparsed","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/unparsed","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/unparsed","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/unparsed.rs","VARIANT":"Commands::Unparsed","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","WITNESS":"source-parse"},"health":"ok","id":"tri/unparsed","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/unparsed.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_unparsed","name":{"en":"tri unparsed"},"qualifiedId":"gHashTag/t27:tri/unparsed","repo":"gHashTag/t27","schema":2,"searchText":"tri/unparsed tri unparsed specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. report rank the constructs that stop the compiler, most specs first. locate for each unreadable spec, the item whose presence causes the failure. agree cross-check the census against an independently built population. probe run every construct's minimal source and say which the compiler rejects.","sha256":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","skills":[],"source":"cli/tri/src/unparsed.rs","specPath":"specs/tools/tri/unparsed.t27","summary":{"en":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по КОНСТРУКЦИИ, которая его останавливает, -- и каждая конструкция, подтверждённая живой пробой."},"typecheckOk":true,"variant":"Commands::Unparsed","whenToUse":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","actions":[{"about":"Generate a module's Verilog and execute its registered vectors.","name":"run"},{"about":"Inventory every vector file: executed, debt, or aspirational.","name":"debt"}],"agents":[],"args":[],"cast":{"commands":["tri vectors debt"],"id":"t27-tri-vectors","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-vectors/","src":"term/t27-tri-vectors/session.cast","title":"tri vectors debt: tests that are prose"},"command":"tri vectors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ABOUT_SOURCE":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","ACTIONS":["run","debt"],"ACTIONS_ABOUT":["Generate a module's Verilog and execute its registered vectors.","Inventory every vector file: executed, debt, or aspirational."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-vectors/session.cast","COMMAND":"tri vectors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vectors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vectors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vectors.rs","VARIANT":"Commands::Vectors","WHEN_TO_USE":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","WITNESS":"source-parse"},"health":"ok","id":"tri/vectors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vectors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vectors","name":{"en":"tri vectors"},"qualifiedId":"gHashTag/t27:tri/vectors","repo":"gHashTag/t27","schema":2,"searchText":"tri/vectors tri vectors the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. run generate a module's verilog and execute its registered vectors. debt inventory every vector file: executed, debt, or aspirational.","sha256":"6db1f366c9e6925e5f5ea2a207b82507aee732a2b310ab4f5f55bfc060908b83","skills":[],"source":"cli/tri/src/vectors.rs","specPath":"specs/tools/tri/vectors.t27","summary":{"en":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ru":"Реестр исполняемых векторов: запустить векторы модуля или проинвентаризировать, какие файлы исполняются, а какие только показываются."},"typecheckOk":true,"variant":"Commands::Vectors","whenToUse":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[{"letter":"V","ok":true}],"args":[{"about":"","name":"--toxic"}],"cast":null,"command":"tri verdict","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks for toxic regressions by analyzing swarm health metrics.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["V"],"AGENTS_NOTE":".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.","ARGS":["--toxic"],"COMMAND":"tri verdict","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/verdict","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/verdict","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Verdict","WHEN_TO_USE":"Checks for toxic regressions by analyzing swarm health metrics.","WITNESS":"source-parse"},"health":"ok","id":"tri/verdict","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_verdict","name":{"en":"tri verdict"},"qualifiedId":"gHashTag/t27:tri/verdict","repo":"gHashTag/t27","schema":2,"searchText":"tri/verdict tri verdict checks for toxic regressions by analyzing swarm health metrics. checks for toxic regressions by analyzing swarm health metrics. v","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/verdict.t27","summary":{"en":"Checks for toxic regressions by analyzing swarm health metrics.","ru":"Проверяет токсичные регрессии, анализируя метрики здоровья роя."},"typecheckOk":true,"variant":"Commands::Verdict","whenToUse":"Checks for toxic regressions by analyzing swarm health metrics.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","actions":[{"about":"Walk the corpus through `t27c icarus-simulate` and print the funnel.","name":"funnel"}],"agents":[],"args":[],"cast":null,"command":"tri vsim","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"How far each spec gets when its generated Verilog is actually RUN.","ABOUT_SOURCE":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","ACTIONS":["funnel"],"ACTIONS_ABOUT":["Walk the corpus through `t27c icarus-simulate` and print the funnel."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri vsim","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vsim","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vsim","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vsim.rs","VARIANT":"Commands::Vsim","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/vsim","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vsim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vsim","name":{"en":"tri vsim"},"qualifiedId":"gHashTag/t27:tri/vsim","repo":"gHashTag/t27","schema":2,"searchText":"tri/vsim tri vsim how far each spec gets when its generated verilog is actually run. 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. funnel walk the corpus through `t27c icarus-simulate` and print the funnel.","sha256":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","skills":[],"source":"cli/tri/src/vsim.rs","specPath":"specs/tools/tri/vsim.t27","summary":{"en":"How far each spec gets when its generated Verilog is actually RUN.","ru":"Как далеко доходит каждая спека, когда её сгенерированный Verilog действительно ЗАПУСКАЮТ."},"typecheckOk":true,"variant":"Commands::Vsim","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","actions":[],"agents":[],"args":[{"about":"Record `origin/master` as the base of a measurement starting now.","name":"--start"},{"about":"Report whether the recorded base is still the tip, and refuse if it is not.","name":"--check"},{"about":"The ref the measurement is against. Defaults to `origin/master`.","name":"--base"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"cast":null,"command":"tri window","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Was the base you measured against still the tip when you reported?","ABOUT_SOURCE":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri window","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/window","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/window","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/window.rs","VARIANT":"Commands::Window","WHEN_TO_USE":"Was the base you measured against still the tip when you reported?","WITNESS":"source-parse"},"health":"ok","id":"tri/window","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/window.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_window","name":{"en":"tri window"},"qualifiedId":"gHashTag/t27:tri/window","repo":"gHashTag/t27","schema":2,"searchText":"tri/window tri window was the base you measured against still the tip when you reported? was the base you measured against still the tip when you reported?","sha256":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","skills":[],"source":"cli/tri/src/window.rs","specPath":"specs/tools/tri/window.t27","summary":{"en":"Was the base you measured against still the tip when you reported?","ru":"Была ли база, относительно которой вы мерили, всё ещё вершиной, когда вы отчитывались?"},"typecheckOk":true,"variant":"Commands::Window","whenToUse":"Was the base you measured against still the tip when you reported?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","actions":[],"agents":[],"args":[{"about":"Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","name":"--size"},{"about":"Print every tree, not only those holding work or unreadable.","name":"--all"}],"cast":null,"command":"tri worktrees","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the checkouts on this disk are holding. Deletes nothing.","ABOUT_SOURCE":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri worktrees","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/worktrees","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/worktrees","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/trees.rs","VARIANT":"Commands::Worktrees","WHEN_TO_USE":"What the checkouts on this disk are holding. Deletes nothing.","WITNESS":"source-parse"},"health":"ok","id":"tri/worktrees","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/trees.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_worktrees","name":{"en":"tri worktrees"},"qualifiedId":"gHashTag/t27:tri/worktrees","repo":"gHashTag/t27","schema":2,"searchText":"tri/worktrees tri worktrees what the checkouts on this disk are holding. deletes nothing. what the checkouts on this disk are holding. deletes nothing.","sha256":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","skills":[],"source":"cli/tri/src/trees.rs","specPath":"specs/tools/tri/worktrees.t27","summary":{"en":"What the checkouts on this disk are holding. Deletes nothing.","ru":"Что держат чекауты на этом диске. Ничего не удаляет."},"typecheckOk":true,"variant":"Commands::Worktrees","whenToUse":"What the checkouts on this disk are holding. Deletes nothing.","witness":"source-parse"}],"version":1,"parts":[{"path":"tools/spec-tools-trios.json","sha256":"87d01a2d2330ecab527b37fb2461aebc3a489a7172994e1b7f63126a73cd8b91","count":295},{"path":"tools/spec-tools-trinity.json","sha256":"823271fc319a57bbbd2411c50a4f4858ea5943ddfde17e6bf243beb52d9856cc","count":254}]} +{"collisions":[{"name":"cell","t27":"gHashTag/t27:tri/cell","trinity":"gHashTag/trinity:tri/cell"},{"name":"doctor","t27":"gHashTag/t27:tri/doctor","trinity":"gHashTag/trinity:tri/doctor"},{"name":"experience","t27":"gHashTag/t27:tri/experience","trinity":"gHashTag/trinity:tri/experience"},{"name":"fmt","t27":"gHashTag/t27:tri/fmt","trinity":"gHashTag/trinity:tri/fmt"},{"name":"fpga","t27":"gHashTag/t27:tri/fpga","trinity":"gHashTag/trinity:tri/fpga"},{"name":"gen","t27":"gHashTag/t27:tri/gen","trinity":"gHashTag/trinity:tri/gen"},{"name":"loop","t27":"gHashTag/t27:tri/loop","trinity":"gHashTag/trinity:tri/loop"},{"name":"pr","t27":"gHashTag/t27:tri/pr","trinity":"gHashTag/trinity:tri/pr"},{"name":"serve","t27":"gHashTag/t27:tri/serve","trinity":"gHashTag/trinity:tri/serve"},{"name":"status","t27":"gHashTag/t27:tri/status","trinity":"gHashTag/trinity:tri/status"},{"name":"test","t27":"gHashTag/t27:tri/test","trinity":"gHashTag/trinity:tri/test"},{"name":"verdict","t27":"gHashTag/t27:tri/verdict","trinity":"gHashTag/trinity:tri/verdict"}],"compilerWasmSha256":"bb39b9a5ca412a2695ab6a20a54e222933e10edaf08ef053670e4974d08f113f","contentSha256":"4a23f643d27dcf0416167e076601ab1e612a65a486d539cf658b739533cbe46d","counts":{"byRepo":{"gHashTag/BrowserOS":295,"gHashTag/t27":58,"gHashTag/trinity":254},"byWitness":{"help-output":1,"registry-export":29,"runtime":0,"source-parse":577},"collisions":12,"enabled":607,"mcp":11,"mcpExternal":6,"mcpTools":255,"mcpWithTools":6,"schema2":607,"specs":607,"tri":596,"triActions":146,"triWithActions":44,"trinityTri":249,"triosTri":295,"typecheckOk":607,"withAgents":6,"withCast":35,"withSkills":5},"generatedAt":"2026-10-04T18:34:00.105Z","groups":{"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"triByAgent":{"-":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer","gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]},"triByRepo":{"gHashTag/BrowserOS":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer"],"gHashTag/t27":["tri/abandoned","tri/cell","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/experience","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/gen","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/test","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/verdict","tri/vsim","tri/window","tri/worktrees"],"gHashTag/trinity":["gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo"]}},"i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":92,"total":607},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":["gHashTag/BrowserOS:tri/ab","gHashTag/BrowserOS:tri/accept-rate","gHashTag/BrowserOS:tri/agree","gHashTag/BrowserOS:tri/anom","gHashTag/BrowserOS:tri/anomalies","gHashTag/BrowserOS:tri/author","gHashTag/BrowserOS:tri/backlog","gHashTag/BrowserOS:tri/blog","gHashTag/BrowserOS:tri/board","gHashTag/BrowserOS:tri/boundary","gHashTag/BrowserOS:tri/brief-gate","gHashTag/BrowserOS:tri/cast","gHashTag/BrowserOS:tri/channel","gHashTag/BrowserOS:tri/chat","gHashTag/BrowserOS:tri/ci-diff","gHashTag/BrowserOS:tri/clocks","gHashTag/BrowserOS:tri/close-done","gHashTag/BrowserOS:tri/container","gHashTag/BrowserOS:tri/coverage","gHashTag/BrowserOS:tri/cycle","gHashTag/BrowserOS:tri/cycle-anom","gHashTag/BrowserOS:tri/cycle-anomalies","gHashTag/BrowserOS:tri/cycle-dash","gHashTag/BrowserOS:tri/cycle-doctor","gHashTag/BrowserOS:tri/cycle-html","gHashTag/BrowserOS:tri/cycle-log","gHashTag/BrowserOS:tri/cycle-note","gHashTag/BrowserOS:tri/cycle-repair","gHashTag/BrowserOS:tri/cycle-sense","gHashTag/BrowserOS:tri/dash","gHashTag/BrowserOS:tri/dash2","gHashTag/BrowserOS:tri/deploy-wait","gHashTag/BrowserOS:tri/devkit","gHashTag/BrowserOS:tri/drift","gHashTag/BrowserOS:tri/driver","gHashTag/BrowserOS:tri/exposure","gHashTag/BrowserOS:tri/facts","gHashTag/BrowserOS:tri/failures","gHashTag/BrowserOS:tri/feed","gHashTag/BrowserOS:tri/fence","gHashTag/BrowserOS:tri/fields","gHashTag/BrowserOS:tri/flaky","gHashTag/BrowserOS:tri/forked-files","gHashTag/BrowserOS:tri/fp-check","gHashTag/BrowserOS:tri/fpga","gHashTag/BrowserOS:tri/fpga-audit","gHashTag/BrowserOS:tri/fpga-batch","gHashTag/BrowserOS:tri/fpga-batch-cosim","gHashTag/BrowserOS:tri/fpga-batch-rehearsal","gHashTag/BrowserOS:tri/fpga-budget","gHashTag/BrowserOS:tri/fpga-build","gHashTag/BrowserOS:tri/fpga-claim","gHashTag/BrowserOS:tri/fpga-cost","gHashTag/BrowserOS:tri/fpga-decode","gHashTag/BrowserOS:tri/fpga-derive","gHashTag/BrowserOS:tri/fpga-fire","gHashTag/BrowserOS:tri/fpga-firelog","gHashTag/BrowserOS:tri/fpga-flash","gHashTag/BrowserOS:tri/fpga-genscore","gHashTag/BrowserOS:tri/fpga-hole","gHashTag/BrowserOS:tri/fpga-hostnet","gHashTag/BrowserOS:tri/fpga-ioclients","gHashTag/BrowserOS:tri/fpga-jtag","gHashTag/BrowserOS:tri/fpga-keep","gHashTag/BrowserOS:tri/fpga-keycheck","gHashTag/BrowserOS:tri/fpga-lesson","gHashTag/BrowserOS:tri/fpga-loopcheck","gHashTag/BrowserOS:tri/fpga-loopstate","gHashTag/BrowserOS:tri/fpga-next","gHashTag/BrowserOS:tri/fpga-pins","gHashTag/BrowserOS:tri/fpga-prcheck","gHashTag/BrowserOS:tri/fpga-push","gHashTag/BrowserOS:tri/fpga-quiet","gHashTag/BrowserOS:tri/fpga-rehearse","gHashTag/BrowserOS:tri/fpga-release","gHashTag/BrowserOS:tri/fpga-repin","gHashTag/BrowserOS:tri/fpga-restore","gHashTag/BrowserOS:tri/fpga-run","gHashTag/BrowserOS:tri/fpga-runlog","gHashTag/BrowserOS:tri/fpga-rxcap","gHashTag/BrowserOS:tri/fpga-rxer","gHashTag/BrowserOS:tri/fpga-seeds","gHashTag/BrowserOS:tri/fpga-selftest","gHashTag/BrowserOS:tri/fpga-specs","gHashTag/BrowserOS:tri/fpga-stamps","gHashTag/BrowserOS:tri/fpga-status","gHashTag/BrowserOS:tri/fpga-steps","gHashTag/BrowserOS:tri/fpga-task","gHashTag/BrowserOS:tri/fpga-tmpcheck","gHashTag/BrowserOS:tri/fpga-tools","gHashTag/BrowserOS:tri/fpga-tristate","gHashTag/BrowserOS:tri/fpga-txhold","gHashTag/BrowserOS:tri/fpga-usb","gHashTag/BrowserOS:tri/fpga-watch-clients","gHashTag/BrowserOS:tri/fpga-wire","gHashTag/BrowserOS:tri/game","gHashTag/BrowserOS:tri/game-activity","gHashTag/BrowserOS:tri/game-anomalies","gHashTag/BrowserOS:tri/game-bar","gHashTag/BrowserOS:tri/game-bees","gHashTag/BrowserOS:tri/game-blog","gHashTag/BrowserOS:tri/game-branch","gHashTag/BrowserOS:tri/game-cadence","gHashTag/BrowserOS:tri/game-claim","gHashTag/BrowserOS:tri/game-clock","gHashTag/BrowserOS:tri/game-close","gHashTag/BrowserOS:tri/game-contract","gHashTag/BrowserOS:tri/game-copy","gHashTag/BrowserOS:tri/game-dash","gHashTag/BrowserOS:tri/game-events","gHashTag/BrowserOS:tri/game-feed","gHashTag/BrowserOS:tri/game-finding","gHashTag/BrowserOS:tri/game-foundation","gHashTag/BrowserOS:tri/game-gate","gHashTag/BrowserOS:tri/game-gates","gHashTag/BrowserOS:tri/game-ingest","gHashTag/BrowserOS:tri/game-iterate","gHashTag/BrowserOS:tri/game-lesson","gHashTag/BrowserOS:tri/game-lessons","gHashTag/BrowserOS:tri/game-local","gHashTag/BrowserOS:tri/game-measure","gHashTag/BrowserOS:tri/game-merged","gHashTag/BrowserOS:tri/game-models","gHashTag/BrowserOS:tri/game-next","gHashTag/BrowserOS:tri/game-objects","gHashTag/BrowserOS:tri/game-plan","gHashTag/BrowserOS:tri/game-prove","gHashTag/BrowserOS:tri/game-release","gHashTag/BrowserOS:tri/game-report","gHashTag/BrowserOS:tri/game-round","gHashTag/BrowserOS:tri/game-selftest","gHashTag/BrowserOS:tri/game-served","gHashTag/BrowserOS:tri/game-ship","gHashTag/BrowserOS:tri/game-site","gHashTag/BrowserOS:tri/game-spike","gHashTag/BrowserOS:tri/game-status","gHashTag/BrowserOS:tri/game-task","gHashTag/BrowserOS:tri/game-tick","gHashTag/BrowserOS:tri/game-vault","gHashTag/BrowserOS:tri/game-verdicts","gHashTag/BrowserOS:tri/game-verify","gHashTag/BrowserOS:tri/game-wire","gHashTag/BrowserOS:tri/game-writers","gHashTag/BrowserOS:tri/handover","gHashTag/BrowserOS:tri/handover-116-archived","gHashTag/BrowserOS:tri/heal","gHashTag/BrowserOS:tri/help","gHashTag/BrowserOS:tri/holds","gHashTag/BrowserOS:tri/idle","gHashTag/BrowserOS:tri/iter","gHashTag/BrowserOS:tri/iter-anchors","gHashTag/BrowserOS:tri/iter-dash","gHashTag/BrowserOS:tri/iter-log","gHashTag/BrowserOS:tri/iter-render","gHashTag/BrowserOS:tri/iter-unlock","gHashTag/BrowserOS:tri/jobs","gHashTag/BrowserOS:tri/jobs-anomalies","gHashTag/BrowserOS:tri/jobs-board","gHashTag/BrowserOS:tri/jobs-check","gHashTag/BrowserOS:tri/jobs-dash","gHashTag/BrowserOS:tri/jobs-drafts","gHashTag/BrowserOS:tri/jobs-guards","gHashTag/BrowserOS:tri/jobs-journal","gHashTag/BrowserOS:tri/jobs-leads","gHashTag/BrowserOS:tri/jobs-lesson","gHashTag/BrowserOS:tri/jobs-next","gHashTag/BrowserOS:tri/jobs-owed","gHashTag/BrowserOS:tri/jobs-run","gHashTag/BrowserOS:tri/jobs-show","gHashTag/BrowserOS:tri/judge-calibration","gHashTag/BrowserOS:tri/judge-packet","gHashTag/BrowserOS:tri/land","gHashTag/BrowserOS:tri/latency","gHashTag/BrowserOS:tri/learn","gHashTag/BrowserOS:tri/lease","gHashTag/BrowserOS:tri/lesson","gHashTag/BrowserOS:tri/lesson-orphans","gHashTag/BrowserOS:tri/live-verify","gHashTag/BrowserOS:tri/live-wait","gHashTag/BrowserOS:tri/locks","gHashTag/BrowserOS:tri/loop","gHashTag/BrowserOS:tri/loop-coverage","gHashTag/BrowserOS:tri/loop-lesson","gHashTag/BrowserOS:tri/loop-selftest","gHashTag/BrowserOS:tri/mix","gHashTag/BrowserOS:tri/morning","gHashTag/BrowserOS:tri/mutants-logic-refresh","gHashTag/BrowserOS:tri/needs-you","gHashTag/BrowserOS:tri/next","gHashTag/BrowserOS:tri/proof","gHashTag/BrowserOS:tri/prov","gHashTag/BrowserOS:tri/proven","gHashTag/BrowserOS:tri/providers","gHashTag/BrowserOS:tri/push-work","gHashTag/BrowserOS:tri/queue","gHashTag/BrowserOS:tri/reach","gHashTag/BrowserOS:tri/reap","gHashTag/BrowserOS:tri/reap-finished","gHashTag/BrowserOS:tri/reap-local","gHashTag/BrowserOS:tri/regress","gHashTag/BrowserOS:tri/regression","gHashTag/BrowserOS:tri/rejudge","gHashTag/BrowserOS:tri/rescue","gHashTag/BrowserOS:tri/salvage","gHashTag/BrowserOS:tri/selftest","gHashTag/BrowserOS:tri/share-modules","gHashTag/BrowserOS:tri/silent-loop","gHashTag/BrowserOS:tri/skills","gHashTag/BrowserOS:tri/spec-diag","gHashTag/BrowserOS:tri/stale-escalations","gHashTag/BrowserOS:tri/status","gHashTag/BrowserOS:tri/swarm","gHashTag/BrowserOS:tri/t27-gen","gHashTag/BrowserOS:tri/t27-parity","gHashTag/BrowserOS:tri/t27-tri","gHashTag/BrowserOS:tri/tb","gHashTag/BrowserOS:tri/tb-deploy","gHashTag/BrowserOS:tri/tb-lint","gHashTag/BrowserOS:tri/tb-verify","gHashTag/BrowserOS:tri/tc-abpair","gHashTag/BrowserOS:tri/tc-arena","gHashTag/BrowserOS:tri/tc-ask","gHashTag/BrowserOS:tri/tc-audit","gHashTag/BrowserOS:tri/tc-board","gHashTag/BrowserOS:tri/tc-card","gHashTag/BrowserOS:tri/tc-catalog","gHashTag/BrowserOS:tri/tc-cathead","gHashTag/BrowserOS:tri/tc-ceiling","gHashTag/BrowserOS:tri/tc-comptime","gHashTag/BrowserOS:tri/tc-contract","gHashTag/BrowserOS:tri/tc-coreleak","gHashTag/BrowserOS:tri/tc-cpuft","gHashTag/BrowserOS:tri/tc-cpuft-cmp","gHashTag/BrowserOS:tri/tc-cpuft-collect","gHashTag/BrowserOS:tri/tc-curve","gHashTag/BrowserOS:tri/tc-diffjudge","gHashTag/BrowserOS:tri/tc-disc","gHashTag/BrowserOS:tri/tc-draft","gHashTag/BrowserOS:tri/tc-gpuft","gHashTag/BrowserOS:tri/tc-honest","gHashTag/BrowserOS:tri/tc-loop","gHashTag/BrowserOS:tri/tc-maskcheck","gHashTag/BrowserOS:tri/tc-mutant3","gHashTag/BrowserOS:tri/tc-mutscore","gHashTag/BrowserOS:tri/tc-pair","gHashTag/BrowserOS:tri/tc-podwait","gHashTag/BrowserOS:tri/tc-prefill","gHashTag/BrowserOS:tri/tc-reach","gHashTag/BrowserOS:tri/tc-relabel","gHashTag/BrowserOS:tri/tc-remote","gHashTag/BrowserOS:tri/tc-restore","gHashTag/BrowserOS:tri/tc-retrieve","gHashTag/BrowserOS:tri/tc-rounds","gHashTag/BrowserOS:tri/tc-seen","gHashTag/BrowserOS:tri/tc-soundness","gHashTag/BrowserOS:tri/tc-speed","gHashTag/BrowserOS:tri/tc-sync","gHashTag/BrowserOS:tri/tc-t27bench","gHashTag/BrowserOS:tri/tc-t27mask","gHashTag/BrowserOS:tri/tc-t27selfcheck","gHashTag/BrowserOS:tri/tc-taxonomy","gHashTag/BrowserOS:tri/tc-val","gHashTag/BrowserOS:tri/tg-dialogs","gHashTag/BrowserOS:tri/tg-msg","gHashTag/BrowserOS:tri/tg-search","gHashTag/BrowserOS:tri/tg-unread","gHashTag/BrowserOS:tri/tg-who","gHashTag/BrowserOS:tri/trend","gHashTag/BrowserOS:tri/trinity-report","gHashTag/BrowserOS:tri/two-views","gHashTag/BrowserOS:tri/unpark","gHashTag/BrowserOS:tri/unverdicted","gHashTag/BrowserOS:tri/unwired","gHashTag/BrowserOS:tri/verdict-audit","gHashTag/BrowserOS:tri/verdicts","gHashTag/BrowserOS:tri/verify","gHashTag/BrowserOS:tri/vibee-feed","gHashTag/BrowserOS:tri/wave","gHashTag/BrowserOS:tri/wave-plan","gHashTag/BrowserOS:tri/which-board","gHashTag/BrowserOS:tri/why","gHashTag/BrowserOS:tri/x7-audit","gHashTag/BrowserOS:tri/x7-bench","gHashTag/BrowserOS:tri/x7-board","gHashTag/BrowserOS:tri/x7-claim","gHashTag/BrowserOS:tri/x7-fasm","gHashTag/BrowserOS:tri/x7-lesson","gHashTag/BrowserOS:tri/x7-mutate","gHashTag/BrowserOS:tri/x7-next","gHashTag/BrowserOS:tri/x7-part","gHashTag/BrowserOS:tri/x7-refs","gHashTag/BrowserOS:tri/x7-release","gHashTag/BrowserOS:tri/x7-status","gHashTag/BrowserOS:tri/x7-task","gHashTag/BrowserOS:tri/x7-writer","gHashTag/trinity:tri/agents-bench","gHashTag/trinity:tri/agents-demo","gHashTag/trinity:tri/all","gHashTag/trinity:tri/amygdala","gHashTag/trinity:tri/analyze","gHashTag/trinity:tri/auto-bench","gHashTag/trinity:tri/auto-demo","gHashTag/trinity:tri/autocomplete","gHashTag/trinity:tri/batched-bench","gHashTag/trinity:tri/batched-demo","gHashTag/trinity:tri/bench-suite","gHashTag/trinity:tri/bench-verdict","gHashTag/trinity:tri/brain","gHashTag/trinity:tri/build","gHashTag/trinity:tri/cache-bench","gHashTag/trinity:tri/cache-demo","gHashTag/trinity:tri/capsec-bench","gHashTag/trinity:tri/capsec-demo","gHashTag/trinity:tri/cell","gHashTag/trinity:tri/chain","gHashTag/trinity:tri/chat","gHashTag/trinity:tri/check","gHashTag/trinity:tri/chem","gHashTag/trinity:tri/chimera","gHashTag/trinity:tri/chord","gHashTag/trinity:tri/clara","gHashTag/trinity:tri/clean","gHashTag/trinity:tri/cloud","gHashTag/trinity:tri/cluster-bench","gHashTag/trinity:tri/cluster-demo","gHashTag/trinity:tri/code","gHashTag/trinity:tri/commands","gHashTag/trinity:tri/commit","gHashTag/trinity:tri/comms-bench","gHashTag/trinity:tri/comms-demo","gHashTag/trinity:tri/completion","gHashTag/trinity:tri/consensus-bench","gHashTag/trinity:tri/consensus-demo","gHashTag/trinity:tri/context","gHashTag/trinity:tri/context-bench","gHashTag/trinity:tri/context-demo","gHashTag/trinity:tri/context-load","gHashTag/trinity:tri/contract-bench","gHashTag/trinity:tri/contract-demo","gHashTag/trinity:tri/convert","gHashTag/trinity:tri/core","gHashTag/trinity:tri/deadline-bench","gHashTag/trinity:tri/deadline-demo","gHashTag/trinity:tri/deck","gHashTag/trinity:tri/decompose","gHashTag/trinity:tri/depin","gHashTag/trinity:tri/deploy","gHashTag/trinity:tri/dev","gHashTag/trinity:tri/diff","gHashTag/trinity:tri/dispatch","gHashTag/trinity:tri/distributed","gHashTag/trinity:tri/dm","gHashTag/trinity:tri/doc","gHashTag/trinity:tri/docs-gen","gHashTag/trinity:tri/doctor","gHashTag/trinity:tri/dtxn-bench","gHashTag/trinity:tri/dtxn-demo","gHashTag/trinity:tri/enrich","gHashTag/trinity:tri/eval","gHashTag/trinity:tri/event","gHashTag/trinity:tri/events","gHashTag/trinity:tri/eventsrc-bench","gHashTag/trinity:tri/eventsrc-demo","gHashTag/trinity:tri/evolve","gHashTag/trinity:tri/experience","gHashTag/trinity:tri/experiment","gHashTag/trinity:tri/explain","gHashTag/trinity:tri/faculty","gHashTag/trinity:tri/farm","gHashTag/trinity:tri/fedlearn-bench","gHashTag/trinity:tri/fedlearn-demo","gHashTag/trinity:tri/finetune-bench","gHashTag/trinity:tri/finetune-demo","gHashTag/trinity:tri/fix","gHashTag/trinity:tri/fmt","gHashTag/trinity:tri/forge","gHashTag/trinity:tri/forge-bench","gHashTag/trinity:tri/forge-verdict","gHashTag/trinity:tri/formula","gHashTag/trinity:tri/fpga-demo","gHashTag/trinity:tri/frequency","gHashTag/trinity:tri/full-cycle","gHashTag/trinity:tri/gen","gHashTag/trinity:tri/git","gHashTag/trinity:tri/golden-chain","gHashTag/trinity:tri/governor-bench","gHashTag/trinity:tri/governor-demo","gHashTag/trinity:tri/graphql","gHashTag/trinity:tri/gravity","gHashTag/trinity:tri/habenula","gHashTag/trinity:tri/harmony","gHashTag/trinity:tri/help","gHashTag/trinity:tri/holo","gHashTag/trinity:tri/igla","gHashTag/trinity:tri/info","gHashTag/trinity:tri/init","gHashTag/trinity:tri/install","gHashTag/trinity:tri/intelligence","gHashTag/trinity:tri/issue","gHashTag/trinity:tri/job","gHashTag/trinity:tri/job-artifacts","gHashTag/trinity:tri/job-cancel","gHashTag/trinity:tri/job-list","gHashTag/trinity:tri/job-logs","gHashTag/trinity:tri/job-status","gHashTag/trinity:tri/kaggle","gHashTag/trinity:tri/launch","gHashTag/trinity:tri/lint","gHashTag/trinity:tri/log","gHashTag/trinity:tri/loop","gHashTag/trinity:tri/loop-decide","gHashTag/trinity:tri/math","gHashTag/trinity:tri/math-agent","gHashTag/trinity:tri/math-diff","gHashTag/trinity:tri/math-doctor","gHashTag/trinity:tri/math-explain","gHashTag/trinity:tri/math-table","gHashTag/trinity:tri/math-verify","gHashTag/trinity:tri/mcp","gHashTag/trinity:tri/memory-bench","gHashTag/trinity:tri/memory-demo","gHashTag/trinity:tri/metrics","gHashTag/trinity:tri/mmo-bench","gHashTag/trinity:tri/mmo-demo","gHashTag/trinity:tri/mu","gHashTag/trinity:tri/multi-cluster","gHashTag/trinity:tri/multimodal-bench","gHashTag/trinity:tri/multimodal-demo","gHashTag/trinity:tri/music","gHashTag/trinity:tri/neuro","gHashTag/trinity:tri/notify","gHashTag/trinity:tri/observe-bench","gHashTag/trinity:tri/observe-demo","gHashTag/trinity:tri/ofc","gHashTag/trinity:tri/omega-evolve","gHashTag/trinity:tri/omega-phase","gHashTag/trinity:tri/orch-bench","gHashTag/trinity:tri/orch-demo","gHashTag/trinity:tri/ouroboros","gHashTag/trinity:tri/patent","gHashTag/trinity:tri/persist-bench","gHashTag/trinity:tri/persist-demo","gHashTag/trinity:tri/phi-series","gHashTag/trinity:tri/phoenix","gHashTag/trinity:tri/pipeline","gHashTag/trinity:tri/pipeline-demo","gHashTag/trinity:tri/plan","gHashTag/trinity:tri/plugin-bench","gHashTag/trinity:tri/plugin-demo","gHashTag/trinity:tri/pr","gHashTag/trinity:tri/priority-bench","gHashTag/trinity:tri/priority-demo","gHashTag/trinity:tri/qcd","gHashTag/trinity:tri/queen","gHashTag/trinity:tri/rag-bench","gHashTag/trinity:tri/rag-demo","gHashTag/trinity:tri/railway","gHashTag/trinity:tri/reason","gHashTag/trinity:tri/refactor","gHashTag/trinity:tri/registry-validate","gHashTag/trinity:tri/release","gHashTag/trinity:tri/release-cosmic","gHashTag/trinity:tri/research","gHashTag/trinity:tri/resonance","gHashTag/trinity:tri/sacred","gHashTag/trinity:tri/sandbox-bench","gHashTag/trinity:tri/sandbox-demo","gHashTag/trinity:tri/scale","gHashTag/trinity:tri/search","gHashTag/trinity:tri/sebo","gHashTag/trinity:tri/self","gHashTag/trinity:tri/serve","gHashTag/trinity:tri/sim","gHashTag/trinity:tri/sparc","gHashTag/trinity:tri/spawn-bench","gHashTag/trinity:tri/spawn-demo","gHashTag/trinity:tri/spec-create","gHashTag/trinity:tri/specexec-bench","gHashTag/trinity:tri/specexec-demo","gHashTag/trinity:tri/stats","gHashTag/trinity:tri/status","gHashTag/trinity:tri/storm","gHashTag/trinity:tri/stream-bench","gHashTag/trinity:tri/stream-demo","gHashTag/trinity:tri/stress","gHashTag/trinity:tri/string","gHashTag/trinity:tri/sync-check","gHashTag/trinity:tri/system","gHashTag/trinity:tri/task","gHashTag/trinity:tri/test-repl","gHashTag/trinity:tri/time","gHashTag/trinity:tri/token","gHashTag/trinity:tri/tooluse-bench","gHashTag/trinity:tri/tooluse-demo","gHashTag/trinity:tri/toxic-verdict","gHashTag/trinity:tri/trace","gHashTag/trinity:tri/train","gHashTag/trinity:tri/tvc-demo","gHashTag/trinity:tri/tvc-stats","gHashTag/trinity:tri/ui","gHashTag/trinity:tri/unified-bench","gHashTag/trinity:tri/unified-demo","gHashTag/trinity:tri/verdict","gHashTag/trinity:tri/verify","gHashTag/trinity:tri/version","gHashTag/trinity:tri/vision-bench","gHashTag/trinity:tri/vision-demo","gHashTag/trinity:tri/voice-bench","gHashTag/trinity:tri/voice-demo","gHashTag/trinity:tri/waveform","gHashTag/trinity:tri/workflow-bench","gHashTag/trinity:tri/workflow-demo","gHashTag/trinity:tri/worksteal-bench","gHashTag/trinity:tri/worksteal-demo","gHashTag/trinity:tri/zenodo"],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":38,"functions":33,"providers":7,"skills":26,"specs":1778,"tools":607},"legacy":{"mcp/gitbutler":"gHashTag/t27:mcp/gitbutler","mcp/inngest-dev":"gHashTag/t27:mcp/inngest-dev","mcp/needle":"gHashTag/trinity:mcp/needle","mcp/neon":"gHashTag/trinity:mcp/neon","mcp/notebooklm":"gHashTag/t27:mcp/notebooklm","mcp/railway-mcp-server":"gHashTag/trinity:mcp/railway-mcp-server","mcp/t27-traceability":"gHashTag/t27:mcp/t27-traceability","mcp/tri-mcp":"gHashTag/t27:mcp/tri-mcp","mcp/tri-ssot":"gHashTag/t27:mcp/tri-ssot","mcp/trinity":"gHashTag/trinity:mcp/trinity","mcp/zig-docs":"gHashTag/trinity:mcp/zig-docs","tri/abandoned":"gHashTag/t27:tri/abandoned","tri/cell":"gHashTag/t27:tri/cell","tri/census":"gHashTag/t27:tri/census","tri/ci":"gHashTag/t27:tri/ci","tri/competitors":"gHashTag/t27:tri/competitors","tri/discard":"gHashTag/t27:tri/discard","tri/doctor":"gHashTag/t27:tri/doctor","tri/elab":"gHashTag/t27:tri/elab","tri/emit":"gHashTag/t27:tri/emit","tri/experience":"gHashTag/t27:tri/experience","tri/fleet":"gHashTag/t27:tri/fleet","tri/fmt":"gHashTag/t27:tri/fmt","tri/fpga":"gHashTag/t27:tri/fpga","tri/gates":"gHashTag/t27:tri/gates","tri/gen":"gHashTag/t27:tri/gen","tri/harness":"gHashTag/t27:tri/harness","tri/health":"gHashTag/t27:tri/health","tri/hooks":"gHashTag/t27:tri/hooks","tri/issues":"gHashTag/t27:tri/issues","tri/jumps":"gHashTag/t27:tri/jumps","tri/kinds":"gHashTag/t27:tri/kinds","tri/lean":"gHashTag/t27:tri/lean","tri/ledgers":"gHashTag/t27:tri/ledgers","tri/loop":"gHashTag/t27:tri/loop","tri/merging":"gHashTag/t27:tri/merging","tri/misread":"gHashTag/t27:tri/misread","tri/mods":"gHashTag/t27:tri/mods","tri/mutate":"gHashTag/t27:tri/mutate","tri/now":"gHashTag/t27:tri/now","tri/one-away":"gHashTag/t27:tri/one-away","tri/orphaned":"gHashTag/t27:tri/orphaned","tri/pr":"gHashTag/t27:tri/pr","tri/prose":"gHashTag/t27:tri/prose","tri/quantifiers":"gHashTag/t27:tri/quantifiers","tri/red":"gHashTag/t27:tri/red","tri/reseal":"gHashTag/t27:tri/reseal","tri/rtl":"gHashTag/t27:tri/rtl","tri/seals":"gHashTag/t27:tri/seals","tri/serve":"gHashTag/t27:tri/serve","tri/skill":"gHashTag/t27:tri/skill","tri/status":"gHashTag/t27:tri/status","tri/sweep":"gHashTag/t27:tri/sweep","tri/synth":"gHashTag/t27:tri/synth","tri/test":"gHashTag/t27:tri/test","tri/topic":"gHashTag/t27:tri/topic","tri/types":"gHashTag/t27:tri/types","tri/unparsed":"gHashTag/t27:tri/unparsed","tri/vectors":"gHashTag/t27:tri/vectors","tri/verdict":"gHashTag/t27:tri/verdict","tri/vsim":"gHashTag/t27:tri/vsim","tri/window":"gHashTag/t27:tri/window","tri/worktrees":"gHashTag/t27:tri/worktrees"},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"schema":2,"tools":[{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"cast":null,"config":".mcp.json","discarded":0,"env":["GITBUTLER_REPO"],"external":true,"family":"mcp","fields":{"ABOUT":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".mcp.json","ENABLED":true,"ENV":["GITBUTLER_REPO"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/gitbutler","KIND":"tool","LAUNCH":"but mcp","QUALIFIED_ID":"gHashTag/t27:mcp/gitbutler","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"gitbutler","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/gitbutler","inSpecCorpus":true,"launch":"but mcp","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_gitbutler","name":{"en":"gitbutler"},"qualifiedId":"gHashTag/t27:mcp/gitbutler","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/gitbutler gitbutler external gitbutler mcp server launched as `but mcp`; the repository only registers it in .mcp.json.","server":"gitbutler","serverVersion":"","sha256":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/gitbutler.t27","summary":{"en":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ru":"Внешний MCP-сервер GitButler, запускаемый как `but mcp`; репозиторий лишь регистрирует его в .mcp.json."},"tools":[],"toolsNote":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","agents":[{"letter":"T","ok":true}],"cast":null,"config":"","discarded":0,"env":["INNGEST_SIGNING_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ABOUT_SOURCE":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","AGENTS":["T"],"AGENTS_NOTE":"specs/agents/t.t27 TOOLS names mcp/inngest-dev: the Queen (Tau) holds the scheduler; a bee reaches it through the Queen's brief, not by its own registration.","CONFIG":"","ENABLED":true,"ENV":["INNGEST_SIGNING_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/inngest-dev","KIND":"tool","LAUNCH":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","QUALIFIED_ID":"gHashTag/t27:mcp/inngest-dev","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"inngest-dev","SERVER_VERSION":"1.0.0","SOURCE":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","TOOLS":["cancel_run","get_app","get_apps","get_event_runs","get_function","get_run","get_run_status","get_run_trace","grep_docs","health","invoke_function","invoke_function_sync","list_docs","list_function_runs","list_functions","list_runs","poll_run_status","read_doc","rerun","send_event"],"TOOLS_ABOUT":["Cancels an in-progress function run","Fetches details for a single app, including sync metadata and function count","Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","Lists function runs triggered by a specific event","Fetches function configuration and status details for a function within an app","Fetches the canonical run summary for a single function run","Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","Fetches the trace tree for a single function run","Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","Returns the health status of the API service","Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","List all available documentation categories and their document counts. No parameters required.","Lists runs for one function in the authenticated environment","Lists function configuration and status details for an app","Lists runs in the authenticated environment, optionally filtered by app and function IDs","Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","Creates a new run using the original run's triggering event data","Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID"],"TOOLS_INPUTS":["runId","appId","archived,cursor,limit","cursor,eventId,includeOutput,limit","appId,functionId","includeOutput,runId","runId","includeOutput,runId","pattern,limit","","appId,data,functionId,idempotencyKey","functionId,data,user,timeout","","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","appId,cursor,limit","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","runIds,timeout,pollInterval","path","fromStep,runId","name,data,user,eventIdSeed"],"TOOLS_NOTE":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","TRANSPORT":"http","WITNESS":"help-output"},"health":"ok","id":"mcp/inngest-dev","inSpecCorpus":true,"launch":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)"},"messages":["external package: tool list not in the repository"],"moduleName":"tool_mcp_inngest_dev","name":{"en":"inngest-dev"},"qualifiedId":"gHashTag/t27:mcp/inngest-dev","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/inngest-dev inngest-dev mcp face of the self-hosted inngest server (railway project 999) that runs the queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels. cancel_run cancels an in-progress function run get_app fetches details for a single app, including sync metadata and function count get_apps lists active apps in the authenticated environment. set archived to true to list archived apps instead. get_event_runs lists function runs triggered by a specific event get_function fetches function configuration and status details for a function within an app get_run fetches the canonical run summary for a single function run get_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run and get_run_trace for new integrations. parameters: get_run_trace fetches the trace tree for a single function run grep_docs search documentation using exact string matching (grep). useful for finding specific api names, error codes, or identifiers. parameters: pat health returns the health status of the api service invoke_function invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body invoke_function_sync deprecated compatibility tool retained for existing dev server integrations. use invoke_function for the shared asynchronous cloud and dev s list_docs list all available documentation categories and their document counts. no parameters required. list_function_runs lists runs for one function in the authenticated environment list_functions lists function configuration and status details for an app list_runs lists runs in the authenticated environment, optionally filtered by app and function ids poll_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run for new integrations. poll multiple function runs u read_doc read the full content of a specific documentation file. parameters: path (required string - the doc file path relative to docs directory) rerun creates a new run using the original run's triggering event data send_event deprecated compatibility tool retained for existing dev server integrations. send an event to the inngest dev server and return the event id t","server":"inngest-dev","serverVersion":"1.0.0","sha256":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","skills":[],"source":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","specPath":"specs/tools/mcp/inngest-dev.t27","summary":{"en":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ru":"MCP-лицо самостоятельно размещённого сервера Inngest (проект Railway 999), который исполняет кроны и скиллы Королевы как функции приложения t27-queen; перечисляет приложения и функции, читает запуски и трассы, запускает, перезапускает и отменяет."},"tools":[{"about":"Cancels an in-progress function run","inputs":["runId"],"name":"cancel_run"},{"about":"Fetches details for a single app, including sync metadata and function count","inputs":["appId"],"name":"get_app"},{"about":"Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","inputs":["archived","cursor","limit"],"name":"get_apps"},{"about":"Lists function runs triggered by a specific event","inputs":["cursor","eventId","includeOutput","limit"],"name":"get_event_runs"},{"about":"Fetches function configuration and status details for a function within an app","inputs":["appId","functionId"],"name":"get_function"},{"about":"Fetches the canonical run summary for a single function run","inputs":["includeOutput","runId"],"name":"get_run"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","inputs":["runId"],"name":"get_run_status"},{"about":"Fetches the trace tree for a single function run","inputs":["includeOutput","runId"],"name":"get_run_trace"},{"about":"Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","inputs":["pattern","limit"],"name":"grep_docs"},{"about":"Returns the health status of the API service","inputs":[],"name":"health"},{"about":"Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","inputs":["appId","data","functionId","idempotencyKey"],"name":"invoke_function"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","inputs":["functionId","data","user","timeout"],"name":"invoke_function_sync"},{"about":"List all available documentation categories and their document counts. No parameters required.","inputs":[],"name":"list_docs"},{"about":"Lists runs for one function in the authenticated environment","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_function_runs"},{"about":"Lists function configuration and status details for an app","inputs":["appId","cursor","limit"],"name":"list_functions"},{"about":"Lists runs in the authenticated environment, optionally filtered by app and function IDs","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_runs"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","inputs":["runIds","timeout","pollInterval"],"name":"poll_run_status"},{"about":"Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","inputs":["path"],"name":"read_doc"},{"about":"Creates a new run using the original run's triggering event data","inputs":["fromStep","runId"],"name":"rerun"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID","inputs":["name","data","user","eventIdSeed"],"name":"send_event"}],"toolsNote":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","transport":"http","typecheckOk":true,"witness":"help-output"},{"aboutSource":".claude/mcp.json entry; no tool list in this repository","agents":[],"cast":null,"config":".claude/mcp.json","discarded":0,"env":["NOTEBOOKLM_STORAGE_STATE"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ABOUT_SOURCE":".claude/mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".claude/mcp.json","ENABLED":true,"ENV":["NOTEBOOKLM_STORAGE_STATE"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/notebooklm","KIND":"tool","LAUNCH":"notebooklm-mcp --notebook-id auto","QUALIFIED_ID":"gHashTag/t27:mcp/notebooklm","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"notebooklm","SERVER_VERSION":"","SOURCE":".claude/mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external package, not in this repository.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/notebooklm","inSpecCorpus":true,"launch":"notebooklm-mcp --notebook-id auto","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_notebooklm","name":{"en":"notebooklm"},"qualifiedId":"gHashTag/t27:mcp/notebooklm","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/notebooklm notebooklm external mcp server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","server":"notebooklm","serverVersion":"","sha256":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","skills":[],"source":".claude/mcp.json","specPath":"specs/tools/mcp/notebooklm.t27","summary":{"en":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ru":"Внешний MCP-сервер `notebooklm`, зарегистрированный в .claude/mcp.json; запускается как `notebooklm-mcp`."},"tools":[],"toolsNote":"Tool list lives in the external package, not in this repository.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","agents":[],"cast":null,"config":".mcp.json","discarded":0,"env":["PROJECT_ROOT","ENFORCE_L1"],"external":false,"family":"mcp","fields":{"ABOUT":"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.","ABOUT_SOURCE":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".mcp.json","ENABLED":true,"ENV":["PROJECT_ROOT","ENFORCE_L1"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/t27-traceability","KIND":"tool","LAUNCH":"node scripts/mcp-traceability-server.js","QUALIFIED_ID":"gHashTag/t27:mcp/t27-traceability","REPO":"gHashTag/t27","RESOURCES":["docs/T27-CONSTITUTION.md","docs/l1-traceability-audit.md"],"RESOURCES_ABOUT":["Constitutional laws including L1 TRACEABILITY","Audit report for L1 TRACEABILITY compliance"],"SCHEMA":2,"SERVER":"t27-traceability","SERVER_VERSION":"1.0.0","SOURCE":"scripts/mcp-traceability-server.js","TOOLS":["check_traceability","generate_commit_message","validate_branch_name","get_phi_loop_template"],"TOOLS_ABOUT":["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"],"TOOLS_INPUTS":["message","type,scope,description,issueNumber,invariantLaws,body","branchName","ringNumber"],"TOOLS_NOTE":"","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/t27-traceability","inSpecCorpus":true,"launch":"node scripts/mcp-traceability-server.js","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/scripts/mcp-traceability-server.js"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_t27_traceability","name":{"en":"t27-traceability"},"qualifiedId":"gHashTag/t27:mcp/t27-traceability","repo":"gHashTag/t27","resources":[{"about":"Constitutional laws including L1 TRACEABILITY","path":"docs/T27-CONSTITUTION.md"},{"about":"Audit report for L1 TRACEABILITY compliance","path":"docs/l1-traceability-audit.md"}],"schema":2,"searchText":"mcp/t27-traceability t27-traceability 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. check_traceability check if a commit message or pr description complies with l1 traceability (closes #n required) generate_commit_message generate a compliant commit message for t27 including required l1 traceability reference validate_branch_name validate branch name follows t27 naming conventions get_phi_loop_template get phi loop stacked branch template for ring development","server":"t27-traceability","serverVersion":"1.0.0","sha256":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","skills":[],"source":"scripts/mcp-traceability-server.js","specPath":"specs/tools/mcp/t27-traceability.t27","summary":{"en":"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.","ru":"MCP-сервер по stdio, проверяющий L1 TRACEABILITY (Closes #N) в сообщениях коммитов и описаниях PR, генерирующий соответствующие сообщения коммитов, валидирующий имена веток и отдающий шаблон стековых веток PHI LOOP; ресурсы открывают конституцию и аудит L1."},"tools":[{"about":"Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","inputs":["message"],"name":"check_traceability"},{"about":"Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","inputs":["type","scope","description","issueNumber","invariantLaws","body"],"name":"generate_commit_message"},{"about":"Validate branch name follows t27 naming conventions","inputs":["branchName"],"name":"validate_branch_name"},{"about":"Get PHI LOOP stacked branch template for ring development","inputs":["ringNumber"],"name":"get_phi_loop_template"}],"toolsNote":"","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","agents":[],"cast":null,"config":"","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ABOUT_SOURCE":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":"","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-mcp","KIND":"tool","LAUNCH":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","QUALIFIED_ID":"gHashTag/t27:mcp/tri-mcp","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-mcp","SERVER_VERSION":"0.1.0","SOURCE":"cli/tri-mcp/src/main.rs","TOOLS":["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"],"TOOLS_ABOUT":["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."],"TOOLS_INPUTS":["","issue,description","","step","","spec_path","spec_path","","episode_type,summary,ring",""],"TOOLS_NOTE":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-mcp","inSpecCorpus":true,"launch":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri-mcp/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_mcp","name":{"en":"tri-mcp"},"qualifiedId":"gHashTag/t27:mcp/tri-mcp","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-mcp tri-mcp rust mcp server exposing the phi loop tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health. tri_status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. tri_skill_begin begins a new phi loop skill session bound to an issue. tri_skill_end ends the active phi loop skill session. tri_cell_checkpoint records a checkpoint step in the active cell. tri_cell_seal seals the active cell by computing a sha-256 hash of its checkpoint history. tri_gen generates backends from a .t27 spec file using t27c. tri_test runs tests for a .t27 spec file using t27c. tri_verdict checks for toxic regressions by analyzing swarm health metrics. tri_experience_save saves an experience episode to the akashic log. tri_health returns queen and swarm health status from .trinity state.","server":"tri-mcp","serverVersion":"0.1.0","sha256":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","skills":[],"source":"cli/tri-mcp/src/main.rs","specPath":"specs/tools/mcp/tri-mcp.t27","summary":{"en":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ru":"MCP-сервер на Rust, открывающий команды tri PHI LOOP как инструменты: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."},"tools":[{"about":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","inputs":[],"name":"tri_status"},{"about":"Begins a new PHI LOOP skill session bound to an issue.","inputs":["issue","description"],"name":"tri_skill_begin"},{"about":"Ends the active PHI LOOP skill session.","inputs":[],"name":"tri_skill_end"},{"about":"Records a checkpoint step in the active cell.","inputs":["step"],"name":"tri_cell_checkpoint"},{"about":"Seals the active cell by computing a SHA-256 hash of its checkpoint history.","inputs":[],"name":"tri_cell_seal"},{"about":"Generates backends from a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_gen"},{"about":"Runs tests for a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_test"},{"about":"Checks for toxic regressions by analyzing swarm health metrics.","inputs":[],"name":"tri_verdict"},{"about":"Saves an experience episode to the akashic log.","inputs":["episode_type","summary","ring"],"name":"tri_experience_save"},{"about":"Returns queen and swarm health status from .trinity state.","inputs":[],"name":"tri_health"}],"toolsNote":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"manifest.json description","agents":[],"cast":null,"config":".claude/mcp/tri-ssot/manifest.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ABOUT_SOURCE":"manifest.json description","AGENTS":[],"AGENTS_NOTE":"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.","CONFIG":".claude/mcp/tri-ssot/manifest.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-ssot","KIND":"tool","LAUNCH":"python3 -m contrib.backend.github.mcp_server","QUALIFIED_ID":"gHashTag/t27:mcp/tri-ssot","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-ssot","SERVER_VERSION":"1.0.0","SOURCE":".claude/mcp/tri-ssot/manifest.json","TOOLS":["tri_issue","tri_pr","tri_docs","tri_sync","tri_search"],"TOOLS_ABOUT":["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"],"TOOLS_INPUTS":["action,title,body,labels,issue_id,state","action,title,body,pr_id,issue_id","action,file_path,title","scope","query"],"TOOLS_NOTE":"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).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-ssot","inSpecCorpus":true,"launch":"python3 -m contrib.backend.github.mcp_server","links":{"config":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_ssot","name":{"en":"tri-ssot"},"qualifiedId":"gHashTag/t27:mcp/tri-ssot","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-ssot tri-ssot ssot integration for t27: github issues + prs + documentation -> notebooklm tri_issue github issue management: create, update, list, close tri_pr github pr management: create, merge, close, get status tri_docs documentation management: upload to notebooklm, sync, query tri_sync unified sync: sync all entities (issues, prs, docs) with notebooklm tri_search unified search across github issues, prs, notebooklm docs","server":"tri-ssot","serverVersion":"1.0.0","sha256":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","skills":[],"source":".claude/mcp/tri-ssot/manifest.json","specPath":"specs/tools/mcp/tri-ssot.t27","summary":{"en":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ru":"Интеграция SSOT для t27: GitHub Issues + PR + документация -> NotebookLM."},"tools":[{"about":"GitHub Issue management: create, update, list, close","inputs":["action","title","body","labels","issue_id","state"],"name":"tri_issue"},{"about":"GitHub PR management: create, merge, close, get status","inputs":["action","title","body","pr_id","issue_id"],"name":"tri_pr"},{"about":"Documentation management: upload to NotebookLM, sync, query","inputs":["action","file_path","title"],"name":"tri_docs"},{"about":"Unified sync: sync all entities (issues, prs, docs) with NotebookLM","inputs":["scope"],"name":"tri_sync"},{"about":"Unified search across GitHub Issues, PRs, NotebookLM docs","inputs":["query"],"name":"tri_search"}],"toolsNote":"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).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","actions":[{"about":"List recovery sites whose preceding comment names a concrete construct.","name":"list"}],"agents":[],"args":[],"cast":null,"command":"tri abandoned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recovery sites whose own comment names the construct they discard.","ABOUT_SOURCE":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List recovery sites whose preceding comment names a concrete construct."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri abandoned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/abandoned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/abandoned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/abandoned.rs","VARIANT":"Commands::Abandoned","WHEN_TO_USE":"Recovery sites whose own comment names the construct they discard.","WITNESS":"source-parse"},"health":"ok","id":"tri/abandoned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/abandoned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_abandoned","name":{"en":"tri abandoned"},"qualifiedId":"gHashTag/t27:tri/abandoned","repo":"gHashTag/t27","schema":2,"searchText":"tri/abandoned tri abandoned recovery sites whose own comment names the construct they discard. recovery sites whose own comment names the construct they discard. list list recovery sites whose preceding comment names a concrete construct.","sha256":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","skills":[],"source":"cli/tri/src/abandoned.rs","specPath":"specs/tools/tri/abandoned.t27","summary":{"en":"Recovery sites whose own comment names the construct they discard.","ru":"Точки восстановления, чей собственный комментарий называет отбрасываемую конструкцию."},"typecheckOk":true,"variant":"Commands::Abandoned","whenToUse":"Recovery sites whose own comment names the construct they discard.","witness":"source-parse"},{"aboutSource":"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","actions":[{"about":"","name":"checkpoint"},{"about":"","name":"seal"}],"agents":[{"letter":"W","ok":true}],"args":[],"cast":null,"command":"tri cell","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ABOUT_SOURCE":"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","ACTIONS":["checkpoint","seal"],"ACTIONS_ABOUT":["",""],"AGENTS":["W"],"AGENTS_NOTE":"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).","ARGS":[],"COMMAND":"tri cell","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/cell","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/cell","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Cell","WHEN_TO_USE":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","WITNESS":"source-parse"},"health":"ok","id":"tri/cell","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_cell","name":{"en":"tri cell"},"qualifiedId":"gHashTag/t27:tri/cell","repo":"gHashTag/t27","schema":2,"searchText":"tri/cell tri cell records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. checkpoint seal w","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/cell.t27","summary":{"en":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ru":"Записывает шаг-контрольную точку в активной ячейке; запечатывает активную ячейку, вычисляя SHA-256 истории её контрольных точек."},"typecheckOk":true,"variant":"Commands::Cell","whenToUse":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","actions":[{"about":"Every census's printed population, against one counted another way.","name":"audit"},{"about":"Pin each pure census's output, so a change that moves one has to say so.","name":"pin"}],"agents":[],"args":[],"cast":{"commands":["tri census audit"],"id":"t27-tri-census","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-census/","src":"term/t27-tri-census/session.cast","title":"tri census audit: every census, counted twice"},"command":"tri census","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ABOUT_SOURCE":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","ACTIONS":["audit","pin"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-census/session.cast","COMMAND":"tri census","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/census","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/census","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/census.rs","VARIANT":"Commands::Census","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","WITNESS":"source-parse"},"health":"ok","id":"tri/census","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/census.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_census","name":{"en":"tri census"},"qualifiedId":"gHashTag/t27:tri/census","repo":"gHashTag/t27","schema":2,"searchText":"tri/census tri census specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. audit every census's printed population, against one counted another way. pin pin each pure census's output, so a change that moves one has to say so.","sha256":"2e8093fdbaf186c821daacb78c0dcb69b5f495fe07eac09413748825fe8d85ea","skills":[],"source":"cli/tri/src/census.rs","specPath":"specs/tools/tri/census.t27","summary":{"en":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по конструкции, которая его останавливает. Напечатанная популяция каждой переписи против одной, посчитанной иначе."},"typecheckOk":true,"variant":"Commands::Census","whenToUse":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","actions":[{"about":"List PR gates that have never run on the default branch.","name":"baseline"}],"agents":[],"args":[],"cast":null,"command":"tri ci","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ABOUT_SOURCE":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","ACTIONS":["baseline"],"ACTIONS_ABOUT":["List PR gates that have never run on the default branch."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri ci","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ci","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ci","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/cibase.rs","VARIANT":"Commands::Ci","WHEN_TO_USE":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/ci","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/cibase.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ci","name":{"en":"tri ci"},"qualifiedId":"gHashTag/t27:tri/ci","repo":"gHashTag/t27","schema":2,"searchText":"tri/ci tri ci is the hardware this plan assumes actually attached? ci questions about the repository's own gates. is the hardware this plan assumes actually attached? ci questions about the repository's own gates. baseline list pr gates that have never run on the default branch.","sha256":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","skills":[],"source":"cli/tri/src/cibase.rs","specPath":"specs/tools/tri/ci.t27","summary":{"en":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ru":"Действительно ли подключено оборудование, которое предполагает этот план? Вопросы CI о собственных гейтах репозитория."},"typecheckOk":true,"variant":"Commands::Ci","whenToUse":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","actions":[{"about":"Count the records, the double-entered papers and the unpublished zeros.","name":"audit"},{"about":"When the survey behind this table last read a paper, by the month its citations encode.","name":"freshness"}],"agents":[],"args":[],"cast":{"commands":["tri competitors audit"],"id":"t27-tri-competitors","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-competitors/","src":"term/t27-tri-competitors/session.cast","title":"tri competitors audit: the table, audited"},"command":"tri competitors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ABOUT_SOURCE":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","ACTIONS":["audit","freshness"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-competitors/session.cast","COMMAND":"tri competitors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/competitors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/competitors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/competitors.rs","VARIANT":"Commands::Competitors","WHEN_TO_USE":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/competitors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/competitors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_competitors","name":{"en":"tri competitors"},"qualifiedId":"gHashTag/t27:tri/competitors","repo":"gHashTag/t27","schema":2,"searchText":"tri/competitors tri competitors the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. audit count the records, the double-entered papers and the unpublished zeros. freshness when the survey behind this table last read a paper, by the month its citations encode.","sha256":"3306c38768838b334ddc8e3f5f4abc2efca7addf713af3e578bbba90fa68d0c3","skills":[],"source":"cli/tri/src/competitors.rs","specPath":"specs/tools/tri/competitors.t27","summary":{"en":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ru":"Таблица конкурентов против собственного контракта: сколько её опубликованных оценок никогда не публиковались и сколько статей она считает дважды."},"typecheckOk":true,"variant":"Commands::Competitors","whenToUse":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","actions":[{"about":"Rank the discarding specs, largest first, against the pinned volume.","name":"top"},{"about":"Group the discard by which recovery threw it away, and what it stopped on.","name":"classify"}],"agents":[],"args":[],"cast":{"commands":["tri discard top"],"id":"t27-tri-discard","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-discard/","src":"term/t27-tri-discard/session.cast","title":"tri discard top: what the parser throws away"},"command":"tri discard","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the parser reads and throws away, ranked against its pinned bound.","ABOUT_SOURCE":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","ACTIONS":["top","classify"],"ACTIONS_ABOUT":["Rank the discarding specs, largest first, against the pinned volume.","Group the discard by which recovery threw it away, and what it stopped on."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-discard/session.cast","COMMAND":"tri discard","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/discard","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/discard","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/discard.rs","VARIANT":"Commands::Discard","WHEN_TO_USE":"What the parser reads and throws away, ranked against its pinned bound.","WITNESS":"source-parse"},"health":"ok","id":"tri/discard","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/discard.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_discard","name":{"en":"tri discard"},"qualifiedId":"gHashTag/t27:tri/discard","repo":"gHashTag/t27","schema":2,"searchText":"tri/discard tri discard what the parser reads and throws away, ranked against its pinned bound. what the parser reads and throws away, ranked against its pinned bound. top rank the discarding specs, largest first, against the pinned volume. classify group the discard by which recovery threw it away, and what it stopped on.","sha256":"e8ca3d0adcebc0fc9890233b186ad922e4a1e676d67775ee6635e362c26face4","skills":[],"source":"cli/tri/src/discard.rs","specPath":"specs/tools/tri/discard.t27","summary":{"en":"What the parser reads and throws away, ranked against its pinned bound.","ru":"Что парсер читает и выбрасывает, в сравнении с закреплённой границей."},"typecheckOk":true,"variant":"Commands::Discard","whenToUse":"What the parser reads and throws away, ranked against its pinned bound.","witness":"source-parse"},{"aboutSource":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","actions":[],"agents":[],"args":[{"about":"","name":""}],"cast":null,"command":"tri doctor","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ABOUT_SOURCE":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[""],"COMMAND":"tri doctor","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/doctor","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/doctor","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Doctor","WHEN_TO_USE":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","WITNESS":"source-parse"},"health":"ok","id":"tri/doctor","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_doctor","name":{"en":"tri doctor"},"qualifiedId":"gHashTag/t27:tri/doctor","repo":"gHashTag/t27","schema":2,"searchText":"tri/doctor tri doctor start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status). start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","sha256":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/doctor.t27","summary":{"en":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ru":"Запускает, останавливает или показывает состояние doctor, хранимое в .trinity/state/doctor.json (действия: start | stop | status)."},"typecheckOk":true,"variant":"Commands::Doctor","whenToUse":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","actions":[{"about":"Distribution of elaboration diagnostics by message shape.","name":"classify"},{"about":"How many diagnostics are secondary -- same source line as one above.","name":"secondary"}],"agents":[],"args":[],"cast":null,"command":"tri elab","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Classify a compiler's error output before quoting a number from it.","ABOUT_SOURCE":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","ACTIONS":["classify","secondary"],"ACTIONS_ABOUT":["Distribution of elaboration diagnostics by message shape.","How many diagnostics are secondary -- same source line as one above."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri elab","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/elab","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/elab","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/elab.rs","VARIANT":"Commands::Elab","WHEN_TO_USE":"Classify a compiler's error output before quoting a number from it.","WITNESS":"source-parse"},"health":"ok","id":"tri/elab","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/elab.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_elab","name":{"en":"tri elab"},"qualifiedId":"gHashTag/t27:tri/elab","repo":"gHashTag/t27","schema":2,"searchText":"tri/elab tri elab classify a compiler's error output before quoting a number from it. classify a compiler's error output before quoting a number from it. classify distribution of elaboration diagnostics by message shape. secondary how many diagnostics are secondary -- same source line as one above.","sha256":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","skills":[],"source":"cli/tri/src/elab.rs","specPath":"specs/tools/tri/elab.t27","summary":{"en":"Classify a compiler's error output before quoting a number from it.","ru":"Классифицирует вывод ошибок компилятора прежде, чем цитировать из него число."},"typecheckOk":true,"variant":"Commands::Elab","whenToUse":"Classify a compiler's error output before quoting a number from it.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","actions":[{"about":"Generate the corpus twice with the same binary and name what differs.","name":"determinism"}],"agents":[],"args":[],"cast":null,"command":"tri emit","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does the same binary produce the same generated code twice?","ABOUT_SOURCE":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","ACTIONS":["determinism"],"ACTIONS_ABOUT":["Generate the corpus twice with the same binary and name what differs."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri emit","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/emit","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/emit","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gendet.rs","VARIANT":"Commands::Emit","WHEN_TO_USE":"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`.)","WITNESS":"source-parse"},"health":"ok","id":"tri/emit","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gendet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_emit","name":{"en":"tri emit"},"qualifiedId":"gHashTag/t27:tri/emit","repo":"gHashTag/t27","schema":2,"searchText":"tri/emit tri emit does the same binary produce the same generated code twice? 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`.) determinism generate the corpus twice with the same binary and name what differs.","sha256":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","skills":[],"source":"cli/tri/src/gendet.rs","specPath":"specs/tools/tri/emit.t27","summary":{"en":"Does the same binary produce the same generated code twice?","ru":"Даёт ли один и тот же бинарник один и тот же сгенерированный код дважды?"},"typecheckOk":true,"variant":"Commands::Emit","whenToUse":"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`.)","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","actions":[{"about":"","name":"save"}],"agents":[{"letter":"E","ok":true}],"args":[],"cast":null,"command":"tri experience","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Saves an experience episode to the akashic log.","ABOUT_SOURCE":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","ACTIONS":["save"],"ACTIONS_ABOUT":[""],"AGENTS":["E"],"AGENTS_NOTE":".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.","ARGS":[],"COMMAND":"tri experience","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/experience","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/experience","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Experience","WHEN_TO_USE":"Saves an experience episode to the akashic log.","WITNESS":"source-parse"},"health":"ok","id":"tri/experience","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_experience","name":{"en":"tri experience"},"qualifiedId":"gHashTag/t27:tri/experience","repo":"gHashTag/t27","schema":2,"searchText":"tri/experience tri experience saves an experience episode to the akashic log. saves an experience episode to the akashic log. save e","sha256":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/experience.t27","summary":{"en":"Saves an experience episode to the akashic log.","ru":"Сохраняет эпизод опыта в акашический журнал."},"typecheckOk":true,"variant":"Commands::Experience","whenToUse":"Saves an experience episode to the akashic log.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/fleet.rs:1","actions":[{"about":"Scan the USB bus and say plainly what hardware is present.","name":"scan"},{"about":"Check the environments a claim depends on before repeating the claim.","name":"asof"}],"agents":[],"args":[],"cast":null,"command":"tri fleet","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri fleet` -- is the hardware this plan assumes actually attached?","ABOUT_SOURCE":"//! module doc, cli/tri/src/fleet.rs:1","ACTIONS":["scan","asof"],"ACTIONS_ABOUT":["Scan the USB bus and say plainly what hardware is present.","Check the environments a claim depends on before repeating the claim."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri fleet","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fleet","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fleet","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fleet.rs","VARIANT":"Commands::Fleet","WHEN_TO_USE":"`tri fleet` -- is the hardware this plan assumes actually attached?","WITNESS":"source-parse"},"health":"ok","id":"tri/fleet","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fleet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fleet","name":{"en":"tri fleet"},"qualifiedId":"gHashTag/t27:tri/fleet","repo":"gHashTag/t27","schema":2,"searchText":"tri/fleet tri fleet `tri fleet` -- is the hardware this plan assumes actually attached? `tri fleet` -- is the hardware this plan assumes actually attached? scan scan the usb bus and say plainly what hardware is present. asof check the environments a claim depends on before repeating the claim.","sha256":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","skills":[],"source":"cli/tri/src/fleet.rs","specPath":"specs/tools/tri/fleet.t27","summary":{"en":"`tri fleet` -- is the hardware this plan assumes actually attached?","ru":"`tri fleet` -- действительно ли подключено оборудование, которое предполагает этот план?"},"typecheckOk":true,"variant":"Commands::Fleet","whenToUse":"`tri fleet` -- is the hardware this plan assumes actually attached?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"One package instead of the whole workspace.","name":"--package"},{"about":"Report what is dirty and whether a workflow formats, and stop.","name":"--dry-run"}],"cast":null,"command":"tri fmt","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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.","ABOUT_SOURCE":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--package: One package instead of the whole workspace.","--dry-run: Report what is dirty and whether a workflow formats, and stop."],"COMMAND":"tri fmt","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fmt","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fmt","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Fmt","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/fmt","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fmt","name":{"en":"tri fmt"},"qualifiedId":"gHashTag/t27:tri/fmt","repo":"gHashTag/t27","schema":2,"searchText":"tri/fmt tri fmt 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. 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.","sha256":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/fmt.t27","summary":{"en":"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.","ru":"Имена типов с более чем одним определением в дереве спеков. Запускает форматтер и восстанавливает каждый переписанный им файл, которого вы не трогали."},"typecheckOk":true,"variant":"Commands::Fmt","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","actions":[{"about":"Read and print the JTAG IDCODE of the attached DLC10 cable target.","name":"idcode"},{"about":"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.","name":"idcode-cfg"},{"about":"Program FPGA SRAM (volatile -- lost on power-cycle).","name":"sram"},{"about":"Program the on-board SPI flash (non-volatile / persistent).","name":"program"},{"about":"Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","name":"flash-id"},{"about":"Read the raw CFG_OUT status register.","name":"status"},{"about":"Decode 7-series configuration registers for DONE=LOW diagnosis.","name":"debug"},{"about":"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).","name":"load-sram"},{"about":"Read and decode the FPGA STAT register via openFPGALoader.","name":"stat"},{"about":"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`.","name":"read-xadc"},{"about":"Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","name":"synth-gf16"},{"about":"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).","name":"program-flash"},{"about":"Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","name":"dump-flash"},{"about":"Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","name":"bit-config"},{"about":"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.","name":"round-trip-verify"},{"about":"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.","name":"boot-log"},{"about":"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.","name":"cold-por"},{"about":"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.","name":"smoke-gate"},{"about":"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.","name":"boot-protocol"},{"about":"Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","name":"patch-cor0"},{"about":"Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","name":"cclk-variants"},{"about":"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.","name":"cclk-sweep"},{"about":"Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","name":"sweep-report"},{"about":"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`).","name":"measure-cclk"},{"about":"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.","name":"flash-status"},{"about":"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.","name":"proxy-load"},{"about":"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.","name":"proxy-status"},{"about":"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).","name":"spi-raw"},{"about":"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.","name":"ir-probe"},{"about":"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.","name":"flash-id-debug"},{"about":"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.","name":"build-proxy"},{"about":"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/`.","name":"setup-openxc7-chipdb"},{"about":"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.","name":"measured-to-lean"},{"about":"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.","name":"pvt-envelope"},{"about":"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.","name":"build-proxy-docker"}],"agents":[],"args":[],"cast":null,"command":"tri fpga","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ABOUT_SOURCE":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","ACTIONS":["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"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri fpga","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fpga","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fpga","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fpga.rs","VARIANT":"Commands::Fpga","WHEN_TO_USE":"FPGA programming via the in-tree DLC10 driver (pure Rust).","WITNESS":"source-parse"},"health":"ok","id":"tri/fpga","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fpga.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/t27:tri/fpga","repo":"gHashTag/t27","schema":2,"searchText":"tri/fpga tri fpga fpga programming via the in-tree dlc10 driver (pure rust). fpga programming via the in-tree dlc10 driver (pure rust). idcode read and print the jtag idcode of the attached dlc10 cable target. idcode-cfg 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. sram program fpga sram (volatile -- lost on power-cycle). program program the on-board spi flash (non-volatile / persistent). flash-id read the spi flash jedec id via the jtag-to-spi bridge. status read the raw cfg_out status register. debug decode 7-series configuration registers for done=low diagnosis. load-sram 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). stat read and decode the fpga stat register via openfpgaloader. read-xadc 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`. synth-gf16 synthesize the gf16 4x4 matrix design through the openxc7 toolchain. output is written to `/gf16_matmul4x4_top.bit`. program-flash 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-flash dump spi flash contents to a file via openfpgaloader's jtag-to-spi bridge. bit-config parse the .bit header and print the configuration registers that affect master spi boot (cor0, cor1, wbstar, timer, ctl0, ctl1, idcode, bspi). round-trip-verify 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. boot-log 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. cold-por 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. smoke-gate 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. boot-protocol 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-cor0 patch the raw oscfsel field (cor0[22:17]) of a 7-series .bit file. cclk-variants generate a set of oscfsel variants from a single input .bit file. outputs one file per requested value to the given directory. cclk-sweep 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. sweep-report read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working cclk variant. measure-cclk 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`). flash-status 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. proxy-load 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. proxy-status 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. spi-raw 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). ir-probe 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. flash-id-debug 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-proxy 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. setup-openxc7-chipdb 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/`. measured-to-lean 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. pvt-envelope 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-proxy-docker 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.","sha256":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","skills":[],"source":"cli/tri/src/fpga.rs","specPath":"specs/tools/tri/fpga.t27","summary":{"en":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ru":"Программирование FPGA через встроенный драйвер DLC10 (чистый Rust)."},"typecheckOk":true,"variant":"Commands::Fpga","whenToUse":"FPGA programming via the in-tree DLC10 driver (pure Rust).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","actions":[{"about":"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.","name":"warnings"},{"about":"Run every gate script and its negative control; name the ones with none.","name":"sweep"},{"about":"Break each gate's failure path and demand its control notices.","name":"mutate"},{"about":"Open pull requests whose path-filtered CI never ran.","name":"prs"},{"about":"What the tree says is required, against what the ruleset requires.","name":"preview"},{"about":"Which interpreter each gate step is handed to, and who says so.","name":"shell"},{"about":"Gate steps whose PASS is reachable with the thing they check absent.","name":"quiet"},{"about":"Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","name":"fetches"},{"about":"Run every gate CI runs, in an EMPTY tree, and report what still passes.","name":"empty"},{"about":"","name":"required"},{"about":"List active workflows whose lifetime success count is zero.","name":"dead"},{"about":"Workflows with no recent run on the default branch: their green is about frequency, not health.","name":"tests"},{"about":"","name":"unmeasured"}],"agents":[],"args":[],"cast":null,"command":"tri gates","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find workflows that have never once succeeded.","ABOUT_SOURCE":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","ACTIONS":["warnings","sweep","mutate","prs","preview","shell","quiet","fetches","empty","required","dead","tests","unmeasured"],"ACTIONS_ABOUT":["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.",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri gates","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gates","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gates","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gates.rs","VARIANT":"Commands::Gates","WHEN_TO_USE":"Find workflows that have never once succeeded.","WITNESS":"source-parse"},"health":"ok","id":"tri/gates","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gates.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_gates","name":{"en":"tri gates"},"qualifiedId":"gHashTag/t27:tri/gates","repo":"gHashTag/t27","schema":2,"searchText":"tri/gates tri gates find workflows that have never once succeeded. find workflows that have never once succeeded. warnings 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. sweep run every gate script and its negative control; name the ones with none. mutate break each gate's failure path and demand its control notices. prs open pull requests whose path-filtered ci never ran. preview what the tree says is required, against what the ruleset requires. shell which interpreter each gate step is handed to, and who says so. quiet gate steps whose pass is reachable with the thing they check absent. fetches every bounded github fetch in this crate, and whether it can tell a page from a total. empty run every gate ci runs, in an empty tree, and report what still passes. required dead list active workflows whose lifetime success count is zero. tests workflows with no recent run on the default branch: their green is about frequency, not health. unmeasured","sha256":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","skills":[],"source":"cli/tri/src/gates.rs","specPath":"specs/tools/tri/gates.t27","summary":{"en":"Find workflows that have never once succeeded.","ru":"Находит воркфлоу, которые ни разу не завершались успешно."},"typecheckOk":true,"variant":"Commands::Gates","whenToUse":"Find workflows that have never once succeeded.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[{"letter":"C","ok":true},{"letter":"T","ok":true}],"args":[{"about":"","name":""}],"cast":null,"command":"tri gen","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Generates backends from a .t27 spec file using t27c.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["C","T"],"AGENTS_NOTE":".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).","ARGS":[""],"COMMAND":"tri gen","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gen","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gen","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Gen","WHEN_TO_USE":"Generates backends from a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/gen","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_gen","name":{"en":"tri gen"},"qualifiedId":"gHashTag/t27:tri/gen","repo":"gHashTag/t27","schema":2,"searchText":"tri/gen tri gen generates backends from a .t27 spec file using t27c. generates backends from a .t27 spec file using t27c. c t","sha256":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/gen.t27","summary":{"en":"Generates backends from a .t27 spec file using t27c.","ru":"Генерирует бэкенды из файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Gen","whenToUse":"Generates backends from a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","actions":[{"about":"Test binaries whose tests share one scratch directory.","name":"scratch"}],"agents":[],"args":[],"cast":null,"command":"tri harness","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ABOUT_SOURCE":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","ACTIONS":["scratch"],"ACTIONS_ABOUT":["Test binaries whose tests share one scratch directory."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri harness","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/harness","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/harness","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Harness","WHEN_TO_USE":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","WITNESS":"source-parse"},"health":"ok","id":"tri/harness","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_harness","name":{"en":"tri harness"},"qualifiedId":"gHashTag/t27:tri/harness","repo":"gHashTag/t27","schema":2,"searchText":"tri/harness tri harness source files no crate root reaches, and so nothing compiles. test-harness hygiene. source files no crate root reaches, and so nothing compiles. test-harness hygiene. scratch test binaries whose tests share one scratch directory.","sha256":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/harness.t27","summary":{"en":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ru":"Исходные файлы, до которых не доходит ни один корень крейта, и потому ничего не компилируется. Гигиена тестового харнесса."},"typecheckOk":true,"variant":"Commands::Harness","whenToUse":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[],"args":[{"about":"","name":""}],"cast":null,"command":"tri health","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns queen and swarm health status from .trinity state.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[""],"COMMAND":"tri health","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/health","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/health","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Health","WHEN_TO_USE":"Returns queen and swarm health status from .trinity state.","WITNESS":"source-parse"},"health":"ok","id":"tri/health","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_health","name":{"en":"tri health"},"qualifiedId":"gHashTag/t27:tri/health","repo":"gHashTag/t27","schema":2,"searchText":"tri/health tri health returns queen and swarm health status from .trinity state. returns queen and swarm health status from .trinity state.","sha256":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/health.t27","summary":{"en":"Returns queen and swarm health status from .trinity state.","ru":"Показывает состояние здоровья королевы и роя из состояния .trinity."},"typecheckOk":true,"variant":"Commands::Health","whenToUse":"Returns queen and swarm health status from .trinity state.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","actions":[{"about":"Run every migrated commit-time gate in sequence (l1-check + now-gate).","name":"pre-commit"},{"about":"A pull request whose title claims a compiler fix must carry a source file.","name":"fix-carries-source"},{"about":"Ask the required NOW gate's own script whether this push adds an entry.","name":"pre-push"},{"about":"L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","name":"commit-msg"},{"about":"L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","name":"l1-check"},{"about":"Verify a fresh `docs/now/-.md` entry exists.","name":"now-gate"},{"about":"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).","name":"session-gate"},{"about":"Which hooks git will actually run, and whose installer output is dead.","name":"status"}],"agents":[],"args":[],"cast":null,"command":"tri hooks","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Pure-Rust ports of repository commit / push gates.","ABOUT_SOURCE":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","ACTIONS":["pre-commit","fix-carries-source","pre-push","commit-msg","l1-check","now-gate","session-gate","status"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri hooks","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/hooks","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/hooks","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/hooks.rs","VARIANT":"Commands::Hooks","WHEN_TO_USE":"Pure-Rust ports of repository commit / push gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/hooks","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/hooks.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_hooks","name":{"en":"tri hooks"},"qualifiedId":"gHashTag/t27:tri/hooks","repo":"gHashTag/t27","schema":2,"searchText":"tri/hooks tri hooks pure-rust ports of repository commit / push gates. pure-rust ports of repository commit / push gates. pre-commit run every migrated commit-time gate in sequence (l1-check + now-gate). fix-carries-source a pull request whose title claims a compiler fix must carry a source file. pre-push ask the required now gate's own script whether this push adds an entry. commit-msg l1 traceability over the message being written, from the commit-msg hook. l1-check l1 traceability: last commit message must reference an issue (`closes #n` / `fixes #n` / `resolves #n` / `reference #n`). now-gate verify a fresh `docs/now/-.md` entry exists. session-gate 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). status which hooks git will actually run, and whose installer output is dead.","sha256":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","skills":[],"source":"cli/tri/src/hooks.rs","specPath":"specs/tools/tri/hooks.t27","summary":{"en":"Pure-Rust ports of repository commit / push gates.","ru":"Порты гейтов коммита/пуша репозитория на чистом Rust."},"typecheckOk":true,"variant":"Commands::Hooks","whenToUse":"Pure-Rust ports of repository commit / push gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","actions":[{"about":"Open issues whose title calls a workflow red, and what it does today.","name":"stale"},{"about":"Open issues that state a COUNT in the title, and a reproducible sample.","name":"numbers"},{"about":"Open issues whose figure is ANCHORED, so re-measuring it proves nothing.","name":"dated"}],"agents":[],"args":[],"cast":null,"command":"tri issues","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ABOUT_SOURCE":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","ACTIONS":["stale","numbers","dated"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri issues","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/issues","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/issues","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/issues.rs","VARIANT":"Commands::Issues","WHEN_TO_USE":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","WITNESS":"source-parse"},"health":"ok","id":"tri/issues","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/issues.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_issues","name":{"en":"tri issues"},"qualifiedId":"gHashTag/t27:tri/issues","repo":"gHashTag/t27","schema":2,"searchText":"tri/issues tri issues open issues whose headline calls a workflow red, against what that workflow concludes on master today. open issues whose headline calls a workflow red, against what that workflow concludes on master today. stale open issues whose title calls a workflow red, and what it does today. numbers open issues that state a count in the title, and a reproducible sample. dated open issues whose figure is anchored, so re-measuring it proves nothing.","sha256":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","skills":[],"source":"cli/tri/src/issues.rs","specPath":"specs/tools/tri/issues.t27","summary":{"en":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ru":"Открытые issue, чей заголовок называет воркфлоу красным, против того, к чему этот воркфлоу приходит на master сегодня."},"typecheckOk":true,"variant":"Commands::Issues","whenToUse":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","actions":[{"about":"Name every `break`/`continue` site in the generated Verilog and say what it lowered to.","name":"census"}],"agents":[],"args":[],"cast":null,"command":"tri jumps","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ABOUT_SOURCE":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","ACTIONS":["census"],"ACTIONS_ABOUT":["Name every `break`/`continue` site in the generated Verilog and say what it lowered to."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri jumps","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/jumps","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/jumps","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/jumps.rs","VARIANT":"Commands::Jumps","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/jumps","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/jumps.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_jumps","name":{"en":"tri jumps"},"qualifiedId":"gHashTag/t27:tri/jumps","repo":"gHashTag/t27","schema":2,"searchText":"tri/jumps tri jumps what happened to every `break` and `continue` the verilog emitter had to lower? 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. census name every `break`/`continue` site in the generated verilog and say what it lowered to.","sha256":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","skills":[],"source":"cli/tri/src/jumps.rs","specPath":"specs/tools/tri/jumps.t27","summary":{"en":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ru":"Что случилось с каждым `break` и `continue`, которые эмиттеру Verilog пришлось опустить?"},"typecheckOk":true,"variant":"Commands::Jumps","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","actions":[{"about":"Match arms whose comment names a construct the pattern does not cover.","name":"drift"}],"agents":[],"args":[],"cast":null,"command":"tri kinds","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Match arms whose own comment names a case the pattern omits.","ABOUT_SOURCE":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","ACTIONS":["drift"],"ACTIONS_ABOUT":["Match arms whose comment names a construct the pattern does not cover."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri kinds","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/kinds","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/kinds","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/kinddrift.rs","VARIANT":"Commands::Kinds","WHEN_TO_USE":"Match arms whose own comment names a case the pattern omits.","WITNESS":"source-parse"},"health":"ok","id":"tri/kinds","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/kinddrift.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_kinds","name":{"en":"tri kinds"},"qualifiedId":"gHashTag/t27:tri/kinds","repo":"gHashTag/t27","schema":2,"searchText":"tri/kinds tri kinds match arms whose own comment names a case the pattern omits. match arms whose own comment names a case the pattern omits. drift match arms whose comment names a construct the pattern does not cover.","sha256":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","skills":[],"source":"cli/tri/src/kinddrift.rs","specPath":"specs/tools/tri/kinds.t27","summary":{"en":"Match arms whose own comment names a case the pattern omits.","ru":"Ветви match, чей собственный комментарий называет случай, который паттерн пропускает."},"typecheckOk":true,"variant":"Commands::Kinds","whenToUse":"Match arms whose own comment names a case the pattern omits.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","actions":[{"about":"Completeness theorems whose model has no functions.","name":"vacuous"},{"about":"Proof files the build root does not reach, and so nothing compiles.","name":"reach"}],"agents":[],"args":[],"cast":{"commands":["tri lean vacuous","tri lean reach"],"id":"t27-tri-lean","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-lean/","src":"term/t27-tri-lean/session.cast","title":"tri lean: proofs that nothing compiles"},"command":"tri lean","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Completeness theorems whose Lean model is empty.","ABOUT_SOURCE":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","ACTIONS":["vacuous","reach"],"ACTIONS_ABOUT":["Completeness theorems whose model has no functions.","Proof files the build root does not reach, and so nothing compiles."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-lean/session.cast","COMMAND":"tri lean","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/lean","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/lean","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/leanvac.rs","VARIANT":"Commands::Lean","WHEN_TO_USE":"Completeness theorems whose Lean model is empty.","WITNESS":"source-parse"},"health":"ok","id":"tri/lean","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/leanvac.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_lean","name":{"en":"tri lean"},"qualifiedId":"gHashTag/t27:tri/lean","repo":"gHashTag/t27","schema":2,"searchText":"tri/lean tri lean completeness theorems whose lean model is empty. completeness theorems whose lean model is empty. vacuous completeness theorems whose model has no functions. reach proof files the build root does not reach, and so nothing compiles.","sha256":"63132dbe9a003cce04220c8a2348e84f871da78edb128a159618843e9f825ba0","skills":[],"source":"cli/tri/src/leanvac.rs","specPath":"specs/tools/tri/lean.t27","summary":{"en":"Completeness theorems whose Lean model is empty.","ru":"Теоремы полноты, у которых модель Lean пуста."},"typecheckOk":true,"variant":"Commands::Lean","whenToUse":"Completeness theorems whose Lean model is empty.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","actions":[{"about":"Plant a stale entry in each ledger and demand its gate fail.","name":"audit"}],"agents":[],"args":[],"cast":null,"command":"tri ledgers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does each ledger's gate notice when one of its entries stops being true?","ABOUT_SOURCE":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","ACTIONS":["audit"],"ACTIONS_ABOUT":["Plant a stale entry in each ledger and demand its gate fail."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri ledgers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ledgers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ledgers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/ledgers.rs","VARIANT":"Commands::Ledgers","WHEN_TO_USE":"Does each ledger's gate notice when one of its entries stops being true?","WITNESS":"source-parse"},"health":"ok","id":"tri/ledgers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/ledgers.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ledgers","name":{"en":"tri ledgers"},"qualifiedId":"gHashTag/t27:tri/ledgers","repo":"gHashTag/t27","schema":2,"searchText":"tri/ledgers tri ledgers does each ledger's gate notice when one of its entries stops being true? does each ledger's gate notice when one of its entries stops being true? audit plant a stale entry in each ledger and demand its gate fail.","sha256":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","skills":[],"source":"cli/tri/src/ledgers.rs","specPath":"specs/tools/tri/ledgers.t27","summary":{"en":"Does each ledger's gate notice when one of its entries stops being true?","ru":"Замечает ли гейт каждого леджера, когда одна из его записей перестаёт быть истинной?"},"typecheckOk":true,"variant":"Commands::Ledgers","whenToUse":"Does each ledger's gate notice when one of its entries stops being true?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","actions":[{"about":"Take the named claim, or say who already holds it.","name":"claim"}],"agents":[],"args":[],"cast":null,"command":"tri loop","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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.","ABOUT_SOURCE":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","ACTIONS":["claim"],"ACTIONS_ABOUT":["Take the named claim, or say who already holds it."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri loop","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/loop","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/loop","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/loopclaim.rs","VARIANT":"Commands::Loop","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/loop","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/loopclaim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_loop","name":{"en":"tri loop"},"qualifiedId":"gHashTag/t27:tri/loop","repo":"gHashTag/t27","schema":2,"searchText":"tri/loop tri loop 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. 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. claim take the named claim, or say who already holds it.","sha256":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","skills":[],"source":"cli/tri/src/loopclaim.rs","specPath":"specs/tools/tri/loop.t27","summary":{"en":"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.","ru":"Что падает на ветке по умолчанию прямо сейчас и с какого момента. Берёт именованную заявку, чтобы две сессии лупа не взяли одну задачу."},"typecheckOk":true,"variant":"Commands::Loop","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","actions":[],"agents":[],"args":[{"about":"The base this branch is supposed to carry. A ref, not a URL.","name":"--base"},{"about":"Also check the commits behind HEAD, not only HEAD itself.","name":"--depth"}],"cast":null,"command":"tri merging","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is a merge in flight here, and does this branch carry the base?","ABOUT_SOURCE":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri merging","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/merging","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/merging","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/inflight.rs","VARIANT":"Commands::Merging","WHEN_TO_USE":"Is a merge in flight here, and does this branch carry the base?","WITNESS":"source-parse"},"health":"ok","id":"tri/merging","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/inflight.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_merging","name":{"en":"tri merging"},"qualifiedId":"gHashTag/t27:tri/merging","repo":"gHashTag/t27","schema":2,"searchText":"tri/merging tri merging is a merge in flight here, and does this branch carry the base? is a merge in flight here, and does this branch carry the base?","sha256":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","skills":[],"source":"cli/tri/src/inflight.rs","specPath":"specs/tools/tri/merging.t27","summary":{"en":"Is a merge in flight here, and does this branch carry the base?","ru":"Идёт ли здесь мерж, и несёт ли эта ветка базу?"},"typecheckOk":true,"variant":"Commands::Merging","whenToUse":"Is a merge in flight here, and does this branch carry the base?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","actions":[],"agents":[],"args":[{"about":"Root of the spec tree.","name":"--specs-dir"},{"about":"Name every spec under each shape rather than only counting.","name":"--list"}],"cast":{"commands":["tri misread"],"id":"t27-tri-misread","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-misread/","src":"term/t27-tri-misread/session.cast","title":"tri misread: code that compiles and is wrong"},"command":"tri misread","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The specs the compiler reads WRONGLY. Every gate is green on them.","ABOUT_SOURCE":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--specs-dir: Root of the spec tree.","--list: Name every spec under each shape rather than only counting."],"CAST":"term/t27-tri-misread/session.cast","COMMAND":"tri misread","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/misread","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/misread","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/misread.rs","VARIANT":"Commands::Misread","WHEN_TO_USE":"The specs the compiler reads WRONGLY. Every gate is green on them.","WITNESS":"source-parse"},"health":"ok","id":"tri/misread","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/misread.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_misread","name":{"en":"tri misread"},"qualifiedId":"gHashTag/t27:tri/misread","repo":"gHashTag/t27","schema":2,"searchText":"tri/misread tri misread the specs the compiler reads wrongly. every gate is green on them. the specs the compiler reads wrongly. every gate is green on them.","sha256":"4a9acbb1459ea28a2b63dd53eb5c8a10234e66f14da305d75382fc849309ecd0","skills":[],"source":"cli/tri/src/misread.rs","specPath":"specs/tools/tri/misread.t27","summary":{"en":"The specs the compiler reads WRONGLY. Every gate is green on them.","ru":"Спеки, которые компилятор читает НЕВЕРНО. Все гейты на них зелёные."},"typecheckOk":true,"variant":"Commands::Misread","whenToUse":"The specs the compiler reads WRONGLY. Every gate is green on them.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","actions":[{"about":"List them.","name":"orphan"}],"agents":[],"args":[],"cast":null,"command":"tri mods","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri mods orphan` -- `.rs` files no crate root reaches.","ABOUT_SOURCE":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","ACTIONS":["orphan"],"ACTIONS_ABOUT":["List them."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri mods","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mods","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mods","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Mods","WHEN_TO_USE":"`tri mods orphan` -- `.rs` files no crate root reaches.","WITNESS":"source-parse"},"health":"ok","id":"tri/mods","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mods","name":{"en":"tri mods"},"qualifiedId":"gHashTag/t27:tri/mods","repo":"gHashTag/t27","schema":2,"searchText":"tri/mods tri mods `tri mods orphan` -- `.rs` files no crate root reaches. `tri mods orphan` -- `.rs` files no crate root reaches. orphan list them.","sha256":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/mods.t27","summary":{"en":"`tri mods orphan` -- `.rs` files no crate root reaches.","ru":"`tri mods orphan` -- файлы `.rs`, до которых не доходит ни один корень крейта."},"typecheckOk":true,"variant":"Commands::Mods","whenToUse":"`tri mods orphan` -- `.rs` files no crate root reaches.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","actions":[{"about":"Perturb each numeric literal in a file and report which ones the checker does not notice.","name":"run"}],"agents":[],"args":[],"cast":null,"command":"tri mutate","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find the constants in a checker that nothing actually checks.","ABOUT_SOURCE":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","ACTIONS":["run"],"ACTIONS_ABOUT":["Perturb each numeric literal in a file and report which ones the checker does not notice."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri mutate","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mutate","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mutate","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/mutate.rs","VARIANT":"Commands::Mutate","WHEN_TO_USE":"Find the constants in a checker that nothing actually checks.","WITNESS":"source-parse"},"health":"ok","id":"tri/mutate","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/mutate.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mutate","name":{"en":"tri mutate"},"qualifiedId":"gHashTag/t27:tri/mutate","repo":"gHashTag/t27","schema":2,"searchText":"tri/mutate tri mutate find the constants in a checker that nothing actually checks. find the constants in a checker that nothing actually checks. run perturb each numeric literal in a file and report which ones the checker does not notice.","sha256":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","skills":[],"source":"cli/tri/src/mutate.rs","specPath":"specs/tools/tri/mutate.t27","summary":{"en":"Find the constants in a checker that nothing actually checks.","ru":"Находит в чекере константы, которые на деле ничем не проверяются."},"typecheckOk":true,"variant":"Commands::Mutate","whenToUse":"Find the constants in a checker that nothing actually checks.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","actions":[{"about":"Write a docs/now/ entry: title, bullets, optional issue ref.","name":"add"},{"about":"Ask the REQUIRED `check` gate its own question, before pushing.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri now","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Write a docs/now/ entry without hand-writing the frame.","ABOUT_SOURCE":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","ACTIONS":["add","check"],"ACTIONS_ABOUT":["Write a docs/now/ entry: title, bullets, optional issue ref.","Ask the REQUIRED `check` gate its own question, before pushing."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri now","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/now","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/now","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/nownote.rs","VARIANT":"Commands::Now","WHEN_TO_USE":"Write a docs/now/ entry without hand-writing the frame.","WITNESS":"source-parse"},"health":"ok","id":"tri/now","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/nownote.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_now","name":{"en":"tri now"},"qualifiedId":"gHashTag/t27:tri/now","repo":"gHashTag/t27","schema":2,"searchText":"tri/now tri now write a docs/now/ entry without hand-writing the frame. write a docs/now/ entry without hand-writing the frame. add write a docs/now/ entry: title, bullets, optional issue ref. check ask the required `check` gate its own question, before pushing.","sha256":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","skills":[],"source":"cli/tri/src/nownote.rs","specPath":"specs/tools/tri/now.t27","summary":{"en":"Write a docs/now/ entry without hand-writing the frame.","ru":"Пишет запись docs/now/ без ручного набора рамки."},"typecheckOk":true,"variant":"Commands::Now","whenToUse":"Write a docs/now/ entry without hand-writing the frame.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","actions":[],"agents":[],"args":[{"about":"Also list every spec, not only the class tally.","name":"--names"},{"about":"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.","name":"--errors"},{"about":"Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","name":"--limit"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"cast":null,"command":"tri one-away","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Failing specs one defect from compiling, and what that defect is","ABOUT_SOURCE":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri one-away","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/one-away","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/one-away","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/oneaway.rs","VARIANT":"Commands::OneAway","WHEN_TO_USE":"Failing specs one defect from compiling, and what that defect is","WITNESS":"source-parse"},"health":"ok","id":"tri/one-away","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/oneaway.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_one_away","name":{"en":"tri one-away"},"qualifiedId":"gHashTag/t27:tri/one-away","repo":"gHashTag/t27","schema":2,"searchText":"tri/one-away tri one-away failing specs one defect from compiling, and what that defect is failing specs one defect from compiling, and what that defect is","sha256":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","skills":[],"source":"cli/tri/src/oneaway.rs","specPath":"specs/tools/tri/one-away.t27","summary":{"en":"Failing specs one defect from compiling, and what that defect is","ru":"Падающие спеки, которым до компиляции один дефект, и какой именно."},"typecheckOk":true,"variant":"Commands::OneAway","whenToUse":"Failing specs one defect from compiling, and what that defect is","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","actions":[{"about":"List gate and tool sources that name an input which is not in the tree.","name":"list"}],"agents":[],"args":[],"cast":null,"command":"tri orphaned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks whose input is not in the tree.","ABOUT_SOURCE":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List gate and tool sources that name an input which is not in the tree."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri orphaned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/orphaned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/orphaned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/orphaned.rs","VARIANT":"Commands::Orphaned","WHEN_TO_USE":"Checks whose input is not in the tree.","WITNESS":"source-parse"},"health":"ok","id":"tri/orphaned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/orphaned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_orphaned","name":{"en":"tri orphaned"},"qualifiedId":"gHashTag/t27:tri/orphaned","repo":"gHashTag/t27","schema":2,"searchText":"tri/orphaned tri orphaned checks whose input is not in the tree. checks whose input is not in the tree. list list gate and tool sources that name an input which is not in the tree.","sha256":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","skills":[],"source":"cli/tri/src/orphaned.rs","specPath":"specs/tools/tri/orphaned.t27","summary":{"en":"Checks whose input is not in the tree.","ru":"Проверки, чей вход отсутствует в дереве."},"typecheckOk":true,"variant":"Commands::Orphaned","whenToUse":"Checks whose input is not in the tree.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","actions":[{"about":"Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?","name":"landed"},{"about":"","name":"ready"}],"agents":[],"args":[],"cast":null,"command":"tri pr","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is this pull request actually safe to merge?","ABOUT_SOURCE":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","ACTIONS":["landed","ready"],"ACTIONS_ABOUT":["Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri pr","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/pr","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/pr","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prcheck.rs","VARIANT":"Commands::Pr","WHEN_TO_USE":"Is this pull request actually safe to merge?","WITNESS":"source-parse"},"health":"ok","id":"tri/pr","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prcheck.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_pr","name":{"en":"tri pr"},"qualifiedId":"gHashTag/t27:tri/pr","repo":"gHashTag/t27","schema":2,"searchText":"tri/pr tri pr is this pull request actually safe to merge? is this pull request actually safe to merge? landed classify every failing check and say plainly whether it is safe to merge. did this pull request's content actually reach the default branch? ready","sha256":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","skills":[],"source":"cli/tri/src/prcheck.rs","specPath":"specs/tools/tri/pr.t27","summary":{"en":"Is this pull request actually safe to merge?","ru":"Действительно ли этот pull request безопасно мержить?"},"typecheckOk":true,"variant":"Commands::Pr","whenToUse":"Is this pull request actually safe to merge?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","actions":[{"about":"Which specs are blocked only by prose, and how many lines that is.","name":"report"}],"agents":[],"args":[],"cast":{"commands":["tri prose report"],"id":"t27-tri-prose","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-prose/","src":"term/t27-tri-prose/session.cast","title":"tri prose report: prose, or code?"},"command":"tri prose","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs a literate author left prose in, and how far that prose is from code.","ABOUT_SOURCE":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","ACTIONS":["report"],"ACTIONS_ABOUT":["Which specs are blocked only by prose, and how many lines that is."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-prose/session.cast","COMMAND":"tri prose","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/prose","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/prose","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prose.rs","VARIANT":"Commands::Prose","WHEN_TO_USE":"Specs a literate author left prose in, and how far that prose is from code.","WITNESS":"source-parse"},"health":"ok","id":"tri/prose","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prose.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_prose","name":{"en":"tri prose"},"qualifiedId":"gHashTag/t27:tri/prose","repo":"gHashTag/t27","schema":2,"searchText":"tri/prose tri prose specs a literate author left prose in, and how far that prose is from code. specs a literate author left prose in, and how far that prose is from code. report which specs are blocked only by prose, and how many lines that is.","sha256":"335037d593359d8b267fecdfadeb7166f7ad5a262177d4214159e5c239020118","skills":[],"source":"cli/tri/src/prose.rs","specPath":"specs/tools/tri/prose.t27","summary":{"en":"Specs a literate author left prose in, and how far that prose is from code.","ru":"Спеки, в которых литературный автор оставил прозу, и насколько эта проза далека от кода."},"typecheckOk":true,"variant":"Commands::Prose","whenToUse":"Specs a literate author left prose in, and how far that prose is from code.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","actions":[{"about":"Every quantified clause, its binders, and the size of its domain.","name":"report"},{"about":"Every line carrying a quantifier keyword, and whether the census read it.","name":"audit"}],"agents":[],"args":[],"cast":null,"command":"tri quantifiers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Every quantified clause, its binders, and the size of its domain.","ABOUT_SOURCE":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","ACTIONS":["report","audit"],"ACTIONS_ABOUT":["Every quantified clause, its binders, and the size of its domain.","Every line carrying a quantifier keyword, and whether the census read it."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri quantifiers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/quantifiers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/quantifiers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/quant.rs","VARIANT":"Commands::Quantifiers","WHEN_TO_USE":"Every quantified clause, its binders, and the size of its domain.","WITNESS":"source-parse"},"health":"ok","id":"tri/quantifiers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/quant.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_quantifiers","name":{"en":"tri quantifiers"},"qualifiedId":"gHashTag/t27:tri/quantifiers","repo":"gHashTag/t27","schema":2,"searchText":"tri/quantifiers tri quantifiers every quantified clause, its binders, and the size of its domain. every quantified clause, its binders, and the size of its domain. report every quantified clause, its binders, and the size of its domain. audit every line carrying a quantifier keyword, and whether the census read it.","sha256":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","skills":[],"source":"cli/tri/src/quant.rs","specPath":"specs/tools/tri/quantifiers.t27","summary":{"en":"Every quantified clause, its binders, and the size of its domain.","ru":"Каждая квантифицированная клауза, её связанные переменные и размер её домена."},"typecheckOk":true,"variant":"Commands::Quantifiers","whenToUse":"Every quantified clause, its binders, and the size of its domain.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/red.rs:1","actions":[{"about":"Show workflows whose most recent run on the default branch failed.","name":"now"},{"about":"Which STEP each recent failure of one workflow died at, oldest first.","name":"why"}],"agents":[],"args":[],"cast":null,"command":"tri red","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri red` -- what is failing on main right now, and since when.","ABOUT_SOURCE":"//! module doc, cli/tri/src/red.rs:1","ACTIONS":["now","why"],"ACTIONS_ABOUT":["Show workflows whose most recent run on the default branch failed.","Which STEP each recent failure of one workflow died at, oldest first."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri red","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/red","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/red","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/red.rs","VARIANT":"Commands::Red","WHEN_TO_USE":"`tri red` -- what is failing on main right now, and since when.","WITNESS":"source-parse"},"health":"ok","id":"tri/red","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/red.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_red","name":{"en":"tri red"},"qualifiedId":"gHashTag/t27:tri/red","repo":"gHashTag/t27","schema":2,"searchText":"tri/red tri red `tri red` -- what is failing on main right now, and since when. `tri red` -- what is failing on main right now, and since when. now show workflows whose most recent run on the default branch failed. why which step each recent failure of one workflow died at, oldest first.","sha256":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","skills":[],"source":"cli/tri/src/red.rs","specPath":"specs/tools/tri/red.t27","summary":{"en":"`tri red` -- what is failing on main right now, and since when.","ru":"`tri red` -- что падает на main прямо сейчас и с какого момента."},"typecheckOk":true,"variant":"Commands::Red","whenToUse":"`tri red` -- what is failing on main right now, and since when.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","actions":[{"about":"Rewrite FROZEN_HASH from the current bytes of the sealed file.","name":"write"},{"about":"Report whether the seal matches, and exit non-zero if it does not.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri reseal","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recompute the FROZEN_HASH seal from the file it seals.","ABOUT_SOURCE":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","ACTIONS":["write","check"],"ACTIONS_ABOUT":["Rewrite FROZEN_HASH from the current bytes of the sealed file.","Report whether the seal matches, and exit non-zero if it does not."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri reseal","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/reseal","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/reseal","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/reseal.rs","VARIANT":"Commands::Reseal","WHEN_TO_USE":"Recompute the FROZEN_HASH seal from the file it seals.","WITNESS":"source-parse"},"health":"ok","id":"tri/reseal","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/reseal.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_reseal","name":{"en":"tri reseal"},"qualifiedId":"gHashTag/t27:tri/reseal","repo":"gHashTag/t27","schema":2,"searchText":"tri/reseal tri reseal recompute the frozen_hash seal from the file it seals. recompute the frozen_hash seal from the file it seals. write rewrite frozen_hash from the current bytes of the sealed file. check report whether the seal matches, and exit non-zero if it does not.","sha256":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","skills":[],"source":"cli/tri/src/reseal.rs","specPath":"specs/tools/tri/reseal.t27","summary":{"en":"Recompute the FROZEN_HASH seal from the file it seals.","ru":"Пересчитывает печать FROZEN_HASH по файлу, который она запечатывает."},"typecheckOk":true,"variant":"Commands::Reseal","whenToUse":"Recompute the FROZEN_HASH seal from the file it seals.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","actions":[{"about":"Run the five structural checks on a design directory.","name":"check"}],"agents":[],"args":[],"cast":null,"command":"tri rtl","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ABOUT_SOURCE":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","ACTIONS":["check"],"ACTIONS_ABOUT":["Run the five structural checks on a design directory."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri rtl","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/rtl","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/rtl","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/rtl.rs","VARIANT":"Commands::Rtl","WHEN_TO_USE":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","WITNESS":"source-parse"},"health":"ok","id":"tri/rtl","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/rtl.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_rtl","name":{"en":"tri rtl"},"qualifiedId":"gHashTag/t27:tri/rtl","repo":"gHashTag/t27","schema":2,"searchText":"tri/rtl tri rtl the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. check run the five structural checks on a design directory.","sha256":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","skills":[],"source":"cli/tri/src/rtl.rs","specPath":"specs/tools/tri/rtl.t27","summary":{"en":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ru":"Структурная проверка, которую предлагает t27.ai, локально: пять вердиктов, версия yosys рядом с числами и никаких заявлений о корректности."},"typecheckOk":true,"variant":"Commands::Rtl","whenToUse":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","actions":[{"about":"Is the built compiler newer than the source the seals are checked against?","name":"fresh"},{"about":"Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","name":"drift"},{"about":"Specs that carry more than one seal, and which of those pairs disagree.","name":"twins"},{"about":"Copy the NEWEST seal's claims onto its twins, after a re-seal.","name":"sync-twins"},{"about":"Seals that record `gen_hash=none` -- a spec that produced no output, sealed.","name":"hollow"}],"agents":[],"args":[],"cast":{"commands":["tri seals fresh","tri seals hollow"],"id":"t27-tri-seals","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-seals/","src":"term/t27-tri-seals/session.cast","title":"tri seals: hollow seals that pass every check"},"command":"tri seals","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What `.trinity/seals` says about a spec, when it says it twice.","ABOUT_SOURCE":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","ACTIONS":["fresh","drift","twins","sync-twins","hollow"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-seals/session.cast","COMMAND":"tri seals","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/seals","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/seals","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/seals.rs","VARIANT":"Commands::Seals","WHEN_TO_USE":"What `.trinity/seals` says about a spec, when it says it twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/seals","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/seals.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_seals","name":{"en":"tri seals"},"qualifiedId":"gHashTag/t27:tri/seals","repo":"gHashTag/t27","schema":2,"searchText":"tri/seals tri seals what `.trinity/seals` says about a spec, when it says it twice. what `.trinity/seals` says about a spec, when it says it twice. fresh is the built compiler newer than the source the seals are checked against? drift seals whose claims no longer match what the compiler produces, and the one command that repairs them. twins specs that carry more than one seal, and which of those pairs disagree. sync-twins copy the newest seal's claims onto its twins, after a re-seal. hollow seals that record `gen_hash=none` -- a spec that produced no output, sealed.","sha256":"ad21abf89970a7fc3b06e3459be5bbd2e8e8110fd0b76b0bbfa7e26676910423","skills":[],"source":"cli/tri/src/seals.rs","specPath":"specs/tools/tri/seals.t27","summary":{"en":"What `.trinity/seals` says about a spec, when it says it twice.","ru":"Что `.trinity/seals` говорит о спеке, когда говорит это дважды."},"typecheckOk":true,"variant":"Commands::Seals","whenToUse":"What `.trinity/seals` says about a spec, when it says it twice.","witness":"source-parse"},{"aboutSource":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","actions":[],"agents":[],"args":[{"about":"","name":"--addr"}],"cast":null,"command":"tri serve","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ABOUT_SOURCE":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--addr"],"COMMAND":"tri serve","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/serve","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/serve","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Serve","WHEN_TO_USE":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","WITNESS":"source-parse"},"health":"ok","id":"tri/serve","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_serve","name":{"en":"tri serve"},"qualifiedId":"gHashTag/t27:tri/serve","repo":"gHashTag/t27","schema":2,"searchText":"tri/serve tri serve serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on . serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on .","sha256":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/serve.t27","summary":{"en":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ru":"Поднимает HTTP API trinity depin на axum: POST /prove, GET /epoch-challenge, GET /health; печатает «trinity depin v0.1.0 -- listening on »."},"typecheckOk":true,"variant":"Commands::Serve","whenToUse":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","witness":"source-parse"},{"aboutSource":"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","actions":[{"about":"Write a new lesson to the spool, unnumbered.","name":"add"},{"about":"Fold every spooled lesson into SKILL.md, numbering them on the way in.","name":"fold"},{"about":"Check every SKILL.md's section numbering for collisions.","name":"check"},{"about":"Sections whose body was cut short at some point in the file's history.","name":"lost"},{"about":"Every cross-reference in the skills, and whether it resolves.","name":"refs"},{"about":"Sections that state a FIGURE, and which of those a reader can re-take.","name":"claims"},{"about":"Move sections you appended to the numbers the base branch left free.","name":"renumber"},{"about":"","name":"begin"},{"about":"","name":"end"}],"agents":[],"args":[],"cast":null,"command":"tri skill","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"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).","ABOUT_SOURCE":"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","ACTIONS":["add","fold","check","lost","refs","claims","renumber","begin","end"],"ACTIONS_ABOUT":["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.","",""],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri skill","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/skill","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/skill","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Skill","WHEN_TO_USE":"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).","WITNESS":"source-parse"},"health":"ok","id":"tri/skill","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_skill","name":{"en":"tri skill"},"qualifiedId":"gHashTag/t27:tri/skill","repo":"gHashTag/t27","schema":2,"searchText":"tri/skill tri skill 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). 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). add write a new lesson to the spool, unnumbered. fold fold every spooled lesson into skill.md, numbering them on the way in. check check every skill.md's section numbering for collisions. lost sections whose body was cut short at some point in the file's history. refs every cross-reference in the skills, and whether it resolves. claims sections that state a figure, and which of those a reader can re-take. renumber move sections you appended to the numbers the base branch left free. begin end","sha256":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/skill.t27","summary":{"en":"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).","ru":"Начинает новую сессию скилла PHI LOOP, привязанную к issue; завершает активную сессию. Действия add/fold/check/lost/refs/claims/renumber ведут спул уроков SKILL.md и описаны в своих clap-доках."},"typecheckOk":true,"variant":"Commands::Skill","whenToUse":"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).","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[],"args":[],"cast":null,"command":"tri status","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri status","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/status","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/status","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Status","WHEN_TO_USE":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","WITNESS":"source-parse"},"health":"ok","id":"tri/status","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_status","name":{"en":"tri status"},"qualifiedId":"gHashTag/t27:tri/status","repo":"gHashTag/t27","schema":2,"searchText":"tri/status tri status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. returns phi loop status including active skill, cell, issue binding, and uncommitted changes.","sha256":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/status.t27","summary":{"en":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ru":"Показывает статус PHI LOOP: активный скилл, ячейку, привязку к issue и незакоммиченные изменения."},"typecheckOk":true,"variant":"Commands::Status","whenToUse":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","actions":[{"about":"Synthesise a top across values of one parameter and report the trend.","name":"area"}],"agents":[],"args":[],"cast":null,"command":"tri sweep","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise across a parameter and check the area actually moves.","ABOUT_SOURCE":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top across values of one parameter and report the trend."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri sweep","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/sweep","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/sweep","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/sweep.rs","VARIANT":"Commands::Sweep","WHEN_TO_USE":"Synthesise across a parameter and check the area actually moves.","WITNESS":"source-parse"},"health":"ok","id":"tri/sweep","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/sweep.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_sweep","name":{"en":"tri sweep"},"qualifiedId":"gHashTag/t27:tri/sweep","repo":"gHashTag/t27","schema":2,"searchText":"tri/sweep tri sweep synthesise across a parameter and check the area actually moves. synthesise across a parameter and check the area actually moves. area synthesise a top across values of one parameter and report the trend.","sha256":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","skills":[],"source":"cli/tri/src/sweep.rs","specPath":"specs/tools/tri/sweep.t27","summary":{"en":"Synthesise across a parameter and check the area actually moves.","ru":"Синтез по параметру с проверкой, что площадь действительно меняется."},"typecheckOk":true,"variant":"Commands::Sweep","whenToUse":"Synthesise across a parameter and check the area actually moves.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","actions":[{"about":"Synthesise a top module and report LUT/DSP/FF/CARRY4 counts.","name":"area"}],"agents":[],"args":[],"cast":null,"command":"tri synth","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise a top module and report area, with the instrument named.","ABOUT_SOURCE":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top module and report LUT/DSP/FF/CARRY4 counts."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri synth","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/synth","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/synth","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/synth.rs","VARIANT":"Commands::Synth","WHEN_TO_USE":"Synthesise a top module and report area, with the instrument named.","WITNESS":"source-parse"},"health":"ok","id":"tri/synth","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/synth.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_synth","name":{"en":"tri synth"},"qualifiedId":"gHashTag/t27:tri/synth","repo":"gHashTag/t27","schema":2,"searchText":"tri/synth tri synth synthesise a top module and report area, with the instrument named. synthesise a top module and report area, with the instrument named. area synthesise a top module and report lut/dsp/ff/carry4 counts.","sha256":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","skills":[],"source":"cli/tri/src/synth.rs","specPath":"specs/tools/tri/synth.t27","summary":{"en":"Synthesise a top module and report area, with the instrument named.","ru":"Синтезирует top-модуль и сообщает площадь с указанием инструмента."},"typecheckOk":true,"variant":"Commands::Synth","whenToUse":"Synthesise a top module and report area, with the instrument named.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","actions":[],"agents":[{"letter":"T","ok":true},{"letter":"V","ok":true}],"args":[{"about":"","name":""}],"cast":null,"command":"tri test","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Runs tests for a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["T","V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test -- Run conformance tests); .claude/agents/trinity.md:70 (7. Verify - Run tri test).","ARGS":[""],"COMMAND":"tri test","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/test","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/test","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Test","WHEN_TO_USE":"Runs tests for a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/test","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/t27:tri/test","repo":"gHashTag/t27","schema":2,"searchText":"tri/test tri test runs tests for a .t27 spec file using t27c. runs tests for a .t27 spec file using t27c. t v","sha256":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/test.t27","summary":{"en":"Runs tests for a .t27 spec file using t27c.","ru":"Запускает тесты для файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Test","whenToUse":"Runs tests for a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"Words to look for. A row matches on any; rows carrying more come first.","name":""},{"about":"How many recent commits on the base branch to read.","name":"--commits"}],"cast":null,"command":"tri topic","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Has anyone already done this, or are they doing it now?","ABOUT_SOURCE":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[": 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."],"COMMAND":"tri topic","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/topic","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/topic","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Topic","WHEN_TO_USE":"Has anyone already done this, or are they doing it now?","WITNESS":"source-parse"},"health":"ok","id":"tri/topic","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_topic","name":{"en":"tri topic"},"qualifiedId":"gHashTag/t27:tri/topic","repo":"gHashTag/t27","schema":2,"searchText":"tri/topic tri topic has anyone already done this, or are they doing it now? has anyone already done this, or are they doing it now?","sha256":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/topic.t27","summary":{"en":"Has anyone already done this, or are they doing it now?","ru":"Кто-нибудь уже делал это или делает сейчас?"},"typecheckOk":true,"variant":"Commands::Topic","whenToUse":"Has anyone already done this, or are they doing it now?","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/types_dup.rs:1","actions":[{"about":"Type names with more than one definition in the spec tree.","name":"dup"},{"about":"Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","name":"ratchet"},{"about":"Cross-check the written classification against what the tree says today.","name":"classified"},{"about":"Names defined more than once INSIDE ONE FILE.","name":"redef"}],"agents":[],"args":[],"cast":null,"command":"tri types","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"One type name, more than one definition.","ABOUT_SOURCE":"//! module doc, cli/tri/src/types_dup.rs:1","ACTIONS":["dup","ratchet","classified","redef"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri types","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/types","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/types","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/types_dup.rs","VARIANT":"Commands::Types","WHEN_TO_USE":"One type name, more than one definition.","WITNESS":"source-parse"},"health":"ok","id":"tri/types","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/types_dup.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_types","name":{"en":"tri types"},"qualifiedId":"gHashTag/t27:tri/types","repo":"gHashTag/t27","schema":2,"searchText":"tri/types tri types one type name, more than one definition. one type name, more than one definition. dup type names with more than one definition in the spec tree. ratchet hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away. classified cross-check the written classification against what the tree says today. redef names defined more than once inside one file.","sha256":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","skills":[],"source":"cli/tri/src/types_dup.rs","specPath":"specs/tools/tri/types.t27","summary":{"en":"One type name, more than one definition.","ru":"Одно имя типа, больше одного определения."},"typecheckOk":true,"variant":"Commands::Types","whenToUse":"One type name, more than one definition.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/unparsed.rs:1","actions":[{"about":"Rank the constructs that stop the compiler, most specs first.","name":"report"},{"about":"For each unreadable spec, the ITEM whose presence causes the failure.","name":"locate"},{"about":"Cross-check the census against an INDEPENDENTLY built population.","name":"agree"},{"about":"Run every construct's minimal source and say which the compiler rejects.","name":"probe"}],"agents":[],"args":[],"cast":null,"command":"tri unparsed","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ABOUT_SOURCE":"//! module doc, cli/tri/src/unparsed.rs:1","ACTIONS":["report","locate","agree","probe"],"ACTIONS_ABOUT":["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."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri unparsed","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/unparsed","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/unparsed","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/unparsed.rs","VARIANT":"Commands::Unparsed","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","WITNESS":"source-parse"},"health":"ok","id":"tri/unparsed","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/unparsed.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_unparsed","name":{"en":"tri unparsed"},"qualifiedId":"gHashTag/t27:tri/unparsed","repo":"gHashTag/t27","schema":2,"searchText":"tri/unparsed tri unparsed specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. report rank the constructs that stop the compiler, most specs first. locate for each unreadable spec, the item whose presence causes the failure. agree cross-check the census against an independently built population. probe run every construct's minimal source and say which the compiler rejects.","sha256":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","skills":[],"source":"cli/tri/src/unparsed.rs","specPath":"specs/tools/tri/unparsed.t27","summary":{"en":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по КОНСТРУКЦИИ, которая его останавливает, -- и каждая конструкция, подтверждённая живой пробой."},"typecheckOk":true,"variant":"Commands::Unparsed","whenToUse":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","actions":[{"about":"Generate a module's Verilog and execute its registered vectors.","name":"run"},{"about":"Inventory every vector file: executed, debt, or aspirational.","name":"debt"}],"agents":[],"args":[],"cast":{"commands":["tri vectors debt"],"id":"t27-tri-vectors","recorded":"2026-10-03 16:18 UTC","share":"https://t27.ai/term/t27-tri-vectors/","src":"term/t27-tri-vectors/session.cast","title":"tri vectors debt: tests that are prose"},"command":"tri vectors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ABOUT_SOURCE":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","ACTIONS":["run","debt"],"ACTIONS_ABOUT":["Generate a module's Verilog and execute its registered vectors.","Inventory every vector file: executed, debt, or aspirational."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"CAST":"term/t27-tri-vectors/session.cast","COMMAND":"tri vectors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vectors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vectors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vectors.rs","VARIANT":"Commands::Vectors","WHEN_TO_USE":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","WITNESS":"source-parse"},"health":"ok","id":"tri/vectors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vectors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vectors","name":{"en":"tri vectors"},"qualifiedId":"gHashTag/t27:tri/vectors","repo":"gHashTag/t27","schema":2,"searchText":"tri/vectors tri vectors the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. run generate a module's verilog and execute its registered vectors. debt inventory every vector file: executed, debt, or aspirational.","sha256":"6db1f366c9e6925e5f5ea2a207b82507aee732a2b310ab4f5f55bfc060908b83","skills":[],"source":"cli/tri/src/vectors.rs","specPath":"specs/tools/tri/vectors.t27","summary":{"en":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ru":"Реестр исполняемых векторов: запустить векторы модуля или проинвентаризировать, какие файлы исполняются, а какие только показываются."},"typecheckOk":true,"variant":"Commands::Vectors","whenToUse":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","witness":"source-parse"},{"aboutSource":"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)","actions":[],"agents":[{"letter":"V","ok":true}],"args":[{"about":"","name":"--toxic"}],"cast":null,"command":"tri verdict","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks for toxic regressions by analyzing swarm health metrics.","ABOUT_SOURCE":"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)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["V"],"AGENTS_NOTE":".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.","ARGS":["--toxic"],"COMMAND":"tri verdict","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/verdict","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/verdict","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Verdict","WHEN_TO_USE":"Checks for toxic regressions by analyzing swarm health metrics.","WITNESS":"source-parse"},"health":"ok","id":"tri/verdict","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_verdict","name":{"en":"tri verdict"},"qualifiedId":"gHashTag/t27:tri/verdict","repo":"gHashTag/t27","schema":2,"searchText":"tri/verdict tri verdict checks for toxic regressions by analyzing swarm health metrics. checks for toxic regressions by analyzing swarm health metrics. v","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/verdict.t27","summary":{"en":"Checks for toxic regressions by analyzing swarm health metrics.","ru":"Проверяет токсичные регрессии, анализируя метрики здоровья роя."},"typecheckOk":true,"variant":"Commands::Verdict","whenToUse":"Checks for toxic regressions by analyzing swarm health metrics.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","actions":[{"about":"Walk the corpus through `t27c icarus-simulate` and print the funnel.","name":"funnel"}],"agents":[],"args":[],"cast":null,"command":"tri vsim","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"How far each spec gets when its generated Verilog is actually RUN.","ABOUT_SOURCE":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","ACTIONS":["funnel"],"ACTIONS_ABOUT":["Walk the corpus through `t27c icarus-simulate` and print the funnel."],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":[],"COMMAND":"tri vsim","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vsim","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vsim","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vsim.rs","VARIANT":"Commands::Vsim","WHEN_TO_USE":"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.","WITNESS":"source-parse"},"health":"ok","id":"tri/vsim","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vsim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vsim","name":{"en":"tri vsim"},"qualifiedId":"gHashTag/t27:tri/vsim","repo":"gHashTag/t27","schema":2,"searchText":"tri/vsim tri vsim how far each spec gets when its generated verilog is actually run. 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. funnel walk the corpus through `t27c icarus-simulate` and print the funnel.","sha256":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","skills":[],"source":"cli/tri/src/vsim.rs","specPath":"specs/tools/tri/vsim.t27","summary":{"en":"How far each spec gets when its generated Verilog is actually RUN.","ru":"Как далеко доходит каждая спека, когда её сгенерированный Verilog действительно ЗАПУСКАЮТ."},"typecheckOk":true,"variant":"Commands::Vsim","whenToUse":"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.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","actions":[],"agents":[],"args":[{"about":"Record `origin/master` as the base of a measurement starting now.","name":"--start"},{"about":"Report whether the recorded base is still the tip, and refuse if it is not.","name":"--check"},{"about":"The ref the measurement is against. Defaults to `origin/master`.","name":"--base"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"cast":null,"command":"tri window","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Was the base you measured against still the tip when you reported?","ABOUT_SOURCE":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri window","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/window","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/window","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/window.rs","VARIANT":"Commands::Window","WHEN_TO_USE":"Was the base you measured against still the tip when you reported?","WITNESS":"source-parse"},"health":"ok","id":"tri/window","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/window.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_window","name":{"en":"tri window"},"qualifiedId":"gHashTag/t27:tri/window","repo":"gHashTag/t27","schema":2,"searchText":"tri/window tri window was the base you measured against still the tip when you reported? was the base you measured against still the tip when you reported?","sha256":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","skills":[],"source":"cli/tri/src/window.rs","specPath":"specs/tools/tri/window.t27","summary":{"en":"Was the base you measured against still the tip when you reported?","ru":"Была ли база, относительно которой вы мерили, всё ещё вершиной, когда вы отчитывались?"},"typecheckOk":true,"variant":"Commands::Window","whenToUse":"Was the base you measured against still the tip when you reported?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","actions":[],"agents":[],"args":[{"about":"Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","name":"--size"},{"about":"Print every tree, not only those holding work or unreadable.","name":"--all"}],"cast":null,"command":"tri worktrees","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the checkouts on this disk are holding. Deletes nothing.","ABOUT_SOURCE":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"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.","ARGS":["--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."],"COMMAND":"tri worktrees","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/worktrees","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/worktrees","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/trees.rs","VARIANT":"Commands::Worktrees","WHEN_TO_USE":"What the checkouts on this disk are holding. Deletes nothing.","WITNESS":"source-parse"},"health":"ok","id":"tri/worktrees","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"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/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/trees.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_worktrees","name":{"en":"tri worktrees"},"qualifiedId":"gHashTag/t27:tri/worktrees","repo":"gHashTag/t27","schema":2,"searchText":"tri/worktrees tri worktrees what the checkouts on this disk are holding. deletes nothing. what the checkouts on this disk are holding. deletes nothing.","sha256":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","skills":[],"source":"cli/tri/src/trees.rs","specPath":"specs/tools/tri/worktrees.t27","summary":{"en":"What the checkouts on this disk are holding. Deletes nothing.","ru":"Что держат чекауты на этом диске. Ничего не удаляет."},"typecheckOk":true,"variant":"Commands::Worktrees","whenToUse":"What the checkouts on this disk are holding. Deletes nothing.","witness":"source-parse"}],"version":1,"parts":[{"path":"tools/spec-tools-trios.json","sha256":"87d01a2d2330ecab527b37fb2461aebc3a489a7172994e1b7f63126a73cd8b91","count":295},{"path":"tools/spec-tools-trinity.json","sha256":"823271fc319a57bbbd2411c50a4f4858ea5943ddfde17e6bf243beb52d9856cc","count":254}]} diff --git a/apps/website/scripts/agents-from-specs.test.mjs b/apps/website/scripts/agents-from-specs.test.mjs index 5429aa57f3..6300c6949c 100644 --- a/apps/website/scripts/agents-from-specs.test.mjs +++ b/apps/website/scripts/agents-from-specs.test.mjs @@ -922,19 +922,30 @@ test('function translations come through the same i18n contract once SCOPE names assert.deepEqual(r.functions.i18n[0].coverage, { n: 1, total: 1 }) }) -test('the committed function catalog: 28 specs, every one witnessed by the manifest, five cron cards joined, four not deployed, Russian on each', async () => { +test('the committed function catalog: 33 specs, every one witnessed by the manifest, ten cron cards joined, four not deployed, Russian on each', async () => { const { generate, FUNCTIONS_MANIFEST } = await import('./agents-from-specs.mjs') const r = await generate({ generatedAt: '2026-01-01T00:00:00.000Z' }) assert.deepEqual(r.problems, []) const fns = r.functions.functions - assert.equal(fns.length, 28) - assert.equal(r.functions.counts.specPlusCode, 28) + assert.equal(fns.length, 33) + assert.equal(r.functions.counts.specPlusCode, 33) assert.deepEqual(r.functions.codeOnly, []) - assert.equal(r.functions.counts.byTrigger.cron, 5) - assert.equal(r.functions.counts.withCronSpec, 5) + assert.equal(r.functions.counts.byTrigger.cron, 10) + assert.equal(r.functions.counts.withCronSpec, 10) assert.equal(r.functions.counts.notDeployed, 4) const manifest = JSON.parse(readFileSync(join(SITE, FUNCTIONS_MANIFEST), 'utf8')) - assert.equal(manifest.functions.length, 28) + assert.equal(manifest.functions.length, 33) + // The five the site could not draw at all until 2026-09-22: they are what the + // live status endpoint answers for, they carry every failed run in the week, + // and their deployment is unread rather than false. + for (const id of ['client-telemetry-daily', 'club-invoice-abandoned-watch', 'crm-proactive-sweep', 'robokassa-unclaimed-watch', 'ton-pending-watch']) { + const f = fns.find((x) => x.id === id) + assert.ok(f, `${id}: absent from the catalog, so its card cannot be drawn`) + assert.equal(f.witness, 'spec+code') + assert.equal(f.code.deployed, null, `${id}: deployment is unread, not false`) + assert.ok(f.cronSpec, `${id}: no cron card joined`) + } + assert.equal(r.functions.counts.deployUnknown, 5) for (const f of fns) { assert.equal(f.id, f.specPath.replace(/^specs\/functions\//, '').replace(/\.t27$/, '')) assert.ok(f.summary.ru && /[\u0400-\u04ff]/.test(f.summary.ru), `${f.id}: no Russian summary`)