From the Codex review of #216, after five internal rounds.
Where: .claude/skills/update-xmech-page/SKILL.md step 11: grep -v -x -e revisions.json -e mechs -e claw -e '.*\.log'.
The allowed names are unescaped regular expressions, so revisions.json also matches revisionsXjson. ls -A gives names without types, so a directory named notes.log/ counts as a log. With the three markers present, either leaves $extra empty, and the step removes unrelated work.
Fix: compare names literally, and accept a *.log entry only if it is a regular file.
From the Codex review of #216, after five internal rounds.
Where:
.claude/skills/update-xmech-page/SKILL.mdstep 11:grep -v -x -e revisions.json -e mechs -e claw -e '.*\.log'.The allowed names are unescaped regular expressions, so
revisions.jsonalso matchesrevisionsXjson.ls -Agives names without types, so a directory namednotes.log/counts as a log. With the three markers present, either leaves$extraempty, and the step removes unrelated work.Fix: compare names literally, and accept a
*.logentry only if it is a regular file.