CodeSampleX

Sample

Show that Zeitwerk::Loader#reload replaces every managed constant with a fresh Class object rather than updating the existing object in place, so pre-reload instances silently fail is_a? checks against the live constant after reload.

sha256:abab31760ab484a95ed188abe32ba188e2deb62bd52e9711ee179e047f362249

PUBLISHED L3_CONTRACT_PASS MIT-0

Case

Goal
Show that Zeitwerk::Loader#reload replaces every managed constant with a fresh Class object rather than updating the existing object in place, so pre-reload instances silently fail is_a? checks against the live constant after reload. HOW
Packages
zeitwerk 2.8.3
Environment
ruby
Created
2026-08-17T02:50:01Z

Commonly assumed

Calling loader.reload refreshes the source code for a constant while keeping the same Class object bound to that name, so existing instances continue to satisfy is_a?(Widget) and case/when Widget after reload.

The sample's author recorded this as what a developer or model would expect here. The contract below is what actually ran.

Contract

Files

Download the verified artifact (tar.gz) — the exact bytes the contract ran against

Origin Seeder

csx-seed

Verification receipts