Commit Graph
5 Commits
Author SHA1 Message Date
ddadmin bbf4499b71 fix(skill): findings from round-4 adversarial review
- Зачем:
  - round-4 self-review на ветке нашёл HIGH-bug (пропущен плейсхолдер в Step 2, буквальный Opus мог не подставить литерал) и три MEDIUM (лишний abort на APPROVED при пустом `~/.codex/sessions/`, ложное обещание детекции wrong-session, same-epoch race при быстром codex). Исправляю до PR, чтобы не оставлять известных дефектов.
- Что:
  - SKILL.md Step 2: `${CODEX_SESSIONS_BEFORE}` добавлен в список placeholders с явным пояснением роли.
  - SKILL.md Step 4/7 + Rules: timestamp capture через `$(($(date +%s) - 1))` — сдвиг на секунду защищает от same-epoch race против `-newermt` strict-greater.
  - SKILL.md Step 4: перестановка проверок — review-sanity (check 3) раньше session-id capture (check 4); на APPROVED session-id не нужен → skip entirely. Убирает лишний abort валидной APPROVED round.
  - SKILL.md Step 4 check 4: parallel-codex caveat переписан честно — wrong-session resume НЕ детектируется автоматически, риск silent corruption зафиксирован.
  - SKILL.md Step 4 check 4: при zero-lines перед abort выводятся диагностические артефакты (jsonl, stderr, 3 недавних rollout).
  - DESIGN.md §4.8: обновлён с 4-check порядком и объяснением почему review раньше session-id.
  - DESIGN.md §4.1: alternative-considered про filesystem-only-primary переписан — убрано ложное обещание §4.8-детекции; trade-offs расширены `-1` shift и skip-on-APPROVED.
  - README.md: добавлены permissions `Bash(ls -t ~/.codex/sessions*)` для диагностики.
- Проверка:
  - Заново прогнать §7.1 smoke-test: EXIT=0, rollout-UUID извлекается даже при пустом JSONL.
  - Edge case: codex exec с cached response <1s + `CODEX_SESSIONS_BEFORE=T` → `find -newermt "@$((T-1))"` всё равно находит rollout.
2026-04-17 17:31:24 +03:00
ddadmin af0ad8ab11 docs: macOS/BSD find — template+понимание вместо ветвления
- Зачем:
  - `-newermt "@<epoch>"` и `-printf` в secondary session-id capture — GNU-специфичные; на macOS BSD find они не работают, а тестировать на маке негде.
- Что:
  - SKILL.md: добавлена one-paragraph platform note рядом с `find` — формулирует цель шага ("найти свежие rollout-файлы, выбрать последний, извлечь UUID") и приглашает Opus/пользователя подставить BSD-эквивалент.
  - docs/DESIGN.md §9.5: новое known-limitation с обоснованием template+understanding подхода вместо platform-detection.
  - README.md Known limitations: user-facing note, что end-to-end на macOS не тестировался.
- Проверка:
  - Ничего не ломается на Linux (команды без изменений).
  - На macOS оператор читает note и адаптирует.
2026-04-17 17:21:27 +03:00
ddadmin 390d912739 docs(design): подтянуть §3.2, §7.2, §7.3, §2.5 под новую pipe-форму
- Зачем:
  - остатки документации ссылались на `- < file` и старый одноуровневый session-id, расходились с SKILL.md после основной правки.
- Что:
  - §3.2 теперь рекомендует `cat file | cmd -` со ссылкой на §4.13.
  - §7.2 smoke-test resume переведён на pipe-форму и включает secondary filesystem session-id capture.
  - §7.3 (bad-UUID) тоже на pipe-форме для изоляции от §6.6.
  - §2.5 разделяет success-row на reference и affected окружения, добавлен row для `- < file` exit-1-empty-stderr.
- Проверка:
  - `grep -n '\- < ' docs/DESIGN.md` остаются только контекстные упоминания (§2.1 описание обеих форм, §4.13 decision, §6.6 lesson, §8 log).
2026-04-17 17:11:32 +03:00
ddadmin fa61ae03ac fix(skill): pipe-форма и rollout-UUID fallback для переносимости
- Зачем:
  - форма `codex exec ... - < file` exit=1 с пустым stderr, а `--json` stdout оказывается пустым в части Claude Code песочниц; без обхода скилл не может захватить session ID и теряет resume на раундах 2-5.
- Что:
  - SKILL.md Step 4/7 переведены на `cat file | codex exec ... -` как canonical; добавлен two-tier захват session ID (primary = first JSONL line, secondary = UUID из имени `~/.codex/sessions/**/rollout-*.jsonl` с mtime > CODEX_SESSIONS_BEFORE).
  - README.md обновлены permissions (pipe-форма, `find rollout-*`, `date +%s`) и добавлен troubleshooting про env-specific пустой JSONL.
  - docs/DESIGN.md: §2.1 описывает обе формы, §2.2 фиксирует env-specific suppression, §2.3 добавляет filesystem-recovery путь, §4.1 переделан на two-tier decision, добавлены §4.13 (canonical pipe) и §6.6 (lesson от 2026-04-17), в §8 новая строка с окружением yantar-k8s.
- Проверка:
  - DESIGN.md §7.1 smoke test (обновлён на pipe-форму + проверка filesystem secondary path).
  - Оба окружения (reference WSL2 + containerized sandbox) должны давать валидный session ID и успешный resume.
2026-04-17 17:09:29 +03:00
ddadminandClaude Opus 4.7 3f0d1321ff docs: add DESIGN.md explaining why the skill is built this way
1082-line design note covering:
- Empirical facts about Codex CLI 0.121.0 (invocation, streams,
  resume semantics, known failure modes) with copy-pasteable
  verification commands.
- Claude Code harness facts (Bash truncation, cwd drift, Opus
  literal-interpretation tendencies).
- 12 design decisions in a uniform format: what, where in SKILL.md,
  alternatives considered, why chosen, trade-offs accepted.
- Rejected ideas (marker files, per-round naming, $(pwd), etc.) with
  reasons, so future contributors don't re-propose them.
- Prior diagnostic errors from a previous agent-auditor's dump that
  turned out to be wrong when verified, kept as a methodological
  lesson.
- Smoke-test protocol (§7) with concrete commands and expected
  outputs so any maintainer can verify the Codex contract still holds
  in minutes.
- Update protocol: when and how to revise this file, with a pointer
  that future Opus generations interpret instructions more literally
  and SKILL.md hardening must track that.
- Mermaid flow diagram of the round-trip.

Intended audiences: future Claude sessions resuming work on the skill,
human developers, and new contributors. The file is self-contained —
does not rely on conversation history that produced the current design.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:29:16 +03:00