Skip to content

fix(ci): resolve installed metadata and measure diff-scoped gates - #7654

Merged
kixelated merged 10 commits into
mainfrom
quest/m0/ci/five-minutes
Nov 4, 2026
Merged

kixelated merged 10 commits into
mainfrom
quest/m0/ci/five-minutes

Conversation

@kixelated

@kixelated kixelated commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The FFI gate installed C/C++ packages and passed their CMake probes, then failed at pkg-config lookup. Nix's wrapper replaces PKG_CONFIG_PATH with its target-specific value, so exporting a new path inside a check did not select the just-installed package.

The five-minute quest also still listed gate reductions already shipped by moq-dev/moq#7472 and moq-dev/moq#7473.

Approach

  • Query the installed .pc file directly in C/C++, OBS, and Nix package validation. This preserves pkg-config's dependency search and verifies the intended install prefix.
  • Read the locked nixpkgs input directly in the namespace probe. Its raw path flake reference copied CMake output concurrently with regeneration and failed before checking the builder. The probe now needs only flake.lock, independent of the changing checkout.
  • Record prepared-cache measurements and rewrite the quest to the remaining work.
  • Keep parallel Rust lint deferred until hakari finishes.
  • Narrow the quest's Goal to the maintainer's settled command (see Decisions).

Measurements

One observation per route after a successful preparation run, with another comment-only source edit. bench/local.py admitted the whole just check HEAD once, with four nextest workers and CHECK_JOBS=3. Other agents were running; these are observations, not a controlled comparison with historical results.

Route Admission Work Total Child CPU
moq-net 88.2 s 227.1 s 315.3 s 1,048.0 s
JS net 0.2 s 228.9 s 229.0 s 352.4 s
moq-ffi, configured Gradle executable 0.2 s 101.1 s 101.2 s 219.8 s

The default FFI attempt also reproduced recursive Gradle function lookup, already owned by moq-dev/moq#7632. It was cancelled and all its children stopped. The two subsequent FFI runs passed using the supported GRADLE_CMD override set to the dev shell's executable. Their timings do not establish a passing default gate. Swift skipped on Linux.

Impact

  • Public API: none.
  • Wire: none.
  • Gate and packaging validation use the same installed metadata explicitly; no coverage moves or package version changes.

Alternatives

Changing Nix's internal wrapper variables would couple the scripts to its implementation. Explicit metadata paths also avoid selecting another installed MoQ package. The proposed published-smoke change was dropped after review to preserve its consumer-facing, name-based lookup coverage.

Decisions

  • Decided 2026-11-03 (maintainer): what the historical just test goal covers.

    • ✅ "just check, including its selected modules' test phases" (recommended): the diff-scoped gate, which already runs each selected module's tests. Bare just test only lists the cross-language suites.
    • Name the cross-language suites covered by the bound.

    Applied to the quest's Goal and Plan and to the CI epic's link. The historical just test baseline row stays as history and is not compared with new measurements. This confirms the PR's recommended direction, so no design change.

Validation

On head 16d960098c, after merging origin/main at 929481236b (no conflicts):

  • quest gate just check origin/main (in the current flake's dev shell): passed. c 38 s, cpp 56 s, obs_compile 12 s, test gh 57 s, quest, shell, markdown, and the other selected modules passed, 75 s wall time. The flake module skipped because the local Nix builder cannot create user namespaces (MOQ_USERNS_UNAVAILABLE, exit 77), the intended local skip.
  • An earlier run from a shell carrying the session's stale dev-shell quest (pin d003102) failed check quest on ## Waiting headings in 23 quests. The flake's pinned quest (36d0429) accepts them, so this was the environment and not the branch.
  • quest check --base origin/main: 564 documents ok.
  • Earlier rounds (before the merge): quest gate just ci origin/main failed only in the strict flake lane on the same namespace limit. C and C++ package probes, both configured FFI gates, and all net/JS measurement gates passed.

Review

quest review --base origin/main --new, Codex / GPT-6.1 Sol, medium effort. Session 01a1a3c1-5280-7d72-aec4-b1ae9e471f10, round 1, reviewed 16d960098c against 929481236b: no findings.

The PR had no review threads or automated findings to address.

Earlier rounds (Claude Code / Claude Opus 5.5, session 0b6790b7-ff3a-4fea-8644-706d6ce76eda, clean on a5dbd0bfd3) fixed:

  • Dropped the published-smoke change, preserving its name-based consumer lookup coverage.
  • The namespace probe now fetches only locked nixpkgs, eliminating the repository copy rather than merely filtering ignored build output.

Remaining in the quest

The quest stays open, rewritten to what remains. Its ## Waiting section tracks the outside conditions, which do not block this PR:

  • moq-dev/quest: admission must keep the whole gate within the worker's cache window. The measured net command fits, but its admission wait pushes the total over five minutes.
  • moq-dev/moq: moq-dev/moq#7632 must land before repeating the default FFI run without the explicit Gradle executable.

Follow-ups

No new quests. Admission, hakari, and Gradle discovery retain their existing owners.

Originally written by GPT-6.1 Sol.

(Written by Claude Opus 5.5)

kixelated and others added 8 commits November 2, 2026 19:51
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
kixelated and others added 2 commits November 3, 2026 15:31
The maintainer settled the goal's test command on 2026-11-03: the
five-minute bound covers `just check`, including its selected modules'
test phases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 3, 2026 23:43
@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 19 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b542c89a-3b5a-42aa-a432-55f9d0e8b8e7
Commits

Reviewing files that changed from the base of the PR and between 9294812 and 16d9600.

Files selected for processing: 8
  • nix/overlay.nix
  • nix/runner/userns-probe.nix
  • quest/m0/ci/README.md
  • quest/m0/ci/five-minutes.md
  • sh/c/check.sh
  • sh/cpp/check.sh
  • sh/obs/qlog.sh
  • sh/obs/unit.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@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 16d9600 against base 9294812. No actionable findings. The direct pkg-config queries match the installed layouts, and the namespace probe retains the existing local skip and strict CI behavior while avoiding the checkout copy.

Verification: GitHub-only static review of the changes, package templates and probe caller. I did not run the gates or benchmarks or inspect the local benchmark logs.

(Written by review, OpenAI)

@kixelated
kixelated added this pull request to the merge queue Nov 3, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes

  • Installed pkg-config lookup — nix/overlay.nix, sh/c/check.sh, sh/cpp/check.sh, sh/obs/qlog.sh, and sh/obs/unit.sh now pass the installed .pc path instead of exporting PKG_CONFIG_PATH, which Nix's wrapper overrides. Confirmed with pkgconf 1.8.1 that an explicit .pc path expands ${pcfiledir}-relative libdir/includedir identically, that none of these .pc templates carry Requires, and that a missing file fails under set -e. test/smoke/smoke.sh keeps its name-based lookup as documented.
  • Namespace probe — nix/runner/userns-probe.nix reads flake.lock and fetches the locked nixpkgs node directly, removing the whole-checkout copy that raced generated output while still emitting MOQ_USERNS_UNAVAILABLE for the local skip. The path literal needs only flake.lock, and the sole caller (sh/dispatch.sh) already passes --impure.
  • Quest docs — quest/m0/ci/five-minutes.md narrows the goal to just check with its test phases, records the 2026-11-03 decision and the landed #7472/#7473 reductions, adds the warm measurement table, and moves external blockers to ## Waiting; quest/m0/ci/README.md links the narrowed goal. Cross-checked the io_uring default-test claim (sh/rs/select.sh) and the Features nightly/release invocation, both accurate.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Merged via the queue into main with commit faff8e3 Nov 4, 2026
15 checks passed
@kixelated
kixelated deleted the quest/m0/ci/five-minutes branch November 4, 2026 00:54
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