Say a local commit publishes nothing (#129)
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m54s
CI / e2e (pull_request) Successful in 3m15s

The local driver sometimes ran `git commit` itself instead of calling
finish_milestone, then told the operator a PR was waiting when none had
been opened. A commit still runs (it's contained, and publishing takes
whatever is there), but when the driver's command commits anywhere in
its line, the harness adds to its result: committed locally only;
nothing is published until finish_milestone, and there is no PR until
then. Structural, at the moment the model would draw the wrong
conclusion (P6), rather than left to it noticing.

Closes #129

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-08 14:28:59 +00:00
1 parent bd17c74c3a
commit c4726d5673
4 files changed
+80 -3

No files matched your search

+49 -2
View File
@@ -12,8 +12,8 @@ from test_loop_milestones import item as the_item
from test_loop_milestones import world as world # noqa: PLC0414 -- the fixture
from nisse_core.actions import Action
from nisse_dev.canonical import ActionVerdict, ToolResult
from nisse_dev.loop.actions import classify
from nisse_dev.canonical import ActionVerdict, ToolCall, ToolResult
from nisse_dev.loop.actions import classify, commits
from nisse_dev.loop.items import ANSWER, loop_of
ROOT = "/srv/work/demo"
@@ -355,3 +355,50 @@ def test_a_workspace_under_a_host_directory_is_still_the_workspace() -> None:
Action("run_command", {"command": "rm -rf dist"}), "/home/ci/work/demo"
)
assert home.effect == "contained"
# --- #129: a local commit is said to be one ------------------------------------
@pytest.mark.parametrize(
("command", "commit"),
[
("git commit -m wip", True),
("git add -A && git commit -qm 'fix'", True),
("git -C sub commit -am x", True),
("cd src && sudo git commit --amend --no-edit", True),
("git status", False),
("git log --grep commit", False),
("echo git commit", False),
],
)
def test_a_commit_is_recognised_anywhere_in_a_line(command: str, commit: bool) -> None:
assert commits(Action("run_command", {"command": command})) is commit
def test_a_local_commit_is_said_to_publish_nothing(world: dict[str, Any]) -> None:
model = started(
[
call("write_file", path="w.py", content="W = 1\n"),
call("run_command", command="git add -A && git commit -qm wip"),
call("run_command", command="git status --short"),
call("ask_human", question="?"),
]
)
agent, transport = loop_agent(world, model)
agent.intake()
say(transport, world, "go")
events = world["store"].transcript(the_item(world).id, "driver").read()
calls = {
e.event.call_id: e.event.arguments.get("command", "")
for e in events
if isinstance(e.event, ToolCall) and e.event.tool == "run_command"
}
results = {
calls[e.event.call_id]: e.event.result
for e in events
if isinstance(e.event, ToolResult) and e.event.call_id in calls
}
assert "committed locally only" in results["git add -A && git commit -qm wip"]
assert "There is no PR until then" in results["git add -A && git commit -qm wip"]
assert "committed locally" not in results["git status --short"]