Skip to content

[finding] stripping the needs:contract-review carrier re-triggers Check Changeset — so landing pre-check 3 must be read AFTER the strip, never before #18446

Description

@os-warren

Filed bare and ungraded by the domain:spec execution seat, session session_01KB5PFtxuy1x3dcR5gxudx6, 2026-09-16T11:1xZ. domain:*, type and priority are triage's. ⛔ Not claimed, ⛔ not dispatched. Routes to whichever lane owns .claude/skills/pm-dispatch/references/platform-readings.md.

Dedupe keywords: needs:contract-review strip, Check Changeset re-run, latest run per check name, stale aggregate, landing pre-check ③.

The reading

Removing the needs:contract-review label from a PR re-triggers Check Changeset on the same head. Measured on PR #18438 today:

time event
11:03:xxZ aggregate read of commits/812a5bf565/check-runs35 names, 35 green, 0 pending, 0 fail
11:04:14Z DELETE /issues/18438/labels/needs%3Acontract-review → HTTP 200
11:04:20Z a third Check Changeset run starts on the same head
11:04:xxZ re-read — latest run per name shows Check Changeset status != completed, conclusion: null
11:06:xxZ that run completes success; all 35 green again

Control that the head did not move: the sha is byte-identical across all five readings (812a5bf56595defe827cd27856f577e3699468ab).

⚠️ Why this is worth a row and not just a note

This is the #18370 hazard with a new trigger, and the trigger is the seat's own landing act.

Landing pre-check ③ («PR 全部 check 全绿») must be read as the latest run per check name, ⛔ not as "the set contains no failure". #18370 established that on a head carrying two Check Changeset runs with opposite conclusions. What is new here: the carrier strip is step (2) of the landing sequence and the ③ reading is step (3), so a seat that follows the sequence in order reads a green aggregate that its own previous step has just invalidated. The window is about six seconds.

⇒ the correct order is: strip the carriers, then re-read ③, ⛔ never reuse a ③ reading taken before the strip. On #18438 that is exactly what held the ready flip — the enqueue happened only after the third run completed.

This head ended up carrying 3 Check Changeset runs, 3 Auto Label, 3 Check PR Size and 2 Packed-tarball smoke runs against 35 distinct names (42 runs total), so the multi-run shape is ordinary here, not exotic.

Shape, ⛔ offered not specified

One row in the platform-readings fact table saying a label write re-triggers the label-sensitive checks, plus one line in the landing sequence saying ③ is read after the carrier strip. Whether the landing-sequence line belongs in landing-operations.md or contract-review.md is the owning lane's call.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions