Skip to content

fix(update): gate the update on the proxy being down, not on stop's exit code - #3040

Draft
ntdatt812 wants to merge 1 commit into
lidge-jun:devfrom
ntdatt812:fix/3008-update-stop-history
Draft

fix(update): gate the update on the proxy being down, not on stop's exit code#3040
ntdatt812 wants to merge 1 commit into
lidge-jun:devfrom
ntdatt812:fix/3008-update-stop-history

Conversation

@ntdatt812

@ntdatt812 ntdatt812 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes #3008.

A dashboard update aborted after ocx stop had already stopped the proxy, because resume-history restoration exited non-zero. The reported end state was the bad one: nothing on the configured port, runtime state cleared, old package still installed.

Why the status was the wrong gate

ocx stop does more than stop the proxy. handleStop also reverts environment ownership and calls restoreSharedClientStateAfterStop(), and any of those setting stopFailed produces process.exitCode = 1. A Codex history DB held busy by the app is an ordinary Windows condition, so a clean proxy shutdown can still exit 1.

The update read that status:

if (stop.status !== 0 || readPid() || readRuntimePort()) { ...abort... }

Its only real precondition is that nothing is still serving — package replacement under a live proxy leaves the running server dynamic-importing a mix of old and new modules, which is what the comment above that block already says. History restoration has no bearing on it.

There is a second symptom in the same lines: the resume-history warning immediately below the guard could not be reached on this path, because the condition it warns about had already aborted the update. It was written for exactly this case.

What changed

classifyStopForUpdate decides both things and is exported for testing, next to historyRestoreIncomplete, which this file already exports for the same reason:

  • abort only while a proxy is still up — the condition that actually blocks replacement
  • report a non-zero stop status as a warning rather than swallowing it, so a failed teardown is still visible

The tray restore and process.exit(1) on a genuine still-running proxy are unchanged.

Tests

tests/update-stop-classification.test.ts, 4 cases:

  • proceeds when the proxy is down even though stop reported failure — the reported bug
  • nothing to warn about when stop succeeded
  • still refuses while a proxy is up, whatever stop reported (both status values)
  • a signal-killed stop (status: null from spawnSync) is not treated as a numeric failure
bun test update-job update-transactional update-npm-invocation update-stop-classification
72 pass, 0 fail

bun x tsc --noEmit   clean

I did not add a case to tests/update-stop-first.test.ts; it drives real proxies, and the decision this changes is a pure one.

Not in this PR

#3009 came out of the same recovery session, but it is src/service.ts and a different failure point — the review on that issue asked to keep the two apart. It is up separately.

Review readiness checklist

This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:

  • All CI tests are green on my local testing.

  • I pushed my PR to the latest dev commit.

  • I resolved all correct Codex and CodeRabbit findings.

  • My PR is ready for review.

…xit code

A dashboard update aborted after `ocx stop` had already stopped the proxy,
because resume-history restoration exited non-zero and the update read the
stop command's status as its gate. The port was left with no listener, the
runtime state was cleared, and the old package was still installed.

`ocx stop` does more than stop the proxy: it also restores Codex
resume-history and reverts environment ownership, and reports failure when
any of that fails. A history DB held busy by the Codex app is ordinary on
Windows. The update's only real precondition is that nothing is still
serving, since package replacement under a live proxy leaves it executing
mixed old and new code.

The gate now reads that condition alone and says what the stop reported.
The resume-history warning below it was unreachable on exactly this path,
which is the path it was written for.

Refs lidge-jun#3008.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 1145 files, which is 845 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2cd2d6a7-be46-4b3c-9dff-5f3291d73e0b

📥 Commits

Reviewing files that changed from the base of the PR and between 4180067 and 4932466.

⛔ Files ignored due to path filters (20)
  • assets/pr2950-capacity-expiry.png is excluded by !**/*.png
  • devlog/_plan/260830_models_provider_header/evidence/010-after-ko-1100.png is excluded by !**/*.png
  • devlog/_plan/260830_models_provider_header/evidence/010-before-ko-1100.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/010-after-ko-1024.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/010-after-ko-1440.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/010-before-ko-1024.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/010-before-ko-1440.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/020-after-en-1600.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/020-after-ko-1024.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/020-after-ko-1440.png is excluded by !**/*.png
  • devlog/_plan/260830_sidecar_control_band/evidence/020-after-ru-1440.png is excluded by !**/*.png
  • docs-site/public/pr-screenshots/2678-codex-set-dialog.jpg is excluded by !**/*.jpg
  • docs-site/public/pr-screenshots/2678-codex-set-presets.jpg is excluded by !**/*.jpg
  • docs-site/public/pr-screenshots/2678-codex-set-prompt.jpg is excluded by !**/*.jpg
  • docs-site/public/pr-screenshots/2692-git-attribution-row.png is excluded by !**/*.png
  • docs-site/public/pr-screenshots/2696-base-switch-row.png is excluded by !**/*.png
  • docs-site/public/pr-screenshots/2696-base-variant-picker.png is excluded by !**/*.png
  • docs-site/public/pr-screenshots/2709-prompt-ux-dialog.png is excluded by !**/*.png
  • docs-site/public/pr-screenshots/2709-prompt-ux-panel.png is excluded by !**/*.png
  • src/generated/model-metadata.ts is excluded by !**/generated/**
📒 Files selected for processing (1145)
  • .github/scripts/closed-pr-branch-cleanup.cjs
  • .github/scripts/closed-pr-branch-cleanup.test.cjs
  • .github/workflows/ci.yml
  • .github/workflows/cleanup-closed-pr-branches.yml
  • .github/workflows/dev-version-bump.yml
  • AGENTS.md
  • MAINTAINERS.md
  • README.md
  • bunfig.toml
  • devlog/_fin/260724_release_v2_7_39/000_plan.md
  • devlog/_fin/260724_release_v2_7_39/001_research.md
  • devlog/_fin/260724_release_v2_7_39/010_phase1_release.md
  • devlog/_fin/260724_release_v2_7_39/011_verification.md
  • devlog/_fin/260827_kiro_text_control_guard/000_plan.md
  • devlog/_fin/260827_kiro_text_control_guard/001_text_control_taxonomy.md
  • devlog/_fin/260827_kiro_text_control_guard/002_audit_round1.md
  • devlog/_fin/260827_kiro_text_control_guard/010_phase1_guard_narrowing.md
  • devlog/_fin/260827_kiro_text_control_guard/020_phase2_pull_request.md
  • devlog/_fin/260827_ocx_restart_macos_portability/000_plan.md
  • devlog/_fin/260828_kiro_turn_termination/000_research.md
  • devlog/_fin/260828_kiro_turn_termination/010_wp1_terminal_boundary.md
  • devlog/_fin/260828_kiro_turn_termination/011_audit_round1.md
  • devlog/_fin/260828_kiro_turn_termination/012_audit_round2.md
  • devlog/_fin/260828_kiro_turn_termination/020_wp2_duplicate_answer.md
  • devlog/_fin/260828_kiro_turn_termination/021_audit_round3.md
  • devlog/_fin/260828_kiro_turn_termination/030_wp1_live_measurement.md
  • devlog/_fin/260828_kiro_turn_termination/040_close_out.md
  • devlog/_fin/260829_bugpr_zero_remaining/000_plan.md
  • devlog/_fin/260829_bugpr_zero_remaining/001_audit_round1_synthesis.md
  • devlog/_fin/260829_bugpr_zero_remaining/002_audit_round3_synthesis.md
  • devlog/_fin/260829_bugpr_zero_remaining/010_wp8_version_line_keystone.md
  • devlog/_fin/260829_bugpr_zero_remaining/020_wp2_lane_a_clean_merges.md
  • devlog/_fin/260829_bugpr_zero_remaining/030_wp3_lane_b_stale_rebase.md
  • devlog/_fin/260829_bugpr_zero_remaining/040_wp4_lane_c_oauth_429_rotation.md
  • devlog/_fin/260829_bugpr_zero_remaining/050_wp5_lane_d_reimplementation.md
  • devlog/_fin/260829_bugpr_zero_remaining/060_wp6_lane_e_prless_bug_issues.md
  • devlog/_fin/260829_bugpr_zero_remaining/070_wp7_closeout.md
  • devlog/_fin/260829_bugpr_zero_remaining/080_wp9_current_head_reaudit.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/000_rca.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/001_audit_round1.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/002_audit_round2_redesign.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/010_phase1_call_result_pairing.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/020_phase2_tests_and_delivery.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/030_phase4_final_gate.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/040_phase5_checkpoint_suffix_gap.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/050_phase6_native_turn_orphan.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/060_phase7_positional_bound.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/070_phase8_checkpoint_suffix_orphan_strip.md
  • devlog/_fin/260829_cursor_tool_continuation_pairing/080_final_gate.md
  • devlog/_fin/260830_kiro_post_answer_tool_calls/000_research.md
  • devlog/_fin/260830_kiro_post_answer_tool_calls/010_wp2_terminal_completion_contract.md
  • devlog/_fin/260830_kiro_post_answer_tool_calls/020_close_out.md
  • devlog/_fin/260831_kiro_pause_path_and_answer_shape/000_research.md
  • devlog/_fin/260831_kiro_pause_path_and_answer_shape/010_wp2_pause_path.md
  • devlog/_fin/260831_kiro_pause_path_and_answer_shape/020_close_out.md
  • devlog/_plan/260724_gpt_live_hotfix/010_session_header_fix.md
  • devlog/_plan/260802_codex_set_prompt_composer/021_wp2_amendments.md
  • devlog/_plan/260802_codex_set_prompt_composer/022_empirical_gate_findings.md
  • devlog/_plan/260802_codex_set_prompt_composer/023_stack_scope_presets.md
  • devlog/_plan/260802_codex_set_prompt_composer/080_wp8_stack_publication.md
  • devlog/_plan/260802_codex_set_prompt_composer/091_stack_gate_findings.md
  • devlog/_plan/260805_ssh_app_server_catalog_race/000_plan.md
  • devlog/_plan/260805_ssh_app_server_catalog_race/001_two_host_comparison.md
  • devlog/_plan/260805_ssh_app_server_catalog_race/002_startup_vs_sync_asymmetry.md
  • devlog/_plan/260813_apply_patch_tool_visibility/000_plan.md
  • devlog/_plan/260813_apply_patch_tool_visibility/001_codex_opencodex_survey.md
  • devlog/_plan/260813_apply_patch_tool_visibility/010_decision_and_noop_or_fix.md
  • devlog/_plan/260813_apply_patch_tool_visibility/011_decision_record.md
  • devlog/_plan/260813_apply_patch_tool_visibility/020_push_and_close.md
  • devlog/_plan/260813_bun_canary_dogfood/000_plan.md
  • devlog/_plan/260813_bun_canary_dogfood/010_git_cleanup.md
  • devlog/_plan/260813_bun_canary_dogfood/020_bun_canary.md
  • devlog/_plan/260813_bun_canary_dogfood/030_memory_patches.md
  • devlog/_plan/260813_bun_canary_dogfood/040_verification_deploy.md
  • devlog/_plan/260813_openai_chat_baseurl_normalize/000_plan.md
  • devlog/_plan/260813_openai_chat_baseurl_normalize/010_normalize_chat_baseurl.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/000_research_snapshot.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/001_audit_response.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/010_wp2_merge_train_remainder.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/020_wp4_google_lane.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/030_wp5_hygiene_and_drafts.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/040_wp6_cursor_catalog.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/050_wp7_oauth_failover.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/060_wp8_wp9_cli_and_platform.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/070_wp10_wp11_slug_and_exec.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/080_wp12_catalog_ux.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/090_wp13_architecture.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/100_wp6_wp8_execution.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/110_wp7_oauth_failover.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/111_wp7_audit_response.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/120_wp5_2497_security_review.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/130_wp16_late_bug_prs.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/140_closeout.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/150_community_bug_sweep.md
  • devlog/_plan/260825_owner_backlog_and_bugpr_closeout/160_terminal_record.md
  • devlog/_plan/260826_backlog_triage/000_snapshot.md
  • devlog/_plan/260826_backlog_triage/010_stale_prs.md
  • devlog/_plan/260826_backlog_triage/020_issue_quick_wins.md
  • devlog/_plan/260826_backlog_triage/030_recommendations.md
  • devlog/_plan/260826_config_rebase_provenance/010_design.md
  • devlog/_plan/260826_cursor_responses_gap/000_plan.md
  • devlog/_plan/260826_cursor_responses_gap/001_seed_thread_failure_catalog.md
  • devlog/_plan/260826_cursor_responses_gap/010_probe_campaign.md
  • devlog/_plan/260826_cursor_responses_gap/020_gap_summary.md
  • devlog/_plan/260826_cursor_responses_gap/025_ultra_k3_research.md
  • devlog/_plan/260826_cursor_responses_gap/030_callid_sse_parity.md
  • devlog/_plan/260826_cursor_responses_gap/040_preamble_floor.md
  • devlog/_plan/260826_cursor_responses_gap/050_checkpoint_continuity.md
  • devlog/_plan/260826_cursor_responses_gap/060_catalog_honesty.md
  • devlog/_plan/260826_cursor_responses_gap/070_ultra_mode.md
  • devlog/_plan/260826_cursor_responses_gap/080_stall_corruption_diag.md
  • devlog/_plan/260826_cursor_responses_gap/090_gap8_codex_exec_qa.md
  • devlog/_plan/260826_cursor_responses_gap/100_wire_ndjson_qa.md
  • devlog/_plan/260826_cursor_responses_gap/110_app_route_qa.md
  • devlog/_plan/260826_cursor_responses_gap/120_repetition_breaker.md
  • devlog/_plan/260826_cursor_responses_gap/130_envelope_echo_guard.md
  • devlog/_plan/260826_cursor_responses_gap/140_round2_probe_results.md
  • devlog/_plan/260826_cursor_responses_gap/150_routing_commentary_hallucination.md
  • devlog/_plan/260826_glm53_flash_preseed/000_plan.md
  • devlog/_plan/260826_pre_substrate_adoption/010_design.md
  • devlog/_plan/260826_provenance_writer/010_design.md
  • devlog/_plan/260826_quota_window_and_backlog/000_plan.md
  • devlog/_plan/260826_quota_window_and_backlog/001_audit_response.md
  • devlog/_plan/260826_quota_window_and_backlog/010_phase1.md
  • devlog/_plan/260826_quota_window_and_backlog/020_phase2.md
  • devlog/_plan/260826_quota_window_and_backlog/030_phase3.md
  • devlog/_plan/260826_quota_window_and_backlog/040_phase4.md
  • devlog/_plan/260826_quota_window_and_backlog/050_phase5.md
  • devlog/_plan/260826_quota_window_and_backlog/060_phase6.md
  • devlog/_plan/260826_quota_window_and_backlog/070_phase7.md
  • devlog/_plan/260826_restart_codex_linux_survivor/000_repro_and_root_cause.md
  • devlog/_plan/260826_session_lane_bounds/010_design.md
  • devlog/_plan/260826_session_lane_bounds/020_reconnect_followup.md
  • devlog/_plan/260826_wp13_disposable_host/010_census.md
  • devlog/_plan/260826_wp7e_presence_driven_oauth_failover/010_plan.md
  • devlog/_plan/260826_wp7e_presence_driven_oauth_failover/011_audit_response.md
  • devlog/_plan/260826_wp7e_presence_driven_oauth_failover/020_execution.md
  • devlog/_plan/260826_wp7e_presence_driven_oauth_failover/030_post_merge_f5.md
  • devlog/_plan/260827_bug_pr_merge_round/000_intake.md
  • devlog/_plan/260827_bug_pr_merge_round/001_pr2694_compile_break.md
  • devlog/_plan/260827_bug_pr_merge_round/002_pr2639_regression.md
  • devlog/_plan/260827_bug_pr_merge_round/003_disposition_matrix.md
  • devlog/_plan/260827_bug_pr_merge_round/004_pr2693_missing_implementation.md
  • devlog/_plan/260827_bug_pr_merge_round/005_audit_corrections.md
  • devlog/_plan/260827_bug_pr_merge_round/006_execution_order.md
  • devlog/_plan/260827_bug_pr_merge_round/007_audit_round2.md
  • devlog/_plan/260827_bug_pr_merge_round/010_lane_l1_commit_then_merge.md
  • devlog/_plan/260827_bug_pr_merge_round/011_wp2_l1_outcome.md
  • devlog/_plan/260827_bug_pr_merge_round/020_lane_l3_cherry_pick.md
  • devlog/_plan/260827_bug_pr_merge_round/021_status_vs_created_at_asymmetry.md
  • devlog/_plan/260827_bug_pr_merge_round/022_l3_audit.md
  • devlog/_plan/260827_bug_pr_merge_round/030_lane_l2_close_squash.md
  • devlog/_plan/260827_bug_pr_merge_round/031_wp4_l2_outcome.md
  • devlog/_plan/260827_bug_pr_merge_round/040_lane_l4_reimplement.md
  • devlog/_plan/260827_bug_pr_merge_round/041_wp5_l4_outcome.md
  • devlog/_plan/260827_bug_pr_merge_round/050_round_closeout.md
  • devlog/_plan/260827_dev_hardening/000_inventory.md
  • devlog/_plan/260827_dev_hardening/010_wp2_version_line.md
  • devlog/_plan/260827_dev_hardening/020_wp3_failover_identity.md
  • devlog/_plan/260827_dev_hardening/030_wp4_locale_docs.md
  • devlog/_plan/260827_dev_hardening/040_wp5_local_gates.md
  • devlog/_plan/260827_dev_hardening/050_wp6_invariant_locks.md
  • devlog/_plan/260827_dev_hardening/060_wp8_launcher_flake.md
  • devlog/_plan/260827_dev_hardening/070_wp7_promotion_readiness.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/000_plan.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/001_regression_review.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/010_wp2_git_attribution_layer.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/020_wp3_base_variants.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/021_audit_blockers.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/030_wp4_docs_and_stack.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/040_remote_verification_and_wp3_landing.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/041_wp3_audit_direct.md
  • devlog/_plan/260827_dev_regression_and_prompt_variants/042_wp3_remote_gate_and_landing.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/000_plan.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/010_phase1.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/011_wp1_outcome.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/020_phase2.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/021_wp2_outcome.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/030_phase3.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/040_phase4.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/041_wp2b_2729_supersede.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/050_phase5.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/060_phase6.md
  • devlog/_plan/260827_igwanu_bug_pr_merge_round/070_outcome.md
  • devlog/_plan/260827_kiro_builder_id_profile/010_builder_id_request_scoped_profile.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/000_plan.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/010_exec_discovery_preservation.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/011_root_cause_nudge_gap.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/012_audit_round1_synthesis.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/013_wp1_check_evidence.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/020_unbounded_kiro_delegation.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/030_verification.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/040_exec_catalog_priority.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/041_wp2_audit_synthesis.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/042_wp2_check_evidence.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/050_ship.md
  • devlog/_plan/260827_kiro_subagent_delegation_unblock/051_ci_shard4_triage.md
  • devlog/_plan/260827_release_train/000_state_and_decisions.md
  • devlog/_plan/260827_release_train/010_preview_promote.md
  • devlog/_plan/260827_release_train/020_preview_release.md
  • devlog/_plan/260827_release_train/030_main_promote.md
  • devlog/_plan/260827_release_train/040_stable_release.md
  • devlog/_plan/260827_release_train/050_deploy_and_verify.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/000_plan.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/010_phase1.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/020_phase2.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/021_wp2_wp3_outcome.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/030_phase3.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/040_phase4.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/050_phase5.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/060_phase6.md
  • devlog/_plan/260828_bugpr_fix_and_reimplement/070_outcome.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/000_plan.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/001_backlog_abort_rca.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/002_cursor_open_defect_inventory.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/003_roadmap_lock.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/010_backlog_abort_fix.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/020_macmini_probe_round.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/021_probe_results_round1.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/030_cursor_fixes.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/031_midstream_echo_fix.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/040_closure_round.md
  • devlog/_plan/260828_cursor_ndjson_backlog_train/050_merge_train.md
  • devlog/_plan/260828_cursor_umbrella_catalog/000_plan.md
  • devlog/_plan/260828_cursor_umbrella_catalog/001_reference_analysis.md
  • devlog/_plan/260828_cursor_umbrella_catalog/002_current_surface.md
  • devlog/_plan/260828_cursor_umbrella_catalog/003_design.md
  • devlog/_plan/260828_cursor_umbrella_catalog/004_roadmap_lock.md
  • devlog/_plan/260828_cursor_umbrella_catalog/010_capability_core.md
  • devlog/_plan/260828_cursor_umbrella_catalog/020_catalog_integration.md
  • devlog/_plan/260828_cursor_umbrella_catalog/030_closure.md
  • devlog/_plan/260828_ocx_agentic_control/000_plan.md
  • devlog/_plan/260828_ocx_agentic_control/001_api_route_inventory.md
  • devlog/_plan/260828_ocx_agentic_control/002_cli_surface_inventory.md
  • devlog/_plan/260828_ocx_agentic_control/003_gui_capability_map.md
  • devlog/_plan/260828_ocx_agentic_control/004_issue_root_cause.md
  • devlog/_plan/260828_ocx_agentic_control/005_audit_record.md
  • devlog/_plan/260828_ocx_agentic_control/010_phase_transport_honesty.md
  • devlog/_plan/260828_ocx_agentic_control/011_wp2_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/020_phase_capability_registry.md
  • devlog/_plan/260828_ocx_agentic_control/021_wp3_stale_check_amendment.md
  • devlog/_plan/260828_ocx_agentic_control/025_phase_uniform_cli_contract.md
  • devlog/_plan/260828_ocx_agentic_control/026_wp3b_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/030_phase_dto_fidelity.md
  • devlog/_plan/260828_ocx_agentic_control/031_wp4_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/040_phase_new_verbs.md
  • devlog/_plan/260828_ocx_agentic_control/041_wp5_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/050_phase_account_attribution.md
  • devlog/_plan/260828_ocx_agentic_control/051_wp6_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/060_phase_gui_parity.md
  • devlog/_plan/260828_ocx_agentic_control/061_wp7_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/070_phase_agent_skill.md
  • devlog/_plan/260828_ocx_agentic_control/071_wp8_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/080_phase_rebase_and_ci.md
  • devlog/_plan/260828_ocx_agentic_control/081_deferred_decisions.md
  • devlog/_plan/260828_ocx_agentic_control/081_wp9_implementation_record.md
  • devlog/_plan/260828_ocx_agentic_control/090_phase_gap_closure.md
  • devlog/_plan/260828_ocx_agentic_control/091_wp10_implementation_record.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/120_issue_1527_replay_envelope.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/130_pr2872_probe_fingerprint.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/140_pr2884_shim_backup_matcher.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/150_issue_2887_pool_401_refresh.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/160_issue_2886_entitlement_client_version.md
  • devlog/_plan/260829_bugpr_lane_h_residual_issues/170_pr2895_pool_401_recovery_budget.md
  • devlog/_plan/260829_green_pr_merge_train/000_plan.md
  • devlog/_plan/260829_green_pr_merge_train/010_wp1_2429_privacy_scan.md
  • devlog/_plan/260829_green_pr_merge_train/020_wp2_2827_expose_header.md
  • devlog/_plan/260829_gui_dashboard_slop/000_baseline_and_roadmap.md
  • devlog/_plan/260829_gui_dashboard_slop/010_sidecar_pair_alignment.md
  • devlog/_plan/260829_gui_dashboard_slop/011_audit_correction_align_content.md
  • devlog/_plan/260829_gui_dashboard_slop/012_shipped_fix_and_subgrid_postmortem.md
  • devlog/_plan/260829_gui_dashboard_slop/013_final_shipped_and_measurement_lessons.md
  • devlog/_plan/260829_gui_dashboard_slop/020_phantom_grid_track.md
  • devlog/_plan/260829_gui_dashboard_slop/030_dynamic_viewport_units.md
  • devlog/_plan/260829_kiro_quota_pool/000_research_problem_and_state.md
  • devlog/_plan/260829_kiro_quota_pool/001_research_upstream_wire_contract.md
  • devlog/_plan/260829_kiro_quota_pool/002_research_kirolb_headtohead.md
  • devlog/_plan/260829_kiro_quota_pool/003_research_pr_reconciliation.md
  • devlog/_plan/260829_kiro_quota_pool/010_kiro_usage_fetcher.md
  • devlog/_plan/260829_kiro_quota_pool/020_per_account_quota_wiring.md
  • devlog/_plan/260829_kiro_quota_pool/030_quota_aware_pool_selection.md
  • devlog/_plan/260829_kiro_quota_pool/040_surfaces_cli_gui_docs.md
  • devlog/_plan/260829_kiro_quota_pool/050_verification_and_delivery.md
  • devlog/_plan/260829_kiro_quota_pool/060_audit_round1_amendments.md
  • devlog/_plan/260829_kiro_quota_pool/070_audit_round2_amendments.md
  • devlog/_plan/260829_kiro_quota_pool/080_head_to_head_result.md
  • devlog/_plan/260829_kiro_quota_pool/090_predispatch_selection.md
  • devlog/_plan/260829_kiro_quota_pool/100_quota_persistence.md
  • devlog/_plan/260829_kiro_quota_pool/110_integrated_verification.md
  • devlog/_plan/260829_lane_n_effort_ladder_and_locale_probe/000_units.md
  • devlog/_plan/260830_dev_version_line_bump_pr/000_cause_and_roadmap.md
  • devlog/_plan/260830_dev_version_line_bump_pr/010_version_repair.md
  • devlog/_plan/260830_dev_version_line_bump_pr/020_post_release_bump.md
  • devlog/_plan/260830_dev_version_line_bump_pr/030_ship.md
  • devlog/_plan/260830_lane_o_reset_recovery_parity/000_units.md
  • devlog/_plan/260830_lane_q_2892_gaps_3_4/000_units.md
  • devlog/_plan/260830_lane_r_2941_copilot_vision/000_units.md
  • devlog/_plan/260830_models_provider_header/000_baseline_and_roadmap.md
  • devlog/_plan/260830_models_provider_header/010_toggle_basis_and_shrink.md
  • devlog/_plan/260830_models_provider_header/011_rejected_designs.md
  • devlog/_plan/260830_models_provider_header/020_control_affordances.md
  • devlog/_plan/260830_release_readiness_train/000_plan.md
  • devlog/_plan/260830_release_readiness_train/010_wp1_runner_and_hygiene.md
  • devlog/_plan/260830_release_readiness_train/020_wp2_quota_expiry.md
  • devlog/_plan/260830_release_readiness_train/030_wp3_responses_and_config.md
  • devlog/_plan/260830_release_readiness_train/040_wp4_issue_2899_antigravity.md
  • devlog/_plan/260830_release_readiness_train/050_wp5_issue_1298_acl_proof.md
  • devlog/_plan/260830_release_readiness_train/060_wp6_release_gates.md
  • devlog/_plan/260830_release_readiness_train/070_outcome.md
  • devlog/_plan/260830_sidecar_control_band/010_shared_control_band.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/000_plan.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/001_research_3022_entitlement_floor.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/002_research_3023_roster_ttl.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/003_audit_3018_spill_drain.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/004_audit_round1_synthesis.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/005_audit_round2_synthesis.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/006_audit_round3_synthesis.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/007_audit_round4_wp1_plan.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/008_audit_round5_wp2_plan.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/009_audit_rounds6to8_wp2_and_wp3_review.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/010_wp1_entitlement_floor_and_empty_roster.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/020_wp2_roster_ttl_refresh.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/030_wp3_spill_publication_drain.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/040_wp4_entitlement_diagnostic.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/050_wp5_tristate_entitlement_authority.md
  • devlog/_plan/260831_prio70_entitlement_and_spill_train/070_outcome.md
  • docs-site/astro.config.mjs
  • docs-site/src/content/docs/contributing.md
  • docs-site/src/content/docs/fr/contributing.md
  • docs-site/src/content/docs/fr/guides/claude-code.md
  • docs-site/src/content/docs/fr/guides/codex-app-models.md
  • docs-site/src/content/docs/fr/guides/codex-integration.md
  • docs-site/src/content/docs/fr/guides/codex-prompt.md
  • docs-site/src/content/docs/fr/guides/combos.md
  • docs-site/src/content/docs/fr/guides/grok-build.md
  • docs-site/src/content/docs/fr/guides/providers.md
  • docs-site/src/content/docs/fr/guides/sidecars.md
  • docs-site/src/content/docs/fr/reference/adapters.md
  • docs-site/src/content/docs/fr/reference/architecture.md
  • docs-site/src/content/docs/fr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/fr/reference/configuration/providers.md
  • docs-site/src/content/docs/fr/reference/configuration/routing.md
  • docs-site/src/content/docs/fr/reference/configuration/server.md
  • docs-site/src/content/docs/fr/reference/management-api.md
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/guides/claude-code.md
  • docs-site/src/content/docs/guides/codex-app-models.md
  • docs-site/src/content/docs/guides/codex-integration.md
  • docs-site/src/content/docs/guides/codex-prompt.md
  • docs-site/src/content/docs/guides/combos.md
  • docs-site/src/content/docs/guides/grok-build.md
  • docs-site/src/content/docs/guides/model-routing.md
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/guides/sidecars.md
  • docs-site/src/content/docs/guides/sub-agent-surface.md
  • docs-site/src/content/docs/ja/contributing.md
  • docs-site/src/content/docs/ja/guides/codex-app-models.md
  • docs-site/src/content/docs/ja/guides/codex-integration.md
  • docs-site/src/content/docs/ja/guides/codex-prompt.md
  • docs-site/src/content/docs/ja/guides/combos.md
  • docs-site/src/content/docs/ja/guides/grok-build.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ja/guides/sidecars.md
  • docs-site/src/content/docs/ja/reference/adapters.md
  • docs-site/src/content/docs/ja/reference/architecture.md
  • docs-site/src/content/docs/ja/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ja/reference/configuration/providers.md
  • docs-site/src/content/docs/ja/reference/configuration/routing.md
  • docs-site/src/content/docs/ja/reference/configuration/server.md
  • docs-site/src/content/docs/ja/reference/management-api.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/contributing.md
  • docs-site/src/content/docs/ko/guides/codex-app-models.md
  • docs-site/src/content/docs/ko/guides/codex-integration.md
  • docs-site/src/content/docs/ko/guides/codex-prompt.md
  • docs-site/src/content/docs/ko/guides/combos.md
  • docs-site/src/content/docs/ko/guides/grok-build.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ko/guides/sidecars.md
  • docs-site/src/content/docs/ko/reference/adapters.md
  • docs-site/src/content/docs/ko/reference/architecture.md
  • docs-site/src/content/docs/ko/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ko/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/reference/configuration/routing.md
  • docs-site/src/content/docs/ko/reference/configuration/server.md
  • docs-site/src/content/docs/ko/reference/management-api.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/adapters.md
  • docs-site/src/content/docs/reference/architecture.md
  • docs-site/src/content/docs/reference/cli.md
  • docs-site/src/content/docs/reference/cli/agents.md
  • docs-site/src/content/docs/reference/cli/lifecycle.md
  • docs-site/src/content/docs/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/reference/configuration.md
  • docs-site/src/content/docs/reference/configuration/agents.md
  • docs-site/src/content/docs/reference/configuration/providers.md
  • docs-site/src/content/docs/reference/configuration/routing.md
  • docs-site/src/content/docs/reference/configuration/server.md
  • docs-site/src/content/docs/reference/management-api.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/contributing.md
  • docs-site/src/content/docs/ru/guides/codex-app-models.md
  • docs-site/src/content/docs/ru/guides/codex-integration.md
  • docs-site/src/content/docs/ru/guides/codex-prompt.md
  • docs-site/src/content/docs/ru/guides/combos.md
  • docs-site/src/content/docs/ru/guides/grok-build.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/ru/guides/sidecars.md
  • docs-site/src/content/docs/ru/reference/adapters.md
  • docs-site/src/content/docs/ru/reference/architecture.md
  • docs-site/src/content/docs/ru/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ru/reference/configuration/providers.md
  • docs-site/src/content/docs/ru/reference/configuration/routing.md
  • docs-site/src/content/docs/ru/reference/configuration/server.md
  • docs-site/src/content/docs/ru/reference/management-api.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/contributing.md
  • docs-site/src/content/docs/tr/guides/claude-code.md
  • docs-site/src/content/docs/tr/guides/codex-app-models.md
  • docs-site/src/content/docs/tr/guides/codex-integration.md
  • docs-site/src/content/docs/tr/guides/codex-prompt.md
  • docs-site/src/content/docs/tr/guides/combos.md
  • docs-site/src/content/docs/tr/guides/grok-build.md
  • docs-site/src/content/docs/tr/guides/providers.md
  • docs-site/src/content/docs/tr/guides/sidecars.md
  • docs-site/src/content/docs/tr/reference/adapters.md
  • docs-site/src/content/docs/tr/reference/architecture.md
  • docs-site/src/content/docs/tr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/tr/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/reference/configuration/routing.md
  • docs-site/src/content/docs/tr/reference/configuration/server.md
  • docs-site/src/content/docs/tr/reference/management-api.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-cn/contributing.md
  • docs-site/src/content/docs/zh-cn/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-cn/guides/codex-integration.md
  • docs-site/src/content/docs/zh-cn/guides/codex-prompt.md
  • docs-site/src/content/docs/zh-cn/guides/combos.md
  • docs-site/src/content/docs/zh-cn/guides/grok-build.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • docs-site/src/content/docs/zh-cn/guides/sidecars.md
  • docs-site/src/content/docs/zh-cn/reference/adapters.md
  • docs-site/src/content/docs/zh-cn/reference/architecture.md
  • docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/routing.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/server.md
  • docs-site/src/content/docs/zh-cn/reference/management-api.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/contributing.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-tw/guides/codex-integration.md
  • docs-site/src/content/docs/zh-tw/guides/codex-prompt.md
  • docs-site/src/content/docs/zh-tw/guides/combos.md
  • docs-site/src/content/docs/zh-tw/guides/grok-build.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sidecars.md
  • docs-site/src/content/docs/zh-tw/reference/adapters.md
  • docs-site/src/content/docs/zh-tw/reference/architecture.md
  • docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/routing.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/server.md
  • docs-site/src/content/docs/zh-tw/reference/management-api.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • docs/shadow-call-intercept.md
  • gui/.oxlintrc.json
  • gui/doctor.config.json
  • gui/src/App.tsx
  • gui/src/account-pool-strategy.ts
  • gui/src/api-access-models.ts
  • gui/src/app-routing.ts
  • gui/src/codex-quota-utils.ts
  • gui/src/combo-workspace-data.ts
  • gui/src/components/CodexAccountPool.tsx
  • gui/src/components/ComboWorkspace.tsx
  • gui/src/components/codex-account-pool-cards.tsx
  • gui/src/components/codex-account-pool-main-card.tsx
  • gui/src/components/codex-set/BaseVariantDialog.tsx
  • gui/src/components/codex-set/CustomLayerDialog.tsx
  • gui/src/components/codex-set/CustomLayerRow.tsx
  • gui/src/components/codex-set/PresetPicker.tsx
  • gui/src/components/codex-set/PromptLayerDialog.tsx
  • gui/src/components/codex-set/PromptLayerRow.tsx
  • gui/src/components/codex-set/custom-layer-state.ts
  • gui/src/components/codex-set/presets.ts
  • gui/src/components/codex-set/prompt-layer-copy.ts
  • gui/src/components/codex-set/prompt-lint.ts
  • gui/src/components/combo-workspace-add-modal.tsx
  • gui/src/components/combo-workspace-controls.tsx
  • gui/src/components/combo-workspace-detail-panel.tsx
  • gui/src/components/combo-workspace-overview-panel.tsx
  • gui/src/components/provider-catalog/ProviderCatalog.tsx
  • gui/src/components/provider-workspace/AnthropicAccountPoolSettings.tsx
  • gui/src/components/provider-workspace/ProviderCapacityQuota.tsx
  • gui/src/components/storage-workspace/StorageWorkspace.tsx
  • gui/src/i18n/de.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/log-guard-labels.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/icons.tsx
  • gui/src/model-display.ts
  • gui/src/pages/ApiKeys.tsx
  • gui/src/pages/CodexSet.tsx
  • gui/src/pages/Logs.tsx
  • gui/src/pages/Models.tsx
  • gui/src/pages/Storage.tsx
  • gui/src/pages/codex-set-multiauth.tsx
  • gui/src/pages/codex-set-prompt.tsx
  • gui/src/pages/codex-set-tab.ts
  • gui/src/pages/dashboard-overview-sections.tsx
  • gui/src/pages/dashboard-shared.ts
  • gui/src/pages/providers-page-utils.ts
  • gui/src/provider-workspace/report.ts
  • gui/src/styles-codex-set.css
  • gui/src/styles-dashboard-workspace.css
  • gui/src/styles-models-workspace.css
  • gui/src/styles.css
  • gui/tests/anthropic-pool-quota-window.test.tsx
  • gui/tests/api-access-models.test.ts
  • gui/tests/claude-code-background-helper.test.tsx
  • gui/tests/claude-desktop-locale.test.ts
  • gui/tests/codex-account-pool-pinned-badge.test.tsx
  • gui/tests/codex-set-base-variants.test.tsx
  • gui/tests/codex-set-custom-layers.test.tsx
  • gui/tests/codex-set-presets.test.tsx
  • gui/tests/codex-set-prompt-layers.test.tsx
  • gui/tests/codex-set-provider-enable.test.tsx
  • gui/tests/codex-set-recovery-interaction.test.tsx
  • gui/tests/codex-set-shell.test.tsx
  • gui/tests/codex-set-stack.test.tsx
  • gui/tests/combo-strategy-roundtrip.test.ts
  • gui/tests/dashboard-tabs.test.ts
  • gui/tests/fr-localization.test.ts
  • gui/tests/helpers/css-declarations.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/logs-auto-refresh.test.tsx
  • gui/tests/models-preset-selector.test.ts
  • gui/tests/models-provider-head.test.ts
  • gui/tests/page-loading-contract.test.tsx
  • gui/tests/provider-capacity-credits.test.tsx
  • gui/tests/provider-capacity.test.ts
  • gui/tests/shadow-call-model-options.test.ts
  • gui/tests/sidebar-codex-set.test.ts
  • gui/tests/sidebar-rows.test.ts
  • gui/tests/sidecar-layout.test.ts
  • gui/tests/storage-log-guard.test.tsx
  • gui/tests/storage-policy-metadata-warning.test.tsx
  • gui/tests/viewport-scroll-caps.test.ts
  • package.json
  • scripts/OCX-RUN.md
  • scripts/bump-dev-version.ts
  • scripts/ci/assert-mergeable-review.sh
  • scripts/disposable-host/codex-service-composed-acceptance.ts
  • scripts/generate-ocx-skill-surface.ts
  • scripts/model-metadata.source.json
  • scripts/ocx-restart.sh
  • scripts/ocx-run
  • scripts/test-run-lock.ts
  • scripts/test.ts
  • skills/ocx/SKILL.md
  • skills/ocx/references/01_management_surface.md
  • skills/ocx/references/02_json_shapes.md
  • skills/ocx/references/03_recipes.md
  • skills/ocx/references/04_failure_semantics.md
  • src/AGENTS.md
  • src/adapters/agentrouter.ts
  • src/adapters/anthropic.ts
  • src/adapters/base.ts
  • src/adapters/command-code.ts
  • src/adapters/cursor.ts
  • src/adapters/cursor/call-id.ts
  • src/adapters/cursor/catalog.ts
  • src/adapters/cursor/checkpoint-store.ts
  • src/adapters/cursor/cursor-errors.ts
  • src/adapters/cursor/discovery.ts
  • src/adapters/cursor/effort-map.ts
  • src/adapters/cursor/envelope-echo.ts
  • src/adapters/cursor/live-models.ts
  • src/adapters/cursor/live-transport.ts
  • src/adapters/cursor/message-mapper.ts
  • src/adapters/cursor/native-exec-desktop.ts
  • src/adapters/cursor/native-exec-fs.ts
  • src/adapters/cursor/native-exec-network.ts
  • src/adapters/cursor/native-exec-shell.ts
  • src/adapters/cursor/native-exec.ts
  • src/adapters/cursor/protobuf-request.ts
  • src/adapters/cursor/request-builder.ts
  • src/adapters/cursor/tool-definitions.ts
  • src/adapters/cursor/tool-result-normalize.ts
  • src/adapters/cursor/transport-retry.ts
  • src/adapters/cursor/types.ts
  • src/adapters/empty-tool-output-annotation.ts
  • src/adapters/exec-tool-result-normalize.ts
  • src/adapters/google-antigravity-replay.ts
  • src/adapters/google-antigravity-wire.ts
  • src/adapters/google-errors.ts
  • src/adapters/google.ts
  • src/adapters/image.ts
  • src/adapters/kiro-constants.ts
  • src/adapters/kiro-tools.ts
  • src/adapters/kiro.ts
  • src/adapters/ollama-native-url.ts
  • src/adapters/ollama-native.ts
  • src/adapters/openai-chat.ts
  • src/adapters/openai-responses.ts
  • src/adapters/registry.ts
  • src/adapters/run-turn-queue.ts
  • src/adapters/tool-catalog-nudge.ts
  • src/adapters/xai-tool-schema.ts
  • src/adapters/xai-web-search.ts
  • src/bridge.ts
  • src/chat/inbound.ts
  • src/chat/outbound.ts
  • src/claude/agents-inject.ts
  • src/claude/desktop-3p.ts
  • src/claude/desktop-policy.ts
  • src/claude/outbound.ts
  • src/cli/access.ts
  • src/cli/account-api.ts
  • src/cli/account-extended.ts
  • src/cli/account-main.ts
  • src/cli/account.ts
  • src/cli/agent.ts
  • src/cli/alias.ts
  • src/cli/capabilities-command.ts
  • src/cli/capabilities.ts
  • src/cli/claude-desktop.ts
  • src/cli/claude.ts
  • src/cli/combo.ts
  • src/cli/dispatch.ts
  • src/cli/doctor.ts
  • src/cli/help.ts
  • src/cli/index.ts
  • src/cli/init.ts
  • src/cli/inspect.ts
  • src/cli/models-runtime.ts
  • src/cli/models.ts
  • src/cli/observe.ts
  • src/cli/provider-runtime.ts
  • src/cli/registry.ts
  • src/cli/runtime-api.ts
  • src/cli/status.ts
  • src/cli/storage.ts
  • src/cli/system-command.ts
  • src/cli/usage-report.ts
  • src/cli/v2.ts
  • src/cli/version-skew.ts
  • src/codex/account-label.ts
  • src/codex/account-pause.ts
  • src/codex/account-priority.ts
  • src/codex/account-runtime-state.ts
  • src/codex/account-store.ts
  • src/codex/account-usability.ts
  • src/codex/app-server-processes.ts
  • src/codex/auth-api.ts
  • src/codex/auth-context.ts
  • src/codex/catalog.ts
  • src/codex/catalog/aggregation.ts
  • src/codex/catalog/bundled.ts
  • src/codex/catalog/metadata.ts
  • src/codex/catalog/native-models.ts
  • src/codex/catalog/parsing.ts
  • src/codex/catalog/provider-fetch.ts
  • src/codex/catalog/sync.ts
  • src/codex/codex-write-lock.ts
  • src/codex/convergence-types.ts
  • src/codex/convergence.ts
  • src/codex/data/upstream-models.json
  • src/codex/desired-state.ts
  • src/codex/desktop-app-restart.ts
  • src/codex/inject-coordination.ts
  • src/codex/inject.ts
  • src/codex/integration-record.ts
  • src/codex/log-guard/inspect.ts
  • src/codex/main-account.ts
  • src/codex/model-entitlements.ts
  • src/codex/prompt-layers.ts
  • src/codex/prompt-text-probe.ts
  • src/codex/quota.ts
  • src/codex/routing.ts
  • src/codex/runtime.ts
  • src/codex/subagent-model-fallback.ts
  • src/codex/transition-state.ts
  • src/codex/user-identity.ts
  • src/combos/index.ts
  • src/combos/reset-window.ts
  • src/combos/resolve.ts
  • src/combos/types.ts
  • src/compatibility/openai-responses.ts
  • src/config.ts
  • src/config/atomic-write.ts
  • src/config/provider-validation.ts
  • src/config/rebase-provenance.ts
  • src/grok/catalog.ts
  • src/grok/effort.ts
  • src/grok/inject.ts
  • src/grok/models.ts
  • src/grok/status.ts
  • src/grok/sync.ts
  • src/images/loop.ts
  • src/integrations/native/ownership-preflight.ts
  • src/integrations/ownership-policy.ts
  • src/integrations/ownership.ts
  • src/integrations/state.ts
  • src/integrations/writer.ts
  • src/lab/conformance/fixtures/protocol-v1-cases.json
  • src/lab/fabric/producer-child.ts
  • src/lab/fabric/producer-isolate.ts
  • src/lib/admin-secrets.ts
  • src/lib/config-ownership.ts
  • src/lib/destination-policy.ts
  • src/lib/errors.ts
  • src/lib/package-tree-integrity.ts
  • src/lib/redact.ts
  • src/lib/service-secrets.ts
  • src/lib/shadow-call.ts
  • src/lib/test-home-guard.ts
  • src/lib/upstream-retry.ts
  • src/lib/windows-secret-acl.ts
  • src/lib/windows-text.ts
  • src/lib/windows-user-principal.ts
  • src/oauth/account-quota-rank.ts
  • src/oauth/anthropic-routing.ts
  • src/oauth/chatgpt.ts
  • src/oauth/generic-account-failover.ts
  • src/oauth/index.ts
  • src/oauth/key-providers.ts
  • src/oauth/kiro.ts
  • src/oauth/store.ts
  • src/oauth/types.ts
  • src/providers/account-quota-disk.ts
  • src/providers/command-code-efforts.ts
  • src/providers/context-cap.ts
  • src/providers/default-aliases.ts
  • src/providers/derive.ts
  • src/providers/fastwire.ts
  • src/providers/key-failover.ts
  • src/providers/kiro-usage.ts
  • src/providers/label.ts
  • src/providers/model-presets.ts
  • src/providers/new-model-policy.ts
  • src/providers/ollama-show.ts
  • src/providers/openai-sidecar.ts
  • src/providers/provider-id-rewrite.ts
  • src/providers/quota-routing-cache.ts
  • src/providers/quota-types.ts
  • src/providers/quota-wire.ts
  • src/providers/quota.ts
  • src/providers/registry.ts
  • src/providers/slug-codec.ts
  • src/providers/vercel-gateway-routing.ts
  • src/responses/code-mode-helper-compat.ts
  • src/responses/custom-tool-compat.ts
  • src/responses/parser.ts
  • src/responses/schema.ts
  • src/responses/thought-signature-replay.ts
  • src/responses/turn-termination.ts
  • src/router.ts
  • src/routing/analytics.ts
  • src/routing/quota.ts
  • src/server/auth-cors.ts
  • src/server/catalog-download.ts
  • src/server/chat-completions.ts
  • src/server/chat-native-sse.ts
  • src/server/chat-native.ts
  • src/server/claude-messages.ts
  • src/server/gui-static.ts
  • src/server/index.ts
  • src/server/lifecycle.ts
  • src/server/management-api.ts
  • src/server/management/agent-settings-routes.ts
  • src/server/management/codex-prompt-routes.ts
  • src/server/management/combo-routes.ts
  • src/server/management/config-routes.ts
  • src/server/management/context.ts
  • src/server/management/logs-usage-routes.ts
  • src/server/management/model-routes.ts
  • src/server/management/native-integration-routes.ts
  • src/server/management/oauth-account-routes.ts
  • src/server/management/provider-routes.ts
  • src/server/management/route-registry.ts
  • src/server/management/routing-profile-routes.ts
  • src/server/management/shadow-call-validation.ts
  • src/server/proxy-liveness.ts
  • src/server/relay-eager.ts
  • src/server/relay.ts
  • src/server/request-log-conversation.ts
  • src/server/request-log.ts
  • src/server/responses-custom-tool-repair.ts
  • src/server/responses-terminal-repair.ts
  • src/server/responses-undeclared-tool-guard.ts
  • src/server/responses/agent-task-recovery-cache.ts
  • src/server/responses/agent-task-recovery.ts
  • src/server/responses/codex-auth-error.ts
  • src/server/responses/collaboration.ts
  • src/server/responses/combo-stream-preflight.ts
  • src/server/responses/compact.ts
  • src/server/responses/core.ts
  • src/server/responses/empty-completion-guard.ts
  • src/server/responses/fetch-helpers.ts
  • src/server/responses/input-admission.ts
  • src/server/responses/passthrough-error.ts
  • src/server/responses/policy-fallback.ts
  • src/server/responses/responses-field-backfill.ts
  • src/server/sse-frame-buffer.ts
  • src/server/startup-health-cache.ts
  • src/server/ws-bridge.ts
  • src/service-manager-probe.ts
  • src/service.ts
  • src/storage/cleanup.ts
  • src/storage/policy-job.ts
  • src/storage/policy.ts
  • src/storage/storage-mutation-coordinator.ts
  • src/tray/windows-tray.ps1
  • src/tray/windows.ts
  • src/types.ts
  • src/types/config.ts
  • src/types/provider.ts
  • src/types/request.ts
  • src/types/tools.ts
  • src/update/index.ts
  • src/usage/expected-prices.ts
  • src/usage/log.ts
  • src/usage/summary.ts
  • src/vision/anthropic-describe.ts
  • src/vision/describe.ts
  • src/web-search/anthropic-executor.ts
  • src/web-search/exa-executor.ts
  • src/web-search/executor.ts
  • src/web-search/gemini-executor.ts
  • src/web-search/loop.ts
  • src/web-search/xai-executor.ts
  • structure/02_config-and-codex-home.md
  • structure/03_catalog-and-subagents.md
  • structure/04_transports-and-sidecars.md
  • structure/05_gui-and-management-api.md
  • structure/08_openai-provider-tiers.md
  • structure/09_client-integrations.md
  • structure/10_adapter-registry.md
  • structure/11_compatibility-contracts.md
  • tests/abort-race.test.ts
  • tests/account-pool-management-api.test.ts
  • tests/active-registry-admission.test.ts
  • tests/adapter-buffered-tool-conformance.test.ts
  • tests/adapter-event-oauth-failover.test.ts
  • tests/adapter-registry-authority.test.ts
  • tests/adapter-tool-conformance.test.ts
  • tests/agent-task-recovery-combo.test.ts
  • tests/agent-task-recovery.test.ts
  • tests/alias-management-api.test.ts
  • tests/alibaba-intl-token-plan.test.ts
  • tests/anthropic-account-pool.test.ts
  • tests/api-catalog-route.test.ts
  • tests/api-key-attribution.test.ts
  • tests/api-usage.test.ts
  • tests/assert-mergeable-review.test.ts
  • tests/autostart-health.test.ts
  • tests/azure-model-router-tool-schema.test.ts
  • tests/bearer-admission-routed-provider.test.ts
  • tests/bridge-legacy-shell-normalization.test.ts
  • tests/bridge.test.ts
  • tests/buffered-response-shape-guards.test.ts
  • tests/bump-dev-version.test.ts
  • tests/catalog-verbosity-default.test.ts
  • tests/chat-completions-endpoint.test.ts
  • tests/ci-workflows.test.ts
  • tests/claude-agents-inject.test.ts
  • tests/claude-cli.test.ts
  • tests/claude-desktop-cli.test.ts
  • tests/claude-desktop-native-context.test.ts
  • tests/claude-desktop-policy.test.ts
  • tests/claude-models-discovery.test.ts
  • tests/claude-outbound.test.ts
  • tests/cli-account-pool-verbs.test.ts
  • tests/cli-account.test.ts
  • tests/cli-capabilities.test.ts
  • tests/cli-dispatch.test.ts
  • tests/cli-dto-fidelity.test.ts
  • tests/cli-headless-parity.test.ts
  • tests/cli-json-contract.test.ts
  • tests/cli-models.test.ts
  • tests/cli-native-profile.test.ts
  • tests/cli-restore-back.test.ts
  • tests/cli-start-journal-order.test.ts
  • tests/cli-status-json.test.ts
  • tests/cli-storage-inspect.test.ts
  • tests/cli-transport-honesty.test.ts
  • tests/cli-usage-report.test.ts
  • tests/cli-version-skew.test.ts
  • tests/cline-pass-provider.test.ts
  • tests/closed-pr-branch-cleanup.test.ts
  • tests/codex-account-store.test.ts
  • tests/codex-app-server-processes.test.ts
  • tests/codex-auth-api.test.ts
  • tests/codex-auth-context.test.ts
  • tests/codex-catalog-restore.test.ts
  • tests/codex-catalog-sync-hardening.test.ts
  • tests/codex-catalog.test.ts
  • tests/codex-composed-acceptance.test.ts
  • tests/codex-convergence-account-selectors.test.ts
  • tests/codex-convergence-contract.test.ts
  • tests/codex-coordinator-doctor.test.ts
  • tests/codex-envkey-admission-substitution.test.ts
  • tests/codex-inject-write-lock.test.ts
  • tests/codex-integration-record.test.ts
  • tests/codex-log-guard-inspect.test.ts
  • tests/codex-log-guard-maintenance.test.ts
  • tests/codex-main-account-refresh.test.ts
  • tests/codex-model-entitlements.test.ts
  • tests/codex-plan.test.ts
  • tests/codex-prompt-base-variants.test.ts
  • tests/codex-prompt-layers-write.test.ts
  • tests/codex-prompt-layers.test.ts
  • tests/codex-prompt-route.test.ts
  • tests/codex-prompt-text-probe.test.ts
  • tests/codex-quota-parser-parity.test.ts
  • tests/codex-refresh.test.ts
  • tests/codex-retained-root-serialization.test.ts
  • tests/codex-routing.test.ts
  • tests/codex-service-manager-probe-hardening.test.ts
  • tests/codex-spark-visibility.test.ts
  • tests/codex-sync-api.test.ts
  • tests/codex-tool-mode.test.ts
  • tests/codex-transition-state-adoption.test.ts
  • tests/codex-user-identity.test.ts
  • tests/codex-v2-gate.test.ts
  • tests/combo-management-api.test.ts
  • tests/combo-stream-preflight.test.ts
  • tests/combos.test.ts
  • tests/command-code-provider.test.ts
  • tests/command-code-quota.test.ts
  • tests/commandcode-provider.test.ts
  • tests/config-ownership-uninstall.test.ts
  • tests/config-rebase-provenance-writers.test.ts
  • tests/config-user-edits.test.ts
  • tests/config.test.ts
  • tests/core-lab-boundary.test.ts
  • tests/cursor-adapter.test.ts
  • tests/cursor-blob-integrity.test.ts
  • tests/cursor-blob.test.ts
  • tests/cursor-call-id.test.ts
  • tests/cursor-catalog.test.ts
  • tests/cursor-default-catalog-suppression.test.ts
  • tests/cursor-desktop-exec.test.ts
  • tests/cursor-discovery.test.ts
  • tests/cursor-effort-suffix.test.ts
  • tests/cursor-envelope-echo-retry.test.ts
  • tests/cursor-errors.test.ts
  • tests/cursor-exec-empty-result.test.ts
  • tests/cursor-hardening.test.ts
  • tests/cursor-protobuf-events.test.ts
  • tests/cursor-repetition-breaker.test.ts
  • tests/cursor-request-builder.test.ts
  • tests/cursor-silent-redirect.test.ts
  • tests/cursor-static-catalog.test.ts
  • tests/cursor-tool-definitions.test.ts
  • tests/cursor-tool-result-invocation.test.ts
  • tests/cursor-tool-suspended-checkpoint.test.ts
  • tests/cursor-ultra-mode.test.ts
  • tests/cursor-umbrella-rows.test.ts
  • tests/cursor-uncallable-quarantine.test.ts
  • tests/cyber-policy-error-fidelity.test.ts
  • tests/desktop-3p.test.ts
  • tests/desktop-app-restart.test.ts
  • tests/destination-policy-resolved.test.ts
  • tests/digitalocean-scaleway-provider.test.ts
  • tests/doctor-codex-envkey-readiness.test.ts
  • tests/doctor-provider-apikey.test.ts
  • tests/doctor.test.ts
  • tests/empty-completion-guard.test.ts
  • tests/empty-tool-output-annotation.test.ts
  • tests/exa-web-search.test.ts
  • tests/fastwire-observability.test.ts
  • tests/fetch-header-timeout.test.ts
  • tests/fixtures/commandcode-models.json
  • tests/fixtures/compatibility/openai-codex-forward-gpt56-sol-v1.json
  • tests/gemini-web-search.test.ts
  • tests/generic-oauth-failover.test.ts
  • tests/github-copilot-account-origin.test.ts
  • tests/google-adapter.test.ts
  • tests/google-antigravity-replay.test.ts
  • tests/google-antigravity-wire.test.ts
  • tests/google-errors.test.ts
  • tests/google-output-clamp.test.ts
  • tests/google-signature-history-roundtrip.test.ts
  • tests/google-vertex-thought-signature.test.ts
  • tests/grok-attribution.test.ts
  • tests/grok-config-inject.test.ts
  • tests/grok-effort-inject.test.ts
  • tests/grok-models-effort-list.test.ts
  • tests/grok-orphan-adoption.test.ts
  • tests/grok-selection.test.ts
  • tests/grok-status.test.ts
  • tests/grok-sync.test.ts
  • tests/gui-static.test.ts
  • tests/helpers/adapter-conformance/wire-drivers.ts
  • tests/helpers/codex-adoption-crash-child.ts
  • tests/helpers/management-route-scan.ts
  • tests/helpers/native-main-owner-child.ts
  • tests/helpers/owned-service-home-preload.ts
  • tests/helpers/owned-service-home.ts
  • tests/helpers/windows-power-shell-fixture.ts
  • tests/images/loop.test.ts
  • tests/init-eof.test.ts
  • tests/install-scripts.test.ts
  • tests/integrations-state.test.ts
  • tests/integrations-writer.test.ts
  • tests/issue-452-empty-503.test.ts
  • tests/issue-702-expired-replay-state.test.ts
  • tests/kiro-account-quota.test.ts
  • tests/kiro-adapter.test.ts
  • tests/kiro-builder-id-profile.test.ts
  • tests/kiro-pool-rank.test.ts
  • tests/kiro-stream.test.ts
  • tests/kiro-usage-quota.test.ts
  • tests/lab-activation.test.ts
  • tests/lab-fabric-task.test.ts
  • tests/legacy-shell-compat.test.ts
  • tests/local-management-direct-transport.test.ts
  • tests/management-client-config-route.test.ts
  • tests/management-provider-validation.test.ts
  • tests/management-route-registry.test.ts
  • tests/model-discovery-management-api.test.ts
  • tests/model-presets.test.ts
  • tests/model-visibility-management-api.test.ts
  • tests/moonshot-tool-schema.test.ts
  • tests/multi-agent-compat.test.ts
  • tests/multi-agent-keep-native-v1.test.ts
  • tests/muse-spark-web-search-compat.test.ts
  • tests/native-claude-desktop-toggle.test.ts
  • tests/native-grok-toggle.test.ts
  • tests/native-main-owner-lifetime.test.ts
  • tests/native-model-toggle.test.ts
  • tests/native-profile-crash-boundaries.test.ts
  • tests/native-profile-startup.test.ts
  • tests/new-model-policy.test.ts
  • tests/oauth-account-attribution.test.ts
  • tests/oauth-upsert-preserves-api-key.test.ts
  • tests/ocx-launcher-runtime.test.ts
  • tests/ocx-run.test.ts
  • tests/ollama-native-parser.test.ts
  • tests/ollama-native-reasoning-wire.test.ts
  • tests/ollama-native-structured-output.test.ts
  • tests/ollama-native-v4.test.ts
  • tests/ollama-native.test.ts
  • tests/ollama-show-enrichment-v7.test.ts
  • tests/ollama-show-enrichment.test.ts
  • tests/ollama-show-ignore-abort.test.ts
  • tests/openai-chat-hardening.test.ts
  • tests/openai-provider-option-e2e.test.ts
  • tests/openai-responses-passthrough.test.ts
  • tests/opencode-go-muse-context.test.ts
  • tests/opencode-go-muse-vision.test.ts
  • tests/owned-service-home.test.ts
  • tests/package-tree-integrity.test.ts
  • tests/passthrough-abort.test.ts
  • tests/preload.ts
  • tests/provider-account-quota-persistence.test.ts
  • tests/provider-account-quota.test.ts
  • tests/provider-live-models.test.ts
  • tests/provider-model-aliases.test.ts
  • tests/provider-model-discovery-contract.test.ts
  • tests/provider-quota.test.ts
  • tests/provider-registry-parity.test.ts
  • tests/provider-workspace-auth.test.ts
  • tests/proxy-env.test.ts
  • tests/proxy-liveness.test.ts
  • tests/rate-limit-reset-credits.test.ts
  • tests/reasoning-replay-identity.test.ts
  • tests/relay-eager.test.ts
  • tests/release-helper.test.ts
  • tests/release-version-line.test.ts
  • tests/repo-hygiene.test.ts
  • tests/request-log.test.ts
  • tests/responses-account-label.test.ts
  • tests/responses-compaction-routing.test.ts
  • tests/responses-custom-tool-repair.test.ts
  • tests/responses-fetch-helpers-boundary.test.ts
  • tests/responses-field-backfill.test.ts
  • tests/responses-forward-posit-continuation.test.ts
  • tests/responses-forward-prompt-envelope.test.ts
  • tests/responses-native-main-refresh.test.ts
  • tests/responses-pool-401-refresh.test.ts
  • tests/responses-routed-web-search-fields.test.ts
  • tests/responses-shadow-intercept.test.ts
  • tests/responses-state.test.ts
  • tests/responses-stateless-dangling-call-repair.test.ts
  • tests/responses-stream-tool-events.test.ts
  • tests/responses-terminal-repair.test.ts
  • tests/responses-undeclared-tool-guard.test.ts
  • tests/router.test.ts
  • tests/routing-policy-fallback.test.ts
  • tests/routing-profile-management-editor.test.ts
  • tests/run-turn-queue.test.ts
  • tests/server-auth.test.ts
  • tests/server-combo-failover-e2e.test.ts
  • tests/server-kiro-completion-e2e.test.ts
  • tests/service.test.ts
  • tests/session-lane-recall-harness.test.ts
  • tests/skill-ocx.test.ts
  • tests/slug-codec.test.ts
  • tests/sse-failed-tail.test.ts
  • tests/storage-mutation-race.test.ts
  • tests/storage-policy-config-race.test.ts
  • tests/subagent-context-staleness.test.ts
  • tests/subagent-fallback-handle-responses.test.ts
  • tests/subagent-model-fallback.test.ts
  • tests/terminal-guard-server.test.ts
  • tests/test-home-guard.test.ts
  • tests/test-runner.test.ts
  • tests/thought-signature-credential-scope.test.ts
  • tests/tool-catalog-nudge.test.ts
  • tests/transient-budget-scope-source.test.ts
  • tests/update-stop-first.test.ts
  • tests/upstream-http-version.test.ts
  • tests/upstream-transient-retry.test.ts
  • tests/usage-cost.test.ts
  • tests/usage-log.test.ts
  • tests/usage-summary.test.ts
  • tests/vercel-gateway-provider-routing.test.ts
  • tests/vision-reasoning-contract.test.ts
  • tests/volcengine-providers.test.ts
  • tests/web-search.test.ts
  • tests/windows-popup-fix.test.ts
  • tests/windows-secret-acl.test.ts
  • tests/windows-text-decoding.test.ts
  • tests/windows-tray.test.ts
  • tests/windows-user-principal.test.ts
  • tests/ws-upstream.test.ts
  • tests/xai-tool-schema.test.ts
  • tests/xai-transport.test.ts
  • tests/xai-web-search-compat.test.ts
  • gui/src/pages/CodexAuth.tsx
  • gui/tests/codex-auth-provider-enable.test.tsx
  • gui/tests/codex-auth-recovery-interaction.test.tsx
  • gui/tests/sidebar-codex-auth.test.ts
  • tests/update-stop-classification.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the bug Something isn't working label Aug 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • review readiness checklist open (0/4 boxes ticked).

What to do

  • Tick all four boxes in the PR description once you're done (currently 0/4).

Review readiness checklist

  • ⬜ All CI tests are green on my local testing.
  • ⬜ I pushed my PR to the latest dev commit.
  • ⬜ I resolved all correct Codex and CodeRabbit findings.
  • ⬜ My PR is ready for review.

0/4 boxes ticked.

This PR stays in draft until every box above is ticked.

@github-actions
github-actions Bot marked this pull request as draft August 31, 2026 03:50
@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 69 / 80

이 PR은 이슈 #3008을 고친다. 윈도우 대시보드에서 패키지를 올리려다 ocx stop 뒤에 업데이트가 끊기는 버그다. 지금 dev HEAD는 4180067 (패키지 2.37.0) 이고, 가드가 아직 src/update/index.ts 259행에 그대로 있다. 그 줄은 stop.status !== 0 이거나 pid가 남았거나 runtime-port가 남으면 프록시를 못 껐다고 보고 process.exit(1) 한다. 그런데 ocx stop 은 프록시만 죽이는 게 아니다. src/cli/index.tshandleStop 은 프록시를 끈 뒤 restoreSharedClientStateAfterStop 으로 Codex 이어받기 히스토리를 되돌린다. 히스토리 DB가 Codex 앱에 잠겨 있으면 되돌리기가 실패하고, 742–746행에서 stopFailed 가 참이 되며 종료 코드 1이 된다. 프록시는 이미 죽었는데 업데이트 가드만 그 1을 아직 산다고 읽는다. 결과는 포트에 아무도 없고, runtime 상태는 지워졌고, 설치본은 예전 버전 그대로다.

이 PR이 하는 일은 그 가드를 쪼개는 것이다. classifyStopForUpdatehistoryRestoreIncomplete 옆에서보내, 테스트하기 쉽게 만들었다. 입력은 stop 종료 코드와 proxyStillUp (pid 또는 runtime-port가 남아 있는지) 뿐이다. 프록시가 아직 살아 있으면 proceed: false 로 지금처럼 중단한다. 프록시가 꺼져 있으면 proceed: true 이고, 종료 코드가 0이 아닐 때만 stopStatus 를 남겨 경고를 찍는다. 그 다음 기존 historyRestoreIncomplete 경고가 비로소 이번 경로에서도 나온다. 예전에는 259행 가드가 먼저 막아서, 히스토리 매니페스트를 보고 경고하라는 269행 글이 바로 그 상황에서 닿지 못했다. 작성자가 이슈에 적어 둔 기대와, 이슈 #3008에 남긴 grok-bot 리뷰(우선순위 71)의 추천과 같다.

형제 PR #3039 는 같은 복구 세션에서 나온 #3009 용이다. 그쪽은 src/service.ts 의 윈도우 콜드스타트 헬스(45초 예산, grace probe) 이고, 이 PR은 src/update/index.ts 의 stop 가드만 다룬다. 미리보기 배포는 계획에 없다. types.ts/config.ts 분할과도 안 겹친다. 중복이 아니니 닫지 말고, 두 PR을 한 덩어리로 합치지도 말자. 테스트는 tests/update-stop-classification.test.ts 네 케이스다. 프록시가 꺼진 채 stop 실패면 진행, 성공이면 경고 없음, 프록시가 살아 있으면 status와 무관하게 거부, 시그널로 죽은 stop(status: null)은 숫자 실패로 안 본다. 작성자가 말한 대로 update-stop-first.test.ts 는 실제 프록시를 돌리므로 이번 순수 판정에는 안 넣었다. 범위가 좁고 맞다.

라인 259 (src/update/index.ts, 현재 HEAD) - stop.status !== 0 || readPid() || readRuntimePort() 한 묶음이 #3008의 직접 원인이다. 이 PR이 여기를 교체한다.
라인 classifyStopForUpdate (src/update/index.ts, PR 추가분) - 프록시 생존만으로 abort를 정하고, 비정상 stop 종료는 경고로만 올린다. 이슈 리뷰가 원한 좁은 고침과 같다.
라인 historyRestoreIncomplete 경고 블록 (src/update/index.ts 269행 근처) - 이제 stop 실패+프록시 다운 경로에서도 닿는다. 매니페스트 남은 채 패키지 교체를 허용하는 작성자 기대와 맞다.
라인 742-746 (src/cli/index.ts handleStop) - 히스토리 되돌리기 실패를 stop 종료 코드 1로 올리는 쪽은 이번 PR이 건드리지 않는다. 업데이트 가드만 느슨해진 것이고, stop 의미 자체는 그대로다. 의도된 분리다.
tests/update-stop-classification.test.ts - 네 케이스가 버그/경고/거부/시그널을 고정한다. 통합 테스트는 의도적으로 빠졌으니, CI에서 이 파일만 돌아도 회귀는 잡힌다.
PR 본문 체크리스트 - 아직 draft이고 네 칸이 비어 있다. 코드 방향은 맞지만 Ready 표시 전에는 로컬 통과와 latest dev 재기지를 확인해야 한다.

메인테이너의 판단이 필요한 지점

너의 추천
독립 버그 고침으로 받아라. types/config 분할로 닫을 PR이 아니고 #3039와도 중복이 아니다. 작성자가 draft 체크리스트를 채우고 latest dev 위에 올린 뒤 Ready로 바꾸면 머지해도 된다. 머지 후 #3008을 닫고, #3039는 그대로 따로 두라. 미리보기 배포는 하지 않는다.

이 댓글은 grok-bot이 작성했습니다

@ntdatt812
ntdatt812 marked this pull request as ready for review August 31, 2026 10:06
@github-actions
github-actions Bot marked this pull request as draft August 31, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants