Skip to content

[codex-app-server-test-client] Plugin Install/Uninstall Analytics Smoke Test#27100

Merged
jameswt-oai merged 2 commits into
mainfrom
jameswt/plugin-analytics-mutation-smoke
Jun 16, 2026
Merged

[codex-app-server-test-client] Plugin Install/Uninstall Analytics Smoke Test#27100
jameswt-oai merged 2 commits into
mainfrom
jameswt/plugin-analytics-mutation-smoke

Conversation

@jameswt-oai

@jameswt-oai jameswt-oai commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

This PR

The original combined remote plugin analytics PR #26281 mixed reusable analytics test infrastructure, two manual smoke workflows, a metadata refactor, and the final identity behavior. This PR adds the account-mutating validation workflow separately so its cleanup and recovery guarantees can be reviewed without the final analytics behavior change.

  • Add a manually invoked remote plugin install/uninstall smoke workflow.
  • Require explicit account-mutation confirmation and an initially uninstalled plugin.
  • Validate the current codex_plugin_installed contract, where plugin_id is the backend ID.
  • Restore and verify the original uninstalled state, with a dedicated recovery command.

This baseline intentionally does not require codex_plugin_uninstalled, because production does not emit that event yet. The final PR will update this smoke to require local plugin_id, remote_plugin_id, and uninstall emission. Review this PR as the net diff against #27099.

Testing

  • just test -p codex-app-server-test-client (3 focused capture/validation tests passed)
  • The live workflow was previously exercised on the green combined reference branch, and the original uninstalled account state was restored.
  • CI is green across the required platform matrix.

Split Overview

main
├── #27093  Debug analytics capture
│   └── #27099  Non-mutating plugin smoke
│       └── #27100  Remote install/uninstall smoke  ← you are here
└── #27102  Plugin telemetry metadata refactor

After #27093, #27099, #27100, and #27102 merge:
└── Final PR: add remote_plugin_id to plugin analytics

Review order and dependencies:

  1. #27093 Add debug-only analytics event capture (based on main)
  2. #27099 Add a plugin analytics smoke workflow (stacked on [codex-analytics] Analytics Capture to File in Debug Builds #27093)
  3. #27100 Add a remote plugin analytics mutation smoke workflow (this PR, stacked on [codex-app-server-test-client & codex-app-server] Plugin Usage Analytics Smoke Test #27099)
  4. #27102 Centralize plugin telemetry metadata construction (independent, based on main)
  5. Final remote-ID behavior PR (created after PRs 1-4 merge)

The original #26281 remains open as the green aggregate reference until the final PR is published.

@jameswt-oai jameswt-oai force-pushed the jameswt/plugin-analytics-smoke branch from 651d3e2 to 0548d96 Compare June 11, 2026 20:43
@jameswt-oai jameswt-oai force-pushed the jameswt/plugin-analytics-mutation-smoke branch from fbceb60 to 37ad371 Compare June 11, 2026 20:45
@jameswt-oai jameswt-oai changed the title Add a remote plugin analytics mutation smoke workflow [codex-app-server-test-client] Add a remote plugin analytics mutation smoke workflow Jun 11, 2026
@jameswt-oai jameswt-oai changed the title [codex-app-server-test-client] Add a remote plugin analytics mutation smoke workflow [codex-app-server-test-client] Plugin Install/Uninstall Analytics Smoke Test Jun 11, 2026
jameswt-oai added a commit that referenced this pull request Jun 15, 2026
## This PR

The original [combined remote plugin analytics PR
#26281](#26281) mixed reusable
analytics test infrastructure, two manual smoke workflows, a metadata
refactor, and the final identity behavior. This PR isolates the generic
capture mechanism so it can be reviewed and landed before any
plugin-specific behavior.

- Add a debug-only analytics destination that writes final request
payloads as JSONL.
- Suppress HTTP delivery whenever capture mode is selected, including
after capture write failures.
- Keep release behavior unchanged even when the capture environment
variable is present.
- Keep the mechanism generic; this PR contains no plugin-specific
behavior.

Set `CODEX_ANALYTICS_EVENTS_CAPTURE_FILE=/path/events.jsonl` when
running a debug Codex binary to inspect the exact batched payload that
would otherwise be sent to the analytics endpoint.

## Testing

- `just test -p codex-analytics` (76 passed)
- `just test --release -p codex-analytics` (73 passed)
- CI is green across the required platform matrix.

## Split Overview

```text
main
├── #27093  Debug analytics capture                 ← you are here
│   └── #27099  Non-mutating plugin smoke
│       └── #27100  Remote install/uninstall smoke
└── #27102  Plugin telemetry metadata refactor

After #27093, #27099, #27100, and #27102 merge:
└── Final PR: add remote_plugin_id to plugin analytics
```

Review order and dependencies:

1. [#27093 Add debug-only analytics event
capture](#27093) **(this PR, based
on `main`)**
2. [#27099 Add a plugin analytics smoke
workflow](#27099) (stacked on
#27093)
3. [#27100 Add a remote plugin analytics mutation smoke
workflow](#27100) (stacked on
#27099)
4. [#27102 Centralize plugin telemetry metadata
construction](#27102) (independent,
based on `main`)
5. Final remote-ID behavior PR (created after PRs 1-4 merge)

The original [#26281](#26281)
remains open as the green aggregate reference until the final PR is
published.
@jameswt-oai jameswt-oai force-pushed the jameswt/plugin-analytics-smoke branch 3 times, most recently from d9262db to 7a8f917 Compare June 16, 2026 16:35
jameswt-oai added a commit that referenced this pull request Jun 16, 2026
…ics Smoke Test (#27099)

## This PR

The original [combined remote plugin analytics PR
#26281](#26281) mixed reusable
analytics test infrastructure, two manual smoke workflows, a metadata
refactor, and the final identity behavior. This PR establishes a
non-mutating end-to-end plugin smoke workflow before any analytics
identity semantics change.

- Add `plugin-analytics-smoke` to the existing app-server test client.
- Exercise plugin disable, enable, and use through production app-server
RPC paths.
- Isolate config writes in a temporary file and use a loopback Responses
API server.
- Capture analytics without sending them to the production analytics
backend.
- Validate the current local `plugin_id`, names, capability metadata,
thread, turn, and model fields.

This is intentionally a baseline smoke workflow. It does not assert
`remote_plugin_id`; the final PR will update it when that field exists.
Review this PR as the net diff against #27093.

## Testing

- The test-client target compiles successfully.
- The combined reference branch exercised the manual smoke against the
live remote plugin service.
- CI is green across the required platform matrix.

## Split Overview

```text
main
├── #27093  Debug analytics capture
│   └── #27099  Non-mutating plugin smoke           ← you are here
│       └── #27100  Remote install/uninstall smoke
└── #27102  Plugin telemetry metadata refactor

After #27093, #27099, #27100, and #27102 merge:
└── Final PR: add remote_plugin_id to plugin analytics
```

Review order and dependencies:

1. [#27093 Add debug-only analytics event
capture](#27093) (based on `main`)
2. [#27099 Add a plugin analytics smoke
workflow](#27099) **(this PR,
stacked on #27093)**
3. [#27100 Add a remote plugin analytics mutation smoke
workflow](#27100) (stacked on this
PR)
4. [#27102 Centralize plugin telemetry metadata
construction](#27102) (independent,
based on `main`)
5. Final remote-ID behavior PR (created after PRs 1-4 merge)

The original [#26281](#26281)
remains open as the green aggregate reference until the final PR is
published.
Base automatically changed from jameswt/plugin-analytics-smoke to main June 16, 2026 17:11
@jameswt-oai jameswt-oai force-pushed the jameswt/plugin-analytics-mutation-smoke branch from 37ad371 to 210223e Compare June 16, 2026 17:27
@jameswt-oai jameswt-oai marked this pull request as ready for review June 16, 2026 17:36

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 210223e460

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codex-rs/app-server-test-client/src/plugin_analytics_mutation_smoke.rs Outdated
Comment thread codex-rs/app-server-test-client/src/plugin_analytics_mutation_smoke.rs Outdated
Comment thread codex-rs/app-server-test-client/src/plugin_analytics_mutation_smoke.rs Outdated
@jameswt-oai jameswt-oai merged commit 8a40200 into main Jun 16, 2026
45 of 47 checks passed
@jameswt-oai jameswt-oai deleted the jameswt/plugin-analytics-mutation-smoke branch June 16, 2026 19:28
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants