You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix: verify against the pinned artifact, not HEAD -- ModelRuntime does not exist in 0.80.7
CI caught this on the first container run and it is the most important mistake of the
project so far, because it is methodological rather than local.
Every upstream claim in this repo was verified by reading source at
earendil-works/pi@5e336cf. That is HEAD. The image pins npm 0.80.7. Those are different
artifacts and nothing here ever checked they agreed.
ModelRuntime is a value export at that sha and does not exist in 0.80.7 at all: no
model-runtime module in dist/, not exported from dist/index.js. pi's changelog files the
migration under [Unreleased] -- which was exactly correct -- and OQ-005 had "corrected"
the changelog for being out of date, concluding "the changelog is not a reliable signal".
The changelog was right. The methodology was wrong. The runner imported the phantom API,
the image built cleanly, and every job would have died on a missing export.
The real 0.80.7 wiring, read from the tarball:
AuthStorage.create(authPath) // sync
ModelRegistry.create(authStorage, modelsPath) // sync
modelRegistry.find(provider, modelId) // NOT getModel
modelRegistry.hasConfiguredAuth(model)
createAgentSession({ authStorage, modelRegistry, model, ... })
Everything else survives the pin, which is why the loader assertions passed: noContextFiles,
noSkills, noExtensions, additionalSkillPaths, additionalExtensionPaths,
appendSystemPromptOverride and SettingsManager.inMemory are all present at 0.80.7. The
instruction model was never affected -- only the model/auth wiring.
Fixes:
- run-job.mjs uses AuthStorage + ModelRegistry, and checks hasConfiguredAuth before the
container spends anything.
- constitution.md's evidence convention now says a sha is not a version. A sha citation
establishes where behaviour lives and nothing about whether the pinned release contains
it: necessary, not sufficient. Claims the code depends on must hold in the published
artifact -- npm pack it, or assert it in a test that imports what the lockfile resolves.
- interfaces.md separates "Evidence (pinned artifact -- authoritative)" from "Evidence
(HEAD -- explains behaviour, does NOT establish the pin contains it)".
- OQ-005 retracted and re-corrected, with the wrong entry kept struck through rather than
deleted: a spec that hides having been wrong teaches the next reader to trust it more
than it deserves.
- pinned-api.test.mjs asserts every symbol run-job.mjs imports exists in the resolved
package, and asserts ModelRuntime is ABSENT -- so the day the migration ships, a test
fails with a message instead of a container failing with a stack trace.
Also fixed: the CI in-image assertions all ran `docker run img <cmd>` while ENTRYPOINT is
the runner and ignores CMD, so they silently tested the runner instead of what they named.
Every one now overrides --entrypoint.
0 commit comments