You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
make release-staging.yml treat skip_e2e=true as a full pretest bypass, not just an E2E-only bypass
allow the downstream staging build jobs to run after intentionally skipped pretest jobs by adding always() to the gated if: expressions
rename the reusable build workflow's internal metadata flag to skip_pretests so the build logs match the policy being applied
update the release smoke note so operators must link the relevant prior pretest evidence when using the override
Problem
The first staging follow-up only skipped the E2E pretest job; Pretest — unit + rust still ran, which does not match the operator intent for the override.
The dispatched staging run 25969391067 also showed a second issue: even with pretests in the expected state, Build desktop matrix and Docker: build (no push) were skipped entirely.
Root cause for the second issue: GitHub Actions treats skipped needs: dependencies specially; without always() on the downstream if:, the job can be skipped before the rest of the condition is considered.
Solution
gate both pretest-tests and pretest-e2e on the existing skip_e2e dispatch input so the override suppresses the whole pretest phase
update the downstream build job conditions to accept either success or the intentional skipped state for those dependencies
prefix those downstream conditions with always() so GitHub evaluates the skip-aware logic instead of short-circuiting the job
keep the reusable build log and release-ops docs aligned with the new semantics
Submission Checklist
Tests added or updated (happy path + at least one failure / edge case) per Testing Strategy
Diff coverage ≥ 80% — changed lines (Vitest + cargo-llvm-cov merged via diff-cover) meet the gate enforced by .github/workflows/coverage.yml. Run pnpm test:coverage and pnpm test:rust locally; PRs below 80% on changed lines will not merge.
Linked issue closed via Closes #NNN in the ## Related section
Impact
affects GitHub Actions staging release behavior only
fixes two operator-path bugs: the override now skips all pretests, and the desktop/docker build jobs no longer get skipped due to needs semantics when that override is used
no runtime desktop/core behavior changed
Related
Closes: N/A
Follow-up PR(s)/TODOs: rerun release-staging.yml with skip_e2e=true after this merges
AI Authored PR Metadata (required for Codex/Linear PRs)
error:actionlint is not installed in this environment
impact: workflow syntax was sanity-checked with gh workflow view, but no local actionlint pass or live dry-run of the fixed staging workflow was available
Behavior Changes
Intended behavior change: skip_e2e=true now bypasses the entire staging pretest phase, and the downstream build jobs still execute under that intentional skipped state
User-visible effect: release operators can dispatch the staging release override and actually get desktop/docker artifacts instead of a green run with all build jobs skipped
Parity Contract
Legacy behavior preserved: default release-staging.yml dispatch still requires the full pretest gate before building
Guard/fallback/dispatch parity checks: downstream build jobs now require either successful pretests or an explicit skipped state paired with the override flag, and they use always() so GitHub evaluates that contract correctly
Duplicate / Superseded PR Handling
Duplicate PR(s): N/A
Canonical PR: this PR
Resolution (closed/superseded/updated): N/A
Summary by CodeRabbit
Chores
Renamed workflow inputs and refined CI/CD job dependencies for improved clarity and control when skipping pretests during staging builds.
Documentation
Updated release smoke testing procedures to specify required pretest evidence when E2E testing is skipped.
Reviewing files that changed from the base of the PR and between bcfecc3 and b90f1ff.
📒 Files selected for processing (3)
.github/workflows/build-desktop.yml
.github/workflows/release-staging.yml
docs/RELEASE-MANUAL-SMOKE.md
📝 Walkthrough
Walkthrough
This PR renames the skip_e2e_pretest flag to skip_pretests in the build-desktop reusable workflow, updates release-staging to pass the renamed flag and conditionally skip the pretest-tests job, modifies job conditions to handle the new skip behavior, and updates release documentation to reflect the broader pretest skipping semantics.
Input description updated to clarify that skip_e2e skips the entire pretest phase. The pretest-tests job is made conditional and skipped when skip_e2e is true. Build-desktop and build-docker job conditions are updated with always() and logic to accept skipped pretest-tests. The renamed skip_pretests flag is passed to the build-desktop reusable workflow.
Release smoke test documentation docs/RELEASE-MANUAL-SMOKE.md
Instructions updated to reference pretest evidence (unit/rust and E2E as applicable) rather than only E2E evidence when skipping E2E in manual releases.
Estimated code review effort
🎯 2 (Simple) | ⏱️ ~12 minutes
Possibly related PRs
tinyhumansai/openhuman#1887: Introduces the release pretest gate and how release-staging calls build workflows, directly related to this PR's flag rename and conditional gating updates.
Poem
🐰 A flag renamed, from skip_e2e_pretest to the clearer skip_pretests it goes,
The gates now conditional, letting workflows skip when the tester says no,
Build-desktop speaks, release-staging listens with care,
Evidence gathered, documented everywhere!
The CI now flows with intention so bright. ✨
Comment @coderabbitai help to get the list of available commands and usage tips.
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
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.
Summary
release-staging.ymltreatskip_e2e=trueas a full pretest bypass, not just an E2E-only bypassalways()to the gatedif:expressionsskip_pretestsso the build logs match the policy being appliedProblem
Pretest — unit + ruststill ran, which does not match the operator intent for the override.25969391067also showed a second issue: even with pretests in the expected state,Build desktop matrixandDocker: build (no push)were skipped entirely.needs:dependencies specially; withoutalways()on the downstreamif:, the job can be skipped before the rest of the condition is considered.Solution
pretest-testsandpretest-e2eon the existingskip_e2edispatch input so the override suppresses the whole pretest phasesuccessor the intentionalskippedstate for those dependenciesalways()so GitHub evaluates the skip-aware logic instead of short-circuiting the jobSubmission Checklist
diff-cover) meet the gate enforced by.github/workflows/coverage.yml. Runpnpm test:coverageandpnpm test:rustlocally; PRs below 80% on changed lines will not merge.N/A: behaviour-only workflow/docs change## Relateddocs/RELEASE-MANUAL-SMOKE.md)Closes #NNNin the## RelatedsectionImpact
needssemantics when that override is usedRelated
release-staging.ymlwithskip_e2e=trueafter this mergesAI Authored PR Metadata (required for Codex/Linear PRs)
Linear Issue
Commit & Branch
codex/fix-staging-skip-all-pretestsb90f1fffValidation Run
pnpm --filter openhuman-app format:checkpnpm typecheckgh workflow view .github/workflows/release-staging.ymlpnpm rust:checkValidation Blocked
command:actionlint .github/workflows/*.ymlerror:actionlintis not installed in this environmentimpact:workflow syntax was sanity-checked withgh workflow view, but no local actionlint pass or live dry-run of the fixed staging workflow was availableBehavior Changes
skip_e2e=truenow bypasses the entire staging pretest phase, and the downstream build jobs still execute under that intentional skipped stateParity Contract
release-staging.ymldispatch still requires the full pretest gate before buildingalways()so GitHub evaluates that contract correctlyDuplicate / Superseded PR Handling
Summary by CodeRabbit
Chores
Documentation