Skip to content

merge queue: checking #780 on main (16dfdc7) - #800

Closed
mergify[bot] wants to merge 2 commits into
mainfrom
mergify/merge-queue/8b8753f08a
Closed

mergify[bot] wants to merge 2 commits into
mainfrom
mergify/merge-queue/8b8753f08a

Conversation

@mergify

@mergify mergify Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

🎉 This pull request has been checked successfully and will be merged soon. 🎉

#780 is queued for merge on branch main (16dfdc7).

This pull request has been created by Mergify to check the mergeability of #780.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule admin-bypass for merge:

  • check-success = lint
  • check-success = test
  • check-success = validate

Required conditions to stay in the queue:

---
checking_base_sha: 16dfdc7bfac575f8d7e8145620947b990cd96008
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 780
    scopes: []
scopes: []
...

EdbertChan and others added 2 commits September 22, 2026 00:43
… a key Claude Code never sends

detect.py read `payload["tools_used"]` (or `tool_names`). A real Claude Code
Stop payload has neither key -- captured live and committed as
tests/fixtures/claude-stop-payload.json. So `_tools_used` always returned the
empty set, the discharge branch in record_turn was unreachable, and every
Stop turn that emitted a tag was judged as "ran no verification tool".

Live state of the ledger before this change: 35 rows across 25 session
caches, 0 resolved, oldest 72 turns old.

The suite was green over the dead path because every test supplied
`tools_used` itself. The tests now build their payloads from the captured
fixture's key set and drive a real captured transcript, and a contract test
walks detect.py's AST for every `payload.get("k")` and fails if the key is
absent from the captured payload.

Tools now come from transcript_path, the way scope-lock/detect.py already
reads them. The read has three outcomes: a set, an empty set, and None for
unchecked. Unchecked neither refuses the turn nor discharges a row, and says
why on stderr.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Change-Id: I0ec5bbd9e302c882c2f4aa68df4fa4e0e4d33595
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant