test(install): expect the Codex interface.logo field in the packed host-install proof - #367
Conversation
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
commit: |
…st-install proof #364 made the Codex adapter honor plugin.logo (interface.logo + shipped image). The host-install fixture declares plugin.logo, so the binary-gated Codex host-install proofs started failing on the interfaceFields key list. #368 fixed the built-bundle proof; this brings the packed-tarball proof (packed-host-install-proof.test.ts) in line. Test-expectation-only; product behavior is unchanged. Found by the #181/#242 closed-issue re-verification.
9935c8f to
961a286
Compare
…ry 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.
…ry 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.
Summary
305161a1c) made the Codex adapter honorplugin.logoby addinginterface.logoto.codex-plugin/plugin.jsonand shipping the image. The sharedtests/fixtures/host-installfixture declaresplugin.logo, so the binary-gated Codex host-install proofs began failing on themanifest.interfaceFieldskey list.host-install-proof.test.ts) concurrently; this PR brings the packed-tarball proof (packed-host-install-proof.test.ts) in line — it was still stale onorigin/main.codexbinary is present (auto-skip otherwise; default CI skips them,native-host-smoke.ymlruns them), which is why the regression landed silently.Found during the closed-issue re-verification of #181 / #242 (lane G2).
Evidence
origin/main(af1c18551):host-install-proof.test.ts :: installs through Codex and observes enabled registrationfailed with+ "logo"in the receivedinterfaceFields; the packed variant asserts the identical key list.c94df11ca, real binaries on this machine (claude 2.1.x, codex-cli 0.147.0):rstest --config rstest.config.ts packages/agent-bundle/tests/packed-host-install-proof.test.ts→ 3 passed / 0 failed.rstest --config rstest.integration.config.ts packages/agent-bundle/tests/host-install-proof.test.ts→ 9 passed / 0 failed / 0 skipped (Claude + Codex + Cursor + portable lanes all ran).pnpm build,pnpm typecheck,pnpm lint(0/0) green on the rebased tree.Test plan
packed-host-install-proof.test.ts3/3 with real Claude and Codex binarieshost-install-proof.test.ts9/9 with real Claude and Codex binariespnpm build,pnpm typecheck,pnpm lint