Commit 5248328
fix: let the Product Owner fire Stage 2, so its decisions carry its own face (#645)
`backlog`'s Autonomous spend rule authorises the PO agent to fire Stage 2 on an
item entering Analysis that is labelled `bug`, opened by an external reporter,
carries a debug log, and has no prior analyze comment. `issue-analyze.yml`
gated on `comment.user.login == github.repository_owner` and nothing else.
So the rule and the gate disagreed, and the only way to satisfy both was to
post the trigger as the maintainer. That put the maintainers name on comments
they never wrote -- #624, #627 and #643 all show `@claude-bot analyze` from
`johanzander` -- and erased the distinction between what the maintainer decided
and what the agent decided. Every other PO write (labels, board fields,
reporter replies) already goes out as `bess-product-owner`; this was the one
hole, and it was the one that mattered most, because it is the write that
SPENDS.
The gate now accepts `bess-product-owner` alongside the owner, and the skill
tells the PO to use `gh-agent.sh --as po` rather than plain `gh`.
STAGES 1, 3 AND 5 STAY OWNER-ONLY and the comment says they must not copy
this. Their spend ($1-4 and $2-10) is authorised by no autonomous rule, so
nothing would be enforcing a bar on the far side of the gate. The exception
here is safe precisely because the rule that bounds it already exists.
Naming an account in a gate is only safe when it is REGISTERED.
`bess-product-owner` exists today and is a collaborator. This is the same
reason CLAUDE.md refuses to pre-authorise `bess-developer` before the rename:
on a public repo an unregistered username can be claimed by anyone.
Claude-Session: https://claude.ai/code/session_012LExo6fcbup75vtc9NfoAR
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent e924617 commit 5248328
3 files changed
Lines changed: 58 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
492 | 492 | | |
493 | 493 | | |
494 | 494 | | |
495 | | - | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
496 | 509 | | |
497 | 510 | | |
498 | 511 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
18 | 36 | | |
19 | | - | |
| 37 | + | |
| 38 | + | |
20 | 39 | | |
21 | 40 | | |
22 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
136 | 151 | | |
137 | 152 | | |
138 | 153 | | |
| |||
0 commit comments