Repository navigation
claw: refresh -- update-branch every behind, conflict-free PR after a merge (Closes #10397) - #10482
Conversation
f13b39e to
e8973c3
Compare
PR DashboardGenerated at: 2026-10-18 14:02:39 UTC
Summary
Seal Status
|
… merge (Closes #10397) specs/claw/refresh.t27 decides which open PRs get PUT .../update-branch after a push to master (held, draft, fork without maintainer edits, conflicting, unknown and current ones are skipped; at most 30, oldest first; fail closed on unreadable records). The claw-refresh job in gate-topology.yml only lists, feeds gen/c/claw/refresh.c and calls the endpoint. The foreign-code shrink rule is paid by deleting two dead wave generators (scripts/gen_w658.py, gen_w659.py: referenced only by old wave reports). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
tools/census/shell.txt: jobs 91 -> 92, run: steps 320 -> 322, runner-named shell 299 -> 301 (the new claw-refresh job in gate-topology.yml, two run steps, no shell: key). tools/census/quiet.txt: named a path but not quiet 210 -> 214 (the same job's steps name paths; none is a quiet shape). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…aps (Refs #10397) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#10397) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…uggestion, Refs #10397) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
5c8ccd4 to
d9ebd81
Compare
…the new master tip (Refs #10397) Census moved: quiet 'named a path but not quiet' 210 -> 220 and shell 'run: steps' 320 -> 324 (runner-does 301 -> 303). The claw-refresh job in gate-topology.yml adds run steps; the rest of the movement came from master (the merger workflow, #10474) while this branch waited. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Mutation run on specs/claw/refresh.t27 (tri mutate, final spec of 44 tests): 173 of 185 killed, 9 survived, 3 hung. The first run killed 155; the added tests close every real gap it showed. The 9 survivors are equivalent mutants: line 112 (an empty trailing entry never matches), 209 and 295/303 (an extra loop iteration that returns or reads an unused slot first), 265, 285, 330 (rank 30 is always capped), 364, and 440 (a test helper). The 3 hung mutants (lines 116 twice and 296) make a loop endless, so they cannot pass. Census moved: quiet 210 -> 220, shell 320 -> 324 (claw-refresh job adds run steps; the rest came from master). 🤖 Generated with Claude Code |
PR DashboardGenerated at: 2026-10-18 14:07:31 UTC
Summary
Seal Status
|
…ensus itself, take master's This branch touches no workflow, so master's quiet 220 and shell 324 are the branch's numbers too. Refs #10469 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #10397
Lane 4 of the TRI CLAW epic (#10393): after a push to master, every open PR that is behind its base and conflict-free is brought up to date with
PUT /repos/gHashTag/t27/pulls/{n}/update-branch, so its CI reruns on the new base without a person or a bee touching it.What changed
specs/claw/refresh.t27(module ClawRefresh): the whole decision, in t27. Input is one TAB record per open PR (number, head sha, createdAt, isDraft, labels, isCrossRepository, head repo, maintainerCanModify, mergeable, mergeStateStatus, behind_by). Output isR <number> <sha>lines, oldest first, at most 30, plus a summary. Skips, first match wins: held (no-auto-merge), draft, fork without maintainer edits, conflicting (listed once in the step summary), not decidable yet, already current. Any unreadable record (bad field count, number, sha, date, flag, duplicate, or past 512 records) is never refreshed.gen/c/claw/refresh.cand.trinity/seals/claw_ClawRefresh.json: generated and sealed on the lab;spec-guards.ymlnow regeneratesrefresh.cand fails on drift like the other claw C files.claw-refreshjob in.github/workflows/gate-topology.yml(no new workflow file): push to master only; a token minted withpermission-pull-requests: writeonly (theupdate-branchrow ofspecs/claw/github_surface.t27); lists open PRs with one GraphQL query (a warm-up query and a wait first, becausemergeableis computed lazily after a push), readsbehind_byfrom the compare API (the master ruleset is not strict, so GitHub never reports BEHIND), feeds the lowered C, calls the endpoint withexpected_head_shafor eachRline, writes theMlines to the step summary. The shell holds no decision. Concurrency groupclaw-refresh, cancel-in-progress.scripts/gen_w658.py,scripts/gen_w659.py, referenced only by old reports) to pay the foreign-code shrink rule for the added workflow lines.Not verified
update-branchcall has been made with the narrow token. GitHub's REST docs say an App may also needcontents: writeon the head repo for this endpoint, which the surface row does not grant. If the first run answers 403, the job prints the warning with GitHub's text and the surface row needs a decision.github.tokendo not trigger push workflows, so the job only runs after merges that GitHub attributes to a user or App.🤖 Generated with Claude Code