Skip to content

Never claim loaded-matches-disk (0.8.6) - #57

Merged
sotashimozono merged 1 commit into
mainfrom
no-match-claim
Sep 22, 2026
Merged

sotashimozono merged 1 commit into
mainfrom
no-match-claim

Conversation

@sotashimozono

Copy link
Copy Markdown
Member

Stop-gap for an overclaim in observation bindings, in place of the larger redesign in #56 (now draft).

What was wrong. binding_of returned loaded-matches-disk when every package loaded from the source roots matched the snapshot. That does not show the code that ran was theirs:

  • A report recipe defined in a script got loaded-matches-disk in an end-to-end run on archeion-demo. The "included into Main" check reads Base._included_files, which records no run-time include (checked for julia script.jl, include and the REPL).
  • Review of observe_sources: unverified unless the named entry code is checked (observation v2, 0.8.6) #56 reproduced another hole: a method added to Base from Main changes what a package function computes, and leaves no trace in any cache header.

Showing a match from inside the process means listing every way foreign code can get in, and that list does not close.

Change.

  • binding_of never returns loaded-matches-disk. Where it did, it now returns unverified with the reason NO_MATCH_CLAIMED.
  • loaded-differs-from-disk stays, because it is a fact (the loaded package's bytes are not on disk), not a claim that nothing else ran.
  • The per-root loaded status is still recorded as information.
  • The observation format and token prefix are unchanged (obs1-), so SweepRunner's and Pinax's tests keep passing. A reader treats a loaded-matches-disk from an earlier version as unverified. Archeion#48 warns on it.

Tests: test_observe.jl checks that a fully matching package gives unverified, and that binding_of on an all-match status returns the reason. I ran the touched files locally (test_observe, test_load_recorded: 46 checks pass). The full suite runs in CI.

What replaces the claim, recording facts plus verifying by re-execution, is being designed separately.

🤖 Generated with Claude Code

An end-to-end run on archeion-demo showed the claim overreaches: a report recipe defined in a
script got loaded-matches-disk, because Base._included_files records no run-time include, and
review found more holes (a method added to Base from Main changes what a package runs with no
trace in any cache header). Showing that the code which ran was the snapshot's cannot be done
from inside the process, so binding_of now returns unverified where it returned a match, with
the reason. loaded-differs-from-disk stays: it is a fact, not a claim of absence. The per-root
loaded status is still recorded.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

📚 Docs preview: https://qatlashub.github.io/DataVault.jl/previews/PR57/

(updates on each push to this PR)

@codecov

codecov Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sotashimozono
sotashimozono merged commit 44d655b into main Sep 22, 2026
18 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