fix(skill): findings from round-5 team review
- Зачем:
- round-5 adversarial review (claude-team-review) нашёл 2 HIGH и 3 MEDIUM, которых не увидел round-4 self-review. Основное — регрессия в b213678, где при рефакторе primary-path silently дропнуло malformed-JSON-first-line handling, и противоречие в Step 7 step 4 между «same approach as Step 4 check 4» и «keep previous id».
- Что:
- SKILL.md Step 4 check 4: primary-path с явными ветками — valid UUID → save; любой другой случай (empty / malformed / missing thread_id / partial output) → fallthrough на secondary. Secondary описан как двухпричинный (sandbox suppression + format drift), не только «0 bytes».
- SKILL.md Step 7 step 4: явно разведено с Step 4 check 4 — zero-find в resume НЕ абортит round, а keep previous CODEX_SESSION_ID (§2.4.4 гарантирует что thread id не ротируется). Добавлен warning-сообщение.
- SKILL.md Step 2/4/7/Rules: убран `echo $(($(date +%s) - 1))` Bash-вызов, timestamp считается Opus'ом в reasoning и подставляется литералом. Убирает compound-command permission-матч проблему (`$()` + `- 1` арифметика) и один Bash-круг на раунд.
- SKILL.md Step 7 fresh-exec fallback: архивирует failed-resume артефакты через `mv` в `*-failed-resume.{jsonl,txt}` ПЕРЕД fresh exec. Step 9 cleanup glob расширен.
- DESIGN.md §9.5: cross-ref «Step 4 check 3» → «Step 4 check 4».
- DESIGN.md §4.1 trade-offs: описание CODEX_SESSIONS_BEFORE переписано под in-reasoning capture.
- README.md: убрана `Bash(date +%s)` permission, добавлены `Bash(mv ...)` для архивации.
- Проверка:
- Повторно прогнать self-review с фокусом на: (а) понятен ли novice reader malformed-case fallthrough, (б) не противоречит ли Step 7 step 4 Step 4 check 4 после правки.
This commit is contained in:
@@ -110,8 +110,6 @@ chosen config file:
|
||||
"Bash(git status*)",
|
||||
"Bash(git symbolic-ref*)",
|
||||
"Bash(git rev-parse*)",
|
||||
// Pre-exec timestamp capture (for session-id filesystem fallback)
|
||||
"Bash(date +%s)",
|
||||
// Codex: initial launch (uses -C; prompt fed via cat | pipe for env portability)
|
||||
"Bash(cat /tmp/codex-prompt-* | timeout 600 codex exec *)",
|
||||
// Codex: resume (cd prefix because resume has no -C flag; prompt via cat | pipe)
|
||||
@@ -127,6 +125,9 @@ chosen config file:
|
||||
"Read(/tmp/codex-review-*)",
|
||||
"Read(/tmp/codex-stdout-*)",
|
||||
"Read(/tmp/codex-stderr-*)",
|
||||
// Archive failed-resume diagnostics before fresh exec overwrites them
|
||||
"Bash(mv /tmp/codex-stdout-* /tmp/codex-stdout-*-failed-resume.jsonl)",
|
||||
"Bash(mv /tmp/codex-stderr-* /tmp/codex-stderr-*-failed-resume.txt)",
|
||||
// Cleanup
|
||||
"Bash(rm -f /tmp/codex-*)"
|
||||
```
|
||||
@@ -143,7 +144,6 @@ chosen config file:
|
||||
"Bash(git status*)",
|
||||
"Bash(git symbolic-ref*)",
|
||||
"Bash(git rev-parse*)",
|
||||
"Bash(date +%s)",
|
||||
"Bash(cat /tmp/codex-prompt-* | timeout 600 codex exec *)",
|
||||
"Bash(cd * && cat /tmp/codex-resume-prompt-* | timeout 600 codex exec resume *)",
|
||||
"Bash(find ~/.codex/sessions*)",
|
||||
@@ -154,6 +154,8 @@ chosen config file:
|
||||
"Read(/tmp/codex-review-*)",
|
||||
"Read(/tmp/codex-stdout-*)",
|
||||
"Read(/tmp/codex-stderr-*)",
|
||||
"Bash(mv /tmp/codex-stdout-* /tmp/codex-stdout-*-failed-resume.jsonl)",
|
||||
"Bash(mv /tmp/codex-stderr-* /tmp/codex-stderr-*-failed-resume.txt)",
|
||||
"Bash(rm -f /tmp/codex-*)"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user