RUGitHubInstall

Встроенная инструкция - карта, правила владельца живут рядом

Аудит 12.09 (.scratch/work/reviews/t11-audit.md) и T11-TRIM (коммиты 218619e7, 1d37d232) собрали три факта, из которых следует решение.

eve отдаёт модели все markdown-файлы инструкций каждый ход. discoverInstructionsSource (node_modules/eve/dist/src/discover/grammar.js) берёт корневой instructions.md первым, затем все файлы каталога instructions/ по имени, а createInstructionsPromptBlocks (node_modules/eve/dist/src/runtime/prompt/compose.js) склеивает источники role === "system" в один блок Instructions (instructions). Файлы слота читаются с диска каждый ход и в дерево сборки не копируются (scripts/lib/authored-paths.ts: isLiveInstructionPath).

Version-путь копирует замену как есть. buildVersion (scripts/lib/version-update.ts:857-870) кладёт data/custom/agent/instructions.md в сборку командой cpSync: на Version-установке файл владельца заменяет встроенную персону целиком и замирает на дне правки. На checkout файл сливается трёхсторонне (scripts/lib/custom-layer.ts:500-521, git merge-file -p), при конфликте в дерево идёт апстрим, а файл владельца уезжает в data/update-conflicts/ (scripts/lib/custom-layer.ts:535-549). Всё, что приехало релизом после дня правки, до модели не доходит: пока замена жива, встроенная инструкция мертва (инцидент 12.09: владелец не получал ни правил доставки, ни напоминаний).

«Основа плюс правила» в одном файле не сливается. Фикстуры A и C аудита: апстрим дописывает раздел в конец встроенного файла - трёхстороннее слияние даёт конфликт (exit=1), потому что обе стороны правят один файл; полный рерайт конфликтует всегда. Последние правки agent/instructions.md в репозитории дописывались именно в конец.

Что решено

Встроенная agent/instructions.md - карта. Роль, границы, указатели «за чем куда идти» и короткие обязательные правила; подробности (форматы времени, поведение тулов, онбординг подключений) живут в описаниях тулов и телах скиллов и приходят по запросу. Карта держится в пределах 5 000 знаков (владелец, 22.09.2026; до этого 3 000): разросшаяся карта снова становится стеной, которую убирали 293a9158 и T11-B.

Правила владельца - отдельные живые файлы. Markdown в data/custom/agent/instructions/*.md читается с диска каждый ход рядом с встроенной персоной (agent/instructions/30-owner-rules.ts, agent/lib/owner-rules.ts): порядок по имени, общий предел 4 000 знаков, iva doctor показывает счёт и предупреждает о переборе. В чате правило пишется моделью через write_file после явного подтверждения владельца: отдельного тула нет (решение владельца 12.09, 218619e7), write_file владеет слотом, и второго пути писателя, который мог бы разойтись с первым, не появляется.

Замена data/custom/agent/instructions.md устарела. iva doctor называет файл, документация ведёт с него на rules.md, новые правила в него не пишутся.

Что отвергнуто

Замена встроенной персоны целиком. Прожила с 10.08 до 12.09: застыла на дне правки и потеряла доставку, напоминания и политику тулов; каждый Release улучшал файл, которого модель не видела. Отвергнуто владельцем.

Слияние «основа плюс правила» в одном файле. Фикстура A: конфликт на любой апстрим-правке в конец, потому что правило владельца и абзац Release живут в одном файле.

Правила поведения в CORE. Память не правила: CORE держит факты и цели и делит с ними общий предел 3 600 знаков (agent/lib/core-cap.ts), а правило поведения должно переживать очистку памяти и не конкурировать с фактами за место.

Статический слот и /update на каждое правило. Регресс против пути через CORE: правило перестаёт действовать до ближайшего обновления, а «запомни правило» требует от владельца команды.

Отдельный тул instructions_add_rule. Сначала появился (9b7f0b7), затем убран владельцем 12.09 (218619e7): один способ писать файл лучше двух, а write_file уже умеет прочитать, дописать и создать файл. Модель пишет rules.md после подтверждения владельца.

View original Markdown ↗