Skip to content

Reuse cached scores on nodes with another st_dev - #35

Merged
DimaMolod merged 3 commits into
mainfrom
fix/cache-ignore-device-number
Nov 2, 2026
Merged

DimaMolod merged 3 commits into
mainfrom
fix/cache-ignore-device-number

Conversation

@DimaMolod

@DimaMolod DimaMolod commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Stat-mode cache validation included st_dev in each file fingerprint. On a shared filesystem the same file can have a different st_dev on each node (BeeGFS on the EMBL cluster: 65 on one node, 59 on another). So alphajudge --recursive on one node recomputed every table certified on another, and redrew every PAE plot, although size, mtime, ctime and inode matched.

Seen in a 1,900-fold AlphaPulldown run:

  • 890 of 1,913 manifests differed only in st_dev;
  • the summary report spent days rescoring valid tables;
  • once the tables were re-certified, it still redrew ~10,000 plots.

Change

  • file_fingerprint() no longer records device. It covers both inputs and PAE plots. Size, mtime_ns, ctime_ns and inode remain, so edits and replaced files are still detected.
  • Regression test: score a run with plots, report another st_dev for every file, and check that neither the table nor any plot is redone. It fails on main.
  • CHANGELOG entry under Unreleased.

Manifests written by 1.4.4 are recomputed once after upgrading, as after any software change.

Tests: full suite 183 passed, 6 skipped. After the plot test was added, test_run_integrity.py passes in full (59).

🤖 Generated with Claude Code

DimaMolod and others added 3 commits October 20, 2026 10:17
file_fingerprint() put the input files' device number into the stat-mode
cache identity. A shared filesystem (BeeGFS on the EMBL cluster) reports a
different st_dev for the same file on each node, so a recursive run on one
node treated every interfaces.csv certified on another as stale and
recomputed it, although size, mtime, ctime and inode were identical. In a
1,900-fold AlphaPulldown campaign, 890 of 1,913 manifests differed only in
st_dev (65 vs 59), and the summary report spent days rescoring valid tables.

Size, mtime_ns, ctime_ns and inode stay in the fingerprint, so edits and
replaced files are still detected (the replaced-inputs test is unchanged).
Manifests written by 1.4.4 are recomputed once, as after any software
change, because the software identity hashes the package source.

The new regression test scores a run, then reports another st_dev for
every file and checks that the table is reused; it fails on main.
Full suite: 183 passed, 6 skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PAE plot fingerprints use the same file_fingerprint(), so a recursive run
on another node also redrew every plot it found: the AlphaPulldown
campaign's summary report redrew ~10,000 plots before the device number was
dropped. The regression test now draws plots on the first run and fails if
the second run, with another st_dev, reloads a model to redraw one; it
fails on main. The CHANGELOG entry mentions plots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DimaMolod
DimaMolod marked this pull request as ready for review November 2, 2026 08:31
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-02T08:32:50.016554Z 0aa4b2a Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@DimaMolod
DimaMolod merged commit ec2a097 into main Nov 2, 2026
12 checks passed
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