Skip to content

ci(quest): run only the quest package instead of the dev shell - #4679

Merged
kixelated merged 1 commit into
mainfrom
quest/ci-quest-workflow-fast
Oct 1, 2026
Merged

kixelated merged 1 commit into
mainfrom
quest/ci-quest-workflow-fast

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Problem

The push-only Quest workflow (#4597) ran nix develop --command quest check. Entering the dev shell realises its whole closure. When cache.yml had not yet pushed the shell for the current flake.lock (it runs on the same main push, and never on quest/** branches), Nix compiled uniffi-bindgen-go from source.

Job 110481082870, for example: the Check step took 14m45s, of which 13m34s was the single uniffi-bindgen-go build (16:55:28 to 17:09:02). Others hit the 15-minute timeout or held the concurrency slot until a newer push cancelled them. A warm run takes about 50s.

Fix

  • flake.nix: expose the quest CLI as packages.quest (the same derivation the dev shell already includes, via a shared quest-cli binding).
  • quest.yml: nix run .#quest -- check, which realises only quest's closure.

Locally nix run .#quest -- check passes (434 documents ok).

API / wire impact

New flake output packages.<system>.quest. No wire or library API change.

🤖 Generated with Claude Code

The push-only Quest workflow entered the full dev shell to run quest check.
Whenever cache.yml had not yet pushed the shell for the current flake.lock,
that compiled uniffi-bindgen-go from source (13.5 min of a 14.7 min step),
hitting the 15-minute timeout or holding the concurrency slot until cancelled.

Expose the quest CLI as packages.quest and run it with nix run, which
realises only quest's closure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

MERGE

Reviewed head: a7d31ee66d130e37bc6ab07388d3f7301933171d

Summary

Exposes the already-used quest.packages.${system}.default as packages.quest and switches the push-only Quest workflow from nix develop --command quest check to nix run .#quest -- check, so the job realises the quest CLI closure instead of the full dev shell (and its cold-cache uniffi-bindgen-go rebuild).

Blocking

None.

Non-blocking

None material. The shared quest-cli binding keeps the shell and package on the same derivation; nix run .#quest is valid against that package (same binary the quest flake ships as apps.default); aarch64-linux is in the quest flake's system list, matching ubuntu-24.04-arm. Cachix still helps when cache.yml has pushed the shell closure; when it has not, building quest alone is the intended smaller failure mode versus the previous 13+ minute bindgen compile / 15-minute timeout.

Nice, minimal CI fix for a real timeout class.

This is an automated review, not the maintainer's decision
(Written by Grok)

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head: a7d31ee66d130e37bc6ab07388d3f7301933171d

No actionable findings. This is a focused fix: the shared quest-cli binding preserves the existing pinned derivation and avoids shadowing the flake input inside packages = rec { ... }. Running that package directly retains whole-tree validation without realising unrelated dev-shell tools. I checked both changed files, the pinned Quest package/check implementation, the cache workflow, and prior discussion; no additional abstraction is needed.

Verification: the exact-head Quest run succeeded on ARM64. Its Check step took about 13 seconds, fetched seven runtime paths (14 MiB), and reported 434 documents ok. This used the cached Quest package; I did not independently test a cold-cache build or the full repository suite.

@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: b0caca96-ab95-4a46-870a-a109e7dd25f0

📥 Commits

Reviewing files that changed from the base of the PR and between cbaa563 and a7d31ee.

📒 Files selected for processing (2)
  • .github/workflows/quest.yml
  • flake.nix

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.


Walkthrough

The flake now exports the Quest input’s default package as packages.quest and adds the same package binding to the default development shell. The Quest workflow runs nix run .#quest -- check instead of invoking quest check through nix develop.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to a7d31

CI continues to check the whole Quest tree while invoking the pinned CLI directly, avoiding the extra development-shell build. No actionable merge-blocking issue remains.

Architecture Summary

Architecture risk: 🔵 Low · up to a7d31

The change affects 1 system.

Changed systems: flake.nix

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — flake.nix (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in flake.nix: A local quest-cli binding now references the Quest input’s default package.
  • observed — Modified behavior in flake.nix: The exported packages set now includes quest, pointing to quest-cli.
  • observed — Modified behavior in flake.nix: The default development shell now adds the local quest-cli binding instead of directly referencing the Quest input’s default package.
  • observed — Modified behavior in .github/workflows/quest.yml: The Cachix comment now describes the quest build as part of the dev-shell closure. The check step still validates the whole tree, but runs the quest package directly with nix run instead of entering the development shell with nix develop; the updated comments note that the latter may compile uniffi-bindgen-go from source when the cache has not published it for the current lockfile.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: the Quest workflow now runs the Quest package instead of the development shell.
Description check ✅ Passed The description directly explains the workflow change, the performance problem it addresses, the flake output change, and the reported validation result.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
✨ Simplify code
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@kixelated

Copy link
Copy Markdown
Collaborator Author

Summary: the Quest workflow now runs nix run .#quest -- check (new packages.quest flake output, the same derivation the dev shell uses) instead of entering the whole dev shell. The cold-cache case previously spent 13m34s compiling uniffi-bindgen-go; on this head the Check step took 13s (quest substituted from cachix, nothing built). CI is green and both automated reviews found nothing actionable. Enabling auto-merge.

(Written by Claude Opus 5.5)

@kixelated
kixelated merged commit 9ccd464 into main Oct 1, 2026
8 checks passed
@kixelated
kixelated deleted the quest/ci-quest-workflow-fast branch October 1, 2026 22:50
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