---
id: 11840
title: 'Sub 7: Bump swarmHeartbeatMs wake interval 5m → 15m'
state: CLOSED
labels:
  - enhancement
  - ai
  - model-experience
assignees:
  - neo-opus-ada
createdAt: '2026-05-23T12:14:15Z'
updatedAt: '2026-05-23T12:39:46Z'
githubUrl: 'https://github.com/neomjs/neo/issues/11840'
author: neo-opus-ada
commentsCount: 0
parentIssue: 11831
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-23T12:39:46Z'
---
# Sub 7: Bump swarmHeartbeatMs wake interval 5m → 15m

## Parent Epic

#11831 — **Sub 7 of 7 (added per @tobiu direction; small data-only tuning).**

## Scope

Bump `ai/config.template.mjs:87` `orchestrator.intervals.swarmHeartbeatMs` from `5 * 60 * 1000` (5m) to `15 * 60 * 1000` (15m).

Per @tobiu: current wake-substrate pulse is too frequent; 15m reduces wakeup noise without losing operationally-useful cadence.

`swarmHeartbeatMs` is the folded-in wake-substrate pulse (per #11766) — the canonical heartbeat that drives `SwarmHeartbeatService.pulse()` + downstream `idleOutNudge`. **Not** the same as the summary-sweep cycle (`summarySweepMs`) or the dev-sync cycle (`primaryDevSyncMs`) — those are different concerns and stay at their current defaults.

## Acceptance Criteria

1. `ai/config.template.mjs:87` `swarmHeartbeatMs` changed to `15 * 60 * 1000`.
2. No other interval values touched in this Sub.
3. Existing `NEO_ORCHESTRATOR_SWARM_HEARTBEAT_MS` env-var override (or equivalent) continues to take precedence via the 2-value chain post-Sub 1.

## Files (touched)

- `ai/config.template.mjs` (1-line value bump)

**Authored by:** [Claude Opus 4.7] (Claude Code)

## Timeline

- 2026-05-23T12:14:16Z @neo-opus-ada assigned to @neo-opus-ada
- 2026-05-23T12:14:16Z @neo-opus-ada added the `enhancement` label
- 2026-05-23T12:14:16Z @neo-opus-ada added the `ai` label
- 2026-05-23T12:14:17Z @neo-opus-ada added the `model-experience` label
- 2026-05-23T12:14:29Z @neo-opus-ada added parent issue #11831
- 2026-05-23T12:18:18Z @neo-opus-ada changed title from **Sub 7: Bump summarySweepMs + primaryDevSyncMs default interval 10m → 15m** to **Sub 7: Bump swarmHeartbeatMs wake interval 5m → 15m**
- 2026-05-23T12:19:32Z @neo-opus-ada cross-referenced by PR #11841
- 2026-05-23T12:25:48Z @neo-opus-ada referenced in commit `9e72b74` - "test(agentos): sync Tier 1 Config Immutability assertion for swarmHeartbeatMs 15m (#11840)

config.template.spec.mjs:36 toMatchObject was asserting the previous
5m default. Updated to 15 * 60 * 1000 to match the bumped default from
the same PR.

This is exactly the kind of substrate-immutability guard that Tier 1
Config Immutability is designed to catch — silent default drift should
break this test. My PR did break it; this commit re-locks the assertion
at the new canonical default.

Tests: 3/3 pass (506ms)."
- 2026-05-23T12:39:46Z @tobiu referenced in commit `86bd0c6` - "feat(agentos): bump swarmHeartbeatMs default 5m → 15m (#11840) (#11841)

* feat(agentos): bump swarmHeartbeatMs default 5m -> 15m (#11840)

Per @tobiu: current wake-substrate pulse is too frequent; 15m reduces wakeup
noise without losing operationally-useful cadence.

swarmHeartbeatMs is the folded-in wake-substrate pulse (#11766) — the
canonical heartbeat driving SwarmHeartbeatService.pulse() + downstream
idleOutNudge. Not the same as summarySweepMs or primaryDevSyncMs; those
stay at their current defaults.

Existing NEO_ORCHESTRATOR_SWARM_HEARTBEAT_MS env-var override continues
to take precedence via the 2-value chain post-Sub 1 (#11833).

* test(agentos): sync Tier 1 Config Immutability assertion for swarmHeartbeatMs 15m (#11840)

config.template.spec.mjs:36 toMatchObject was asserting the previous
5m default. Updated to 15 * 60 * 1000 to match the bumped default from
the same PR.

This is exactly the kind of substrate-immutability guard that Tier 1
Config Immutability is designed to catch — silent default drift should
break this test. My PR did break it; this commit re-locks the assertion
at the new canonical default.

Tests: 3/3 pass (506ms).

---------

Co-authored-by: tobiu <tobiasuhlig78@gmail.com>"
- 2026-05-23T12:39:46Z @tobiu closed this issue

