Skip to content

Commit 534fec3

Browse files
committed
fix: preserve extra review rules on resume
1 parent c62fd04 commit 534fec3

3 files changed

Lines changed: 27 additions & 11 deletions

File tree

cli/review/review_prompt.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,24 @@ def compose_prompt(
7676
"</git_review_instructions>\n"
7777
).format(review_comments_rel=review_comments_rel)
7878

79-
extra = config.additional_prompt
80-
extra_instructions = (
81-
"<additional_instructions>\n" + extra + "\n</additional_instructions>\n" if extra else ""
82-
)
83-
8479
return (
8580
f"{context}"
8681
f"{context_artifacts}"
8782
f"{changed_summary}"
8883
f"{review_instructions}"
8984
f"{line_rules}"
90-
f"{extra_instructions}"
85+
f"{render_additional_review_instructions(config)}"
9186
"<response_format>Respond now with the JSON schema output only.</response_format>"
9287
)
9388

9489

90+
def render_additional_review_instructions(config: ReviewConfig) -> str:
91+
extra = config.additional_prompt
92+
if not extra:
93+
return ""
94+
return "<additional_instructions>\n" + extra + "\n</additional_instructions>\n"
95+
96+
9597
def _build_changed_summary(changed_files: Sequence[ChangedFileProtocol]) -> str:
9698
changed_list = [f"- {file.filename} ({file.status})" for file in changed_files if file.filename]
9799
if not changed_list:

cli/workflows/review_workflow.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@
4545
parse_reviewed_head_sha,
4646
render_review_summary_metadata,
4747
)
48-
from ..review.review_prompt import compose_prompt, load_guidelines
48+
from ..review.review_prompt import (
49+
compose_prompt,
50+
load_guidelines,
51+
render_additional_review_instructions,
52+
)
4953

5054
SUMMARY_TIP = (
5155
'Tip: comment with "/codex address comments" to attempt automated fixes for unresolved '
@@ -555,6 +559,7 @@ def process_review(self, pr_number: int) -> ReviewWorkflowResult:
555559
prompt_sections = [base_instructions]
556560
if resume_block:
557561
prompt_sections.append(resume_block)
562+
prompt_sections.append(render_additional_review_instructions(self.config))
558563
else:
559564
prompt_sections.append(raw_prompt)
560565
prompt = "\n\n".join(section for section in prompt_sections if section)

tests/test_review_workflow.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,10 @@ def test_process_review_posts_summary_and_passes_dedupe_context(
270270
}
271271
)
272272
)
273+
config = _make_config(tmp_path)
274+
config.additional_prompt = "Review only security and correctness issues."
273275
workflow = ReviewWorkflow(
274-
_make_config(tmp_path),
276+
config,
275277
github_client=cast(Any, github_client),
276278
codex_client=cast(Any, codex_client),
277279
)
@@ -514,8 +516,10 @@ def test_process_review_ignores_stale_prior_codex_thread(tmp_path: Path) -> None
514516
}
515517
)
516518
)
519+
config = _make_config(tmp_path)
520+
config.additional_prompt = "Review only security and correctness issues."
517521
workflow = ReviewWorkflow(
518-
_make_config(tmp_path),
522+
config,
519523
github_client=cast(Any, github_client),
520524
codex_client=cast(Any, codex_client),
521525
)
@@ -645,8 +649,10 @@ def test_process_review_matches_github_bot_logins_across_issue_and_thread_apis(
645649
}
646650
)
647651
)
652+
config = _make_config(tmp_path)
653+
config.additional_prompt = "Review only security and correctness issues."
648654
workflow = ReviewWorkflow(
649-
_make_config(tmp_path),
655+
config,
650656
github_client=cast(Any, github_client),
651657
codex_client=cast(Any, codex_client),
652658
)
@@ -854,8 +860,10 @@ def test_process_review_resumes_prior_thread_with_inline_incremental_diff(
854860
}
855861
)
856862
)
863+
config = _make_config(tmp_path)
864+
config.additional_prompt = "Review only security and correctness issues."
857865
workflow = ReviewWorkflow(
858-
_make_config(tmp_path),
866+
config,
859867
github_client=cast(Any, github_client),
860868
codex_client=cast(Any, codex_client),
861869
)
@@ -902,6 +910,7 @@ def test_process_review_resumes_prior_thread_with_inline_incremental_diff(
902910
assert "<current_head_sha>head-sha</current_head_sha>" in codex_client.calls[0]["prompt"]
903911
assert "<incremental_diff>" in codex_client.calls[0]["prompt"]
904912
assert "+value = 2" in codex_client.calls[0]["prompt"]
913+
assert "Review only security and correctness issues." in codex_client.calls[0]["prompt"]
905914
assert "FULL PR PROMPT" not in codex_client.calls[0]["prompt"]
906915

907916

0 commit comments

Comments
 (0)