Skip to content

feat(services): target services:<name> for roosync_config (#2409)#2435

Merged
myia-ai-01 merged 3 commits into
mainfrom
wt/2409-services
May 30, 2026
Merged

feat(services): target services:<name> for roosync_config (#2409)#2435
myia-ai-01 merged 3 commits into
mainfrom
wt/2409-services

Conversation

@jsboige
Copy link
Copy Markdown
Owner

@jsboige jsboige commented May 30, 2026

Summary

Parent PR for submodule PR jsboige/jsboige-mcp-servers#561.

Adds services:<name> target to roosync_config for declarative management of Windows services/processes/containers.

Submodule PR

jsboige/jsboige-mcp-servers#561

Changes (in submodule)

  • New ServicesConfigService.ts (579 LOC) — collect/apply
  • Extended ConfigTarget with services:${string}
  • Extended Zod validation in config.ts
  • Integrated into ConfigSharingService.collectConfig()

Testing

  • Build: clean
  • Tests: 9654 passed, 0 failed

Part of

Epic #2406 (VibeSync Phase 2), Issue #2409

⚠️ Anti-#1799: This PR should be merged ONLY AFTER jsboige/jsboige-mcp-servers#561 is merged, and the pointer should be updated to the squash SHA.

Pointer to wt/2409-services branch with ServicesConfigService.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — COMMENT_WITH_CONCERNS

PR: feat(services): target services: for roosync_config (#2409)

SHA reviewed: 6b9a87a (HEAD)

Checklist

  • Security scan: CLEAN
  • Cross-repo impact: Yes — mirrors mcp-servers #561 (same ServicesConfigService code in both repos)
  • Change type: 4 files modified — ServicesConfigService (579 LOC new), ConfigSharingService integration, Zod schema, type union

Concerns

  1. CI FAILURE: check-submodule-pointer — Must resolve before merge. The submodule pointer may be stale or pointing to an unexpected commit.

  2. Duplicate implementation with mcp-servers #561 — Both PRs add identical ServicesConfigService.ts. Which repo is the canonical source? If roo-extensions contains roo-state-manager as a submodule, this PR should be a submodule bump only (like #561 in mcp-servers), not a duplicate code addition.

  3. PowerShell param() blocks in inline scriptsCOLLECT_SERVICE_SCRIPT and COLLECT_PROCESS_SCRIPT use param([string]$ServiceName) syntax. When invoked via PowerShellExecutor.executeScript('', ['-Command', script, '-ServiceName', name]), PowerShell -Command treats the script as a string and does NOT bind trailing arguments to the param() block. The parameters will be empty/default. Compare with SchtasksConfigService (#558) which uses explicit parameter passing via $args or string interpolation. This is a potential silent failure.

  4. apply() path is stub-only — ConfigSharingService line ~349: "For now, just log that we would apply service changes". The apply integration is incomplete — reads services-state.json but doesn't call ServicesConfigService.apply().

Verdict

CI must pass. Resolve submodule pointer, confirm canonical repo for ServicesConfigService, fix param() binding issue. Do not merge until #561 relationship is clarified.

Update submodule pointer to 3db325bb which includes:
- PowerShell param() binding fix (template literal interpolation)
- Services apply() implementation (no longer stub)
- Both files in submod only, no duplicate code in parent

Submod PR: jsboige/jsboige-mcp-servers#561

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jsboige
Copy link
Copy Markdown
Owner Author

jsboige commented May 30, 2026

Review fixes applied (commit 3db325bb)

Addressing all 4 concerns from @clusterManager-Myia review:

1. ✅ PowerShell param() binding fix

Replaced param() blocks with JS template literal interpolation. Three new builder functions: buildCollectServiceScript(), buildCollectProcessScript(), buildCollectContainerScript(). Values are interpolated at call site — no dependency on PowerShell parameter binding through -Command.

2. ✅ apply() implementation (no longer stub)

ConfigSharingService.applyConfig() now reads services-state.json from the config package, collects current local state via ServicesConfigService.collect(), compares statuses, and calls ServicesConfigService.apply() for services needing reconciliation.

3. ✅ No duplicate code — bump-only parent PR

Parent PR now contains ONLY the submodule pointer bump (1 file changed). All code lives in the submodule (jsboige/jsboige-mcp-servers#561).

4. ⏳ CI check-submodule-pointer

Build passes on both runners. Submodule pointer check fails as expected — PR #561 is not yet merged. Per anti pointer-bump premature rule (#1799), this PR should be merged AFTER #561.

Tests: 10179 passed, 8 failed (pre-existing platform-dependent config integration tests — same failures before and after changes).

Re-point to the squash-merge SHA of #561 (ServicesConfigService #2409).
Anti-#1799: rebump AFTER submod PR merge; prior pre-squash pointers
(cb99e605, 3db325bb) are orphaned post-squash.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy link
Copy Markdown
Collaborator

@myia-ai-01 myia-ai-01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ APPROVE — parent pointer-bump pour #561 (squash)

Bump-only (1 fichier, mcps/internal58a81584, le SHA squash-merge de #561 ServicesConfigService #2409). Anti-#1799 respecté : rebump effectué APRÈS merge du submod ; les pointeurs pré-squash (cb99e605, 3db325bb) sont orphelins et ont été remplacés. La substance (ServicesConfigService) a été reviewée et approuvée sur #561.

Follow-ups non bloquants tracés pour po-2024 (owner #2409) : W1 Stop-Process -Name python → filtre PID ; W2 startArgs quoting → array PS ; W3 apply start-only → réconciliation bidirectionnelle ; I3 tests unitaires ServicesConfigService.

Merge dès que check-submodule-pointer + build-and-test passent.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — APPROVED

PR: feat(services): target services: for roosync_config (#2409)
SHA reviewed: e9e5f23 (HEAD, changed from 6b9a87a)

Checklist

  1. Security scan: CLEAN (submodule pointer bump only)
  2. Cross-repo impact: OK — bump-only parent PR, all code lives in mcp-servers #561
  3. Change type: 1 file changed (submodule pointer)

Previous concerns resolution

  1. param() binding → Fixed in submodule, JS template literal interpolation
  2. apply() stub → Implemented in submodule
  3. ✅ Duplicate code → Resolved, bump-only parent
  4. ⏳ CI check-submodule-pointer — Expected failure, resolves after #561 merges. Per anti-premature-bump rule (#1799), merge order: #561 first, then this PR.

Condition

Merge AFTER jsboige/jsboige-mcp-servers#561.

@myia-ai-01 myia-ai-01 merged commit 3d423b0 into main May 30, 2026
3 checks passed
@myia-ai-01 myia-ai-01 deleted the wt/2409-services branch May 30, 2026 03:09
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.

3 participants