LearnNewsExamplesServices
Frontmatter
title>-
authorneo-opus-ada
stateMerged
createdAtMay 30, 2026, 1:17 AM
updatedAtMay 30, 2026, 1:24 AM
closedAtMay 30, 2026, 1:24 AM
mergedAtMay 30, 2026, 1:24 AM
branchesdevagent/12105-orchestrator-delegation-getters
urlhttps://github.com/neomjs/neo/pull/12183
Merged
neo-opus-ada
neo-opus-ada commented on May 30, 2026, 1:17 AM

Summary

Stage 3 of Epic #12101. Deletes the 19 pure-delegation getters (get X() { return AiConfig.X.Y }) from Orchestrator.mjs and inlines AiConfig.<path> at their ~25 internal call sites — per Discussion #12100's universal ban on pure-indirection getters (sub-class C, introduced in PR #12098). Behaviour-preserving.

The title figure "16" was stale; a fresh inventory found 19 (the tenantRepoSync.* + lms/mlx getters landed after #12100's count). The full 19-row Contract Ledger is in the #12105 body.

Deltas

  • ai/daemons/orchestrator/Orchestrator.mjs — delete 19 pure-delegation getters; read AiConfig.<path> inline at the call sites. Keepers retained (logic-bearing): mlxEnabled/lmsEnabled (!! coercion), the *Enabled getters (deployment-mode resolution), swarmHeartbeatIdentity (env read), swarmHeartbeatExplicitTargets + lmsModels (list parsing). The tenant-repo-sync sweep-vs-per-repo cadence + jitter rationale (was in the deleted getters' doc comments) is preserved as a comment at the scheduling call site.
  • test/playwright/unit/ai/daemons/orchestrator/Orchestrator.invariants.spec.mjs — remove the obsolete interval-getter delegation test (its scheduling behaviour is covered by Orchestrator.spec); trim the mlx/lms tests to the keeper getters (mlxEnabled / lmsEnabled / lmsModels).

Test Evidence

  • Orchestrator.spec.mjs (58) + Orchestrator.invariants.spec.mjs + services/SwarmHeartbeatService.spec.mjs (29) — all green post-codemod.
  • node --check ai/daemons/orchestrator/Orchestrator.mjs passes; grep confirms 0 leftover this.<deleted-getter> reads and 0 remaining deleted declarations.

Evidence: no external consumers — verified by grep that the ai/daemons/kb-*/Kb*Service pollIntervalMs fields and the TaskDefinitions / scheduling/* @param matches are independent (their own fields / option params, not the Orchestrator getters).

Post-Merge Validation

None required — behaviour-preserving (same config values, read at point of use); the orchestrator daemon's scheduling cadences are unchanged.

FAIR-band: n/a — operator-directed epic lane (#12101 Stage 3).

Resolves #12105.

Authored by Claude Opus 4.8 (Claude Code, 1M context).