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
ci(host-proofs): run the binary-gated real-host install proofs on every PR with pinned CLIs (#395)
* ci(host-proofs): run the binary-gated real-host install proofs on every PR with pinned CLIs
The host-install, packed host-install, and packed Claude plugin-validation
proofs skip their Claude/Codex legs when the CLIs are absent, which let #364
break both proofs on main unnoticed (#367/#368 repaired them from local runs).
- Pin @anthropic-ai/claude-code@2.1.250 and @openai/codex@0.147.0 as `hostCli`
in each adapter's schema PROVENANCE.json; scripts/host-cli-pins.mjs reads
the pins, refuses a pin that differs from observedCliVersion, installs them
(re-running Claude's postinstall when npm blocks it), and fails closed with
one diagnostic line when the CLI on PATH is not the pin.
- Add the host-install-proofs CI job (cached CLI prefix, version gate, build,
test:host-install, test:host-install:packed, test:packed:native) honoring
the docs-only skip. No secrets or login are needed.
- Harden the Codex interface proof: one shared pinned snapshot for both proof
suites, installed manifest must equal the built artifact, validate against
the pinned plugin schema, and reject fields outside the adapter's exported
codexInterfaceFields.
- Document the job and the local commands in docs/local-ci.md and README.
* docs(local-ci): list dev-live-host among the CI-run host proofs
* fix(ci): key host CLI cache on package names and resolve npm global bin via prefix
Address the automated review on #395: the actions/cache key now includes each
pinned hostCli.package as well as its version, so a re-pin to a different
package with the same version misses the cache instead of reusing stale
binaries; and the installer derives npm's global bin directory from
`npm prefix -g` (<prefix>/bin on POSIX, the prefix itself on Windows)
instead of walking up from `npm root -g`.
* fix(ci): hash exact host CLI pins into the cache key
Sanitising package names for the actions/cache key can map distinct
packages (`@foo/bar`, `foo-bar`) to the same text; append a 16-hex SHA-256
of the exact `package@version` pairs so any re-pin misses the cache.
* fix(ci): probe installed host CLIs from the prefix only and reject bare --prefix
The post-install probe now runs with PATH limited to the prefix bin
directory plus the running Node, so a pre-existing claude/codex elsewhere
on the inherited PATH cannot mask an incomplete prefix. `install --prefix`
without a directory operand is rejected instead of silently installing
into the default global npm prefix.
0 commit comments