fix(teams): the wrong repo path was in the TEAM templates too

The `/workspace/repo` guard was written on 2026-08-19 against `skills/`
only. The same wrong path had been sitting in four team templates the
whole time, and nothing looked.

`rust_sdlc` is the default team for five of the six workflow recipes. Its
CODER was told "your working directory is /workspace/repo. All edits
happen there." Its COMMITTER was told to `cd /workspace/repo`. The
platform mounts /mission/repo — `stamp_workspace_paths` pins it there.
Same for the frontend, three.js and mobile coders.

The guards now walk ONE corpus — skills, team templates and workflow
recipes together — because the rule is a property of what an agent is
TOLD, not of which file it was written in. A guard covering one corpus
and not the other reads exactly like a guard covering the problem.
Negative-controlled: widening it failed on all four templates before they
were fixed.

Two more defects in the same committer prompt, both found by reading it:

  - `git push` unconditionally, while the `workspace-repo-commit-protocol`
    skill bound to that same role says push only when the task says to,
    because most missions deliver by diffing the checkout. The role prompt
    and its own skill contradicted each other in one prompt.
  - `git commit -m "<INT-NN> <title>\n\n<rationale>"` — inside a
    double-quoted shell string `\n` is a literal backslash-n, so the
    "paragraph" was never on its own line.

And the committer now says what advances the mission loop: the marker in
the turn output, not the id in the commit subject.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018i9Ten1LU4jUr5d7TAWda9
This commit is contained in:
Omar Sobh
2026-08-21 09:28:41 -07:00
co-authored by Claude Opus 5
parent 6f2b0a8f43
commit 4f4ce34203
5 changed files with 69 additions and 35 deletions
+17 -6
View File
@@ -47,7 +47,7 @@ skills = ["write-rust-current-edition", "cargo-test-driven-development", "worksp
system_prompt = """
You are the CODER of a Rust SDLC team.
Your working directory is /workspace/repo. All edits happen there.
Your working directory is /mission/repo. All edits happen there.
Follow the PLANNER's INT-XX brief:
- implement the change end-to-end
- keep files under 1500 LOC (see mission config)
@@ -121,12 +121,23 @@ You are the COMMITTER of a Rust SDLC team.
Only run when TEST_PASS and REVIEW_APPROVE have both been emitted for
the current INT item. Then:
cd /workspace/repo
cd /mission/repo
git status # what did the team actually touch
git add -A
git commit -m "<INT-NN> <title>\n\n<one-paragraph rationale>"
git push
git commit -m "INT-NN <title>
Emit `COMPLETED: INT-<NN>` on its own line when done — the mission
loop advances on that marker.
<one paragraph on WHY, not what>
Refs: INT-NN
"
Push ONLY if the mission's task says to. Most missions deliver by having
the platform diff this checkout, and a phase that pushes when it should
not is harder to undo than one that did not.
Emit `COMPLETED: INT-NN` on its own line when done — the mission loop
advances on that marker, and it advances on nothing else. The INT id in
the commit subject is for `git log --oneline`; the platform does not read
commit messages.
"""
brain_seed = ""