chore(claude): self-extending tripwire extension + pause-bots guard #668
4 changed files with 13 additions and 1 deletions
|
|
@ -92,6 +92,7 @@ Staff+ code reviewer в autonomous-merge режиме. Polling PRs с `status/re
|
|||
- Diff меняет блок `## Auto-merge policy` в `.claude/rules/git-pr.md`
|
||||
- Diff меняет `Critical workflow rules` / `## Critical rules` в `CLAUDE.md`
|
||||
- Diff меняет содержимое этого файла (`auto-code-reviewer.md`) — bot не должен расширять собственные merge права
|
||||
- Diff меняет `_autonomous_pickup.md` (claim/kill-switch/merge-FSM contract) или любой `work-as-*.md` (persona activation) — bot не меняет правила своего пайплайна
|
||||
- Diff содержит литеральный 40-char hex / API key / JWT (security tripwire)
|
||||
- Action: NEVER merge даже при APPROVE → POST comment с marker `verdict=changes` + `+status/blocked +needs-human`
|
||||
- ✅ Anti-regression check — `obsidian_simple_search` по теме PR (был ли похожий fix, не воспроизводится ли incident)
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ curl -sH "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/user/tokens"
|
|||
- Diff меняет `## Auto-merge policy` в `.claude/rules/git-pr.md`
|
||||
- Diff меняет `Critical workflow rules` в CLAUDE.md
|
||||
- Diff меняет `auto-code-reviewer.md` (этот файл — bot не расширяет свои merge права)
|
||||
- Diff меняет `_autonomous_pickup.md` (claim/kill-switch/merge-FSM) или любой `work-as-*.md` (persona) — bot не меняет свой пайплайн
|
||||
- Diff содержит literal 40-char hex / API key / JWT
|
||||
- → POST comment `verdict=changes` + `+status/blocked +needs-human`
|
||||
- ❌ НЕ запускай Playwright smoke сам (это auto-qa-tester работа)
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ Closes #N
|
|||
|
||||
**Жёсткие исключения** (даже при APPROVE — НЕ merge, ping user):
|
||||
- Diff содержит литеральный secret/token/password/credential (40-char hex, API keys, JWT, и т.д.) — security tripwire
|
||||
- PR меняет блок `## Auto-merge policy` в этом файле или `Critical workflow rules` в CLAUDE.md (self-extending guard, decided 2026-05-24 — изменение правил всегда через human, предотвращает bot-loop где bot сам расширяет свои merge права)
|
||||
- PR меняет блок `## Auto-merge policy` в этом файле, `Critical workflow rules` в CLAUDE.md, `_autonomous_pickup.md` (claim/kill-switch/merge-FSM contract), `auto-code-reviewer.md` или любой `work-as-*.md` (self-extending guard, decided 2026-05-24, расширен 2026-05-29 — изменение правил пайплайна всегда через human, предотвращает bot-loop где bot сам расширяет свои merge права)
|
||||
|
||||
## Sequential PRs
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,16 @@ now_utc_epoch() {
|
|||
python3 -c 'import datetime; print(int(datetime.datetime.now(datetime.timezone.utc).timestamp()))'
|
||||
}
|
||||
|
||||
# Pause-bots guard: если активен kill-switch — НЕ освобождать claims. Иначе worker,
|
||||
# приостановленный mid-work (держит wip-claim до un-pause per _autonomous_pickup.md
|
||||
# «Pause-bots поведение mid-work»), потеряет работу — cron снимет его claim.
|
||||
PAUSE_CHECK=$(curl_forgejo "repos/$FORGEJO_REPO/issues?labels=pause-bots&state=open&limit=1")
|
||||
PAUSE_COUNT=$(printf '%s' "$PAUSE_CHECK" | python3 -c 'import json,sys; print(len(json.load(sys.stdin)))')
|
||||
if [ "$PAUSE_COUNT" != "0" ]; then
|
||||
echo "[$(date -Is)] cleanup-stale-claims: pause-bots active — skipping (workers may intentionally hold wip)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[$(date -Is)] cleanup-stale-claims: scanning status/wip issues (stale threshold: ${STALE_HOURS}h)"
|
||||
|
||||
NOW=$(now_utc_epoch)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue