aboutsummaryrefslogtreecommitdiffziptar.gz
diff options
context:
space:
mode:
authorgodosa <godosa@godosa.eu>2026-10-07 19:56:05 +0200
committergodosa <godosa@godosa.eu>2026-10-07 19:56:05 +0200
commite6f7306c472a7589d08f4098e476d54bffd1f761 (patch)
tree51e5bd20eca5221cf159df65a130b829853792a5
parentc537f4a809a564ecdab0380bcb356018f79a6900 (diff)
downloadworkflow-e6f7306c472a7589d08f4098e476d54bffd1f761.tar.gz
workflow-e6f7306c472a7589d08f4098e476d54bffd1f761.zip
orch post: strip 'result:' prefix
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JEAjUkQRrCYX5MZhWxdtj2
-rw-r--r--tests/test_orch.py12
-rwxr-xr-xwf.py5
2 files changed, 16 insertions, 1 deletions
diff --git a/tests/test_orch.py b/tests/test_orch.py
index 45ade24..313007f 100644
--- a/tests/test_orch.py
+++ b/tests/test_orch.py
@@ -237,6 +237,18 @@ class OrchTest(Cli):
self.assertNotIn("post-check-red", self.log())
self.assertIn(" t-big sliced ", self.log())
+ def test_post_result_prefix_stripped(self):
+ self.orch("pick", "fast")
+ out = self.orch("post", "t-one", "fast", "--result", "result: handback unclear spec")
+ self.assertTrue(out.startswith("post: t-one handback\n"), out)
+ self.assertNotIn("stop lane", out)
+
+ def test_post_result_prefix_done(self):
+ self.orch("pick", "fast")
+ self.worker_done()
+ out = self.orch("post", "t-one", "fast", "--result", "result: done", "--no-pick")
+ self.assertTrue(out.startswith("post: t-one done"), out)
+
def test_post_model_raised_continues(self):
self.orch("pick", "fast")
self.wf("set", "t-one", "--model", "opus")
diff --git a/wf.py b/wf.py
index ac279cd..052ab63 100755
--- a/wf.py
+++ b/wf.py
@@ -1851,7 +1851,10 @@ def orch_post(main: Path, p: Project, args) -> int:
item = p.doc.item(id) if id in p.doc.ids() else None
if item is None and id not in p.archived:
raise Failure(tasks.unknown_id(id, p.doc.ids()))
- words = (args.result or "").split()
+ line = (args.result or "").strip()
+ if line[:7].lower() == "result:":
+ line = line[7:].strip() # literal report line 'result: done'
+ words = line.split()
outcome = words[0] if words else ("done" if id in p.archived else "no-report")
if outcome == "done" and item is not None and id not in p.archived and tasks.open_slices(p.doc, id):
outcome = "sliced" # slice job: worker said done but the task is open with slices