Skip to content

docs: acceptance runs can be silently cancelled; release notes state facts - #451

Merged
leggetter merged 2 commits into
mainfrom
docs/acceptance-concurrency-cancels
Sep 24, 2026
Merged

leggetter merged 2 commits into
mainfrom
docs/acceptance-concurrency-cancels

Conversation

@leggetter

Copy link
Copy Markdown
Collaborator

Two corrections, both documentation. No code changes.

The acceptance concurrency comment was wrong

.github/workflows/acceptance.yml said "Queueing costs wall-clock and nothing else." It does not queue. A concurrency group holds one running and one pending run; when another joins, the older pending run is cancelled. cancel-in-progress: false protects only the running one.

This afternoon that cancelled acceptance on three of four v3.0.2 PRs, and later a merge to main cancelled a re-run. CANCELLED is not a failure and acceptance is not required, so nothing blocked the merges.

It also applies to the release gate: a release whose acceptance run is pending is cancelled by a pull request that joins behind it, and the builds and npm publish that depend on it never run.

The same comment cited a red TestOutpostTenantPortalAndCustomDomain as a collision. It was not — the custom-domain API can return a 500 after the domain is created, and the harness retry then gets a 409 for the test's own hostname. Now recorded as a counterexample.

File Change
acceptance.yml Comment corrected: one pending slot, cancellation, the release-gate risk; the misattributed failure recorded as a counterexample
review skill New: A cancelled acceptance run is not a run either — re-run one at a time
release skill New gate: no acceptance run in progress or queued before gh release create

Release notes: factual, not editorial

The voice guide told the Summary to "name the shared shape when fixes rhyme" and entries to "make the damage concrete". Following both produced an editorial v3.0.2 draft. The guide now says a note states what was wrong, what the CLI does now, and what the reader must do, with a before/after table. Its model entry lost its own editorial clause.

🤖 Generated with Claude Code

https://claude.ai/code/session_012XtSQ2kfpcRXXqweskgXkH

leggetter and others added 2 commits September 24, 2026 18:58
The comment on the acceptance-suite concurrency group said "Queueing costs
wall-clock and nothing else." That is wrong. A concurrency group holds one
running run and one pending run; when another joins, the older pending run is
cancelled. cancel-in-progress: false protects only the running one.

So several pull requests pushed in a burst leave all but the newest with every
acceptance job CANCELLED -- not a failure, not coverage, and not blocking,
since acceptance is not a required check. It happened to three of four v3.0.2
PRs in one afternoon. Worse, a release gate that is pending rather than running
is cancelled by a PR joining behind it, and the builds and npm publish that
need it never run.

The same comment also cited "a single named test failing while a release ran
concurrently" as a second instance of the collision. That was the outpost
custom-domain test, and it was not a collision: the API returns a 500 after the
domain is already created, and the harness retry then gets a 409 for the
test's own hostname. The misdiagnosis had become evidence; it is now recorded
as a counterexample instead.

The review skill gains "a cancelled acceptance run is not a run either", with
how to re-run one at a time. The release checklist gains a gate: no acceptance
run in progress or queued before `gh release create`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012XtSQ2kfpcRXXqweskgXkH
The voice guide told the Summary to "name the shared shape when fixes rhyme"
and entries to "make the damage concrete". Following both produced a v3.0.2
draft framed as "the one to act on", "the other three share a shape", and
consequences like "a script was told they did not exist" -- editorial rather
than factual.

The guide now says a note states what was wrong, what the CLI does now, and
what the reader must do, and gives a before/after table of clauses to cut. The
Summary is one or two sentences: contents and any required action. The model
entry it asks writers to match lost its own editorial clause, so the guide
follows its rules.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012XtSQ2kfpcRXXqweskgXkH
@leggetter
leggetter merged commit df55703 into main Sep 24, 2026
14 checks passed
@leggetter
leggetter deleted the docs/acceptance-concurrency-cancels branch September 24, 2026 19:35
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