docs(gotcha 36): approve a parked ramp before merging anything else - #401
Merged
Conversation
Shipping the covers fix found a race the concurrency block does not describe. That block explains that a newer ramp cancels a pending one, which reads as a queueing rule about runs that have not started yet. It also cancels a ramp that is mid-flight because you just approved it, and the merge doing the cancelling can be entirely unrelated. Measured: run 31862702940 was approved and moving traffic; the next merge's ramp entered the group at 12:13:35Z and 31862702940 was cancelled at 12:13:54Z. It reported completed/cancelled having already reached 100%, so traffic landed and the run looks failed and both are true. What it can cost is the changelog. The D1 INSERT runs only after the last step hits 100%, so a cancellation lands on the one step with nothing to retry it. Here it cost nothing because no checkpoint was staged, which was luck. A release carrying an entry would have gone to 100% and logged nothing, which is gotcha 24 arriving through a different door. Ordering does not save you and neither does approving first, since the successor ramp arrives whenever Workers Builds finishes. The rule is about the window rather than the sequence.
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aadhar-sh | d1a7d95 | Aug 15 2026, 12:19 PM |
oddharsh
added a commit
that referenced
this pull request
Aug 16, 2026
…verse (#416) This gotcha claimed twice that the Copilot check fails on every diff, and one of those claims went in a few hours ago as the general lesson. It is wrong. The run always fires; whether it REQUESTS A MODEL depends on the diff. The job prints a file exclusion list on every run, covering js, json, mjs, ts, py, rs, yaml, yml, html, xml, go, java, c/cpp, rb and more. `.md`, `.sh` and `.css` are NOT on it. So a docs diff survives the filter and gets a `claude-opus-4.6` request, while a pure JavaScript diff is filtered to nothing and the run exits clean. Both paths print `Sessions disabled: not supported for code scanning yet`, which this session initially read as the discriminator and is not; the discriminating line is `Creating copilot-sdk session with model`, which only the failing path reaches. Correlates 12 of 12: the five runs of 2026-08-15 (#399 jpg/json and #402 js/mjs passed; #398, #400 and #401 all carried md and failed), plus all seven earlier failures checked backwards. #313 is the "CSS-only" diff this gotcha already singles out, and css is not on the list either. #351's note here called its entire diff a `${{ }}` move in workflow files; it touched md and mjs too, and the md is what drew the request. The prose-only argument is unchanged in conclusion and inverted in mechanism: a docs PR reddens this because markdown is one of the few things the detector still looks at, rather than because the agent choked on prose. The entitlement root cause is untouched. Records the method failure too, since it is the transferable part. Nine entries were built by pattern-matching outcomes across PRs without once reading which files each diff touched, and "fails on everything" was an artifact of that sample. One uncollected column explained the whole shape. Co-authored-by: Aadharsh Pannirselvam <19518661+oddharsh@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Shipping the covers fix found a race the concurrency block in
ramp.ymldoes not describe.The gap
That block explains that a newer ramp cancels a pending one, which reads as a queueing rule about runs that have not started. It also cancels a ramp that is mid-flight because you just approved it, and the merge doing the cancelling can be entirely unrelated.
Measured 2026-08-15:
It reported
completed/cancelledhaving already reached 100%. Traffic landed, the run looks failed, and both are true. That combination is the confusing part.What it can actually cost
The changelog. The D1
INSERTruns only after the last step hits 100%, so a cancellation lands squarely on the one step that has nothing to retry it.Here it cost nothing because no checkpoint was staged, and that was luck rather than design. A release carrying a changelog entry would have gone to 100% and silently logged nothing, which is gotcha 24's failure arriving through a different door:
checkpoints:checkcatches it on the next PR, long after the ramp read as done.The rule
Ordering does not save you, and neither does approving first: the successor ramp arrives whenever Workers Builds finishes, which is minutes after a merge and nothing you control. The rule is about the window rather than the sequence. Let a parked ramp finish before merging, and if a merge has already gone in, expect the cancellation and confirm with
pnpm run deploy:promote -- --statusrather than reading the run's conclusion.Docs only. 277/277 contract tests pass.
This PR is deliberately not being merged until the in-flight ramp settles, which is the rule it documents.