Repository navigation
test(cloud-agent-next): share one e2e scenario definition across both profiles - #6476
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (7 files)
Previous Review Summaries (3 snapshots, latest commit 89582c3)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 89582c3)Status: 7 Issues Found | Recommendation: Address before merge Executive SummaryThe Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (50 files)
Fix these issues in Kilo Cloud Previous review (commit ea5b794)Status: No Issues Found | Recommendation: Merge Executive SummaryThe incremental commit resolving the prior shared-E2E harness remarks was reviewed at Files Reviewed (7 files)
Previous review (commit 4137be7)Status: 10 Issues Found | Recommendation: Address before merge Overview
Fix these issues in Kilo Cloud Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (50 files)
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
…n use Add worktree-chat, worktree-multi-chat, long-conversation and leave-and-return to the shared scenario set, so one implementation runs under both the local Docker profile and the deployed HTTP profile using only public tRPC, streams, fake-LLM /test/* and the sessionSandbox capability. No Docker file/process inspection, worker logs or Postgres. - public-surface-support and scenarios-shared-runtime: shared deadline, allocation sampling, owned-session registry with late-create cleanup, cumulative sendTurn budget, extracted from the local-only modules - removal-aware collectChildMessageText - resolve shared-only scenario names in local dispatch - lint allowlist, README/SESSION-CONTINUITY/deploy docs, e2e workflow timeout 45 -> 120 minutes
… profiles Replace the local-only and shared scenario registries with a single SHARED_SCENARIOS definition that runs on the Docker and deployed public profiles. Scenarios declare the capabilities they need; unsupported ones exit as expected-unsupported instead of being duplicated. - add file:write/file:seed/file:read fake-LLM directives with a single directive parser, op-aware tags and single-use completion - add gates (local-only) and sandboxFaults (local-only, Docker-backed) capabilities and derive the expected-unsupported exit - re-scope worktree-multi-chat onto shared-checkout write/overwrite, question ownership, answer isolation and delete survival - absorb real file turns into long-conversation; add question-idle-resume, large-stream, concurrent-chats, external-kill, kill-mid-flight and the two wrapper-freeze scenarios - delete lifecycle-continuity/lifecycle-file-state, owned-gates, worktree-support and the redundant followup/waiters-clean/gate-0/ cold-resume/warm-cold-cycles/recover-same-session/feed-stale-recovery scenarios - derive the deployed workflow timeout from the shared registry budgets
The two shared-e2e commits were authored on a branch that never ran CI, so 22 harness files were committed without oxfmt reflow and the format-check job failed. Reflow only: no logic, identifiers or string literals change.
- runConcurrentChats: own the boot stream before the echo/allocation assertions, track and close the recovery stream, and fold each hold's events exactly once in `finally` (a hold stream stays open and appends while the other hold's recovery runs) - worktree-multi-chat: register the four file turns' messageIds so chat-content isolation actually covers them - createOwnedSessionRegistry: `register` upgrades an `undefined` placeholder but never clobbers an already-defined kiloSessionId, and the interface comment now states that contract; regression tests added for both the upgrade and the defined-to-undefined clobber case - docs: drop the unsupported "249 min derived from the registry" claim from both e2e READMEs and the deployed workflow comment, correct the public-surface ceilings to 10 + 25 + 12 + 30, the long-conversation turn count to twelve, the `hot=12/12` artifact, the false claim that the long scenarios are excluded from DEFAULT_MATRIX, and the "no interrupt" claim for worktree-multi-chat
ea5b794 to
89582c3
Compare
…nostics Address the Kilobot review on the shared e2e harness: - release the parked `kill-mid-flight` gate in the scenario `finally` with a bounded signal, so an early failure before the container kill cannot leave the fake's gate parked for the rest of the server's lifetime - fold each stream's buffered events into the failure diagnostic exactly once through one `foldStream` owner, instead of re-appending buffers that were already folded; events of a stream opened but not yet folded are still kept - count `message.part.updated` events in `collectCorrelatedProgress` even when no assistant child id was established, so the diagnostic distinguishes "no events for this turn" from "events but no correlated child" (the pass rule stays `correlated > 0`) - name `interrupt-then-continue` in the worktree-enrollment list and state the scenario capability rule that matches the registry
Third PR in the deployed-E2E stack. Base: #6284.
Replaces the separate local-only and shared scenario registries with a single
SHARED_SCENARIOSdefinition that runs on the Docker and deployed publicprofiles. Scenarios declare the capabilities they need; an unsupported profile
reports
unsupportedwith the missing capability names instead of running aweakened duplicate.
file:write/file:seed/file:readfake-LLM directives with onedirective parser, op-aware tags and single-use completion (409 on replay)
gatesandsandboxFaults(local-only, Docker-backed) capabilities andderive the expected-unsupported exit
worktree-multi-chatonto shared-checkout write/overwrite, questionownership, answer isolation and delete survival
long-conversation; addquestion-idle-resume,large-stream,concurrent-chats,external-kill,kill-mid-flightand thetwo wrapper-freeze scenarios
lifecycle-continuity/lifecycle-file-state,owned-gates,worktree-supportand the redundantfollowup/waiters-clean/gate-0/cold-resume/warm-cold-cycles/recover-same-session/feed-stale-recoveryscenarios
Deployed gaps are expected and explicit: the four
sandboxFaultsscenarios areunsupportedon the deployed profile;auth-rejectruns only deployed.Verification: lint 0/0; typecheck clean; unit 7236 passed | 3 skipped;
fake-llm 16 passed; integration 700/701 (the one failure is a 5s-timeout load
flakes in
test/integration/sandbox-control.test.ts, untouched by this branch,passing in isolation). Full local E2E matrix run separately.
Test-only: no
src/orwrapper/changes.