Keep the configured cluster URL as primary and recover discovered member
endpoints asynchronously while it is healthy. Reset member reachability
evidence when the effective address changes.
Refs #1437 and #1493
Route canonical cooldown refires through one resolved-state critical section and document the m.mu to resolvedMutex invariant. Exercise production refire, recovery, broadcast, alias repair, cleanup, and shutdown paths under the race detector while preserving cooldown history and start-time semantics.
Keep manual check commands active until registry collection completes. Deduplicate replayed and concurrent commands, bound collection and acknowledgement retries, surface registry result counts, and prove timeout, rate-limit, and replay behavior.
Two more frontend modules with a measured residue their existing specs never
reached. Deltas are uncovered counts, module scoped, existing specs versus
existing plus new.
- aiChatDevStreamFixture: branches 32 -> 2 uncovered; abortError and
handleAbort, previously never called, are now covered. The abort tests
assert the real cleanup lifecycle (timer cleared, listener removed, error
shape) rather than only that a promise rejected, and the per-step pacing
arms are exercised across their full cadence table.
- licensePresentation: branches 29 -> 24 uncovered, targeting the licence
expiry, tier and seat-count fallbacks.
No source file is modified. Adversarial review found no rejects. One describe
block in the chat-fixture test was removed before committing: it duplicated
exact event sequences already asserted in aiChat.test.ts and its trailing
checks were tautological with the toEqual above them; re-measuring after the
removal gave an identical delta, confirming it contributed no coverage.
PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT=test-only branch coverage, no source or contract change
Contract-Neutral: test-only branch coverage, no source or contract change
Four more frontend modules with a measured residue their existing specs never
reached, including seven functions no test called at all. Deltas are uncovered
counts, module scoped, existing specs versus existing plus new.
- infrastructureOperationsModel: branches 38 -> 1 uncovered and
createSurfaceScopedRow, previously never called, is now covered. This was
the largest proportional branch gap left in the frontend.
- summaryTableFocus: branches 26 -> 11 uncovered and scheduleViewportRefresh,
previously never called, is now covered.
- thresholdsResourceModel: hasThresholdDiff, dockerContainerOverrideIdCandidates,
findOverrideByCandidates and buildAgentHeaderMeta were all uncalled; covered
branches move 114 -> 130.
- api/charts: getStorageSummaryCharts and timeRangeToMinutes were uncalled;
covered branches move 41 -> 55. The fetch mocking follows the existing specs
and asserts parsed results, not that the mock was called.
No source file is modified. Adversarial review found no rejects; one subtest
duplicating an arm a sibling already covered was removed before committing and
the coverage was re-measured unchanged.
A fifth candidate, resourceBadgePresentation, was written and discarded rather
than landed: 263 tests moved the module by a single branch, because its
residual arms are unreachable defensive fallbacks.
PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT=test-only branch coverage, no source or contract change
Contract-Neutral: test-only branch coverage, no source or contract change
Four frontend models whose existing specs called every exported function but
took only one arm of most conditionals. Deltas are uncovered counts, module
scoped, existing specs versus existing plus new.
- patrolInvestigationContextModel: branches 155 -> 19 uncovered, the largest
single branch gap in the frontend. Covers the nullish-coalescing fallbacks,
ternary alternates, singular and plural boundaries, the resource cap at
MAX_ASSESSMENT_RESOURCES, and the identifier-label fallbacks.
- resourceStateAdapters: branches 51 -> 3 uncovered.
- truenasPageModel: branches 28 -> 7 uncovered.
- contextualFocus: all six previously uncalled DOM scroller helpers now
covered, taking covered branches from 41 to 82. The uncovered count moves
27 -> 29 only because those six dead functions bring their own branches into
scope for the first time.
No source file is modified. Adversarial review found no rejects. Acted on its
findings before committing: a test claiming to cover an identifier-formatter
fallback actually passed through the formatter unchanged, so it is retitled to
say what it does, and the real fallback arm is covered separately by the
separator-only key case; a cross-field consistency assertion that compared two
fields the source assigns from the same local is replaced with the concrete
value; three subtests duplicating an arm a sibling already covered were
removed; and a comment describing the parent-chain walk was corrected, since
resolveScrollableAncestor uses parentElement and never sees the Document.
Re-measuring after the removals gave identical coverage.
PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT=test-only branch coverage, no source or contract change
Contract-Neutral: test-only branch coverage, no source or contract change
Four frontend modules had a small measured residue their existing specs never
reached, including four functions no test called at all. Deltas below are
uncovered counts, module-scoped, existing specs vs existing plus new.
- storagePageState: getActiveStorageNodeOptions was never called; branches
5 -> 1 uncovered, functions 1 -> 0.
- discoveryPresentation: the three suggested-URL class helpers were never
called; branches 3 -> 1 uncovered, functions 3 -> 0.
- infrastructureOnboardingPresentation:
getInfrastructureSourcePickerItemForRouteStep was never called; functions
1 -> 0.
- storageBarPresentation: branches 7 -> 0 uncovered, so the module is now
fully branch-covered.
No source file is modified. Adversarial review found no rejects. Three
tautological assertions of the form f() equals f(), one test duplicating an
arm the existing spec already covered, and four cases re-exercising an already
covered arm of a two-arm selector were removed before committing; re-measuring
afterwards produced identical coverage, which confirms they contributed
nothing.
PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT=test-only branch coverage, no source or contract change
Contract-Neutral: test-only branch coverage, no source or contract change
Adds branch-coverage tests for eight packages whose target functions were
measured at 0% before this change. Every named target was verified to move
by running each package's coverage with and without the new file.
- internal/ai/eval: all 36 Scenario constructors and the four PatrolScenario
constructors 0% -> 100%. These are catalog-invariant tests, not literal
echoes: unique names, populated required fields, runnable assertions, tool
references checked against the agentcapabilities registry, and exact
assertion-count deltas across the env-gated conditional appends. A parity
test scans scenarios.go itself, so adding a constructor without registering
it in the table now fails rather than silently going untested.
- cmd/pulse-control-plane: nine MSP and tenant-runtime print helpers
0% -> 100%, covering the nil, empty-slice and optional-field arms.
- internal/ai/memory: RemediationLog GetByID, MarkRolledBack and
GetRollbackable 0% -> 100%, pinning the overwrite-vs-preserve contract on
RollbackInfo and each falsy arm of the rollbackable predicate.
- internal/alerts/config: AlertConfig.UnmarshalJSON 0% -> 90% and
NormalizeAlertConfigAliases 52.9% -> 94.1%.
- internal/config: RunMigrationIfNeeded 0% -> 100%, copyFile 0% -> 88.9%.
- internal/mock: AvailabilityFixtures, FixtureGraph.SupplementalChanges and
generateMockHostRate 0% -> 100%.
- internal/api: testProxmoxPlatformConnection 0% -> 100% through its injected
connect func, so no network is involved.
- internal/servicediscovery: needsDeepScan 0% -> 100% across every return arm
including the confidence boundary.
No source file is modified. Adversarial review found no rejects; two findings
were acted on before committing, replacing a circular catalog-count assertion
with the real source-parity scan and reducing an AllPatrolScenarios test that
compared the function against the same constructors it calls to the ordering
and completeness signal that is actually independent.
PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT=test-only branch coverage, no source or contract change
Contract-Neutral: test-only branch coverage, no source or contract change