feat: make QuickJS the default plugin engine everywhere - #2775
Conversation
|
Codex review: found issues before merge. Reviewed August 8, 2026, 5:13 PM ET / 21:13 UTC. ClawSweeper reviewWhat this changesChanges provider plugins to use QuickJS by default, retains JavaScriptCore as an Apple rollback, and adds safety, test, CI, settings, benchmark, and documentation updates. Merge readinessThis owner-authored PR remains useful but is not merge-ready: it contains unresolved changelog conflict markers and still documents a 2 MiB QuickJS limit while the implementation uses 1 MiB. Priority: P2 Review scores
Verification
How this fits togetherProvider plugins execute JavaScript to collect provider usage data. Engine selection chooses QuickJS or the Apple rollback engine before limits and watchdogs govern execution and results reach CodexBar. flowchart LR
A[Provider plugin source] --> B[Engine selection]
B --> C[QuickJS default]
B --> D[JavaScriptCore rollback]
C --> E[Watchdog and limits]
D --> E
E --> F[Usage fetch result]
F --> G[CodexBar display]
Decision needed
Why: The runtime-default change is an intentional compatibility tradeoff that automated coverage cannot fully settle for third-party plugins. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Copy recommended automerge instructionTechnical reviewBest possible solution: Resolve the exceptional release-note conflict, correct the documented 1 MiB QuickJS limit, rebase, and retain the JavaScriptCore rollback plus A/B coverage when deciding whether to land the default switch. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug report; the PR intentionally changes a runtime default and reports a live no-flag Poe fetch plus A/B engine coverage. Is this the best way to solve the issue? Unclear until the merge conflict and documentation mismatch are corrected; retaining the rollback is the narrowest compatibility safeguard for the proposed default. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against af9bc9382f4c. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (6 earlier review cycles)
|
d635b4b to
064b22d
Compare
Benchmark (test-target, both engines), QuickJS default on all platforms with CODEXBAR_PLUGIN_ENGINE=jsc rollback (env + Debug pane), dedicated 4 MiB worker threads with true-interrupt watchdog, native stack headroom for the overflow guard, CI crash-report collection, and the overflow regression pinned to production stack geometry.
0f26b23 to
c0df45f
Compare
Summary
Benchmark
August 8, 2026 baseline from a Swift debug build on an Apple M3 Ultra. Fetch values are 50 fixture-backed iterations reusing one context; memory is the rough macOS physical-footprint delta per retained context.
QuickJS is slower in relative terms, but the absolute fetch deltas remain below 10 ms per fetch at minutes-cadence polling. That trade is preferable to JavaScriptCore's roughly 7x larger measured context footprint, especially because QuickJS also provides true in-engine interrupt safety instead of abandoning an uninterruptible evaluation thread after timeout.
Rollback
On Apple platforms, set
CODEXBAR_PLUGIN_ENGINE=jscor enable the JavaScriptCore rollback in Settings → Debug → Provider Plugins, then restart CodexBar. An explicit environment selection overrides the persisted Debug setting.Proof
make check,make build, fullmake test, andswift build --target CodexBarLinuxTests🤖 Generated with Claude Code