The first-party agent-tool layer is Experimental and its surface moves between
builds. A recipe that names a toolset does not fail loudly on the next build --
the tool is simply absent, the search finds nothing, and "nothing found" reads
as "no problem here". That is the exact confusion this bundle documents, so the
tokens are barred rather than discouraged.
Grounded in measurement against a live editor, not in reading:
- the aggregator plugin lists 21 dependencies; the server reported 53
registered toolsets from 22 plugins, one dependency contributing none;
- the visible tool count flips between 3 meta-tools and every tool registered
natively, on one project setting.
- gate.py: ENGINE_TOOL_TOKENS and check_engine_tool_surface, registered in
CHECKS; rule floor raised to 17.
- test_gate.py: one poison naming a toolset, a meta-tool and a host:port.
- ADR-0004 records the decision, its confirmation criteria and what is
deliberately deferred.
- README and CONTRIBUTING state the rule where a contributor meets it.
Verified: gate.py 0 violations over 17 rules; test_gate.py 17/17 redden on
their fixtures, baseline clean, surface coverage intact. The token list matches
nothing under skills/ today, checked before the rule landed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Acceptance review found four documents describing a state that no longer holds.
None of the original text is deleted: the reason a decision was taken is part of
the record, so supersession is marked rather than rewritten.
- README: license section reflects ADR-0003, ADR-0003 added to the decision list,
status line says which component actually ships.
- handoff.md: banner marking it historical, with a table of what changed since
2026-09-01 (skills moved, layout, licence, engine version still open).
- licensing-options.md: status struck through, pointing at ADR-0003.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Phase 0 of the handoff plan, as a marketplace rather than a flat skills/
directory. Content moved out of the LyraResearch archive and depersonalised:
addresses stay in the archive, recipes ship.
- plugins/ue-design-skills: 17 skills, 232 failure-mode entries, each with the
six required fields; catalog.json as the harness-neutral source of truth and
.claude-plugin/ as one adapter over it.
- _gate: 16 rules, one poisoned fixture per rule, plus surface coverage so a
declared file cannot silently miss the line rules.
- ADR-0002 (harness-neutral bundle behind a marketplace) and ADR-0003 (split
licensing: CC BY-ND 4.0 prose, Apache-2.0 code and metadata).
- LICENSE files at both levels, CONTRIBUTING.md, docs/licensing-options.md as
the material the licence decision grew from.
Verified: gate.py 0 violations; test_gate.py 16/16 rules redden on their
fixtures with a clean baseline and 2 root files reaching the line rules.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Фиксирует состояние проекта на момент завершения сессии 2026-09-01:
что сделано (ADR-0001, репозиторий), что не сделано (фазы 0-5),
открытые вопросы и порядок следующих шагов.
Документ нужен, чтобы продолжить работу через неделю/месяц без
необходимости перечитывать всю сессию.
Убрана отсылка к 'ADR-0002-candidate' про удалённый транспорт, которая
была вставлена для красоты аргумента, но не подкреплена реальным запросом.
Заменено на честную формулировку: loopback-only — это ограничение
v0.1, удалённый сценарий будет рассмотрен отдельным ADR при появлении
конкретной потребности, а не упреждающе.
Соответствует принципу YAGNI: ADR фиксируют принимаемые решения, а не
гипотетические.
Зафиксировано архитектурное решение о замене PID-файла на UDP-broadcast
discovery с graceful degradation: MCP-сервер остаётся полезным без
запущенного редактора (файловые и аналитические инструменты работают),
а редакторные инструменты появляются в tools/list только при живом
соединении.
Это ответ на повседневную боль VibeUE: 60-секундные зависания tools/call
после закрытия редактора, конфликты при двух инстансах, жёсткая связка
с файлом-маркером на диске.