Changes: - Re-ran both committed probes unchanged (smoke exit 0 SMOKE_PASS; wasm-unsupported exit 2 UNSUPPORTED_BLOCKER) and recorded actual outputs in state/evidence/S00-021-auto-crypto-fcef9b6781bf.md. - Verified on the reachable npm proxy that no maintained browser/WASM-capable OMEMO2 package exists: @signalapp/libsignal-client 0.105.0 is native-only (zero .wasm); @signalapp/libsignal, omemo-client, omemo-top, omemo-wasm, @converse/omemo are all E404. - Wrote docs/decisions/0003-crypto-library.md (proposed) documenting the verified audited session/ratchet + persistence capability and the honest blocker for the browser/worker/WASM endpoint and OMEMO2 wire layer, with traceable primary sources. - Wrote state/handoffs/S00-021.md with the reproducible next step for the S00-004 continuation. Validation: - smoke.mjs -> exit 0 (SMOKE_PASS, 631-byte record byte-for-byte reload). - wasm-unsupported.mjs -> exit 2 (wasmFiles 0, native prebuilds only). - npm view E404s confirmed against the same proxy that returns @signalapp/libsignal-client 0.105.0, so responses are genuine. - make check: 72 tooling tests passed (OK). - No source changes outside scope: experiments/** unchanged; only state/tasks.json (workflow metadata) plus the in-scope ADR. S00-004 stays blocked (honest blocker), not bypassed. Task: S00-021 Agent: auto-crypto-fcef9b6781bf Role: crypto Action: claim Status: review 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 останавливает очередь и сохраняет изменения.