Skip to content

fix(server): block updates under legacy service launchers - #11940

Merged
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
Gigioxx:fix/service-launcher-protocol-11934
Sep 15, 2026
Merged

juliusmarminge merged 1 commit into
pingdotgg:mainfrom
Gigioxx:fix/service-launcher-protocol-11934

Conversation

@Gigioxx

@Gigioxx Gigioxx commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Older background-service launchers still expect node_modules/t3/dist/bin.mjs, so they reject complete standalone runtimes with a misleading “missing or incomplete” error.

Bump the launcher protocol to 3 so the existing staged preflight blocks activation with the instruction to update the launcher on the server machine. Document the runtime-layout compatibility boundary and cover legacy protocols 1 and 2. A local t3 update is still required to upgrade the launcher.

Closes #11934.

Verification

  • Reproduced the exact rejection using the pre-feat(server): manage runtimes as release archives only, never from npm #11510 launcher and disposable runtime fixtures; the same fixture now stops at preflight with the actionable message.

  • Protocol-2 regression test failed before the fix. All 65 focused preflight, self-update, launcher, launcher-client, and boot-service tests pass.

  • Server typecheck, focused lint, and formatting pass.

  • Isolated Chrome and disposable dev server: a controlled update RPC failure displays the actionable message and keeps Retry available. No installed service was updated.

  • Claude Opus 5 reviewed the change before PR creation: no actionable findings.

Model: GPT-6, using the Codex harness.

Summary by CodeRabbit

  • Bug Fixes
    • Improved service compatibility checks to provide a clear message when the installed launcher is outdated.
    • Services now require the updated launcher protocol and standalone executable layout.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Sep 15, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 0fe5e74

Macroscope's review found this PR approvable — This is a small, targeted compatibility fix that blocks unsafe updates from legacy launchers while preserving the current protocol path. Its runtime impact is confined to the existing service preflight boundary and is directly covered by tests.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: b6e44433-a505-4b1d-96d4-3dd5a4f4d44e

📥 Commits

Reviewing files that changed from the base of the PR and between 3efdcc5 and 0fe5e74.

📒 Files selected for processing (2)
  • apps/server/src/cloud/servicePreflight.test.ts
  • apps/server/src/cloud/serviceProtocol.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The service launcher protocol advances from version 2 to version 3. Preflight tests now verify that launcher protocols 1 and 2 return the complete blocked response.

Changes

Service launcher compatibility

Layer / File(s) Summary
Protocol contract and preflight coverage
apps/server/src/cloud/serviceProtocol.ts, apps/server/src/cloud/servicePreflight.test.ts
SERVICE_LAUNCHER_PROTOCOL is now 3, with documentation for the standalone executable layout and incompatible runtime tree changes. Tests cover launcher protocols 1 and 2 and assert the full blocked response.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: t3dotgg

Merge Risk: ⚪ Minimal · up to 0fe5e

The protocol update rejects legacy launchers and adds coverage for protocols 1 and 2. No concrete merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: blocking updates under legacy service launchers.
Description check ✅ Passed The description explains what changed, why it changed, verification results, and the linked issue. It does not use the template headings or include the checklist, but it is mostly complete and remains…
Linked Issues check ✅ Passed The change satisfies the coding requirements in [#11934]. SERVICE_LAUNCHER_PROTOCOL changes from 2 to 3, which activates the existing preflight compatibility gate for legacy launchers. The proto…
Out of Scope Changes check ✅ Passed The reviewed changes are limited to the launcher protocol constant, its compatibility documentation, and focused preflight tests. These changes directly implement and verify [#11934]. No unrelated pro…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@juliusmarminge
juliusmarminge merged commit b84f63b into pingdotgg:main Sep 15, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: background service self-update fails permanently against a pre-#11510 service-launcher.mjs

2 participants