Skip to content

ci(verify): Windows real capture records its cache manifest, and a cached build without one is rebuilt - #2693

Merged
richiemcilroy merged 1 commit into
mainfrom
fix/verify-cache-changed-files-mtime
Oct 18, 2026
Merged

richiemcilroy merged 1 commit into
mainfrom
fix/verify-cache-changed-files-mtime

Conversation

@richiemcilroy

@richiemcilroy richiemcilroy commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

Problem

#2691's Windows real-capture job failed to compile: unresolved import cap_enc_ffmpeg::remux::get_video_capture_fps (run 39084495635). Its checkout had that function, merged in #2689. Cargo never rebuilt cap-enc-ffmpeg and linked a cached build from before it.

The cause is the Windows real-capture job I added in #2667. It saves the shared verify-build-v3-x86_64-pc-windows-msvc-github-hosted cache without running mtime.py record, so the cache has no source manifest. The next restore finds a cached target/ci-verify and no manifest, and takes the cold-build path. That path gives every source file the fixed 2000-01-01 time, so cargo treats every cached crate as fresh, including ones whose sources changed. The log shows it: no manifest at target/ci-verify/verify-src-manifest.txt: cold build, normalising every file / 4852 files unchanged since the cached build, 0 changed or new.

Fix

  • verify-recording.yml: the Windows real-capture job records the manifest before saving, as Engine verify does. It also saves only outside pull requests. The job had been saving a 1.1 GB cache for every PR, nine of them since 2026-10-17.
  • mtime.py apply: a cached build with no manifest is not trusted. Every file gets the current time, so every crate rebuilds. A real cold build (no cached target) still gets the fixed time.

I deleted the nine manifest-less PR and branch caches (about 10 GB).

Checked

mtime.py run in a scratch repo:

  • no cached target: both files get the fixed time;
  • a cached target without a manifest: rebuilding every crate, and both files get the current time;
  • with a manifest after changing one file: the unchanged file gets the fixed time and the changed one keeps the current time.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge.

Summary

The Windows real-capture job now records source contents before saving its build cache and stops saving caches from pull requests.

  • Verification caches now record their sources and rebuild when that record is missing.

Reviews (2) · Last reviewed commit: "ci(verify): Windows real capture records..." · Reviewed by Greptile

@vercel

vercel Bot commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cap-status Ready Ready Preview Oct 18, 2026 1:01am UTC

@richiemcilroy

Copy link
Copy Markdown
Member Author

@greptileai review

@richiemcilroy
richiemcilroy marked this pull request as ready for review October 18, 2026 01:39
@richiemcilroy
richiemcilroy merged commit e9efbee into main Oct 18, 2026
47 of 48 checks passed

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

Capy found no issues.

Open in Capy

This branch was successfully deployed

2 active deployments
Preview – cap-web — 57f84119 Deployed Oct 18, 2026 by vercel[bot]
Preview – cap-status — 57f84119 Deployed Oct 18, 2026 by vercel[bot]
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