Skip to content

fix(app): resolve production session compatibility regressions - #9

Merged
henry701 merged 10 commits into
productionfrom
production-followups
Sep 5, 2026
Merged

fix(app): resolve production session compatibility regressions#9
henry701 merged 10 commits into
productionfrom
production-followups

Conversation

@henry701

@henry701 henry701 commented Sep 5, 2026

Copy link
Copy Markdown
Owner

[ai-agent-generated] This description is LLM-generated.

Scope

Production-only follow-up to #7. Preserve durable steering/queue admission, Stop semantics, rollback replacement, and accurate token accounting. No backend/terminal runtime refactor or upstream feature removal. Audit notes have been removed from the repository and retained outside it.

Fixes

  • Provider connection: tolerate a newly mounted integration catalogue that has not hydrated yet. Add delayed-catalogue browser coverage and assert no page errors; connected models remain distinct from available integrations.
  • Review tree and filtered file list: reactively bind the viewport when cached panels attach/reparent. Keep this logic in the existing fork helper, with point integrations in the two virtualizers. Regression coverage includes late mounting, reparenting, disconnection and observer cleanup.
  • Cached message text: retain indexed highlight spans when normalization creates equivalent reference objects, across native and compatibility rendering. Keep the strict cached-tab first-paint/no-DOM-removal assertions.
  • Undo/Redo regression: advance the existing 100ms dialog-close timer before issuing the next shortcut. The portal disappearing does not mean the modal command lock has expired; no command runtime change is necessary.
  • History smoke: directly load the session being tested rather than aborting two unrelated documents' initial requests. Retain all history ordering, completeness, no-error, and no-blank assertions. Dedicated cold/cached SPA tab-switch tests remain unchanged.
  • Windows CI: replace unavailable Chocolatey ripgrep 15.1.0 with the official release ZIP, pinned SHA-256 verified before extraction.

Additional root causes resolved

  • Optional integration discovery must not suspend the entire session when a model picker mounts. Guard the initial resource read; the delayed-catalogue connection form now remains usable before the catalogue response arrives. Model-switch scroll and terminal/composer regressions pass without changing their assertions.
  • Context button state changes are atomic so mounting the side panel cannot overwrite the requested Context selection with Review. Cover recorded/live/rollback usage in both legacy and V2 layouts.
  • Compatibility normalization now preserves the admitted user payload's agent/model/variant, including before an assistant exists. A later assistant cannot rewrite those recorded choices. This removes contradictory native/compatibility restoration; schema-validated regression and browser manual-selection/submission coverage are included.

Validation (application code unchanged since 0aba3ce6a5)

  • Full app browser suite: 249 passed, 3 existing skips, Chromium and Firefox, 5m.
  • Full workspace tests: 10/10 tasks passed (8 cached, app/UI revalidated). Earlier uncached affected backend run: core 1,142 tests; opencode 3,627 passed / 22 skipped / 1 todo.
  • App: 802 unit tests + 51 browser-condition tests pass. Session UI: 86 tests pass.
  • Normal push hook: 30/30 workspace typechecks pass. Separate app e2e typecheck passes.
  • Final production tab-switch benchmarks: both pass. Median stable times before/after (ms): legacy cold 162.5/131.3, hot 135.4/119.0; V2 closed cold 171.6/131.5, hot 150.2/119.5; V2 review open cold 170.3/114.5, hot 154.8/113.8. These are local observations, not a performance guarantee; CPU throttling was not changed.
  • Official Windows ripgrep archive SHA-256 checked locally; workflow YAML parses. The previous Chocolatey failure was a missing package, not quota. Earlier intermittent Bun patch installation errors have not recurred in the current Windows jobs; no speculative runtime/version upgrade was made.
  • Repeated full workspace suite on CI-pinned Bun 1.3.14: 10/10 tasks passed uncached (5m39s). All three HTTP API gates pass on both Bun 1.3.14 and installed Bun 1.4.0: 236 scenarios per mode, 708 total, zero failures/skips/missing routes.
  • Hosted Linux and Windows browser suites passed, each with 247 first-attempt passes, 2 retrying cases, and 3 existing skips. The two Linux retrying specs also passed 36 local repeat cases. Retries are disclosed, not represented as flake-free CI.
  • Hosted Linux unit/generated-client/HTTP API gates pass. A previous HTTP API run stalled in effect mode and was superseded after more than an hour; the unchanged gate passed on rerun. No quota failure occurred.
  • Windows unit diagnosis: the first run hit the 20-minute job-step budget with buffered output. Streamed output then identified three native-process tests hitting Bun’s default 5-second deadline (PowerShell and two Git snapshot tests), with subprocess termination causing follow-on assertions. Those three tests passed after a 30-second budget. Further runs identified the same default-deadline problem in Git repository-cache integration tests, so the final minimal change aligns core’s test command with opencode’s existing 30-second default instead of modifying individual test bodies. All assertions remain unchanged; 1,142 core tests and core typecheck pass locally. The fork Windows job has a 60-minute overall budget; upstream retains 20.
  • Windows completed the full core suite with the revised budgets. The subsequent opencode run exposed harness portability issues: path variants must retain their drive when checkout and temp directories are on different drives; immediate EOF includes cold ACP startup; optional terminal capture cannot require an edit when script(1) is absent. The queue smoke now edits through the API when terminal capture is unavailable/disabled, while retaining real terminal edit coverage on Linux. Both paths retain exact FIFO and edited-payload assertions and run locally. 53 affected tests, opencode typecheck, Bash syntax and ShellCheck pass.
  • Final Linux gates pass; Windows remains non-blocking per the owner’s explicit instruction. PR merged and local reinstall completed (details below).

Merge gate — final head 05da27e

The owner explicitly authorized merging once Linux browser and terminal criteria pass, without waiting for Windows. Exact-head hosted Linux unit/terminal tests, generated-client verification, all HTTP API gates, browser e2e and typechecks pass. Windows jobs remain non-blocking and are not claimed green. The final CI configuration serializes fork Windows workspace tasks to reduce contention and gives the all-locale ICU initialization test 30 seconds (a prior runner needed 8.4 seconds). No assertions were removed. A prior Windows workspace-sync interruption cascaded into instance teardown failures; three local repeat runs of the workspace/bootstrap suites passed (120 tests). That intermittent Windows behavior remains a follow-up if it recurs.

Result

Merged as 1d4243dd5a803bfc8826e4118e60d27ea8de5e25. Final Linux browser CI: 248 first-attempt passes, one retrying case, three existing skips. All 10 hosted workspace tasks pass, including 3,628 opencode tests; all 708 HTTP API scenarios pass. Installed 0.0.0-production-202609051946 from the merged production checkout with fresh embedded web assets; built and installed SHA-256 match. Backend/proxy services were not restarted. Authenticated live-service smoke testing is left to the owner after restart. Audit notes remain outside the repository.

@henry701
henry701 marked this pull request as ready for review September 5, 2026 15:04
@henry701
henry701 merged commit 1d4243d into production Sep 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant