A design milestone holds documents only, enforced
Found by the first local e2e run: qwen3.8-27b put a new project's code in the same PR as its ARCHITECTURE.md, with no build plan. D1 says a `design` item agrees its design before any code, and that rested on wording only. - Until a PR of a `design` item has merged, finish_milestone is sent back if the milestone changes anything but ARCHITECTURE.md and docs/, naming the paths to take out. The merge is recorded (design_merged) and code may follow. - The label's instruction and the new project's brief say so plainly: documents first, in a PR of their own; code after it has merged. Tests: a design milestone with code is sent back and only the documents are published, then code after the merge; the walk's model follows the rule. 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
ad2d090143
commit
88c7d2e8c9
6 files changed
+101
-7
No files matched your search
@@ -63,6 +63,11 @@ class PolicyModel:
|
||||
self.n += 1
|
||||
offered = {t["function"]["name"] for t in tools}
|
||||
facts = [getattr(e.event, "text", "") for e in events]
|
||||
# A `design` item writes documents until its design has merged.
|
||||
design = "labelled design" in (system or "") and not any(
|
||||
"the design has merged" in t for t in facts
|
||||
)
|
||||
path = f"docs/d{self.n}.md" if design else f"f{self.n}.py"
|
||||
roll = self.rng.random()
|
||||
if roll < 0.08:
|
||||
return [call("ask_human", question=f"question {self.n}?")]
|
||||
@@ -98,7 +103,7 @@ class PolicyModel:
|
||||
# Half done, then a question: work a switch must park.
|
||||
return [
|
||||
call("start_milestone", name=f"m{self.n}"),
|
||||
call("write_file", path=f"f{self.n}.py", content=f"x = {self.n}\n"),
|
||||
call("write_file", path=path, content=f"x = {self.n}\n"),
|
||||
call("ask_human", question=f"halfway {self.n}?"),
|
||||
]
|
||||
merged = any("merged" in t for t in facts[-6:])
|
||||
@@ -106,7 +111,7 @@ class PolicyModel:
|
||||
return [call("close_item", summary=f"done {self.n}")]
|
||||
return [
|
||||
call("start_milestone", name=f"m{self.n}"),
|
||||
call("write_file", path=f"f{self.n}.py", content=f"x = {self.n}\n"),
|
||||
call("write_file", path=path, content=f"x = {self.n}\n"),
|
||||
call(
|
||||
"finish_milestone",
|
||||
summary=f"work {self.n}",
|
||||
|
||||
Reference in new issue
Block a user