Parent Epic
#11831 — Sub 3 of 6 (parallel after Sub 1; subsumes #11827).
Scope
Delete the now-obsolete parser-surface debris after Sub 1 + Sub 6 land. Closes #11827 audit-ticket as superseded by this Epic.
Acceptance Criteria
ai/daemons/services/CadenceEngine.parseInterval retired (consumers rewire to Env.parseNumber() + caller wraps in Math.max(0, n) where non-negative semantics required).
ai/daemons/services/PrimaryRepoSyncService.parseEnabledFlag retired (consumers rewire to Env.parseBool() which preserves the legacy '0'/'no'/'off' token semantics per Sub 6 AC3).
ai/mcp/server/shared/helpers/EnvConfig.mjs retired OR provides compatibility-forwarding to Neo.util.Env (decision deferred to Sub 6a MCP-cluster migration).
SwarmHeartbeatService.mjs:37 LOCAL DEFAULT_POLL_INTERVAL_MS = 5 * 60 * 1000 deleted (drifted 100× from TaskDefinitions.mjs value of 3000 — eliminate the source of drift).
KbAlertRuleEngine.mjs:56 DEFAULT_COOLDOWN_MS deleted (duplicate of aiConfig.knowledgeBase.alertingCooldownMs).
- #11827 closed as superseded by this Epic.
- Post-deletion grep returns zero matches:
grep -rnE '^export const DEFAULT_[A-Z_]+_MS|^export const DEFAULT_[A-Z_]+(INTERVAL|TIMEOUT|THRESHOLD)' ai --include='*.mjs' (or only ai/config.template.mjs if that file uses the constant naming pattern internally).
Files (touched)
ai/daemons/services/CadenceEngine.mjs (delete parseInterval)
ai/daemons/services/PrimaryRepoSyncService.mjs (delete parseEnabledFlag; rewire callers to Env.parseBool)
ai/daemons/services/SwarmHeartbeatService.mjs:37 (delete LOCAL DEFAULT_POLL_INTERVAL_MS drift)
ai/daemons/services/KbAlertRuleEngine.mjs:56 (delete DEFAULT_COOLDOWN_MS)
ai/daemons/TaskDefinitions.mjs (delete 8 DEFAULT_X_INTERVAL_MS exports — actually delegated to Sub 1)
ai/mcp/server/shared/helpers/EnvConfig.mjs (defer to Sub 6a/6b consumer rewire)
Authored by: [Claude Opus 4.7] (Claude Code)
Parent Epic
#11831 — Sub 3 of 6 (parallel after Sub 1; subsumes #11827).
Scope
Delete the now-obsolete parser-surface debris after Sub 1 + Sub 6 land. Closes #11827 audit-ticket as superseded by this Epic.
Acceptance Criteria
ai/daemons/services/CadenceEngine.parseIntervalretired (consumers rewire toEnv.parseNumber()+ caller wraps inMath.max(0, n)where non-negative semantics required).ai/daemons/services/PrimaryRepoSyncService.parseEnabledFlagretired (consumers rewire toEnv.parseBool()which preserves the legacy'0'/'no'/'off'token semantics per Sub 6 AC3).ai/mcp/server/shared/helpers/EnvConfig.mjsretired OR provides compatibility-forwarding toNeo.util.Env(decision deferred to Sub 6a MCP-cluster migration).SwarmHeartbeatService.mjs:37LOCAL DEFAULT_POLL_INTERVAL_MS = 5 * 60 * 1000deleted (drifted 100× fromTaskDefinitions.mjsvalue of 3000 — eliminate the source of drift).KbAlertRuleEngine.mjs:56DEFAULT_COOLDOWN_MSdeleted (duplicate ofaiConfig.knowledgeBase.alertingCooldownMs).grep -rnE '^export const DEFAULT_[A-Z_]+_MS|^export const DEFAULT_[A-Z_]+(INTERVAL|TIMEOUT|THRESHOLD)' ai --include='*.mjs'(or onlyai/config.template.mjsif that file uses the constant naming pattern internally).Files (touched)
ai/daemons/services/CadenceEngine.mjs(deleteparseInterval)ai/daemons/services/PrimaryRepoSyncService.mjs(deleteparseEnabledFlag; rewire callers toEnv.parseBool)ai/daemons/services/SwarmHeartbeatService.mjs:37(delete LOCALDEFAULT_POLL_INTERVAL_MSdrift)ai/daemons/services/KbAlertRuleEngine.mjs:56(deleteDEFAULT_COOLDOWN_MS)ai/daemons/TaskDefinitions.mjs(delete 8DEFAULT_X_INTERVAL_MSexports — actually delegated to Sub 1)ai/mcp/server/shared/helpers/EnvConfig.mjs(defer to Sub 6a/6b consumer rewire)Authored by: [Claude Opus 4.7] (Claude Code)