Skip to content

Commit dba6ca4

Browse files
committed
docs: CLAUDE.md §6a — UAT signoff is maintainer-only, execution allowed
Sharpens the agent/maintainer boundary on UAT: agents may execute uat/uat_*.py to QA the script itself (verify it asserts what it claims, doesn't crash, exits non-zero on failure), but a green script PASS does NOT constitute signoff. Signoff requires a human opening the .pptx in PowerPoint or Keynote, unless explicitly delegated in a specific case. Adds: - Explicit examples of acceptable vs. unacceptable summary phrasing. - Clarification that the §7 trinity (pytest + ruff + behave) is the agent's full self-verification surface; UAT is not the fourth gate. - Stop-and-ask directive when uncertain whether signoff has been delegated for a particular case. The prior §6 step 4 ("The maintainer runs the UAT") was the seed; this codifies the execute-vs-signoff distinction that was implied but not enforced. Five recent epic phases (#48..#52) collapsed the distinction in their PR bodies; §6a closes that loophole.
1 parent 2c96f97 commit dba6ca4

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

CLAUDE.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,25 @@ Reference `git log 253dbc87 --format=%B -n1` for the canonical shape: scope, des
4545
1. `git checkout -b feature/<slug>` off master
4646
2. Implement → test → ruff → commit
4747
3. Drop a `uat_<slug>.py` at the repo root (untracked) — small Python script that builds a `.pptx` exercising the new API and prints a round-trip read-back. PR #30 used this for issue #17 review.
48-
4. The maintainer runs the UAT, opens the `.pptx` in PowerPoint or Keynote, and gives signoff.
48+
4. **The maintainer runs the UAT.** Opens the `.pptx` in PowerPoint or Keynote, gives signoff.
4949
5. Then push the branch and open a PR.
5050

5151
**Automated runs must not push or open PRs without maintainer approval.** The approval-gated UAT step is the rule, not a suggestion.
5252

53+
### 6a. UAT signoff is maintainer-only — HARD RULE for AI agents
54+
55+
**AI agents may execute the UAT script to verify the script itself is functional, but `PASS` from the script does NOT constitute signoff.** Signoff requires a human opening the generated `.pptx` in PowerPoint or Keynote and visually confirming behavior. Unless the maintainer has explicitly delegated signoff in a specific case, the agent does not claim UAT acceptance.
56+
57+
Concretely:
58+
- Agents **author** the UAT script (it's part of the deliverable per §6.3).
59+
- Agents **may run** the UAT — once, after the §7 trinity is green — to verify the script doesn't crash, exits non-zero on failure, and actually asserts what it claims to assert. This is QA on the test itself, not acceptance of the feature.
60+
- Agents **must not report or imply UAT signoff** in commit messages, PR bodies, or summaries. Acceptable: *"UAT script runs clean — pending maintainer visual signoff in PowerPoint/Keynote."* Not acceptable: *"UAT: PASS — round-trip confirmed."*
61+
- The §7 reporting trinity below (pytest + ruff + behave) is the agent's full self-verification surface. UAT execution output may be included as an attachment but it is **not** the fourth gate.
62+
- Round-trip / behavioral evidence within agent-runnable scope still goes through **pytest integration tests** that exercise save+reopen. If pytest can fully cover it, the UAT is just a maintainer convenience; if pytest can't, UAT becomes the maintainer's primary acceptance path.
63+
- If unsure whether the maintainer has delegated signoff for a particular case, the agent **stops and asks**.
64+
65+
Why: the `.pptx` rendering in PowerPoint or Keynote is the actual acceptance surface — agents can't open it, and a green script exit only proves byte-level round-tripping, not visual correctness. Claiming "UAT PASS" in a summary creates false-confidence pressure to merge; the explicit signoff-vs-execution split removes that pressure.
66+
5367
## 7. AI agent reporting contract
5468

5569
When an AI agent or automated workflow finishes implementation work in this repo, the wrap-up report MUST include the literal output of:
@@ -61,3 +75,5 @@ python3 -m behave features/ --no-color 2>&1 | tail -3
6175
```
6276

6377
Pasted verbatim. If any shows a failure, the agent stops there and reports `verification-failed` rather than committing. Self-attestation ("tests pass") without the captured output is not acceptable — too easy to skip the actual run and inherit a false sense of done.
78+
79+
**UAT output is NOT part of this trinity.** Per §6a, agents do not run the UAT. The maintainer runs it after seeing the trinity is green and reviewing the diff.

0 commit comments

Comments
 (0)