Changes:
- Wrote state/evidence/S00-021-review.md recording independent re-checks of the
executor's remediation for S00-004's interruption ("Agent timed out before
escalation").
- Reproduced both committed probes unchanged: smoke.mjs exit 0 (SMOKE_PASS,
631-byte session record byte-for-byte reload) and wasm-unsupported.mjs exit 2
(wasmFiles 0, native-only prebuilds), matching executor evidence exactly.
- Independently re-queried npm registry: @signalapp/libsignal (browser WASM) E404;
@signalapp/libsignal-client 0.105.0 (native, AGPL-3.0) exists; confirms the
browser/worker/WASM + OMEMO2 wire-layer blocker is genuine.
- Audited scope via git: commit 30f7f22 touches only the in-scope ADR
docs/decisions/0003-crypto-library.md plus workflow metadata; experiments/**
unchanged; working tree clean. No requirement bypass: S00-004 remains blocked,
ADR 0003 records the honest blocker and forbids done on persistence+Ratchet alone.
Validation:
- make check: 72 tooling tests OK.
- Both probes reproduced, exit codes and output match evidence.
- Acceptance met: interruption repro row exists for next executor; original not
declared done via bypass.
Task: S00-021
Reviewer agent: auto-security-5d2ae592b569
Role: security
Action: approve
Task: S00-021
Agent: auto-security-5d2ae592b569
Role: security
Action: review
Status: done
Task title: Устранить прерывание: Проверить browser OMEMO backend
Luma Web — основа агентной разработки
Переносимый каталог планирования и workflow для создания Web-клиента Luma. Готового мессенджера здесь пока нет. Будущие задачи отмечены todo, исходные clear-спецификации сохранены без изменения байтов. Framework и XMPP/OMEMO библиотеки выбираются через начальные ADR и проверку совместимости.
Быстрый старт
Для инструмента нужен Python 3.10+; сторонние Python-пакеты не нужны.
python3 scripts/tasks.py validate
python3 -m unittest discover -s tests/tooling -v
python3 scripts/tasks.py status
python3 scripts/tasks.py next --role orchestrator
Передать агенту master_prompt.md; role/id можно добавить в пользовательское поручение. После blocker прежний agent id не используется: следующий процесс назначает runner.
python3 scripts/tasks.py claim S00-001 --agent local-architect-1 --role orchestrator
python3 scripts/tasks.py packet S00-001 --agent local-architect-1 --output state/context-S00-001.md
Оператор выбирается из 12 файлов ролей; маленькой модели не нужно читать весь tasks.json. Ограниченный context packet содержит максимум 48 000 символов.
Один рабочий цикл — одна задача, её focused checks, evidence, handoff и независимое review. Все команды запускаются из корня этой основы; script сам разрешает пути относительно своего расположения.
Навигация
master_prompt.md,AGENTS.md— старт/продолжение работы.specs/tz_clear.md,specs/uikit_clear.md— оригиналы целевых требований.planning/ROADMAP.md— этапы и gates.planning/TASK_MATRIX.md,planning/task_matrix.csv— задачи, операторы, зависимости, статусы.planning/TRACEABILITY.md— применимость требований Web и связь с задачами.planning/tasks/<ID>.md— подробная атомарная карточка.roles/— полномочия и инструкции операторов.docs/— architecture/profile/contracts/workflow/testing/security иBOOTSTRAP_PROMPTS.mdс готовыми поручениями.state/— статусы, evidence, handoffs; не secrets.scripts/tasks.py— dependency-free task CLI.tests/tooling/— тесты инструмента и целостности.src/,services/,infra/— будущая реализация; пояснения внутри директорий.
Перенос
Можно скопировать весь каталог в отдельный репозиторий, включая .github, .gitignore, .editorconfig и текущий state. Git metadata родительского репозитория не требуется. Внутри исходного Apple-репозитория корневая .github этой основы не запускается автоматически; workflow начнёт работать после переноса .github в корень отдельного Web-репозитория.
make check проверяет только подготовленную основу. App build/test pipeline будет подключён после принятия стека. Нельзя считать готовые документацию/матрицу выполненными продуктовыми задачами.
Автоматический режим
Один раз заполнить runner.local.json по runner.example.json командой своего tool-capable agent CLI, затем:
python3 scripts/runner.py --dry-run
python3 scripts/runner.py --config runner.local.json
Каждый запуск модели получает ровно одну задачу и fresh session. При blocker инструмент создаёт remediation и блокирует original; reporter заканчивает работу. Новый агент исправляет причину, другой проверяет, новый продолжает original. При необходимости внешнего input runner останавливается с конкретным запросом. Подробности — docs/AUTOMATION.md.
После каждого завершённого запуска runner делает осмысленный commit с task ID, описанием actual changes и проверок: реализация → отдельный review → следующая задача. Blocker сохраняется как незавершённый checkpoint. Агент заранее пишет сообщение, Git выполняет coordinator. Перед первым запуском нужен первоначальный commit основы и чистый Git checkout; подробности — docs/GIT_WORKFLOW.md. Ошибка commit останавливает очередь и сохраняет изменения.