fix(codex): quarantine unreadable dynamic tools#88774
Conversation
|
Codex review: needs changes before merge. Reviewed June 1, 2026, 1:45 AM ET / 05:45 UTC. Summary PR surface: Source +98, Tests +78. Total +176 across 2 files. Reproducibility: yes. Source inspection shows a dynamic tool named Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep the quarantine design, but extend this projection to mirror Codex's dynamic-tool identifier, namespace, defer-loading, and duplicate-name checks before registration, then land after the stacked base is resolved. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows a dynamic tool named Is this the best way to solve the issue? No. The quarantine layer is the right owner boundary, but the best fix must quarantine Codex-invalid names/namespaces and duplicate emitted specs before registration rather than only unreadable fields and schemas. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 630f0d6938cd. Label changesLabel justifications:
Evidence reviewedPR surface: Source +98, Tests +78. Total +176 across 2 files. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
51a1c68 to
ffa6298
Compare
ffa6298 to
38e523b
Compare
38e523b to
9c95e00
Compare
9c95e00 to
dfe817d
Compare
dfe817d to
f14ae04
Compare
c6aaf80 to
a23ee0b
Compare
f14ae04 to
fb95836
Compare
4caf7f9 to
8aeaadf
Compare
fb95836 to
946ea6a
Compare
|
Closing this as folded into the landed canonical PR: #90022 Reason: this branch was stacked on a non-main base and did not cover the full bridge boundary that landed in #90022. The merged PR keeps unreadable descriptor quarantine and adds wrapping-time failure quarantine plus registered durable spec filtering. Landed squash commit: 3ffb360 |
Summary
Stacked on: #88880
Verification
Stack base:
8aeaadf963aHead:
946ea6a7347node scripts/run-vitest.mjs extensions/codex/src/app-server/dynamic-tools.test.ts --reporter=dot- passed 1 shard / 39 testsnode --import tsx scripts/generate-prompt-snapshots.ts --check- passed,Prompt snapshots are current (7 files).node_modules/.bin/oxfmt --check --threads=1 extensions/codex/src/app-server/dynamic-tools.ts extensions/codex/src/app-server/dynamic-tools.test.ts- passednode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/codex/src/app-server/dynamic-tools.ts extensions/codex/src/app-server/dynamic-tools.test.ts- passedgit diff --check origin/cron-schema-main-repro-20260601...HEAD- passed.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/cron-schema-main-repro-20260601 --prompt 'Review the pruned Codex dynamic-tool quarantine branch stacked on the provider schema PR. Focus on unreadable or unsupported dynamic tool schemas, keeping healthy tools active, diagnostic clarity, test coverage, and avoiding duplicated provider projection work.'- clean, no accepted/actionable findings,overall: patch is correct (0.78)Real behavior proof
Behavior addressed: Codex dynamic-tool registration now skips unreadable malformed dynamic tool entries and keeps healthy tools available instead of failing the whole tool registration path.
Real environment tested: Local OpenClaw Codex/gwt worktree on macOS with shared repo
node_modules, using the repo Vitest wrapper plus snapshot, format, lint, diff, scrub, and autoreview gates.Exact steps or command run after this patch: The focused Vitest, prompt snapshot, oxfmt, oxlint, diff-check, private-name scrub, and autoreview commands listed above were run after restacking onto #88880.
Evidence after fix: Codex dynamic-tools tests passed 1 shard / 39 tests; prompt snapshots were current; oxfmt, oxlint, and diff-check passed; autoreview reported no accepted/actionable findings.
Observed result after fix: Unreadable dynamic tool data is quarantined before Codex registration while valid dynamic tools remain registered and usable.
What was not tested: A live Codex provider turn and full
pnpm check:changedwere not run for this narrow stacked PR; GitHub CI is expected to validate the pushed branch.