ci: reject unused Codex client exports with Knip#10036

merged1
t3code/knip-codex-client-internals
t3code/knip-codex-client-export-gate
openedSep 5, 2026byJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 5d ago

The Codex app-server workspace is now free of unused export findings, but CI currently enforces exports only in the Tailscale workspace.

Add the Codex app-server workspace to the existing export check and update the development command guidance. Keep the repository-wide file/dependency gate and generated-protocol exceptions unchanged. No dependencies, suppressions or issue baseline are added.

Verification: the exact vp run knip:check command passes. Temporarily restoring the unused JsonRpcError value and CodexAppServerSchemaIssueDiagnostics type makes that command exit 1 and name both violations. Removing them again restores a passing result. Formatting and diff checks pass.

Depends on the cleanup layer immediately below. Left unmerged for maintainer review.

Model: gpt-6 astra. Harness: Codex in T3 Code.

Note

Extend knip:check to reject unused exports in effect-codex-app-server

The knip:check script in package.json now runs the unused-exports audit for packages/effect-codex-app-server alongside the existing packages/tailscale audit, while preserving the repo-wide files and dependencies audit. docs/operations/development.md is updated to document the expanded scope.

Macroscope summarized 1e502a8.

Added 1 commit

  • ci: reject unused Codex client exports with Knip1e502a8
Synced from GitHub

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire—13.6 KiB—15.1 KiB✅
CodexThread snapshot wire—7.0 KiB—7.3 KiB✅
CodexLive turn WebSocket wire—6.6 KiB—7.8 KiB✅
CodexLive turn WebSocket decoded—57.1 KiB—66.4 KiB✅
CodexLive turn messages—10—21✅
ClaudeTotal thread wire—13.5 KiB—15.1 KiB✅
ClaudeThread snapshot wire—7.0 KiB—7.3 KiB✅
ClaudeLive turn WebSocket wire—6.5 KiB—7.8 KiB✅
ClaudeLive turn WebSocket decoded—57.8 KiB—66.4 KiB✅
ClaudeLive turn messages—8—21✅

Baseline: unavailable · PR result: 1e502a8 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.8 KiB
  • Claude decoded thread snapshot: 114.5 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Synced from GitHub

Approvability

Verdict: Approved at 1e502a8

Macroscope's review found this PR approvable — The PR only broadens an existing Knip check to cover one additional workspace and updates its documentation. It changes CI validation scope without affecting production runtime behavior, product defaults, or static-analysis suppressions.

You can add or adjust custom eligibility rules. Learn more.