Repository navigation
feat(server): orchestrator v2 core fixes (upstream G1) - #1002
Merged
Merged
Conversation
Adds the upstream t3code/no-test-in-loop oxlint rule and rewrites every loop-declared test in Pylon to the .each form. Pylon adaptation: files whose Pylon content diverged from upstream keep their Pylon content (branding, extra tests, numbering) and only the flagged loops were rewritten. Pylon-only test files that the rule flags (Prime daemon, legacy v2 bridge, Codex absolute history, provider, MCP, desktop and client-runtime tests) were rewritten the same way with unchanged test counts and names. The upstream-only reconcileV2PreviewMigration test is not present in Pylon and is dropped. Pylon's approved v2 test exceptions from #989 (branding and migration-numbering assertions) are preserved. (cherry picked from commit fd7ee2c30a7eeef910c99e7bc92e944526555db7) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adopted unchanged; the touched v2 files match Pylon's adopted baseline. (cherry picked from commit ca7df394ed8151fa77f856beefa90bc60a785d60) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(#15029) Pylon adaptation: the Sidebar.logic conflict keeps Pylon's Working section (#991) helpers unchanged and takes only the updated resolveWorkingStartedAt doc comment; the timer value already flows through client-runtime. (cherry picked from commit 736130c2fd39b85cd515fa2a41cd10c8a8a52630) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The reactor only refreshes open PR snapshots after a run that ran a merge or close command; the settle decision stays in ThreadSettlementService, so Pylon's auto-settle-on-merge setting and per-thread auto-settle opt-out still apply. Pylon adaptation: overview doc says Pylon instead of T3. (cherry picked from commit ca4f84e702428656665d53635e16251112091657) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adopted unchanged; the touched v2 files match Pylon's adopted baseline. Pylon's Codex app-server reopen fix (#990) lives in CodexAdapterV2 and the replay recovery suite, which pass with the new release-record retries. (cherry picked from commit 6108ef3d3d0ef2a598088a1bb64980580e935830) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Regression coverage for the upstream ProviderSessionManager release changes with the Pylon Prime v1->v2 bridge: a closed bridge session stops the legacy runtime and publishes the maintenance drain receipt, a maintenance reservation fences new admission through the manager, a release whose records fail to persist still drains and is recorded by the retry, and a failed Prime daemon stream releases the session as an error and drains. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…V2 (#15041) Partial port of upstream ddcd310282. Adopted: migrate-dev-db prunes the V2 database (statev2.sqlite) by thread family and recovery state, the Orchestrator interrupt TODO and TODO.md cleanup, stale comments in storageCleanup and the lint rule, the mobile-showcase seed keeping V2 projects, the removed manual-runtime debt list for deleted V1 tests, and the devices.md link fix. Pylon adaptations: migrate-dev-db defaults its source to ~/.pylon-code/userdata/statev2.sqlite (never ~/.t3); glossary and providers docs take the V2 terms and the OpenCode 1.x/2.x section in Pylon wording, keeping Pylon's reactor/runtime-receipt terms used by AGENTS.md. Skipped: migration comment renumbering (Pylon numbers V2 as 68/69), T3 AGENTS.md, CONTRIBUTING.md and test-t3-app fixture docs, shardWeights.json, the CI gate change requiring transfer-report, and the composer-context doc hunk (Pylon's doc has no stale reference). (cherry picked from commit ddcd3102827f520e3dff53b902111744c0ba2ced) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The Prime daemon events test imports an untyped Vitest runner, so the .each callbacks from the no-test-in-loop rewrite need explicit case types. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports upstream group G1, orchestrator v2 core fixes, onto
pylonin upstream order. Pylon adopted v2 from upstreamde34391427. Pylon's own v2 changes are kept: the #989 test exceptions, the #990 Codex reopen fix, and the ThreadLaunchService delta.Sources
fd7ee2c30alint: forbid tests in for loops (#14921)t3code/no-test-in-loopand rewrites every flagged loop to.each. Where Pylon's file differed from upstream, Pylon's content stays and only the flagged loops changed. Pylon-only suites the rule flags were rewritten the same way: Prime daemon, legacy v2 bridge, Codex absolute history, provider, MCP, desktop, client-runtime and the vcs/settings tests. Test counts and names are unchanged. Upstream'sreconcileV2PreviewMigration.test.tsdoes not exist in Pylon and is dropped.ca7df394edsteers keep the newest next-turn selection (#14725)736130c2fdworking timers no longer reset on background wakes (#15029)Sidebar.logic.tsconflict keeps the Working section helpers (#991) and takes only the updatedresolveWorkingStartedAtdoc comment. The timer value reaches web and mobile through client-runtime.ca4f84e702threads settle when an agent merges their PR (#15024)overview.md. The reactor only re-reads open PR snapshots.ThreadSettlementServicestill decides settlement, sosidebarAutoSettleOnMergeand the per-thread auto-settle opt-out still apply; its tests pass.6108ef3d3druns no longer get stuck (#15048)LegacyAdapterV2SessionManager.test.tscovers the Prime bridge going through the new session-manager release path, listed below.ddcd310282docs, dev scripts and CI catch up with V2 (#15041)migrate-dev-dbV2 rewrite (default source~/.pylon-code/userdata/statev2.sqlite, never~/.t3), removal of the Orchestrator interrupt TODO andTODO.md, the stale comments, the vite manual-runtime debt list for deleted V1 tests, the mobile-showcase seed, and the devices link. Adapted: glossary and providers docs, in Pylon wording. Skipped: migration comment renumbering (Pylon numbers V2 as 68/69), T3AGENTS.md/CONTRIBUTING.md/test-t3-app fixture docs,shardWeights.json, the CI gate requiringtransfer-report, and the composer-context doc hunk (Pylon's doc has no stale reference).Pylon adaptations
apps/server/src/provider/legacy/LegacyAdapterV2SessionManager.test.ts). Three tests open the real bridge throughProviderSessionManagerand wait on events and drain receipts, not sleeps:stoppedonce the store recovers.errorand drains..agents/references/local-development.mdnow snapshotsstatev2.sqlite, noting that pre-v2 installs may only havestate.sqlite(migrate-dev-dbthen fails safely with source-missing; pass--source).OrchestratorReplayRecovery.integration.test.ts, the Codex adapter suite and the session-manager suite pass with the new release-record retries and ownership-read changes.AGENTS.mdstill uses.migrate-dev-db: the doc and the test assertion now namestatev2.sqlite.PrimeAgentDaemonEvents.test.tsimports an untyped Vitest runner, so its.eachcallbacks got explicit case types.Verification
vp test run src/orchestration-v2 src/provider/legacy scripts/migrate-dev-db.test.tsinapps/server: 1657 passed, 13 skipped, 1 environment failure.claude_result_is_error/claudeAgentfails only because this machine setsCLAUDE_CONFIG_DIR. It passes withenv -u CLAUDE_CONFIG_DIR, as fix(server): reopen Codex sessions whose app-server exited #990 also noted.vp linton every test file containing a loop reports nono-test-in-looperrors.vp fmt --checkandvp linton the changed files are clean apart from one existing warning inOrchestrator.ts.error TS:vp run -F t3,@t3tools/web,@t3tools/desktop,@t3tools/client-runtime,@t3tools/contracts,@t3tools/shared,@t3tools/mobile,t3code-relay,effect-acp.Not verified
migrate-dev-dbwas not run against a real database. Only its isolated tests ran.Part of upstream cycle #996.
🤖 Generated with Claude Code