Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions loop.py
Original file line number Diff line number Diff line change
Expand Up @@ -1240,6 +1240,12 @@ def _build_prompt(self, feature: dict, lessons: str = "") -> str:
f"write a single line `NO_TEST_NEEDED: <reason>` in your final message instead.\n"
f"- You cannot run shell commands (edit-only); the tests you write run in CI "
f"on the PR, so they must be correct and self-contained.\n"
f"- **Your FINAL message becomes the PR description, verbatim.** End with a "
f"short, clean summary for a reviewer — what changed and why, 2-6 sentences "
f"or a few bullet points. Do NOT narrate your process: no step-by-step "
f'exploration, no "I first looked at..."/"Let me...", no restating these '
f"instructions or the acceptance criteria back. If you used scratch "
f"reasoning to get here, leave it out of this message entirely.\n"
f"- You are done when the listed files exist, tests cover the change, and "
f"every acceptance criterion is satisfied."
)
2 changes: 1 addition & 1 deletion protoagent.plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
id: project_board
name: Project Board (coding orchestration)
version: 0.26.0
version: 0.26.1
description: >-
A board-driven coding-orchestration plugin: a lean 6-state board (backlog → ready
→ in_progress → in_review → done, + a blocked flag) backed by **beads** (`br`), an
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "project-board"
version = "0.26.0"
version = "0.26.1"
description = "Board-driven coding-orchestration plugin for protoAgent (beads board + ACP spawn loop + planning layer + console view)."
requires-python = ">=3.11"

Expand Down
11 changes: 11 additions & 0 deletions tests/test_loop.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,17 @@ def test_build_prompt_requires_tests():
assert "rejected before the pr opens" in prompt


def test_build_prompt_asks_for_a_clean_pr_summary_not_raw_reasoning():
"""The coder's final reply is used VERBATIM as the PR body (loop.py's
`open_pr(..., body=(result or "")[:4000])`) with no post-processing — so an
un-briefed coder narrating its whole thought process ships that straight into
the PR description. The prompt must say so explicitly and ask for a short,
clean summary instead."""
prompt = BoardLoop({})._build_prompt(FEATURE)
assert "final message becomes the pr description" in prompt.lower()
assert "do not narrate your process" in prompt.lower()


def test_is_test_path_classification():
"""The deterministic gate's path classifier — what counts as a test vs code."""
from project_board.loop import _is_code_path, _is_test_path
Expand Down
Loading