Context
PR #13968 added messageConceptHarvestMs to createTestOrchestrator() in test/playwright/unit/ai/daemons/orchestrator/Orchestrator.spec.mjs using the existing helper mutation pattern:
AiConfig.orchestrator.intervals.messageConceptHarvestMs = config.messageConceptHarvestIntervalMs ?? Number.MAX_SAFE_INTEGER;
The operator flagged this after merge as an ADR 0019 violation. This is a narrow follow-up for the newly-added message-harvest lane, not a claim that the older helper cluster is fully solved.
Live latest-open sweep: checked the latest 20 open issues at 2026-06-24T20:58:35Z; no equivalent open issue found.
A2A sweep: checked latest 30 all-state A2A messages at 2026-06-24T20:58:35Z; only the merged #13968 lifecycle note was present, no competing claim.
Release classification: post-merge hardening follow-up; boardless.
The Problem
The helper mutates the shared AiConfig singleton and installs a hidden Number.MAX_SAFE_INTEGER default to silence a scheduler lane. ADR 0019 B4 treats test runtime writes to AiConfig as safety-critical: tests should isolate by construction, not by mutating the Provider SSOT.
Architectural Reality
learn/agentos/decisions/0019-aiconfig-reactive-provider-ssot.md defines AiConfig as the reactive Provider SSOT and forbids hidden defaults/type conversion at use sites.
- ADR 0019 B4 specifically calls out shared
AiConfig mutation from tests as a safety-critical violation.
Orchestrator.spec.mjs already contains older interval-helper mutations; this ticket targets the newly-added messageConceptHarvestMs path so #13968 does not expand that debt.
The Fix
Refactor the Orchestrator unit-test helper path for message-concept-harvest so tests do not write AiConfig.orchestrator.intervals.messageConceptHarvestMs and do not hide a fallback value in the helper. Use test-local scheduler/task-state isolation instead of mutating the shared config singleton.
Acceptance Criteria
Out of Scope
- Solving every pre-existing AiConfig B4 mutation in
Orchestrator.spec.mjs.
- Changing ADR 0019 or production config leaves.
- Changing the #13968 runtime scheduler behavior.
Related
Origin Session ID: 30ba1931-9d59-48bb-afdf-af8904070af9
Retrieval Hint: query_raw_memories("ADR 19 messageConceptHarvestMs Orchestrator.spec AiConfig mutation #13968")
Context
PR #13968 added
messageConceptHarvestMstocreateTestOrchestrator()intest/playwright/unit/ai/daemons/orchestrator/Orchestrator.spec.mjsusing the existing helper mutation pattern:AiConfig.orchestrator.intervals.messageConceptHarvestMs = config.messageConceptHarvestIntervalMs ?? Number.MAX_SAFE_INTEGER;The operator flagged this after merge as an ADR 0019 violation. This is a narrow follow-up for the newly-added message-harvest lane, not a claim that the older helper cluster is fully solved.
Live latest-open sweep: checked the latest 20 open issues at 2026-06-24T20:58:35Z; no equivalent open issue found. A2A sweep: checked latest 30 all-state A2A messages at 2026-06-24T20:58:35Z; only the merged #13968 lifecycle note was present, no competing claim. Release classification: post-merge hardening follow-up; boardless.
The Problem
The helper mutates the shared
AiConfigsingleton and installs a hiddenNumber.MAX_SAFE_INTEGERdefault to silence a scheduler lane. ADR 0019 B4 treats test runtime writes toAiConfigas safety-critical: tests should isolate by construction, not by mutating the Provider SSOT.Architectural Reality
learn/agentos/decisions/0019-aiconfig-reactive-provider-ssot.mddefinesAiConfigas the reactive Provider SSOT and forbids hidden defaults/type conversion at use sites.AiConfigmutation from tests as a safety-critical violation.Orchestrator.spec.mjsalready contains older interval-helper mutations; this ticket targets the newly-addedmessageConceptHarvestMspath so #13968 does not expand that debt.The Fix
Refactor the Orchestrator unit-test helper path for
message-concept-harvestso tests do not writeAiConfig.orchestrator.intervals.messageConceptHarvestMsand do not hide a fallback value in the helper. Use test-local scheduler/task-state isolation instead of mutating the shared config singleton.Acceptance Criteria
AiConfig.orchestrator.intervals.messageConceptHarvestMsfromOrchestrator.spec.mjs.AiConfigmutation.Out of Scope
Orchestrator.spec.mjs.Related
Origin Session ID: 30ba1931-9d59-48bb-afdf-af8904070af9 Retrieval Hint:
query_raw_memories("ADR 19 messageConceptHarvestMs Orchestrator.spec AiConfig mutation #13968")