Skip to content

skill: post coder change-summary comment after addressing feedback#290

Merged
wwind123 merged 8 commits into
mainfrom
issue-289-coder-change-summary
Jun 12, 2026
Merged

skill: post coder change-summary comment after addressing feedback#290
wwind123 merged 8 commits into
mainfrom
issue-289-coder-change-summary

Conversation

@wwind123

Copy link
Copy Markdown
Owner

Summary

  • Fixes skill: post coder change-summary comment after addressing review feedback #289
  • Adds an explicit "post change-summary comment" step to SKILL.md for both plan-round and PR-round flows, matching the behaviour of the old CLI-based coder agent
  • In plan rounds: Claude posts a gh issue comment after addressing blocking items and before writing the revised plan
  • In PR rounds: Claude posts a gh pr comment after pushing fixes and before running the next run-pr-round

Test plan

  • Read SKILL.md and verify the new step appears in both the plan-loop (Step 3) and PR review mode sections
  • Run a plan-loop or PR-round that goes more than one round and confirm a change-summary comment is posted before the next reviewer turn

🤖 Generated with Claude Code

…ixes #289)

Add explicit step to SKILL.md for both plan-round and PR-round flows:
after addressing blocking items, Claude posts a gh comment summarising
what changed before running the next review round, matching the behaviour
of the old CLI-based coder agent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Approved

The changes correctly implement the requirement for the agent to post a change-summary comment after addressing blocking feedback. This applies to both the plan-round flow (using gh issue comment) and the PR-round flow (using gh pr comment), matching the behavior of the legacy CLI-based coder agent.

-- Google Gemini

…s after }

Agents like Codex can emit <!-- HUMAN_REQUIREMENTS_RESOLVED --> between the
closing } and <!-- AGENT_STATE -->, which caused json.loads to fail with
"Extra data". Switch both the metadata parse in _run_reviewer and the
json extraction in _normalize_disposition_values to json.JSONDecoder().raw_decode(),
which reads exactly one JSON object and ignores all trailing content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-1 failure (Codex <!-- HUMAN_REQUIREMENTS_RESOLVED --> parse error):

  • fix: switched _normalize_disposition_values and the review-JSON metadata parse in _run_reviewer from json.loads(split(...)[0]) to json.JSONDecoder().raw_decode(), which reads exactly one JSON object and ignores any trailing non-AGENT markers (like <!-- HUMAN_REQUIREMENTS_RESOLVED -->) that Codex writes between } and <!-- AGENT_STATE -->.

-- Anthropic Claude

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The PR correctly implements the requirement to post change-summary comments and significantly improves the robustness of agent output parsing. The switch to raw_decode is a great fix for handling trailing prose. I've flagged a couple of minor issues in the SKILL.md templates that should be addressed before merging.

Blocking issues

  • In SKILL.md, the gh issue comment example in the plan-loop (Step 3) has indented content within the cat <<'EOF' block. This indentation will be preserved in the comment body, causing GitHub to render the summary as a code block. The content should be flush-left, matching the gh pr comment example later in the file.
  • The comment templates in SKILL.md hardcode the signature as -- Anthropic Claude. Since the coding-review-agent-loop project explicitly supports multiple agents (Gemini, Codex, etc.), the signature should be a placeholder (e.g., -- <Agent Name>) or the instructions should tell the agent to use its own name.

Same-PR follow-ups

  • In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in _normalize_disposition_values. Storing the stripped string in a variable would be slightly cleaner.

-- Google Gemini

…ize_raw_response

Codex writes <!-- HUMAN_REQUIREMENTS_RESOLVED --> between the closing }
and <!-- AGENT_STATE -->, which the protocol validator rejects as prose.
Extend _normalize_raw_response to use raw_decode to find the exact JSON
end position, then reconstruct the output as JSON + state-marker + signature,
discarding anything in between.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-2 failure (validator rejected <!-- HUMAN_REQUIREMENTS_RESOLVED --> between } and <!-- AGENT_STATE -->):

  • fix: updated _normalize_raw_response to use raw_decode to find the exact end of the JSON object, then reconstruct the output as {JSON}\n<!-- AGENT_STATE -->\n-- Signature, discarding any non-AGENT markers in between. The raw_decode fix from the previous commit remains and handles the parse step too.

-- Anthropic Claude

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The PR correctly implements the requested 'post change-summary comment' steps in SKILL.md and significantly improves the robustness of agent response parsing in skill_runner.py. However, several prior review items remain unaddressed, including a broken shell example in SKILL.md and hardcoded agent signatures.

Blocking issues

  • In SKILL.md, the gh issue comment example in the plan-loop (Step 3) still has indented content within the cat <<'EOF' block. This will cause the comment body to be indented on GitHub (potentially rendering as a code block) and, more importantly, will break the heredoc if the closing EOF is not flush-left when copied into a shell.
  • The comment templates in SKILL.md still hardcode the signature as -- Anthropic Claude. This should be generalized (e.g., -- <Agent Name>) to support the multi-agent nature of the project.

Same-PR follow-ups

  • In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in _normalize_disposition_values. It would be cleaner to store the stripped string in a variable.
  • In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content between the JSON object and the <!-- AGENT_STATE --> marker. While this improves robustness against unwanted prose, please verify that no relevant markers (like <!-- HUMAN_REQUIREMENTS_RESOLVED -->) are intended to be preserved in the normalized output.

Prior unresolved item dispositions

  • [item-1] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) has indented content with... -> still blocking
  • [item-2] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md hardcode the signature as -- Anthropic Claude. Since the `c... -> still blocking
  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr

-- Google Gemini

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The PR still leaves the carried SKILL.md template issues unresolved, and the carried same-PR cleanup in the helper remains.

Blocking issues

  • SKILL.md:106-114: The plan-loop gh issue comment heredoc still shows the comment body and closing EOF indented inside the shell snippet. Copying this example as written will preserve leading spaces in the posted comment and can break the heredoc because the terminator is not flush-left.
  • SKILL.md:112 and SKILL.md:149: Both new comment templates still hardcode -- Anthropic Claude. This skill is used by multiple agents, so the template should either use a placeholder such as -- <Agent Name> or explicitly instruct the active agent to sign with its own name.

Same-PR follow-ups

  • helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twice in succession. Store the stripped value once before raw_decode() and reuse it for the footer slice.

Prior unresolved item dispositions

  • [item-1] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) has indented content with... -> still blocking
  • [item-2] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md hardcode the signature as -- Anthropic Claude. Since the `c... -> still blocking
  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr

-- OpenAI Codex

…plates

Move the plan-round change-summary code block out of the numbered list so
the EOF terminator is flush-left (bash requires this). Also replace the
hardcoded '-- Anthropic Claude' with '-- <Your Name>' in both templates
to support multi-agent use.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-3 feedback:

  • heredoc indentation (item-1 / item-3): moved the plan-round change-summary code block out of the numbered list so the EOF terminator is at column 0 in the rendered markdown; also added a note that EOF must be flush-left when run in a shell.
  • hardcoded signature (item-2 / item-4): replaced -- Anthropic Claude with -- <Your Name> in both templates (plan rounds and PR rounds).

-- Anthropic Claude

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The PR correctly addresses heredoc indentation and signature hardcoding issues in SKILL.md. However, the new normalization logic in helpers/skill_runner.py introduced a regression by explicitly dropping protocol-required markers like <!-- HUMAN_REQUIREMENTS_ADDRESSED --> (or RESOLVED) and their associated sections. Additionally, a minor efficiency nit regarding redundant lstrip() calls remains unaddressed.

Blocking issues

  • In helpers/skill_runner.py, _normalize_raw_response now intentionally drops all content between the JSON object and the <!-- AGENT_STATE --> marker. This is a regression as it deletes markers required by the protocol for plan revisions (e.g., <!-- HUMAN_REQUIREMENTS_ADDRESSED --> and the ### Human requirements section). The normalization logic must be updated to preserve these specific markers while still stripping unwanted prose.

Same-PR follow-ups

  • In helpers/skill_runner.py, text.lstrip() is still called twice in _normalize_disposition_values (lines 119-120 in the updated file). Please store the stripped result in a variable and reuse it, as requested in multiple prior review rounds (item-3, item-6, item-10).

Prior unresolved item dispositions

  • [item-1] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) has indented content with... -> resolved
  • [item-2] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md hardcode the signature as -- Anthropic Claude. Since the `c... -> resolved
  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr
  • [item-4] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) still has indented content... -> resolved
  • [item-5] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md still hardcode the signature as -- Anthropic Claude. This sho... -> resolved
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> same-pr
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> still blocking
  • [item-8] Blocking issue from OpenAI Codex, round 1: SKILL.md:106-114: The plan-loop gh issue comment heredoc still shows the comment body and closi... -> resolved
  • [item-9] Blocking issue from OpenAI Codex, round 1: SKILL.md:112 and SKILL.md:149: Both new comment templates still hardcode -- Anthropic Claude. T... -> resolved
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> same-pr

-- Google Gemini

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The SKILL.md heredoc and signature issues are fixed, but the helper changes still need same-PR cleanup and the response normalizer now drops a meaningful protocol marker.

Blocking issues

  • helpers/skill_runner.py: _normalize_raw_response now reconstructs the response from the JSON plus AGENT_STATE/signature and drops any intervening non-AGENT markers, explicitly including <!-- HUMAN_REQUIREMENTS_RESOLVED -->. That marker is still part of the accepted public review format, so stripping it can lose a meaningful signal before downstream consumers see the normalized output. Preserve allowed protocol markers or document/test that this marker is intentionally no longer consumed.

Same-PR follow-ups

  • helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in quick succession. Store the stripped text once and reuse it for raw_decode() and the footer slice.

Prior unresolved item dispositions

  • [item-1] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) has indented content with... -> resolved
  • [item-2] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md hardcode the signature as -- Anthropic Claude. Since the `c... -> resolved
  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr
  • [item-4] Blocking issue from Google Gemini, round 1: In SKILL.md, the gh issue comment example in the plan-loop (Step 3) still has indented content... -> resolved
  • [item-5] Blocking issue from Google Gemini, round 1: The comment templates in SKILL.md still hardcode the signature as -- Anthropic Claude. This sho... -> resolved
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> same-pr
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> still blocking
  • [item-8] Blocking issue from OpenAI Codex, round 1: SKILL.md:106-114: The plan-loop gh issue comment heredoc still shows the comment body and closi... -> resolved
  • [item-9] Blocking issue from OpenAI Codex, round 1: SKILL.md:112 and SKILL.md:149: Both new comment templates still hardcode -- Anthropic Claude. T... -> resolved
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> same-pr

-- OpenAI Codex

…e_raw_response

The previous version stripped all content between } and <!-- AGENT_STATE -->,
which would silently destroy <!-- HUMAN_REQUIREMENTS_ADDRESSED --> and its
human-requirements section in plan-revision responses. Now only strip that
region when it contains nothing but HTML comments (e.g. Codex's stray
<!-- HUMAN_REQUIREMENTS_RESOLVED -->); leave it intact when it contains
prose lines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-4 feedback:

  • _normalize_raw_response regression (item-1 / item-2): changed the between-JSON-and-AGENT_STATE stripping to only fire when every non-blank line in that section is an HTML comment. If any prose lines are present (e.g. ### Human requirements), the section is left intact so plan-revision <!-- HUMAN_REQUIREMENTS_ADDRESSED --> sections are never destroyed. Verified with unit cases for both paths.

-- Anthropic Claude

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The PR successfully adds the change-summary comment steps to SKILL.md and adopts a more robust JSON parsing approach with JSONDecoder. However, the normalization logic in helpers/skill_runner.py still fails to preserve required comment-only protocol markers like <!-- HUMAN_REQUIREMENTS_RESOLVED -->, and the redundant text.lstrip() calls in _normalize_disposition_values persist despite multiple prior requests for cleanup.

Blocking issues

  • Item 13: _normalize_raw_response still strips the <!-- HUMAN_REQUIREMENTS_RESOLVED --> marker (and any other comment-only protocol markers) when they are the only content in the section between the JSON object and the state marker. The current logic assumes any section containing only HTML comments is 'stray' and can be discarded, but these markers are significant signals in the protocol.
  • Item 7: The normalization logic must be refined to explicitly preserve allowed protocol markers even when no accompanying prose is present.

Same-PR follow-ups

  • Item 14: In _normalize_disposition_values, text.lstrip() is still called twice. Please store the result of the first call in a variable and reuse it for both raw_decode and the footer slice calculation (also addresses items 3, 6, 10, 12).

Prior unresolved item dispositions

  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> same-pr
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> still blocking
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> same-pr
  • [item-11] Blocking issue from Google Gemini, round 1: In helpers/skill_runner.py, _normalize_raw_response now intentionally drops all content betwe... -> resolved
  • [item-12] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in `_normalize_disposition_va... -> same-pr
  • [item-13] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response now reconstructs the response from the JSON pl... -> still blocking
  • [item-14] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in qui... -> same-pr

-- Google Gemini

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

The SKILL.md documentation change is straightforward, but the normalization changes still leave a carried protocol regression and repeated local cleanup unresolved.

Blocking issues

  • helpers/skill_runner.py: _normalize_raw_response still removes comment-only protocol markers between the JSON object and . In the accepted review format, is allowed exactly in that position, so this normalization can still erase a meaningful signal before downstream consumers see the response. Preserve allowed protocol markers or add explicit documentation/tests proving the marker is intentionally obsolete.

Same-PR follow-ups

  • helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in succession. Store the stripped text once and reuse it for raw_decode() and the footer slice.

Prior unresolved item dispositions

  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> same-pr
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> same-pr
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> still blocking
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> same-pr
  • [item-11] Blocking issue from Google Gemini, round 1: In helpers/skill_runner.py, _normalize_raw_response now intentionally drops all content betwe... -> resolved
  • [item-12] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in `_normalize_disposition_va... -> same-pr
  • [item-13] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response now reconstructs the response from the JSON pl... -> still blocking
  • [item-14] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in qui... -> same-pr

-- OpenAI Codex

<!-- HUMAN_REQUIREMENTS_RESOLVED --> is a real optional protocol marker
(prompts.py l.1568,2027) placed between } and <!-- AGENT_STATE --> in
approved reviewer responses. The previous version stripped all HTML-
comment-only lines, incorrectly discarding this signal.

Now: keep the first HUMAN_REQUIREMENTS_RESOLVED line found in the
between-section; drop everything else unrecognized. Plan-revision
HUMAN_REQUIREMENTS_ADDRESSED sections are unaffected — this function
is never called for plan_state responses.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-5 feedback:

  • HUMAN_REQUIREMENTS_RESOLVED preservation (item-13 / item-7): confirmed via protocol.py:725-728 and prompts.py:1568,2027 that <!-- HUMAN_REQUIREMENTS_RESOLVED --> is a real optional protocol marker for approved reviewer responses. Updated _normalize_raw_response to explicitly preserve the first occurrence of this line when present between } and <!-- AGENT_STATE -->, while still stripping all other unrecognized lines. Plan-revision <!-- HUMAN_REQUIREMENTS_ADDRESSED --> sections are unaffected — this function is only called for pr_review / plan_review responses.

-- Anthropic Claude

wwind123 and others added 2 commits June 11, 2026 18:46
…ponse

Gemini sometimes writes the signature before <!-- AGENT_STATE --> (legacy
format), optionally with a prose ### Prior unresolved item dispositions
section between the JSON and the signature. The validator expects the
opposite order (state marker then signature) and rejects any prose between
them.

Extend _normalize_raw_response to detect both orderings: if no signature
is found after the state marker, search before it. In the non-standard
case, reorder to the canonical form and drop prose, preserving only the
<!-- HUMAN_REQUIREMENTS_RESOLVED --> line if present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Store text.lstrip() once and reuse for both raw_decode and the footer
slice, as requested in multiple prior review rounds.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wwind123

Copy link
Copy Markdown
Owner Author

Addressed round-6 feedback:

  • Gemini signature-before-state-marker format: extended _normalize_raw_response to detect when the signature appears before <!-- AGENT_STATE --> (Gemini's legacy format, also with a ### Prior unresolved item dispositions prose section). In this case the function reorders to the canonical form and drops prose, preserving <!-- HUMAN_REQUIREMENTS_RESOLVED --> if present.
  • Redundant text.lstrip() (carried-forward same-pr item): stored text.lstrip() once in stripped and reused it for both raw_decode and the footer slice in _normalize_disposition_values.

-- Anthropic Claude

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Approved

The changes successfully add the 'post change-summary comment' step to the skill documentation and significantly improve the robustness of the response normalization logic. All prior review items regarding duplicate lstrip() calls and preservation of the HUMAN_REQUIREMENTS_RESOLVED marker have been addressed.

Prior unresolved item dispositions

  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> resolved
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> resolved
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> resolved
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> resolved
  • [item-12] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in `_normalize_disposition_va... -> resolved
  • [item-13] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response now reconstructs the response from the JSON pl... -> resolved
  • [item-14] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in qui... -> resolved
  • [item-15] Blocking issue from Google Gemini, round 1: Item 13: _normalize_raw_response still strips the <!-- HUMAN_REQUIREMENTS_RESOLVED --> marker... -> resolved
  • [item-16] Blocking issue from Google Gemini, round 1: Item 7: The normalization logic must be refined to explicitly preserve allowed protocol markers e... -> resolved
  • [item-17] Same-PR follow-up from Google Gemini, round 1: Item 14: In _normalize_disposition_values, text.lstrip() is still called twice. Please store... -> resolved
  • [item-18] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response still removes comment-only protocol markers betw... -> resolved
  • [item-19] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in success... -> resolved

-- Google Gemini

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Approved

The change-summary documentation is in place for both plan and PR rounds, and the carried normalization issues have been addressed.

Prior unresolved item dispositions

  • [item-3] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is called twice in quick succession in `normalize... -> resolved
  • [item-6] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in quick succession in `_norm... -> resolved
  • [item-7] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, the new _normalize_raw_response logic now drops any content betwe... -> resolved
  • [item-10] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py:118-119: _normalize_disposition_values still calls text.lstrip() twic... -> resolved
  • [item-12] Same-PR follow-up from Google Gemini, round 1: In helpers/skill_runner.py, text.lstrip() is still called twice in `_normalize_disposition_va... -> resolved
  • [item-13] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response now reconstructs the response from the JSON pl... -> resolved
  • [item-14] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in qui... -> resolved
  • [item-15] Blocking issue from Google Gemini, round 1: Item 13: _normalize_raw_response still strips the <!-- HUMAN_REQUIREMENTS_RESOLVED --> marker... -> resolved
  • [item-16] Blocking issue from Google Gemini, round 1: Item 7: The normalization logic must be refined to explicitly preserve allowed protocol markers e... -> resolved
  • [item-17] Same-PR follow-up from Google Gemini, round 1: Item 14: In _normalize_disposition_values, text.lstrip() is still called twice. Please store... -> resolved
  • [item-18] Blocking issue from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_raw_response still removes comment-only protocol markers betw... -> resolved
  • [item-19] Same-PR follow-up from OpenAI Codex, round 1: helpers/skill_runner.py: _normalize_disposition_values still calls text.lstrip() twice in success... -> resolved

-- OpenAI Codex

@wwind123 wwind123 merged commit af4c9b8 into main Jun 12, 2026
1 check passed
@wwind123 wwind123 deleted the issue-289-coder-change-summary branch June 12, 2026 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

skill: post coder change-summary comment after addressing review feedback

1 participant