Commit Graph

8432 Commits

Author SHA1 Message Date
rcourtman c73e78aeea Stabilize RC runtime ownership
Contract-Neutral: RC qualification fixes preserve existing public API, tenant, monitoring, and organization contracts while correcting canonical runtime ownership and test fixtures.
2026-07-20 07:50:22 +01:00
rcourtman 6eb559905d Reuse mock history seeds across tenants
Contract-Neutral: Reuse immutable mock-history seed work across tenant monitors without changing monitoring, tenant-isolation, or API contracts.
2026-07-20 06:30:55 +01:00
rcourtman 86bf879b7b Satisfy update readiness in signature E2E 2026-07-20 06:13:28 +01:00
rcourtman 2e00d44cd2 Preserve deployment mock settings on reload
Contract-Neutral: Preserve deployment-owned PULSE_MOCK environment values when the watched auth env file reloads; no public contract changes.
2026-07-20 05:52:12 +01:00
rcourtman 96fce4cbcb Use mobile assistant submit control 2026-07-20 05:19:15 +01:00
rcourtman 62993899fc Isolate agent buffering qualification 2026-07-20 04:35:52 +01:00
rcourtman 99af2a0bf2 Accelerate mock history readiness 2026-07-20 04:21:26 +01:00
rcourtman 9ea7689373 Preserve VMware exclusion test boundaries 2026-07-20 03:51:05 +01:00
rcourtman 0b6d1cdc18 Stabilize mobile browser interactions 2026-07-20 03:33:46 +01:00
rcourtman eeab775445 Harden browser release qualification
Contract-Neutral: Release qualification reliability fixes preserve existing runtime, route, and deployment contracts
2026-07-20 03:15:13 +01:00
rcourtman 12eef62f76 Stabilize cross-platform release gates 2026-07-20 02:32:29 +01:00
rcourtman 6fc846f4da Align Docker route ownership
Contract-Neutral: Contract-preserving route ownership correction; no canonical product contract change
2026-07-20 02:08:34 +01:00
rcourtman e9dddf86b8 Harden RC qualification coverage
Contract-Neutral: RC qualification and contract-preserving reliability fixes; no canonical product contract changes
2026-07-20 01:13:26 +01:00
rcourtman dbd4b14b73 Isolate Core E2E runtime state
Contract-Neutral: Core E2E scheduling and mock-readiness harness change; no deployment, installability, or runtime contract delta
2026-07-20 00:14:37 +01:00
rcourtman d7eb4457c4 Stabilize shared E2E runtime state
Contract-Neutral: E2E harness reliability fix; no deployment or installability runtime contract changes
2026-07-19 23:24:21 +01:00
rcourtman 4fcca0993b Isolate vSphere workload fixture routing
Match only the canonical workloads request so unrelated resource traffic does not contend through the Playwright route handler.

Contract-Neutral: Test fixture routing only; no public subsystem contract change
2026-07-19 22:27:08 +01:00
rcourtman 57f3fa8431 Add Go branch-coverage tests for unified-resource views and pure helpers
Cover pure functions left at 0% after the canonical Operational Trust and
unified-resource work, surfaced by a fresh coverage probe.

- unifiedresources views.go accessors for K8sNodeView, DockerContainerView,
  PodView, K8sDeploymentView, HostView, DockerHostView, K8sClusterView and
  the smaller ContainerView.Pool / NodeView.IsClusterMember /
  PhysicalDiskView.MetricResourceID / PBSInstanceView.Datastores /
  PMGInstanceView.InstanceID accessors. Each exercises the nil-receiver and
  nil-nested defensive arms, the populated projection, and slice/map
  clone-independence.
- unifiedresources clone.go seven Ceph deep-clone helpers, asserting value
  equality, mutation independence, and nil/empty inputs.
- agentcapabilities firstStringPayloadValue, MCPManifestPromptProjectionSupported
  and JSONRPCError.Error.
- ai/tools data_types NormalizeCollections (three receivers),
  ValidateCurrentResourceAvailable and ErrExecutionContextUnavailable.Error.

Test-only. Every target function moved 0% to covered. No source changes.

Contract-Neutral: test-only branch-coverage tests; no source or contract changes
2026-07-19 22:23:42 +01:00
rcourtman 19ec17372e Stabilize vSphere drawer verification
Contract-Neutral: Test fixture normalization without a public subsystem contract change
2026-07-19 21:58:50 +01:00
rcourtman b908a0858c Document bootstrap token retrieval for Proxmox LXC installs
The retrieval instructions covered Docker, Kubernetes, and systemd but
not the Proxmox-shell install, which puts Pulse inside an LXC. Running
sudo pulse bootstrap-token on the PVE host finds nothing there, so a
user who missed the token in the installer output had no working
documented path back to it.
2026-07-19 21:40:44 +01:00
rcourtman 2f1ffa94ef Stabilize page header alignment verification
Contract-Neutral: Test-only coordinate normalization without a public subsystem contract change
2026-07-19 21:24:36 +01:00
rcourtman 5d01c5e469 Stabilize Core E2E release paths
Contract-Neutral: Canonical route normalization and test stabilization without a public subsystem contract change
2026-07-19 21:03:58 +01:00
rcourtman 685a671c61 Make the agent token test platform-aware
Use the runtime-selected default token path in the token-resolution fixture so the same contract is exercised on Windows and Unix runners.

Contract-Neutral: Platform-aware agent token test fixture changes no runtime contract
2026-07-19 19:58:03 +01:00
rcourtman 3fcd26b5c3 Stop the Autopilot gate from leaking acknowledgement_id downstream
GatePatrolAutonomyUpdate validates and consumes the activation
acknowledgement, then re-marshals the settings for the downstream
handler - but the marshaled body still carried acknowledgement_id.
The Pro autonomy handler decodes the body with DisallowUnknownFields
and has no such field, so every Autopilot (full mode) activation on a
Pro build failed with 400 Invalid request body. Lower autonomy levels
forward the original body untouched, which is why only full mode broke.

Clear the consumed acknowledgement before normalizing and hand it to
the downstream handler via request context only. The new regression
test strict-decodes the forwarded body with the enterprise handler's
exact field set.

Contract-Neutral: Autopilot activation gate normalization fix; endpoint contract unchanged
2026-07-19 19:51:32 +01:00
rcourtman 3f405af0c6 Align Windows agent state with the installer
Use the installer-owned ProgramData directory consistently for token lookup, enrollment state, agent identity, receipts, and service runtime data. Pass that directory explicitly to the Windows service and retain the existing Linux default elsewhere.

Contract-Neutral: Windows agent state-path alignment preserves the existing installer and agent public contract
2026-07-19 19:41:57 +01:00
rcourtman ed492cce4d Describe the Windows install command truthfully
The PowerShell snippet never prompts for the Pulse URL or API token; it
embeds the URL and hands the token over via a temporary token file. The
old note promised an interactive prompt that does not exist, stranding
users who expected one.

Contract-Neutral: Settings install-panel copy correction; no public interface or contract delta
2026-07-19 19:39:48 +01:00
rcourtman 7b65e9a7b1 Keep Windows installer compatible with TLS 1.2 runtimes
Contract-Neutral: Legacy Windows PowerShell TLS enum compatibility preserves the existing installer transport contract without changing its public interface
2026-07-19 19:36:15 +01:00
rcourtman 8ca8256175 Render Patrol investigation replies as Markdown
Contract-Neutral: Markdown rendering for existing Patrol investigation assistant content is a presentation-only change with no patrol-intelligence public contract delta
2026-07-19 19:34:04 +01:00
rcourtman 7ce7bbf323 Finish Core E2E release gate alignment
Contract-Neutral: Core E2E authentication and release-gate test alignment does not change the deployment-installability public contract
2026-07-19 19:33:19 +01:00
rcourtman 6343b1f5cd Complete Core E2E release gate repair
Contract-Neutral: Mobile Assistant viewport containment and release-gate test repairs do not change the ai-runtime public contract
2026-07-19 18:30:27 +01:00
rcourtman f6a59eb1c6 Repair Core E2E release gate
Contract-Neutral: RC4 gate repair only: responsive layout correction, internal test hook, and E2E-only runtime target; no public subsystem contract changes
2026-07-19 17:29:51 +01:00
rcourtman 82395860e8 Refresh frontend bundle size baseline 2026-07-19 16:10:20 +01:00
rcourtman 52ed884640 Prepare v6.1.0-rc.4 release 2026-07-19 15:52:42 +01:00
rcourtman 4b066a0f1e Add report-only Unified Agent observer destinations 2026-07-19 15:30:34 +01:00
rcourtman ff93d99fa1 Add Go branch-coverage tests for pure helpers across six packages
Test-only wave, contract-neutral. New *_branchcov0719pm_test.go files cover
previously-uncovered pure value-in/value-out helpers, each verified to move
its target functions from 0% to full coverage:

- internal/agentcontext: formatKubernetesServicePorts (empty/single/cap/overflow
  arms) and addMetricFact (nil-metric, percent/value/ratio arms) now 100%.
- pkg/reporting: reportLogoTypeFromPath 0->100, reportLogoTypeFromData 28.6->100,
  scaledLogoSize 70->90 (extension and aspect branches).
- internal/cloudcp/email: RenderMagicLinkEmail 0->80 (render success path; the
  compile-time template-error arm is unreachable and left uncovered).
- internal/recovery: recoveryDetailString (nil map, missing key, non-string,
  string arms) and recoveryPointObservedAt 40->100.
- internal/ai/tools: ErrStrictResolution/ErrRoutingMismatch ToToolResponse 100.
- internal/ai/providers: every NormalizeCollections receiver 0->100.

No source or existing test modified.
2026-07-19 15:11:02 +01:00
rcourtman 260073c27e Complete Operational Trust governance 2026-07-19 15:11:02 +01:00
rcourtman 83672a00a8 Harden Operational Trust rollout contracts 2026-07-19 15:11:02 +01:00
rcourtman 155b5dfa42 Add frontend branch-coverage test for availability probe presentation
Cover getAvailabilityProbeEndpointLabel, previously uncovered, and the probe
endpoint-label fallback branches on availabilityProbePresentation. Function
coverage 10/11 to 11/11 and seven uncovered branch arms exercised.

Test-only. New availabilityProbePresentation.branchcov0719.test.ts only; no
source or existing test touched.
2026-07-19 15:11:02 +01:00
rcourtman 7791b35ae9 Add Go branch-coverage tests for canonical trust and recovery helpers
Cover pure functions the recent canonical Operational Trust and protection
posture work landed with no unit test:

- recovery/model posture: enum Valid, struct Clone/Validate/Payload and the
  normalize/cloneTime/validOutcome/sortedUniqueStrings/compareProviderStates
  helpers (20 funcs, all 0%->100%)
- operationaltrust contracts: EvidencePayloadRef/Acknowledgement/Suppression/
  LifecycleTransition Validate plus LifecycleTransition/NotificationLink Clone
- cloudcp/proxytrust: ClientIP, ExtractRemoteIP, rightMostUntrustedForwardedIP
  and IsTrustedProxyIP forwarded-header and CIDR parsing
- mockmodel: NormalizeBlendWeight, SeriesForTimestamps, seriesForProfile,
  diskIOValue and flatValue deterministic seeded math
- updatesignature: DecodePrivateKey and HasTrustedPublicKeys
- recovery keys: ProxmoxPBSGuestLooseContinuityKey branch guards
- vmware SourceID and truenas availableAppLogContainers formatting

Test-only, contract-neutral. New *_branchcov0719_test.go files only; no source
or existing test touched.
2026-07-19 15:11:01 +01:00
rcourtman cd75722da3 Build canonical Operational Trust action loop
Refs #1034
2026-07-19 15:11:01 +01:00
rcourtman 69533c7afb Build canonical availability resource facets 2026-07-19 15:11:01 +01:00
rcourtman 07a4d05ca3 Build canonical Patrol attention workbench 2026-07-19 15:11:01 +01:00
rcourtman 93dbdd91cf Build canonical protection posture 2026-07-19 15:10:38 +01:00
rcourtman cf0486492e Build operational trust lifecycle foundation 2026-07-19 15:10:38 +01:00
rcourtman c2df4ad277 Fix alert detection and notification state boundary 2026-07-19 15:10:09 +01:00
rcourtman ce7702db7a Add Go branch-coverage tests for models, cloudcp and actionlifecycle helpers
New *_branchcov0718_test.go files extend the Go coverage wave to three more
areas of previously-uncovered pure logic. Covered areas include the domain-type
NormalizeCollections normalizers in models.go, the cloud control-plane pure
helpers for hosted-entitlement org-id normalization, magic-link URL redaction
and default MSP backup paths, and the actionlifecycle dispatch-attempt context
round-trip plus the typed-error Error and Unwrap methods.

Test-only, with no runtime or subsystem-contract change. Impure targets that
need a live Docker manager or tenant registry were skipped per the purity gate
and noted in the wave reports. Verified in a clean worktree at HEAD with go vet
and package tests green, gofmt clean, and every covered target moved from 0
percent toward full coverage.
2026-07-19 15:10:09 +01:00
rcourtman 278673aa0f Add Go branch-coverage tests for twelve pure backend helpers
New *_branchcov0718_test.go files raise coverage of previously-uncovered pure
functions across ten packages. Covered areas include securityutil SSRF and URL
validation, truenas path and telemetry parse helpers, storagehealth SMART and
physical-disk risk assessment, vmware inventory sort keys and error classifiers,
servicediscovery token filtering and readiness, telemetry evidence-from-history,
models ToFrontend converters and frontend NormalizeCollections normalizers,
actionplanner type predicates and canonical resource-id sort, config API-token
accessors, and licensing state accessors.

Test-only, with no runtime or subsystem-contract change. Verified in a clean
worktree at HEAD with go vet and package tests green, gofmt clean, and every
named target function moved from 0 percent to covered.
2026-07-19 15:10:09 +01:00
rcourtman ed82d6cd87 Add branch-coverage tests for action-audit, monitoring and onboarding clients
Four more modules had a hand-written test covering only the happy path.
These branchcov tests drive the previously-untaken arms and assert real
behaviour, the onboarding 409 fall-throughs (mismatched code, non-JSON
body, string body) and error-message fallbacks, the action-audit and
monitoring optional query variants, and the apt action presentation
status arms.
2026-07-19 15:10:09 +01:00
rcourtman 6628d7e606 Add branch-coverage tests for API-client modules
Ten more modules had a hand-written test but left request functions and
query or body branches unexercised. These new branchcov tests mock the
transport and assert the exact request shaping (path, method, query, body)
and parsed response for the previously-uncovered functions and arms.

API clients patrol, agentProfiles, monitoredSystemLedger, license, ai,
aiChat, connections, vmware and notifications, plus the securityScore
presentation helper.
2026-07-19 15:10:09 +01:00
rcourtman ee3dbbb3b2 Add branch-coverage tests for presentation and API-client helpers
Twelve pure modules had a hand-written test but left functions and
conditional arms unexercised. These new branchcov tests drive the
previously-uncovered inputs and assert real returned values and request
shaping, taking each module's uncovered functions to zero.

Presentation helpers alertDestinations, alertEmail, alertResourceTable,
aiSettings, auditWebhook, nodeModal, record, swarm and k8sNamespace, plus
API clients charts, discovery and truenas.
2026-07-19 15:10:09 +01:00
rcourtman 052ba40fd4 Add coverage for the Docker update alerts thresholds presenter
getAlertThresholdsDockerUpdatePresentation was the one uncovered function
in alertThresholdsPresentation after the module grew a Docker update
presenter. A single deep-equal parity test wires each returned key to its
exported ALERT_THRESHOLDS_DOCKER_UPDATES_* constant, matching the sibling
getAlertThresholdsSectionTitles test. Module function coverage moves from
8/9 to 9/9.
2026-07-19 15:10:09 +01:00