Block RLCR placeholder summaries#217
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9a7f176feb
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
9a7f176 to
24117fb
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 24117fb285
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| # common contract-only failure mode before spending a Codex review when the | ||
| # summary still contains template placeholders. | ||
| if [[ "$IS_FINALIZE_PHASE" != "true" ]]; then | ||
| SUMMARY_PLACEHOLDERS=$(grep -nE '^[[:space:]]*(-[[:space:]]*)?\[(Describe what was (done|implemented in this phase)|List (files created/modified/deleted|created/modified files|tests/commands run and outcomes|any deferred or pending items|unresolved items, if any))\][[:space:]]*$|^[[:space:]]*(-[[:space:]]*)?Action:[[:space:]]*none\|add\|update[[:space:]]*$|^[[:space:]]*(-[[:space:]]*)?Notes:[[:space:]]*\[what changed and why\][[:space:]]*$' "$SUMMARY_FILE" 2>/dev/null || true) |
There was a problem hiding this comment.
Ignore fenced code in placeholder detection
When a concrete summary quotes an exact scaffold line in a fenced Markdown block, such as documenting a template change with - [List created/modified files], this grep still matches it because it scans the whole file without tracking code fences. That blocks the stop hook before Codex runs even though the live summary has been replaced with concrete content; this also undercuts the new test intent that legitimate scaffold-token mentions in code blocks should be allowed.
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24117fb to
75e2f57
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 75e2f57846
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3385e30b35
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| /^[[:space:]]*(-[[:space:]]*)?Action:[[:space:]]*none\|add\|update[[:space:]]*$/ { print FNR ":" $0; next } | ||
| /^[[:space:]]*(-[[:space:]]*)?Notes:[[:space:]]*\[what changed and why\][[:space:]]*$/ { print FNR ":" $0; next } |
There was a problem hiding this comment.
Honor disabled BitLesson checks for review-only summaries
In --skip-impl/review-only loops, setup explicitly writes bitlesson_required: false so BitLesson formatting does not block the review workflow, and the review prompt only adds BitLesson instructions when that flag is true. This unconditional placeholder matcher still rejects the BitLesson scaffold lines, so a user can fill the real summary sections and still be blocked before codex review merely because the disabled BitLesson section contains Action: none|add|update or Notes: [what changed and why]. Guard these matches on BITLESSON_REQUIRED or omit the BitLesson scaffold when enforcement is disabled.
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Validation
bash -n hooks/loop-codex-stop-hook.shbash -n tests/test-summary-placeholder-gate.shgit diff --checktests/test-summary-placeholder-gate.shtests/test-stop-hook-bg-allow.shtests/test-template-loader.shtests/test-todo-checker.sh🤖 Generated with Claude Code