Say a local commit publishes nothing (#129)
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:
1 parent
bd17c74c3a
commit
c4726d5673
4 files changed
+80
-3
No files matched your search
@@ -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"]
|
||||
Reference in new issue
Block a user