Skip to content

ci: fix Cache and cut lanes that fail or repeat the merge queue - #8425

Merged
kixelated merged 4 commits into
mainfrom
quest/m0/ci/trim
Nov 11, 2026
Merged

kixelated merged 4 commits into
mainfrom
quest/m0/ci/trim

Conversation

@kixelated

@kixelated kixelated commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m0/ci/trim.md: every workflow now produces a signal someone reads, or is gone.

Changes

  • Cache: fixed, not deleted, and now alerts. Reproduced the failure locally: just -n infra nix roots ... expanded --inputs-from to <checkout>/../.., because in a Just module justfile_directory() is the root justfile's directory, not the module's. Every warm and runtime job since 2026-11-07 failed there with does not contain a 'flake.nix'. infra/nix/justfile now uses source_directory(), which resolves to the checkout whether run from the root or from infra/nix; with dummy keys the recipe now gets past the Nix build to rclone's upload (which fails only on the fake credentials). Kept rather than deleted because nothing else covers it: only cache.yml writes nix-ci-moq-dev (the dev shells the hosted jobs substitute, @moq/libav, and the moq-relay/moq closures Smoke's nix channel pins via just gh cache-rev); release-nix.yml writes only the tag bucket. Cache leaves alert.sh's CI-only set and joins alert.yml, so a push failure posts to Discord.
  • Delete cache-refresh.yml and its just gh cache-refresh recipe. Each Cache run already refreshes its own commit's closure, and main merges many times a day. infra/README.md and Smoke's comments say so.
  • Delete mutants.yml and its now-callerless tooling: just rs mutants, sh/rs/mutants.sh, sh/rs/mutants-cargo.sh, .cargo/mutants.toml, and cargo-mutants in the dev shell.
  • CodSpeed runs nightly (07:00 UTC, beside Nightly) plus manual dispatch, instead of on every Rust push to main. Its push-burst concurrency group is gone. It joins alert.yml's schedule-only list, as alert.test.ts requires for cron workflows.
  • Check runs only for PRs into release (branches: [release], always --all). main requires only the Queue context (checked the main ruleset), so nothing waited on it there.
  • Quest drops its main push trigger; the queue's just ci runs quest check.
  • Updated bench/README.md's CodSpeed text and the comments that described the deleted daily refresh (sh/gh/cache.sh, sh/gh/cache-runtime.sh, infra/nix/justfile). main has since deleted quest/m3/audit-ci.md and quest/m1/audit-merge.md (merged into the recurring audits), so the merge drops this branch's edits to them.

moq-dev/moq#8048 (Cachix retire) no longer edits cache.yml; its remaining wait is bucket sizes, which a working Cache helps.

Choices made without asking

  • Fixed cache.yml rather than deleting it (reasons above).
  • Deleted the mutants tooling with the workflow, since nothing else calls it.
  • Dropped check.yml's fetch-depth: 0: it existed for the dispatcher's base diff (as sh/gh/queue.test.ts said), and with --all the dispatcher skips sh/changed.sh and sh/large-files.sh diffs against the empty tree. sh/gh/queue.test.ts now asserts the release-only trigger and --all.

Caused by

  • moq-dev/moq#8173 - added the roots recipe with justfile_directory() / "../..", which points above the checkout from a module.

Checks

  • just gh check (actionlint, zizmor, alert coverage and tests, test inventory): passed.
  • quest check --base origin/main: passed.
  • just check: every selected module passed (obs_compile, biome, js, markdown, gh, bench, drill, workers, quest, obs, shell, large_files, text, rs, nix, justfile, flake, toml; test js, rs, gh). The full run outlasted the 2-hour task limit on a loaded host, so gh and toml were rerun on the final head; check c was not selected.

Iterate (2026-11-11)

  • Merged origin/main (no rebase): resolved the modify/delete conflicts on the three quest files by deleting them, as main did.
  • Fixed the Biome format error in sh/gh/queue.test.ts that dropped the PR from the merge queue.
  • Fixed pullfrog's stale daily-refresh comments. Its thread on quest/m3/audit-ci.md is moot: main deleted the file.
  • quest/m4/mutants.md (added on main by moq-dev/moq#8472) plans a new nightly cargo-mutants run on the route and resume code. This PR still deletes the old unused mutants lane; that m4 quest adds its own job and .cargo/mutants.toml.
  • quest gate just check on the merged head: passed (every module, including rs and flake). quest gate just ci did not run: the gate waited on host load until the 85-minute limit stopped it.

Follow-ups

None recommended.

Public API: none. Wire: none.

Models

Size: M
Implementer: Claude Code, Claude Opus 5.5, medium effort
Implementer: Claude Code, claude-opus-5-5, medium effort (iterate, S)

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, medium effort
  • Session: 01a1ca01-8eb3-7d91-ae0f-998380763794, round 1
  • Head: 5febd8c
  • Base: origin/main at 1c7b84c
  • Score: 9/10, The CI changes follow the recorded decisions and preserve release admission; no actionable defects were found, but builds and tests were not run, as instructed.
  • Findings: none

(Written by Claude Opus 5.5 with medium)

kixelated and others added 2 commits November 10, 2026 01:12
Quest-Claim: 45d313e6d3dd3d0d
Cache's roots recipe resolved the flake two directories above the checkout;
it now uses the module's own directory, and Cache alerts on failure.
Delete Cache refresh and Mutants (with their tooling), run CodSpeed nightly,
limit Check to release PRs, and drop Quest's main push trigger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title CI lanes that fail or repeat the queue are cut ci: fix Cache and cut lanes that fail or repeat the merge queue Nov 10, 2026
Check runs --all, so it no longer needs the PR base's history.

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

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor
Pre-merge checks: Inconclusive 2

Failed Failed checks: 2 inconclusive

Check name Status Explanation Resolution
Title check Pending This assessment has not completed. The check will be retried on the next pre-merge check run.
Description check Pending This assessment has not completed. The check will be retried on the next pre-merge check run.
  • 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 999903c, including the full patch, cache publication callers, alert routing and dispatcher scope.

No actionable findings identified. The module-local source_directory() fixes the roots recipe's checkout path without changing the caller's store paths. Cache failures now reach alerts, CodSpeed retains nightly/manual execution with schedule-only alerts, and release Check consistently selects and executes --all without requiring the dispatcher's base history. The removed lanes and tooling match the recorded trim decision.

Direction: retain the existing per-publication closure refresh and release admission coverage. Verification limits: GitHub-only static review; no builds, tests, workflow dispatches or cache writes were performed, and repository ruleset settings were not independently verified.

@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.

ℹ️ Minor suggestions only. The behavioral changes check out; two doc leftovers below.

Reviewed changes

  • Cache fixed, kept, and alerted: infra/nix/justfile's roots recipe now anchors --inputs-from at source_directory() (the module dir) instead of justfile_directory() (the root justfile's dir), so ../.. resolves to the checkout again; alert.yml watches Cache in place of Cache refresh, and alert.sh's CI_ONLY drops it.
  • cache-refresh.yml deleted with just gh cache-refresh; each Cache run's trailing just infra nix refresh keeps its own commit's closure fresh.
  • mutants.yml deleted with just rs mutants, sh/rs/mutants.sh, sh/rs/mutants-cargo.sh, .cargo/mutants.toml, and the dev-shell cargo-mutants.
  • CodSpeed moves to a nightly schedule (07:00 UTC) plus dispatch; the push trigger, rs/** path filter, and push-burst concurrency group are gone, and it joins alert.yml's schedule-only list.
  • Check becomes release admission only: branches: [release], --all for both the query and the run, CI_BASE and fetch-depth: 0 dropped, with queue.test.ts updated to match.
  • Quest drops its main push trigger; the queue's just ci covers main.
  • Docs and quest rows updated for the trimmed lanes (infra/README.md, smoke.yml, bench/README.md, quest/m3/audit-ci.md).

Verified separately that main's ruleset requires only the Queue context while release requires Check + Release gate, so the release-only trigger keeps admission intact; and that --all makes the release gate history-free for sh/large-files.sh and the dispatcher.

ℹ️ Three comments still describe the deleted daily refresh

With cache-refresh.yml and just gh cache-refresh gone, the cache-age invariant is still explained in terms of a daily refresh that no longer runs. The two Cache scripts say the trailing refresh exists so paths are not "left to the next daily refresh", and the refresh recipe's own comment claims the closure stays fresh "even when nothing new is pushed" — no longer true now that only a Cache push refreshes its own commit.

Technical details
# Stale daily-refresh comments

## Affected sites
- `sh/gh/cache.sh:26-27` — "restart their age now rather than leave them to the next daily refresh."
- `sh/gh/cache-runtime.sh:20-21` — same sentence.
- `infra/nix/justfile:58-59` — "Refreshed when published and then daily, the newest cached commit's closure stays well inside the 30-day expiry, even when nothing new is pushed."

## Required outcome
- Each site should describe the current invariant: a Cache push refreshes its own commit, which keeps Smoke's pinned commit fresh only while `main` keeps merging. `infra/README.md:287-289` and the `smoke.yml:210-211` comment already phrase it that way.

## Suggested approach (optional)
- Drop the "daily" clause from the two scripts; in `infra/nix/justfile`, say the newest commit stays fresh as long as `main` merges within the expiry window.

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

Comment thread quest/m3/audit-ci.md Resolved
@kixelated
kixelated added this pull request to the merge queue Nov 10, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 10, 2026
@moq-bot

moq-bot Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

quest land watch: the merge queue removed this pull request at 999903c because its merge_group build failed (failed_checks).

The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs.

Queue / Queue (job) failure at step Check:

…N: 1.29.2
##[endgroup]
##[end-action id=__self_2.__run_3;outcome=success;conclusion=success;duration_ms=109]
##[start-action display=Sweep the cache before building;id=__self_2.__run_4]
##[group]Run config="$HOME/.config/mbx/config.toml"
�[36;1mconfig="$HOME/.config/mbx/config.toml"�[0m
�[36;1mmkdir -p "${config%/*}"�[0m
�[36;1mprintf '[gc]\nauto = false\n' > "$config"�[0m
�[36;1mmbx gc�[0m
shell: /nix/store/1mv3qz005gkbalxfghk4y3s8ayv4d2dl-bash-interactive-5.3p15/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BASE: d7699f81ae9fb7dde8a463ee49072a7974d47317
  CHECK_FAIL_FAST: 1
  NEXTEST_TEST_THREADS: 24
  MBX_CACHE_LINKS: 1
  MBX_REMOTE_URL: 
##[endgroup]
evicted 0 objects and 0 action results (0 B logical); 49.9 GiB logical remain
##[end-action id=__self_2.__run_4;outcome=success;conclusion=success;duration_ms=945]
##[start-action display=Check the cache;id=__self_2.__run_5]
##[end-action id=__self_2.__run_5;outcome=skipped;conclusion=skipped;duration_ms=0]
##[start-action display=Cargo shim;id=__self_2.__run_6]
##[group]Run mbx setup --yes
�[36;1mmbx setup --yes�[0m
�[36;1mshim=$(mbx setup --status 2>/dev/null | sed -n '1s/.*: //p' || true)�[0m
�[36;1mif [ ! -e "$shim" ]; then�[0m
�[36;1m  echo "::error::mbx setup installed no Cargo shim: $(mbx setup --status 2>&1)"�[0m
�[36;1m  exit 1�[0m
�[36;1mfi�[0m
�[36;1mecho "${shim%[/\\]*}" >> "$GITHUB_PATH"�[0m
shell: /nix/store/1mv3qz005gkbalxfghk4y3s8ayv4d2dl-bash-interactive-5.3p15/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BASE: d7699f81ae9fb7dde8a463ee49072a7974d47317
  CHECK_FAIL_FAST: 1
  NEXTEST_TEST_THREADS: 24
  MBX_CACHE_LINKS: 1
  MBX_REMOTE_URL: 
##[endgroup]
refreshed the Cargo shim at /var/cache/github-runner-home/.local/share/mbx/bin/cargo
##[end-action id=__self_2.__run_6;outcome=success;conclusion=success;duration_ms=932]
##[group]Run rm -rf target/cargo-timings
�[36;1mrm -rf target/cargo-timings�[0m
�[36;1mnix develop --command just ci "$BASE"�[0m
shell: /nix/store/1mv3qz005gkbalxfghk4y3s8ayv4d2dl-bash-interactive-5.3p15/bin/bash -e {0}
env:
  BASE: d7699f81ae9fb7dde8a463ee49072a7974d47317
  CHECK_FAIL_FAST: 1
  NEXTEST_TEST_THREADS: 24
  MBX_CACHE_LINKS: 1
  MBX_REMOTE_URL: 
##[endgroup]
warning: ignoring untrusted flake configuration setting 'extra-substituters'.
Pass '--accept-flake-config' to trust it
warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'.
Pass '--accept-flake-config' to trust it
warning: ignoring untrusted flake configuration setting 'fallback'.
Pass '--accept-flake-config' to trust it
building '/nix/store/5ixdjhzv99ci986z32d5d81qbza80kjr-nix-shell-env.drv'...
CI_STRICT=1 NEXTEST_PROFILE=ci sh/dispatch.sh ci "$BASE"
changed: base d7699f81ae9fb7dde8a463ee49072a7974d47317
ci: check rs started
ci: check obs_compile started
ci: check biome started
ci: check biome failed in 15s
##[group]check biome
uv run --no-project python sh/js/install.py frozen
[0.04ms] ".env"
bun install v1.4.2 (744846f84)
Resolving dependencies
Resolved, downloaded and extracted [1]

$ bun run --cwd js/libav build
$ bun build.ts
warning: ignoring untrusted flake configuration setting 'extra-substituters'.
Pass '--accept-flake-config' to trust it
warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'.
Pass '--accept-flake-config' to trust it
warning: ignoring untrusted flake configuration setting 'fallback'.
Pass '--accept-flake-config' to trust it

+ @babel/parser@8.0.10
+ @biomejs/biome@2.6.4
+ concurrently@10.0.6
+ markdown-extensions@2.0.0
+ publint@0.3.25
+ remark-cli@12.0.1
+ remark-frontmatter@5.0.0
+ remark-lint-list-item-indent@4.0.1
+ remark-lint-maximum-line-length@4.1.1
+ remark-lint-no-duplicate-headings@4.0.1
+ remark-lint-no-undefined-references@5.0.2
+ remark-preset-lint-consistent@6.0.1
+ remark-preset-lint-recommended@7.0.1
+ remark-stringify@11.0.0

636 packages installed [8.62s]
bun biome check --error-on-warnings  .
js/watch/src/audio/ring-buffer.test.ts:1048:19 lint/complexity/useIndexOf  FIXABLE  ━━━━━━━━━━━━━━━━

  i Prefer Array#indexOf() over Array#findIndex() when looking for the index of an item.
  
    1046 │ 		const [output] = read(buffer, frames(100), 1);
    1047 │ 		expect(output.length).toBe(frames(100));
  > 1048 │ 		const silence = output.findIndex((sample) => sample === 0);
         │ 		                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1049 │ 		expect(silence).toBe(staged);
    1050 │ 		expect(output.slice(silence).every((sample) => sample === 0 || sample === 0.5)).toBe(true);
  
  i This callback only tests for equality against a single value. This value can be passed directly to indexOf() instead.
  
  i Unsafe fix: Replace Array#findIndex() with Array#indexOf()
  
    1046 1046 │       const [output] = read(buffer, frames(100), 1);
    1047 1047 │       expect(output.length).toBe(frames(100));
    1048      │ - → → const·silence·=·output.findIndex((sample)·=>·sample·===·0);
         1048 │ + → → const·silence·=·output.indexOf(0);
    1049 1049 │       expect(silence).toBe(staged);
    1050 1050 │       expect(output.slice(silence).every((sample) => sample === 0 || sample === 0.5)).toBe(true);
  

sh/gh/queue.test.ts format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Formatter would have printed the following content:
  
     59  59 │   for (const step of checkRuns) assert.match(step.run, /just ci(-select)? --all\b/, `${step.name} must run --all`);
     60  60 │   // Check runs the whole gate in one job.
     61     │ - for·(const·step·of·check.jobs.check.steps)·assert.equal(step.env?.CHECK_MODULES,·undefined,·`${step.name}·sets·CHECK_MODULES`);
         61 │ + for·(const·step·of·check.jobs.check.steps)
         62 │ + → assert.equal(step.env?.CHECK_MODULES,·undefined,·`${step.name}·sets·CHECK_MODULES`);
     62  63 │   // biome-ignore lint/suspicious/noTemplateCurlyInString: GitHub expression is literal YAML.
     63  64 │   assert.equal(check.concurrency.group, "check-${{ github.event.pull_request.number }}");
  

Checked 2238 files in 4s. No fixes applied.
Found 1 error.
Found 1 info.
check ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Some errors were emitted while running checks.
  

error: "biome" exited with code 1
error: recipe `biome` failed on line 143 with exit code 1
##[endgroup]
ci: check rs cancelled in 15s
ci: check obs_compile cancelled in 15s
##[group]check rs
sh/rs/select.sh lint "$LIST"
rs: selecting the workspace
python3 sh/rs/stats-docs.py
# The environment is process-wide, so nothing writes it. A text check, because the
# clock lint's test allowances also silence clippy's disallowed_methods.
git grep --untracked -nE '(^|[^[:alnum:]_])(set_var|remove_var)[[:space:]]*\(' -- 'rs/*.rs'; [ $? -eq 1 ] || { echo "error: a write to the process environment: pass the value down, or run a test in a child with test_env::Env" >&2; exit 1; }
cargo fmt --all --check
RUSTDOCFLAGS="-D warnings" bash sh/local.sh cargo doc --locked --no-deps "$@"
error: recipe `lint-changed` was terminated on line 80 by signal 15
##[endgroup]
##[group]check obs_compile
-- The CXX compiler identification is GNU 16.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/r5ri78axx1qggkjq3vawywlzglg70b5w-gcc-wrapper-16.2.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Configuring done (11.1s)
-- Generating done (0.0s)
-- Build files have been written to: /var/cache/github-runner-work/moq/moq/cpp/moq/build/package
[ 50%] Building moq-ffi
    Blocking waiting for file lock on package cache
error: recipe `compile` was terminated on line 37 by signal 15
make[2]: *** [CMakeFiles/moq_ffi_cargo.dir/build.make:71: CMakeFiles/moq_ffi_cargo] Terminated
make[1]: *** [CMakeFiles/Makefile2:89: CMakeFiles/moq_ffi_cargo.dir/all] Terminated
make: *** [Makefile:136: all] Terminated
##[endgroup]
##[error]ci: check biome failed
ci: wall and CPU seconds per module
    15       0  check rs (cancelled)
    15       0  check obs_compile (cancelled)
    15      33  check biome (failed)
    16      33  whole run
error: recipe `ci` failed on line 119 with exit code 1
##[error]Process completed with exit code 1.
##[group]Run actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9
with:
  name: cargo-timings
  path: target/cargo-timings/cargo-timing-*.html
  if-no-files-found: ignore
  retention-days: 14
  compression-level: 6
  overwrite: false
  include-hidden-files: false
  archive: true
env:
  BASE: d7699f81ae9fb7dde8a463ee49072a7974d47317
  CHECK_FAIL_FAST: 1
  NEXTEST_TEST_THREADS: 24
  MBX_CACHE_LINKS: 1
  MBX_REMOTE_URL: 
##[endgroup]
With the provided path, there will be 1 file uploaded
Artifact name is valid!
Root directory input is valid!
Uploading artifact: cargo-timings.zip
Beginning upload of artifact content to blob storage
Uploaded bytes 114184
Finished uploading artifact content to blob storage!
SHA256 digest of uploaded artifact is 55474b856a8910f2b6c0bc73fc6f3ac0b62165ba5661e890beaa0ae089ee7ea4
Finalizing artifact upload
Artifact cargo-timings successfully finalized. Artifact ID 13814511628
Artifact cargo-timings has been successfully uploaded! Final size is 114184 bytes. Artifact ID is 13814511628
Artifact download URL: https://github.com/moq-dev/moq/actions/runs/42926345203/artifacts/13814511628
Post job cleanup.
##[start-action display=Run jdx/mr-boxington-action@88acf2bb50552c7c508cbac13e5f8c576b95b1de;id=__eb4ba899-6d69-42ed-b4ae-95dbe62fd00d.mbx]
##[end-action id=__eb4ba899-6d69-42ed-b4ae-95dbe62fd00d.mbx;outcome=skipped;conclusion=skipped;duration_ms=0]
Post job cleanup.
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git version
git version 2.55.0
Temporarily overriding HOME='/var/cache/github-runner-work/_temp/0fa991b5-ee71-4fdb-badb-f31e98b91efd' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --global --add safe.directory /var/cache/github-runner-work/moq/moq
Removing SSH command configuration
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
Removing HTTP extra header
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
[command]/nix/store/lg46w7hrjx7kylsh6645c9l975i8h43b-git-2.55.0/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
A job completed hook has been configured by the self-hosted runner administrator
##[group]Run '/nix/store/gx2v6q84b0w43bafm0whkdx93qyxbpps-ci-cache-gc.sh/bin/ci-cache-gc.sh'
shell: /nix/store/1mv3qz005gkbalxfghk4y3s8ayv4d2dl-bash-interactive-5.3p15/bin/bash --noprofile --norc -e -o pipefail {0}
##[endgroup]
evicted 0 objects and 0 action results (2.0 MiB logical); 49.9 GiB logical remain
dropped 2 session event streams
Cleaning up orphan processes

(written by quest land watch)

@moq-bot

moq-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

codex, gpt-6.1-sol, medium effort land fixer note:

The queue log identifies the PR's formatting failure:

Line 384: sh/gh/queue.test.ts format
Line 386: Formatter would have printed the following content:
Lines 390–392: the one-line loop must wrap before assert.equal.
Line 398: Found 1 error.

Merged base cleanly and committed only that line wrap in d91ffdb33654f6fb71d311a2f146ecb3e4bac5d6 on pr-8425. No manual protected-path edits were needed. Biome passed during nix develop --command just ci base. Full validation could not finish: CHECK_MODULES=flake nix develop --command just ci base failed with "ci: flake's NixOS VM tests need KVM, but /dev/kvm is missing; run them on a KVM host, as CI does". Stopped the remaining broad gate after confirming this infrastructure blocker. The local fix needs validation on a KVM-capable runner.

(written by codex, gpt-6.1-sol, medium effort)

@moq-bot

moq-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

codex, gpt-6.1-sol, medium effort land fixer: Formatting fi·xed locally, but CHECK_MODULES=flake nix develop --command just ci base failed: "ci: flake's NixOS VM tests need KVM, but /dev/kvm is missing; run them on a KVM host, as CI does".. Recommendation: Use local pr-8425 tip d91ffdb33654f6fb71d311a2f146ecb3e4bac5d6 and rerun nix develop --command just ci base on a KVM-capable runner.

sh/gh/queue.test.ts format ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Formatter would have printed the following content:
  
     59  59 │   for (const step of checkRuns) assert.match(step.run, /just ci(-select)? --all\b/, `${step.name} must run --all`);
     60  60 │   // Check runs the whole gate in one job.
     61     │ - for·(const·step·of·check.jobs.check.steps)·assert.equal(step.env?.CHECK_MODULES,·undefined,·`${step.name}·sets·CHECK_MODULES`);
         61 │ + for·(const·step·of·check.jobs.check.steps)
         62 │ + → assert.equal(step.env?.CHECK_MODULES,·undefined,·`${step.name}·sets·CHECK_MODULES`);
     62  63 │   // biome-ignore lint/suspicious/noTemplateCurlyInString: GitHub expression is literal YAML.
     63  64 │   assert.equal(check.concurrency.group, "check-${{ github.event.pull_request.number }}");
  

Checked 2238 files in 4s. No fixes applied.
Found 1 error.

(written by codex, gpt-6.1-sol, medium effort)

…omments

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

@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

Changes since the prior Pullfrog review (999903c); the rest of the PR's scope was covered by earlier reviews.

  • Corrected the stale "next daily refresh" comments in sh/gh/cache.sh, sh/gh/cache-runtime.sh, and infra/nix/justfile to describe the current invariant: each Cache run refreshes its own commit.
  • Reformatted sh/gh/queue.test.ts to satisfy Biome, restoring the merge-queue admission the format error had blocked.
  • Merged main, resolving the modify/delete conflicts by dropping the edits to quest/m3/audit-ci.md and quest/m1/audit-merge.md; the resulting diff still carries every intended workflow change.
  • Verified the delta: bun test sh/gh/queue.test.ts sh/gh/alert.test.ts passes (9 tests), bunx biome check sh/gh/queue.test.ts is clean, and sh/gh/alert.sh check-coverage finds all 34 alertable workflows watched.

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

@kixelated
kixelated added this pull request to the merge queue Nov 11, 2026
Merged via the queue into main with commit 4a93d81 Nov 11, 2026
8 checks passed
@kixelated
kixelated deleted the quest/m0/ci/trim branch November 11, 2026 12:46
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