Skip to content
This repository was archived by the owner on Aug 12, 2026. It is now read-only.

fix(ci): enforce v1.0.0 release gates - #154

Merged
acgetchell merged 3 commits into
mainfrom
ci/issue-95-release-gate
Aug 10, 2026
Merged

fix(ci): enforce v1.0.0 release gates#154
acgetchell merged 3 commits into
mainfrom
ci/issue-95-release-gate

Conversation

@acgetchell

@acgetchell acgetchell commented Aug 10, 2026

Copy link
Copy Markdown
Owner
  • Run coverage and documentation as stable pull-request checks.
  • Exercise the opt-in viewer contract on macOS.
  • Centralize compiler, Python, LCOV, and cache pins.
  • Extend action pinning and remove the obsolete debug wrapper.
  • Keep ThreadSanitizer and CodeQL advisory.

Closes #95

Summary by CodeRabbit

  • Documentation

    • Updated contribution, release, viewer, and README guidance with expanded test coverage, supported tool versions, CI behavior, and release-gate requirements.
    • Clarified documentation validation and publication workflows.
  • CI Improvements

    • Added pull-request validation for documentation and coverage workflows.
    • Added macOS viewer build and smoke-test coverage.
    • Improved tool-version consistency and cache handling across automated checks.
  • Maintenance

    • Updated Python tooling and pinned action metadata.
    • Removed the obsolete debug script.
  • Tests

    • Added workflow validation tests for version consistency, release checks, and viewer coverage.

- Run coverage and documentation as stable pull-request checks.
- Exercise the opt-in viewer contract on macOS.
- Centralize compiler, Python, LCOV, and cache pins.
- Extend action pinning and remove the obsolete debug wrapper.
- Keep ThreadSanitizer and CodeQL advisory.

Closes #95
@acgetchell acgetchell self-assigned this Aug 10, 2026
@acgetchell
acgetchell enabled auto-merge August 10, 2026 04:34
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The PR centralizes CI tool versions, resolves compiler-specific packages and cache keys, adds macOS viewer validation, strengthens coverage and documentation gates, updates release documentation, and expands workflow configuration tests.

Changes

CI release gates

Layer / File(s) Summary
Centralized tool versions and action pinning
Justfile, .python-version, .github/actions/setup-just/action.yml, .pinact.yaml, scripts/tests/test_justfile_discoverability.py
Tool versions now come from repository metadata. Tests validate Python version consistency and workflow metadata coverage.
Compiler resolution and platform contracts
.github/workflows/ci.yml, docs/viewer.md, .github/CONTRIBUTING.md, scripts/tests/test_justfile_discoverability.py
CI resolves compiler packages and cache keys centrally. macOS runs the viewer contract after headless validation. Documentation and tests record the updated contracts and test counts.
Coverage, sanitizer, and CodeQL alignment
.github/workflows/codecov-upload.yml, .github/workflows/_sanitizer.yml, .github/workflows/codeql.yml
Analysis workflows use resolved tool versions and version-specific cache keys. Coverage uploads fail when expected reports are missing.
Documentation gates and release contract
.github/workflows/doxygen.yml, README.md, docs/RELEASING.md
Pull requests validate documentation. Publication remains conditional on successful validation and non-pull-request events. Release-gate contexts are documented.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant Justfile
  participant CompilerResolution
  participant CIContracts
  participant MacOSViewer
  GitHubActions->>Justfile: Resolve tool versions
  Justfile-->>CompilerResolution: Return compiler and Python versions
  CompilerResolution->>CIContracts: Provide compiler package and cache key
  CIContracts->>MacOSViewer: Run viewer-build on macOS
Loading

Possibly related issues

Possibly related PRs

Suggested labels: github_actions

Poem

Just pins tools in tidy rows,
Caches track the versions CI knows.
macOS renders, docs validate,
Coverage checks the upload state.
Release gates now clearly show.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR addresses most objectives in [#95], but the summary does not confirm branch-protection updates or linked final CI evidence. Update or verify branch protection with the stable required checks, and link final clean-checkout CI evidence from the release-readiness path.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary change: enforcing CI release gates for v1.0.0.
Out of Scope Changes check ✅ Passed The changes are related to CI enforcement, release documentation, tool pinning, viewer validation, coverage, and removal of the obsolete debug script.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/issue-95-release-gate

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/codecov-upload.yml:
- Around line 39-48: Update the tool-version resolution steps in
.github/workflows/codecov-upload.yml lines 39-48,
.github/workflows/_sanitizer.yml lines 75-77, and .github/workflows/codeql.yml
lines 73-76: assign each just --evaluate result to a variable so failures stop
the step, then write the values to GITHUB_OUTPUT with printf instead of
embedding commands inside echo; preserve all existing output names and evaluated
version symbols.
- Around line 8-10: Update the Codecov upload workflow’s pull-request handling
to disable use_oidc for dependabot[bot] actors, or select the supported
tokenless upload path for those runs. Preserve coverage generation, artifact
validation, and the existing OIDC behavior for other pull requests.

In `@docs/RELEASING.md`:
- Around line 119-135: Update the protected-branch context list in the releasing
documentation to match the active main ruleset: retain only build, CodeRabbit,
build / AddressSanitizer + UndefinedBehaviorSanitizer, and build / LeakSanitizer
as required contexts. Remove CodeCov and docs from the required-context
description while preserving the advisory and manual sanitizer guidance.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 87cafa48-913c-4164-909a-839cf80b4abb

📥 Commits

Reviewing files that changed from the base of the PR and between 426edb8 and 94ed107.

📒 Files selected for processing (15)
  • .github/CONTRIBUTING.md
  • .github/actions/setup-just/action.yml
  • .github/workflows/_sanitizer.yml
  • .github/workflows/ci.yml
  • .github/workflows/codecov-upload.yml
  • .github/workflows/codeql.yml
  • .github/workflows/doxygen.yml
  • .pinact.yaml
  • .python-version
  • Justfile
  • README.md
  • docs/RELEASING.md
  • docs/viewer.md
  • scripts/debug.sh
  • scripts/tests/test_justfile_discoverability.py
💤 Files with no reviewable changes (1)
  • scripts/debug.sh

Comment thread .github/workflows/codecov-upload.yml
Comment thread .github/workflows/codecov-upload.yml Outdated
Comment thread docs/RELEASING.md
@codecov

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

- Propagate tool-version resolution failures before publishing outputs.
- Disable Codecov OIDC for Dependabot while preserving it for other runs.
- Align documented required checks with the active main ruleset.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/codecov-upload.yml (1)

120-120: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Validate the two coverage reports independently.

if-no-files-found: error checks the combined path result. An existing build/coverage.info can therefore mask a missing or empty build/coverage-html. Add a validation step before the artifact upload.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/codecov-upload.yml at line 120, Add a validation step
before the artifact upload in the Codecov workflow to independently verify that
both build/coverage.info and build/coverage-html exist and are non-empty. Do not
rely on the combined artifact path or if-no-files-found setting, which can allow
one report to mask the other.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/codecov-upload.yml:
- Line 147: Add the Codecov token input alongside use_oidc in the Codecov upload
action, sourcing it from secrets.CODECOV_TOKEN, and configure that secret for
Dependabot so runs with use_oidc disabled authenticate successfully while
preserving OIDC for other actors.

---

Outside diff comments:
In @.github/workflows/codecov-upload.yml:
- Line 120: Add a validation step before the artifact upload in the Codecov
workflow to independently verify that both build/coverage.info and
build/coverage-html exist and are non-empty. Do not rely on the combined
artifact path or if-no-files-found setting, which can allow one report to mask
the other.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 10107b00-b9ad-4688-a9bc-09b87ed98099

📥 Commits

Reviewing files that changed from the base of the PR and between 94ed107 and 2107f20.

📒 Files selected for processing (4)
  • .github/workflows/_sanitizer.yml
  • .github/workflows/codecov-upload.yml
  • .github/workflows/codeql.yml
  • docs/RELEASING.md
💤 Files with no reviewable changes (1)
  • docs/RELEASING.md

Comment thread .github/workflows/codecov-upload.yml
- Preserve Apple archive tools during macOS viewer builds.
- Authenticate Dependabot uploads and reject incomplete coverage reports.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/ci.yml (1)

95-102: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Make tool-version resolution fail fast.

Assign each just --evaluate result before writing GITHUB_OUTPUT. A failed command substitution inside echo can still produce a successful echo status and write an empty output. Later steps can consume invalid tool versions.

Use set -euo pipefail, assignments, and printf for the outputs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 95 - 102, Update the tool-version
resolution block in the CI workflow to enable set -euo pipefail, assign each
just --evaluate result to a variable before writing outputs, and use printf to
append those variables to GITHUB_OUTPUT. Ensure any failed version evaluation
stops the step instead of emitting an empty output.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/ci.yml:
- Around line 95-102: Update the tool-version resolution block in the CI
workflow to enable set -euo pipefail, assign each just --evaluate result to a
variable before writing outputs, and use printf to append those variables to
GITHUB_OUTPUT. Ensure any failed version evaluation stops the step instead of
emitting an empty output.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 22bed660-233f-436e-acd6-a3e3df58b71c

📥 Commits

Reviewing files that changed from the base of the PR and between 2107f20 and deb24ab.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .github/workflows/codecov-upload.yml

@acgetchell
acgetchell merged commit 9516b36 into main Aug 10, 2026
18 checks passed
@acgetchell
acgetchell deleted the ci/issue-95-release-gate branch August 10, 2026 19:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Audit and enforce the v1.0.0 build and CI release gates

1 participant