docs(smoke): say what the smoke run does gate - #35
Conversation
Three places said the smoke workflow gates nothing, and the release flow contradicts all three twenty-eight lines below one of them: `alias` is `needs: [binaries, pypi, crates, smoke]`, and the comment above that job already explains the exception -- moving `v0` is reversible where a publish is not, so a red smoke run leaving the alias on the previous release is the safe direction. What is true is narrower than what was written. Smoke gates none of the publishes, and nothing irreversible sits behind it, but it does decide whether the major alias follows this release. A maintainer reading only the absolute claim would not know that a red run has any consequence at all, when it has exactly one. The switch count in the same CLAUDE.md sentence goes with it. Smoke sets three, and the omitted one is `REQUIRE_RUST_BINARY` -- the guard that stops a failed install from quietly downgrading to testing the checkout, which is the failure the surrounding sentence exists to warn about, and the failure the first run of that workflow actually had. The comment in smoke.yml naming the switches was short the same one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can add REVIEW.md to your repo root and Qodo follows it on every PR |
PR Summary by QodoClarify smoke checks gate the major release alias
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #35 +/- ##
=======================================
Coverage 87.37% 87.37%
=======================================
Files 3 3
Lines 689 689
=======================================
Hits 602 602
Misses 87 87 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟢 Approval recommended
The changes are documentation/comment-only and were verified to match the actual release.yml dependency (alias needs smoke) and the harness env switch behavior used by smoke runs.
Pull request overview
This PR corrects and clarifies repository documentation/comments about what the smoke.yml workflow can and cannot gate in the release process, aligning the narrative with the actual release.yml job dependencies and the CLI harness switches used by smoke runs.
Changes:
- Clarifies that
smoke.ymlgates none of the publishes, but can gate moving thev0alias via thealiasjob waiting onsmoke. - Updates smoke workflow header comments to explicitly document the
alias-job exception and why it’s safe/reversible. - Fixes the documented harness “footholds” for smoke runs to include
REQUIRE_RUST_BINARYalongsideRUST_BINARYandREQUIRE_INSTALLED_PACKAGE.
File summaries
| File | Description |
|---|---|
CLAUDE.md |
Updates architecture docs to accurately describe smoke gating scope and the three harness env switches used by smoke runs. |
.github/workflows/smoke.yml |
Refines workflow-level comments to distinguish publish gating vs. v0 alias gating, and corrects the documented harness switches. |
.github/workflows/release.yml |
Adjusts the smoke-job comment to match the fact that alias depends on smoke while publishes do not. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
What changes, and why
Three places asserted that the smoke workflow gates nothing:
CLAUDE.md:36— "It gates nothing, because by the time it runs the version number is spent.".github/workflows/smoke.yml:12— "It cannot gate anything, and is not built to.".github/workflows/release.yml:218— "It gates nothing -- by the time it runs, every version number is spent."The release flow contradicts all three, twenty-eight lines below the last of them.
aliasisneeds: [binaries, pypi, crates, smoke], and the comment directly above that job already states the exception and its reasoning: "It waits onsmoke, unlike anything else that follows the publish jobs. The publishes are irreversible and must not be held up, but moving this tag is both reversible and a recommendation... A red smoke run leaves the alias where it was, which is the safe direction."So the true claim is narrower than the written one. Smoke gates none of the publishes, and nothing irreversible sits behind it — but it does decide whether
@v0follows this release. A maintainer reading only the absolute version has no way to learn that a red run has any consequence, when it has exactly one, and it is the one a consumer pinned to@v0feels.The switch count in the same sentence
CLAUDE.md:36also said "Its two footholds in the harness areRUST_BINARYandREQUIRE_INSTALLED_PACKAGE". Smoke sets three:The omitted one is
REQUIRE_RUST_BINARY, which is the guard that stops a failed install from quietly downgrading to testing the checkout — the exact failure the surrounding sentence exists to warn about, and the failure that workflow's first run actually had ("the first run of this workflow checked outv0.0.1and quietly tested the checkout instead").smoke.yml's own comment naming the switches was short the same one, so both move together.Corpus
The corpus is the specification, and both implementations answer to it. Tick what applies.
corpus/pins the new behavior. The case was written first and failed first.Comments and one CLAUDE.md sentence. No job's
needs:,if:or steps change.Checks
make checkpasses, ormake testdoes and this touches no Rust.make tidy— yamllint, actionlint,check-github-workflows, markdownlint and both spell gates — plusunwrap-markdown-prose-py --fail-on-change CLAUDE.md, sincetidyskips this repository's own hook.