Skip to content

test(install): expect the Codex interface.logo field in the packed host-install proof - #367

Merged
ScriptedAlchemy merged 1 commit into
mainfrom
fix/closed-audit-g2
Sep 3, 2026
Merged

test(install): expect the Codex interface.logo field in the packed host-install proof#367
ScriptedAlchemy merged 1 commit into
mainfrom
fix/closed-audit-g2

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

Found during the closed-issue re-verification of #181 / #242 (lane G2).

Evidence

  • Pre-fix on origin/main (af1c18551): host-install-proof.test.ts :: installs through Codex and observes enabled registration failed with + "logo" in the received interfaceFields; the packed variant asserts the identical key list.
  • Post-fix, rebased on 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.ts 3/3 with real Claude and Codex binaries
  • host-install-proof.test.ts 9/9 with real Claude and Codex binaries
  • pnpm build, pnpm typecheck, pnpm lint

@changeset-bot

changeset-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 961a286

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-03T05:12:02.270029Z 9935c8f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@pkg-pr-new

pkg-pr-new Bot commented Sep 3, 2026

Copy link
Copy Markdown
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle@367
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle/create-agent-bundle@367
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle/@agent-bundle/runtime@367

commit: 961a286

…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.
@ScriptedAlchemy ScriptedAlchemy changed the title test(install): expect the Codex interface.logo field in the host-install proofs test(install): expect the Codex interface.logo field in the packed host-install proof Sep 3, 2026
@ScriptedAlchemy
ScriptedAlchemy merged commit 307f404 into main Sep 3, 2026
9 checks passed
ScriptedAlchemy added a commit that referenced this pull request Sep 3, 2026
…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.
ScriptedAlchemy added a commit that referenced this pull request Sep 3, 2026
…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.
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