Commit graph

627 commits

Author SHA1 Message Date
rcourtman
a60fa03d7f Route operator updates through the local signed helper 2026-04-22 16:18:16 +01:00
rcourtman
ce95ef1fc6 Require signed server installer updates 2026-04-22 15:41:54 +01:00
rcourtman
dad0529a2f Domain-separate relay channel HKDF derivation 2026-04-22 15:04:09 +01:00
rcourtman
e8b93db1e1 Harden dev agent deploy SSH host verification 2026-04-22 11:41:50 +01:00
rcourtman
ca26ed2f44 Pin Dockerfile base images by digest 2026-04-22 11:22:46 +01:00
rcourtman
21950c6e4c Restore QNAP agent boot and update continuity
Refs #1420

Refs #1422
2026-04-22 10:48:43 +01:00
rcourtman
74df03c78c Pin workflow actions and CI image versions 2026-04-22 10:12:15 +01:00
rcourtman
c0ac251316 Require target-organization approval for org shares 2026-04-22 09:16:40 +01:00
rcourtman
1841c032f6 Pin deployment defaults and verify Helm docs downloads 2026-04-22 06:05:06 +01:00
rcourtman
70b91759d2 Harden secure local key file handling 2026-04-22 05:13:01 +01:00
rcourtman
4720807ae5 Require signed installer downloads and local release sidecars 2026-04-22 03:51:46 +01:00
rcourtman
96034f5e10 Attest release artifacts and harden image provenance 2026-04-22 03:22:29 +01:00
rcourtman
f7c1d9b629 Require accepted org invitations and stable runtime capabilities 2026-04-22 03:06:22 +01:00
rcourtman
7be844f23a Require signed unified agent release assets 2026-04-22 02:00:29 +01:00
rcourtman
669908acd4 Normalize workloads and recovery page headers 2026-04-21 17:51:33 +01:00
rcourtman
1cad23fd4c Drive infrastructure catalog grouping from platform manifest 2026-04-21 17:24:22 +01:00
rcourtman
4711d11163 Fix fresh Proxmox LXC installs defaulting to RC 2026-04-20 23:11:46 +01:00
rcourtman
4bd023fe1c infra: align agent-led add landing with Proxmox auto-detect 2026-04-20 22:48:34 +01:00
rcourtman
6db9aeadcf Prepare the v6 stable promotion candidate 2026-04-20 14:09:17 +01:00
rcourtman
f62b6f5e6d Promote Pulse Account to a governed lane 2026-04-20 09:37:15 +01:00
rcourtman
d75b10df57 phase 9 — retire stop-monitoring & legacy per-type shells
Delete the stop-monitoring dialog plus the retired per-type settings
shells now that the unified ConnectionEditor replaces them: remove
PlatformConnectionsWorkspace / ProxmoxSettingsPanel /
ProxmoxDirectWorkspace / NodeModal et al and the accompanying tests.
Strip the lingering reporting-state hook from
useInfrastructureOperationsState and the guardrail test reinforces the
removal. Reconcile registry.json, frontend-primitives.md,
api-contracts.md, agent-lifecycle.md, status.json, and the
release-control guard/test fixtures so governance audits stay clean.
2026-04-19 16:55:05 +01:00
rcourtman
9c3d96cab2 Add unified connections API (list + probe) with Disabled flag
Introduces GET /api/connections and POST /api/connections/probe as the
backend half of the one-ledger / one-editor connection redesign.

- GET /api/connections aggregates PVE/PBS/PMG/VMware/TrueNAS/agent rows
  into a unified Connection shape with derived state (active, paused,
  unauthorized, unreachable, stale, pending) computed from in-memory
  scheduler health plus agent Host.LastSeen. No new persisted state.
- POST /api/connections/probe fingerprints a host across the five
  supported products in parallel (2s dial + 1s read, 3s total, max 5
  concurrent). Admin-gated (RequireAdmin + ScopeSettingsWrite) to block
  unauthenticated SSRF against internal hosts.
- Disabled bool on PVEInstance/PBSInstance/PMGInstance (zero-value =
  enabled, preserves existing nodes.json); pollers skip disabled
  instances at client init, reconnect, and per-node iteration.
- NodeConfigRequest/Response gain Enabled; write path translates
  *bool -> Disabled so omitted field leaves state untouched.
- ConnectionsAPI frontend client (list/probe) typed off the Go shape.

Contracts updated: api-contracts, monitoring, agent-lifecycle,
performance-and-scalability, storage-recovery. Proofs added:
contract_test.go JSON snapshot for Connection and ProbeResponse,
monitoring guardrails for the Disabled-skip behavior, and a vitest
mock-client test for ConnectionsAPI.

Frontend editor / drawer / table rewrite lands in a separate block.
2026-04-19 11:42:53 +01:00
rcourtman
329f59eddb Add health-state indicators to Infrastructure, Storage, Workloads, and Recovery summaries
Summary cards now show degraded/alerting/failing counts rather than raw
online/offline splits, giving operators an at-a-glance health posture without
drilling into the full resource list.

- InfrastructureSummary/infrastructureSummaryModel: adds degraded and alerting
  counts derived from resource statuses and active alerts
- StorageSummary/StoragePageSummary/useStoragePageSummary: adds poolsDegraded
  and disksFailing indicators, shows "all healthy" when zero degradation
- WorkloadsSummary/useDashboardWorkloadDerivedState: adds alerting guest count
  from activeAlerts accessor, included in summary header counts
- RecoverySummary: adds aggregate health-state summary row
- useDashboardState: threads alertsEnabled through workload derived state
- Fix monitored-system cap test helper to use TierEnterprise so limits are
  honored (self-hosted tiers are now uncapped per the v6 product model)
- Update registry and governance test snapshots to include
  useStoragePageSummary.test.ts in the storage-product-surface proof set
2026-04-19 08:35:45 +01:00
rcourtman
295753be1a Move infrastructure IA split into settings shell 2026-04-18 20:45:30 +01:00
rcourtman
d78bc64583 Recenter infrastructure settings on monitored systems 2026-04-18 18:46:25 +01:00
rcourtman
8883e36f0b Collapse infrastructure settings to ledger-first workspace 2026-04-18 17:13:34 +01:00
rcourtman
847d09d17b Unify settings infrastructure ledger 2026-04-18 14:54:53 +01:00
rcourtman
b666d131b0 Migrate Docker integrations to maintained Moby modules 2026-04-18 11:40:38 +01:00
rcourtman
35429774b4 Probe /api/health in hot-dev backend monitor
The supervisor's backend health monitor in scripts/hot-dev.sh only
checked whether a `./pulse` process existed via pgrep. If the Go binary
hung, panicked into recovery without exiting, or failed to bind :7655
while the process stayed alive, the monitor saw a healthy process count
and never restarted, leaving the dev frontend talking to a dead listener.
Hit that twice in one session.

Add an HTTP probe of /api/health on the dev port. After two consecutive
5s polls where the process exists but /api/health is unreachable, kill
the process and restart the same way the dead/duplicate branches do.
Cut the poll interval from 10s to 5s so the worst-case unresponsive
window is ~10s instead of ~30s. Bring deployment-installability into
line by naming alive-but-unresponsive recovery as part of the dev-runtime
orchestration boundary, and cover the new branch with static-source
assertions in scripts/tests/test-hot-dev-bg.sh.
2026-04-18 10:56:33 +01:00
rcourtman
fb7b9b01fc Update pinned Go toolchain to 1.25.9 2026-04-18 10:04:34 +01:00
rcourtman
ba9589f091 Fix hot-dev mock mode env contract 2026-04-17 20:49:36 +01:00
rcourtman
85191a9051 Remove blanket Community-visible upgrade marketing surfaces
Cut three surfaces that nagged Community users without explicit feature
engagement: the Dashboard RelayOnboardingCard paywall, the app-wide
ActiveUseTrialNudge (already dead code with no render sites), and the
SetupCompletionPanel "Monitor from Anywhere" Relay trial block.

Feature-gated discovery that fires only when a user clicks a locked
feature (alert investigate, history ranges, Patrol AI modes, Settings
panels) is intentionally left alone — those are user-initiated, not
blanket funnels.

Governance cascade: cloud-paid.md extends the Settings no-funnel rule
to Dashboard and setup completion; registry.json, status.json readiness
assertions RA5/RA18, frontend-primitives/storage-recovery/
performance-and-scalability contracts, the high-risk verification
matrix, the relay registration proof script, the subsystem lookup
tests, and the obsolete integration spec are all scrubbed of
references to the removed files. Blocked-record regenerated against
current VERSION=6.0.0-rc.2 so the promotion-policy test no longer
diffs on a stale rc.1 artifact.
2026-04-17 14:49:28 +01:00
rcourtman
675c47d971 Add contract-neutral bypass to staged shape guard
Introduce PULSE_ALLOW_CONTRACT_NEUTRAL_COMMIT as a narrow escape
hatch for the canonical-shape block in staged_commit_shape_guard
and canonical_completion_guard. A non-empty reason logs to stderr
for audit and suppresses only the canonical-shape requirements;
lane-progress, promotion-proof, sensitivity, gitleaks,
governance-stage, control-plane, status, registry, and contract
audits still run. Previously a behavioral bug fix on a canonical
runtime path demanded full contract + verification ceremony even
when no public-contract delta existed, forcing --no-verify.
2026-04-17 12:24:01 +01:00
rcourtman
b19991f4ae Fix published release body rendering 2026-04-16 22:20:17 +01:00
rcourtman
6fcdcf8b8e Add pre-release Helm chart smoke gate 2026-04-16 21:48:35 +01:00
rcourtman
9855973e5b Fix non-root storage hardening for Helm startup 2026-04-16 21:26:02 +01:00
rcourtman
d1a807e9c5 Fix Helm release-line branch fidelity and smoke diagnostics 2026-04-16 21:05:11 +01:00
rcourtman
447280a0ce Fix release-line demo workflow dispatch and verification 2026-04-16 20:54:01 +01:00
rcourtman
2868b44cf9 chore(release): bump version to 6.0.0-rc.2 2026-04-16 16:22:27 +01:00
rcourtman
7c1c5d396a Own mock runtime fixtures under monitoring 2026-04-16 16:00:23 +01:00
rcourtman
16d86ac094 Own VERSION under deployment-installability 2026-04-16 15:31:42 +01:00
rcourtman
d1600d5ef1 Own prerelease feedback intake under deployment-installability 2026-04-16 15:18:46 +01:00
rcourtman
92d1b22fb1 Own upgrade guide under deployment-installability 2026-04-16 15:06:54 +01:00
rcourtman
954a7c06c7 Tighten rc release packet runbook 2026-04-16 14:57:07 +01:00
rcourtman
78c5107b47 Own release packet docs under deployment-installability 2026-04-16 14:52:30 +01:00
rcourtman
02194a237e Draft rc2 release notes packet 2026-04-16 12:22:03 +01:00
rcourtman
76bbf16105 Lock self-hosted paid extras packaging 2026-04-16 12:15:06 +01:00
rcourtman
5914a4127d Make self-hosted core monitoring uncapped
Refs #1409
2026-04-16 01:21:57 +01:00
rcourtman
3ab2d95d93 Record homelab-friendly self-hosted pricing direction 2026-04-16 00:23:46 +01:00
rcourtman
31315fb594 Normalize Proxmox special ZFS groups
Refs #1413
2026-04-15 16:40:43 +01:00