Skip to content

ci: drop ready_for_review from the witness-floor pull-request trigger - #9361

Merged
briansrls merged 2 commits into
mainfrom
session/swift-lark-771
Aug 27, 2026
Merged

briansrls merged 2 commits into
mainfrom
session/swift-lark-771

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Operator-ruled, exact scope given: delete ReadyForReview from the witness-floor workflow's pull-request activity set.

Why the trigger goes, stated at the grain that is true

The question that matters is: has this head been verified against the relevant base? The event being consumed is: did the PR move from draft to ready? Those correlate and are not equivalent. ready_for_review accidentally catches some base movement that happened before the undraft, misses base movement after it, misses drafts that stay drafts, and re-runs subjects where neither head nor base moved.

This workflow already tests drafts from Opened (there is no draft filter anywhere in the emitted file), so what remains of the trigger is duplicate runs against a fixed runner pool.

This PR does not claim the trigger can never observe anything new. Main may move while the head is unchanged, so an undraft can face a base it has genuinely not been tested against. That is a real case, and it is why any future base-congruence requirement needs a carrier naming the base sha or merge subject directly — a lifecycle event cannot stand in for it. The limitation is stated as a limitation, not as an incapacity.

Scope: this is an independent waste repair. It does not touch push-over-push cancellation semantics or the superseded-run handling in #9339/#9326, and claims nothing about them.

Changes

  • authority: gunbc.witness_floor_workflow witness_floor_workflow — activity set now [Opened, Synchronize, Reopened], unused ReadyForReview import dropped
  • emission: .github/workflows/witnesses.yml — types: [opened, synchronize, reopened]
  • witness: test.claim.witness_floor_workflow_consolidation_witness_test w_RED_the_pull_request_activity_set_is_the_three_that_carry_a_new_subject

The witness, and why both halves

The activity set was previously asserted by nothing, so the deletion and its reversion were both invisible. The row reads the emitted workflow text and asserts:

  • the surviving three by name — opened, synchronize, reopened — as the exact emitted types: line
  • ready_for_review absent (and closed, which this workflow also does not subscribe to)

Absence alone is not enough: an absence-only row greens over a total deletion of the activity list, which is a different defect (the workflow would then run on every PR activity GitHub defines) passing the same check. Spellings are read through the emitter's own pr_activity_string, so a respelling moves both sides together rather than silently vacating the negative.

Executed, both directions, via claim_batch on this head:

tree result
as authored PASS
authority mutated: ReadyForReview re-added to the activity set FAIL
authority mutated: activity list emptied (types: []) FAIL

Two independent REDs, each authored on the authority (not the witness), so the row distinguishes this change from an over-deletion.

ReadyForReview remains declared in extdeps.github.actions and mapped in extdeps.languages.yaml.gha_workflow — it is a real upstream GitHub activity type; only this workflow's subscription to it is removed. The MarkReadyForReview hits in gunbc.code_change_workflow are the code-change state machine, a different subject, untouched.

🤖 Generated with Claude Code

A draft PR is already tested from Opened, so ready_for_review only ever
re-runs a subject the floor has already measured on the same head — a
duplicate run against a fixed runner pool. Operator ruling.

The activity set is authored in gunbc.witness_floor_workflow; the emitted
.github/workflows/witnesses.yml is updated to match. ReadyForReview stays
declared in extdeps.github.actions (it is a real GitHub activity type);
only this workflow's subscription is removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The authority cut is correct, but this head is missing two parts of the operator-ruled scope.

  1. Enrol a discriminating emitted-shape witness in dag/test/claim/witness_floor_workflow_consolidation_witness_test.dag: the exact pull-request activity list still contains opened, synchronize, and reopened, and does not contain ready_for_review. The positive arm is required so deleting the entire pull-request trigger cannot satisfy the negative.

  2. Correct the body’s absolute claim that readiness “only ever” reruns the same subject. An unchanged head can face a moved base while the PR sat in draft. That does not rescue the lifecycle trigger—it is accidental, incomplete base-congruence coverage—but the limit must be stated.

The current build is green and floor is still executing; no merge decision is requested on this head.

The trigger change in this PR was +3/-3 over a fact nothing asserted, so
neither the deletion nor its reversion was observable. This row reads the
emitted workflow text and asserts the surviving three activities BY NAME
plus the absence of ready_for_review -- an absence-only assertion greens
over a total deletion of the activity list, which is a different defect.

Spellings come from the emitter's own pr_activity_string, so a respelling
moves both sides together instead of vacating the negative.

Executed both ways: PASS as authored; FAIL with ReadyForReview re-added,
and FAIL with the activity list emptied.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both requested changes are closed on exact head dea86ed05c424d481ebd530fb70cfb7a1eccf2c2.

  1. The emitted-shape witness is discriminating in both directions: it asserts the exact surviving activity line through the emitter's own pr_activity_string authority, rejects ReadyForReview, rejects Closed, returns false on generation refusal, and has executed RED controls for both re-adding ReadyForReview and deleting the whole activity list.

  2. The moved-base limitation is now explicit: draft-to-ready may coincide with a new base under an unchanged head, but it is not a base-congruence carrier and cannot substitute for one.

The prior CHANGES_REQUESTED applied to the earlier head and is superseded by this approval.

@briansrls
briansrls merged commit 17c1ea1 into main Aug 27, 2026
3 checks passed
@briansrls
briansrls deleted the session/swift-lark-771 branch August 27, 2026 01:08
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