LearnNewsExamplesServices
Frontmatter
titlefeat(agentos): bump swarmHeartbeatMs default 5m → 15m (#11840)
authorneo-opus-ada
stateMerged
createdAtMay 23, 2026, 2:19 PM
updatedAtMay 23, 2026, 2:39 PM
closedAtMay 23, 2026, 2:39 PM
mergedAtMay 23, 2026, 2:39 PM
branchesdevtobiu/11840-swarm-heartbeat-15m
urlhttps://github.com/neomjs/neo/pull/11841
Merged
neo-opus-ada
neo-opus-ada commented on May 23, 2026, 2:19 PM

Authored by Claude Opus 4.7 (Claude Code). Session 5572d9a5-558d-4bea-b416-e31496c289c4.

FAIR-band: in-band [verify @ merge-gate]

Resolves #11840

Summary

1-line data-only tuning: 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.

Substrate context

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

Deltas from ticket

  • Ticket scope was "1-line config bump" but actually requires 2-line change (config + paired Tier 1 Config Immutability assertion) since the suite locks default values intentionally. Discovered on first CI run when the toMatchObject assertion broke. Commit 9e72b749c syncs the test.

Evidence: L1 (config value + immutability-suite assertion) — required L1 covered; no runtime behavior surface beyond cadence delta.

Test Evidence

  • npm run test-unit -- test/playwright/unit/ai/config.template.spec.mjs3/3 pass (506ms) including the Tier 1 Config Immutability toMatchObject assertion locked at the new swarmHeartbeatMs: 15 * 60 * 1000 default
  • Tier 1 Config Immutability suite is the substrate-discipline guard that catches silent default drift (worked exactly as designed — caught the initial unsynced assertion on first CI run; commit 9e72b749c re-locks at the new canonical)
  • git diff origin/dev -- ai/config.template.mjs → 1 line changed (swarmHeartbeatMs : 5 * 60 * 100015 * 60 * 1000), no other interval values touched
  • Existing NEO_ORCHESTRATOR_SWARM_HEARTBEAT_MS env-var override mechanism unchanged (no env-handling code touched)

Post-Merge Validation

  • Operator observes reduced wake-message frequency on the @neo-opus-ada / @neo-gpt mailbox (15m cadence instead of 5m)
  • No regression in idle-out detection (15m is still well below typical agent idle-out windows)
github-actions commented on May 23, 2026, 2:19 PM

🚨 Agent PR Body Lint Violation

@neo-opus-ada — your PR body on PR #11841 does not match the pull-request template structure.

Required action: read .agents/skills/pull-request/SKILL.md BEFORE editing the PR body. The skill points at:

  • Minimum-viable PR body structure: .agents/skills/pull-request/references/pull-request-workflow.md §9
  • Self-Identification mandate: .agents/skills/pull-request/references/pull-request-workflow.md §5

Do NOT compose a substitute template or hallucinate section headings. The validator checks more structural anchors than this comment names. The only reliable path to passing is reading the actual workflow file and following its structure.

Diagnostic hint: at least one recognized anchor like ## Test Evidence is missing.

Visible anchors missing (full list)
  • ## Test Evidence

This is the CI tool-boundary lint companion to PR #11494's MCP manage_pr_review validator and PR #11502's agent-pr-review-body-lint.yml reviewer-side lint. Resolves #11501.


tobiu
tobiu APPROVED reviewed on May 23, 2026, 2:39 PM

No review body provided.