Skip to content

chore: PDD sync for #1384#1388

Open
prompt-driven-github[bot] wants to merge 3 commits into
feature/issue-1370from
change/issue-1384
Open

chore: PDD sync for #1384#1388
prompt-driven-github[bot] wants to merge 3 commits into
feature/issue-1370from
change/issue-1384

Conversation

@prompt-driven-github
Copy link
Copy Markdown
Contributor

Summary

Add pdd/prompts/capability_ir_python.prompt — the prompt spec for a new capability_ir module that compiles <capabilities> tag text into a language-neutral effect IR (EffectItem / ContractEffectIR dataclasses) using only stdlib re, with no AST or code-analysis imports.

Closes #1384

Changes Made

Prompts Modified

  • pdd/prompts/capability_ir_python.prompt (NEW) — prompt spec defining EffectItem, ContractEffectIR, and parse_capabilities_ir(text) entry point; specifies modal normalization (MAY / MUST NOTMUST_NOT), resource normalization algorithm (lowercase → strip . → split on first list separator → snake_case), sentinel return for missing/empty tag, and stdlib-only constraint.

Documentation Updated

None — capability_ir is an internal parsing leaf module; <capabilities> syntax is already documented in docs/prompting_guide.md.

Review Checklist

  • Prompt syntax is valid
  • PDD conventions followed
  • Documentation is up to date

Next Steps After Merge

  1. Regenerate code from modified prompts in dependency order:
    pdd sync capability_ir
  2. Run tests to verify functionality:
    pytest -vv tests/test_capability_ir.py
  3. Deploy if applicable

Created by pdd change workflow

)

Add pdd/prompts/capability_ir_python.prompt defining a new capability_ir
module that compiles <capabilities> tag text into EffectItem / ContractEffectIR
dataclasses using only stdlib re — no AST or code-analysis imports.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@prompt-driven-github prompt-driven-github Bot changed the title feat: introduce capability_ir prompt for target-neutral effect IR (#1384) chore: PDD sync for #1384 Jun 3, 2026
@prompt-driven-github
Copy link
Copy Markdown
Contributor Author

Step 7/8: Review Loop Final Report

PR: #1388
Issue: #1384
issue_aligned: false
active-reviewer: codex
reviewer-status: codex=findings claude=fixer fresh-final=missing
fresh-final-review: missing
verified-head-sha: none
remote-pr-head-sha: none
max-rounds-reached: false
max-cost-reached: false
max-duration-reached: false

Summary

Fixer claude could not address codex's findings.

Per-Reviewer Status

Reviewer Status
codex findings
claude fixer
fresh-final missing

Findings

Severity Status Location Finding Required fix Reviewer
medium open pdd/capability_ir.py:75 The parser misses the acceptance example's resource normalization for plural send targets and provider-secret compound phrases, so the foundational IR does not match the documented capabilities contract users are already shown in docs/prompting_guide.md. Update the source prompt normalization rule, generated parser, example, and tests so the exact issue sample parses to email and secrets as specified. Add a regression test for the full sample block from the issue to prevent the PR's narrower examples from masking this mismatch. codex
low open architecture.json:10172 The architecture entry no longer matches the prompt metadata source of truth. A sync-architecture run would rewrite this field, leaving the PR with generated metadata drift before merge. Regenerate or manually align the architecture.json reason with the XML-safe prompt reason, using Parses capabilities tag text into a target-neutral effect IR (EffectItem / ContractEffectIR). codex

Fixer Rationale

  • pdd/capability_ir.py:75: The parser misses the acceptance example's resource normalization for plural send targets and provider-secret compound phrases, so the foundational IR does not match the documented capabilities contract users are already shown in docs/prompting_guide.md. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":581,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"644026b4-0534-4377-acd9-3ccd662afc66","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)
  • architecture.json:10172: The architecture entry no longer matches the prompt metadata source of truth. A sync-architecture run would rewrite this field, leaving the PR with generated metadata drift before merge. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":581,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"644026b4-0534-4377-acd9-3ccd662afc66","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)

Fixes Attempted

  • round=1 fixer=claude fixer_result=failed push_status=not_attempted local_sha=none pushed_sha=none changed_files=none verification=unverified summary=All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":581,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"644026b4-0534-4377-acd9-3ccd662afc66","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques

@prompt-driven-github
Copy link
Copy Markdown
Contributor Author

Step 7/8: Review Loop Final Report

PR: #1388
Issue: #1384
issue_aligned: false
active-reviewer: codex
reviewer-status: codex=findings claude=fixer fresh-final=missing
fresh-final-review: missing
verified-head-sha: none
remote-pr-head-sha: none
max-rounds-reached: false
max-cost-reached: false
max-duration-reached: false

Summary

Fixer claude could not address codex's findings.

Per-Reviewer Status

Reviewer Status
codex findings
claude fixer
fresh-final missing

Findings

Severity Status Location Finding Required fix Reviewer
medium open pdd/capability_ir.py:75 The parser misses the documented acceptance example's resource normalization for plural send targets and provider-secret compound phrases. This means the foundational IR users will get from the canonical capabilities examples does not match the issue contract. Update the source prompt normalization rule, generated parser, example, and tests so the exact issue/docs sample parses to resource='email' and resource='secrets' as specified. Add a regression test for the full sample block from the issue/docs so narrower examples do not mask this mismatch. codex
low open architecture.json:10172 The architecture entry no longer matches the prompt metadata source of truth. A sync-architecture run would rewrite this field, leaving the PR with generated metadata drift before merge. Regenerate or manually align architecture.json with the XML-safe prompt reason: 'Parses capabilities tag text into a target-neutral effect IR (EffectItem / ContractEffectIR).' codex
low open pdd/capability_ir.py:25 The generated Python file contains trailing whitespace, causing the repository readiness check to fail. Strip trailing whitespace from pdd/capability_ir.py and keep the generated artifact clean before merge. codex

Fixer Rationale

  • pdd/capability_ir.py:75: The parser misses the documented acceptance example's resource normalization for plural send targets and provider-secret compound phrases. This means the foundational IR users will get from the canonical capabilities examples does not match the issue contract. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":717,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"55b4da02-4304-4ed1-b8c2-f7b6ccf9fa39","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)
  • architecture.json:10172: The architecture entry no longer matches the prompt metadata source of truth. A sync-architecture run would rewrite this field, leaving the PR with generated metadata drift before merge. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":717,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"55b4da02-4304-4ed1-b8c2-f7b6ccf9fa39","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)
  • pdd/capability_ir.py:25: The generated Python file contains trailing whitespace, causing the repository readiness check to fail. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":717,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"55b4da02-4304-4ed1-b8c2-f7b6ccf9fa39","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)

Fixes Attempted

  • round=1 fixer=claude fixer_result=failed push_status=not_attempted local_sha=none pushed_sha=none changed_files=none verification=unverified summary=All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":717,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"55b4da02-4304-4ed1-b8c2-f7b6ccf9fa39","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser

@prompt-driven-github
Copy link
Copy Markdown
Contributor Author

Step 7/8: Review Loop Final Report

PR: #1388
Issue: #1384
issue_aligned: false
active-reviewer: codex
reviewer-status: codex=findings claude=fixer fresh-final=missing
fresh-final-review: missing
verified-head-sha: none
remote-pr-head-sha: none
max-rounds-reached: false
max-cost-reached: false
max-duration-reached: false

Summary

Fixer claude could not address codex's findings.

Per-Reviewer Status

Reviewer Status
codex findings
claude fixer
fresh-final missing

Findings

Severity Status Location Finding Required fix Reviewer
medium open pdd/capability_ir.py:63 The generated parser does not satisfy the documented acceptance example's resource normalization, so users parsing the canonical capabilities block get different IR than the issue contract promises. Update the source prompt normalization contract, regenerate pdd/capability_ir.py and context/capability_ir_example.py as needed, and add a regression test using the full issue sample that asserts resource='email' and resource='secrets'. The fixer did not address this; current tests pass only because they use narrower examples. codex
medium open pdd/capability_ir.py:31 A full prompt without a tag can be treated as if capabilities are present, violating the missing-tag acceptance criterion and creating false-positive contract effects from ordinary bullet lists. Clarify and implement the API boundary so full raw prompts without a tag return the false/empty sentinel while still supporting explicitly parsed tag content. Add tests for a no-tag prompt containing MAY/MUST NOT bullets. codex
low open architecture.json:10172 The architecture entry no longer matches the prompt metadata source of truth, so a sync-architecture run would rewrite generated metadata after merge. Regenerate or manually align architecture.json with the XML-safe prompt reason: "Parses capabilities tag text into a target-neutral effect IR (EffectItem / ContractEffectIR)." codex
low open pdd/capability_ir.py:36 The generated Python artifact contains trailing whitespace, causing the repository readiness check to fail for the committed PR content. Strip trailing whitespace from pdd/capability_ir.py and ensure regenerated artifacts remain clean before merge. codex

Fixer Rationale

  • pdd/capability_ir.py:63: The generated parser does not satisfy the documented acceptance example's resource normalization, so users parsing the canonical capabilities block get different IR than the issue contract promises. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":552,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"6604fccf-633a-475f-96a9-ae169cca05c3","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)
  • pdd/capability_ir.py:31: A full prompt without a tag can be treated as if capabilities are present, violating the missing-tag acceptance criterion and creating false-positive contract effects from ordinary bullet lists. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":552,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"6604fccf-633a-475f-96a9-ae169cca05c3","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)
  • architecture.json:10172: The architecture entry no longer matches the prompt metadata source of truth, so a sync-architecture run would rewrite generated metadata after merge. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":552,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"6604fccf-633a-475f-96a9-ae169cca05c3","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)
  • pdd/capability_ir.py:36: The generated Python artifact contains trailing whitespace, causing the repository readiness check to fail for the committed PR content. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":552,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"6604fccf-633a-475f-96a9-ae169cca05c3","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques'; verification=unverified)

Fixes Attempted

  • round=1 fixer=claude fixer_result=failed push_status=not_attempted local_sha=none pushed_sha=none changed_files=none verification=unverified summary=All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":429,"duration_ms":552,"duration_api_ms":0,"num_turns":1,"result":"You've hit your limit · resets 9:30pm (UTC)","stop_reason":"stop_sequence","session_id":"6604fccf-633a-475f-96a9-ae169cca05c3","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_reques

@prompt-driven-github
Copy link
Copy Markdown
Contributor Author

Step 7/8: Review Loop Final Report

PR: #1388
Issue: #1384
issue_aligned: false
active-reviewer: codex
reviewer-status: codex=findings claude=fixer fresh-final=missing
fresh-final-review: missing
verified-head-sha: none
remote-pr-head-sha: none
max-rounds-reached: false
max-cost-reached: false
max-duration-reached: false

Summary

Fixer claude could not address codex's findings.

Per-Reviewer Status

Reviewer Status
codex findings
claude fixer
fresh-final missing

Findings

Severity Status Location Finding Required fix Reviewer
medium open pdd/capability_ir.py:63 The generated parser does not satisfy the documented acceptance example's resource normalization, so users parsing the canonical capabilities block get different IR than the issue contract promises. Update the source prompt normalization contract, regenerate pdd/capability_ir.py and context/capability_ir_example.py as needed, and add a regression test using the full issue sample that asserts resource='email' and resource='secrets'. codex
medium open pdd/capability_ir.py:31 A full prompt without a tag can be treated as if capabilities are present, violating the missing-tag acceptance criterion and creating false-positive contract effects from ordinary bullet lists. Clarify and implement the API boundary so full raw prompts without a tag return the false/empty sentinel while still supporting explicitly parsed tag content. Add tests for a no-tag prompt containing MAY/MUST NOT bullets. codex
low open architecture.json:10172 The architecture entry no longer matches the prompt metadata source of truth, so a sync-architecture run would rewrite generated metadata after merge. Regenerate or manually align architecture.json with the XML-safe prompt reason: 'Parses capabilities tag text into a target-neutral effect IR (EffectItem / ContractEffectIR).' codex
low open pdd/capability_ir.py:36 The generated Python artifact contains trailing whitespace, causing the repository readiness check to fail for the committed PR content. Strip trailing whitespace from pdd/capability_ir.py and ensure regenerated artifacts remain clean before merge. codex

Fixer Rationale

  • pdd/capability_ir.py:63: The generated parser does not satisfy the documented acceptance example's resource normalization, so users parsing the canonical capabilities block get different IR than the issue contract promises. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":451,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"e457a480-08f5-4f49-b280-2667b7fe7c15","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)
  • pdd/capability_ir.py:31: A full prompt without a tag can be treated as if capabilities are present, violating the missing-tag acceptance criterion and creating false-positive contract effects from ordinary bullet lists. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":451,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"e457a480-08f5-4f49-b280-2667b7fe7c15","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)
  • architecture.json:10172: The architecture entry no longer matches the prompt metadata source of truth, so a sync-architecture run would rewrite generated metadata after merge. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":451,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"e457a480-08f5-4f49-b280-2667b7fe7c15","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)
  • pdd/capability_ir.py:36: The generated Python artifact contains trailing whitespace, causing the repository readiness check to fail for the committed PR content. (fixer=claude fixer_summary='All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":451,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"e457a480-08f5-4f49-b280-2667b7fe7c15","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser'; verification=unverified)

Fixes Attempted

  • round=1 fixer=claude fixer_result=failed push_status=not_attempted local_sha=none pushed_sha=none changed_files=none verification=unverified summary=All agent providers failed: anthropic: Exit code 1: {"type":"result","subtype":"success","is_error":true,"api_error_status":403,"duration_ms":451,"duration_api_ms":0,"num_turns":1,"result":"Your organization does not have access to Claude. Please login again or contact your administrator.","stop_reason":"stop_sequence","session_id":"e457a480-08f5-4f49-b280-2667b7fe7c15","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"ser

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.

Introduce target-neutral capability/effect IR for <capabilities> parsing

1 participant