Distinguish private prompt preparation, preflight and read-only profile inspection from installation and destructive removal. Keep existing unavailable-agent and automatic-update investigations separate, and route FAQ and troubleshooting readers to the existing private-file and recovery guides.
Contract-Neutral: Help copy and rendered-document regression checks only; installer, credential, lifecycle and monitoring contracts are unchanged.
Change-source: pulse-maintainer
The FAQ promised every metric could be disabled globally or per resource with -1. Clarify supported editor controls, overriding thresholds, unchanged collection, queued notifications and the existing Patrol fallback. Keep ordinary notification help reachable without generating new alerts.
Contract-Neutral: Existing help and its source/rendering/browser checks only; no alert, notification, Patrol, settings or API behaviour changes.
Change-source: pulse-maintainer
Audited the customer-facing docs against the code: about 5,200 concrete
claims (env vars, endpoints, flags, defaults, ports, UI labels), plus every
environment variable the code reads. Each discrepancy was re-verified
against the source before editing, and every edit was reviewed again.
What users would have hit following the old text:
- UI paths and labels that no longer exist (Settings > Relay, Platform
connections, Access Control, SSO Providers, Create Organization) and
Patrol mode names (now Ask first, Safe auto-fix, Autopilot).
- Wrong values and behaviour: LOG_MAX_AGE=0 does not disable cleanup,
Patrol evidence budget is 10 calls and 12 turns, ALLOW_UNPROTECTED_EXPORT
covers private networks too, PULSE_AUDIT_ASYNC defaults on.
- Agent install: install.sh ignores PULSE_ENABLE_KUBERNETES and
PULSE_ENABLE_PROXMOX, rejects --disable-auto-update, and the token
fallback lives in the state directory.
- API: audit endpoints answer 402 on Community, onboarding QR is GET,
type=container is rejected, several routes need admin plus a scope.
- HTTP_REDIRECT_PORT was not documented anywhere.
Docs are mirrored under frontend-modern/public/docs, so each change is
applied to both copies. The tests that pinned the old wording (including
three that asserted claims the code contradicts) are updated alongside.
Contract-Neutral: Customer docs corrected to match shipped behaviour; no runtime, API or contract change.
The latest memory report is about a higher steady baseline, not a leak. Keep steady regressions actionable, separate unlike process ages and CPU savings from RSS recovery, and preserve existing evidence without another restart, downgrade or profile. Keep the shipped guides, optional intake and regression controls aligned.
Contract-Neutral: Clarifies interpretation of existing memory reports and documentation only; no runtime, API, route, collection recipe, label synchronizer or subsystem contract changes.
Change-source: pulse-maintainer
Separate hypervisor footprint, Linux availability and process RSS in existing troubleshooting, FAQ and threshold help. Keep comparisons on the same guest, kernel, time and units, preserve unknown or retained evidence, and avoid diagnostic probes, restarts, cache drops and blanket suppression.
Contract-Neutral: Documentation and source-bound help regressions only; memory collection, Patrol decisions, alert controls and access contracts are unchanged.
Change-source: pulse-maintainer
Separate job outcome classification from stale or absent inventory, point to existing native and expanded-row evidence, and keep disruptive diagnostics and broad permissions out of the help path.
Contract-Neutral: Existing mirrored help and rendered guidance checks only; replication runtime, API and authority contracts are unchanged.
Change-source: pulse-maintainer
Distinguish the web listener from Docker's host port and apply environment handover through the existing deployment, with data, credentials and security overrides preserved. Link the detailed recovery paths and add parent-sensitive documentation checks plus a bounded browser scenario.
Contract-Neutral: Documentation and test-fixture changes only; no configuration, runtime, API, privacy, installation or subsystem contract delta.
Change-source: pulse-maintainer
Correct the FAQ, configuration, proxy help and existing Network settings field together. Distinguish same-origin proxy routing from cross-origin browser access, explain wildcard credential limits, preserve authentication and private diagnostics, and link actual rendered guidance. Verify desktop and phone input/override/help states without an API or proxy mutation.
Change-source: pulse-maintainer
Contract-Neutral: Existing CORS guidance, accessible description and renderer coverage only; API, origin policy, settings persistence and authentication contracts are unchanged.
Replace mandatory sensor installation and hardware detection with existing readings, bounded private checks and verified token-file setup. Preserve agent and SSH boundaries, distinguish CPU/SoC from disk temperature and keep incident-time setup deferred. Cover the rendered FAQ, destination anchors and served copies.
Change-source: pulse-maintainer
Contract-Neutral: Existing help and renderer coverage only; sensor collection, access permissions and runtime contracts are unchanged.
Fix the invalid fragment caught by the rendered-guide regression. Keep the canonical and served FAQ identical and preserve the missing-data repair and all safety guidance.
Contract-Neutral: Documentation link correction only; no monitoring, API, authentication, network or dependency contract delta.
Change-source: pulse-maintainer
Separate missing navigation, current readings and stored History. Route the FAQ to platform-specific evidence and distinguish browser-to-Pulse refusal from server-to-platform refusal, preserving credentials, identity, TLS and backup safety.
Contract-Neutral: Documentation and rendered-guide regressions only; no monitoring, API, authentication, network or dependency contract changes.
Change-source: pulse-maintainer
Accept the exact PI commit with retained renderer, failing-parent and packaging evidence. Preserve the independently reviewed guest-safety FAQ repair.
Change-source: pulse-maintainer
Lead high-memory readers to the shipped passive process-scoped checks rather than shrinking retention. Explain the history and detection trade-offs and the safe stop condition; rendered-link controls cover the actual target and shipped mirrors.
Change-source: pulse-maintainer
A disk dash does not diagnose an absent or stopped agent. Keep setup specific to the supported guest OS, defer live changes during backup or guest incidents, and require independent recovery rather than treating a retained reading or an OK backup as current evidence. Link the existing guidance and cover its rendered destinations and shipped mirror.
Contract-Neutral: Documentation and rendered-help coverage only; no runtime, data, API or permission contract changes.
Change-source: pulse-maintainer
Route Docker and FAQ readers through one credential-source-aware recovery guide. Replace only the active password, retain unrelated settings and agent tokens, and account for systemd drop-ins and container environment application. Check private prompt output, failure stops, bcrypt loading, precedence and rendered help links.
Contract-Neutral: Documentation and test coverage only; existing authentication, setup and deployment contracts are unchanged.
Change-source: pulse-maintainer
The existing FAQ and linked entitlement guide still advertise Relay purchases and remote web access after the reviewed retirement change. Explain continuing app access, subscriber Pro continuity, current plans and phone-alert alternatives; distinguish old Relay payloads without changing their runtime gates. Preserve shipped mirrors and enforce the accepted security guidance's continuing-access boundary.
Contract-Neutral: Documentation and copy assertions reflect existing retirement policy; runtime entitlements, routes and access controls are unchanged.
Change-source: pulse-maintainer
pct exec runs with PATH=/sbin:/bin:/usr/sbin:/usr/bin, which does not
include /usr/local/bin where the pulse binary is linked. Every first-run
instruction that invoked a bare `pulse` through pct exec therefore failed
with exit 127, including the command the installer itself prints at the
end of an LXC install.
Reproduced on Proxmox VE 9.1.9 and 8.3.0:
pct exec <ctid> -- pulse --version
-> exit 127, Failed to exec "pulse"
pct exec <ctid> -- /usr/local/bin/pulse --version
-> Pulse v6.2.0-rc.8
The installer now prints $BINARY_LINK_PATH and $UPDATE_HELPER_PATH rather
than a bare name, so both stay correct when a custom service name moves
them. The update helper was only affected for custom service names, since
the default /bin/update already sits on the pct exec PATH.
Docs updated in INSTALL.md, FAQ.md and TROUBLESHOOTING.md plus their
frontend-modern/public/docs mirrors. The setup wizard prints the same
broken command and is fixed separately.
Public declaration of how AI tools are used to build and maintain
Pulse, linked from the README documentation list and the FAQ.
Automated triage replies now carry a disclosure footer per the
policy this document sets.
Disabling one metric for one resource required knowing to type -1 into
the override editor (the alert engine treats trigger <= 0 as disabled),
and the global-defaults row could only re-enable a disabled metric by
click, not disable one. Add an On/Off badge next to the threshold input
in the override row editor (desktop and mobile), in the global-defaults
row (desktop and mobile), and in the bulk edit dialog, mirroring the
existing Backup/Snapshot StatusBadge pattern in the same rows. The
toggle writes -1; toggling back on restores the inherit-default state
in override editors and the metric's enabled default in global
defaults. In the desktop row editor the badge swallows mousedown so it
doesn't blur the input, which would save and close the editor before
the click lands.
Also fix the off-value inconsistency found while triaging #1642: the
thresholds help banner told users to type 0, which the edit-state off
detection (=== -1) never recognises. Standardize the advertised
disable value on -1, matching docs/FAQ.md and the engine's actual off
sentinel; read-mode cells keep treating <= 0 as Off so overrides saved
as 0 under the old banner still display correctly.
Closes#1642.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contract-Neutral: UI-only off toggle over existing -1 threshold semantics; no alert truth or identity change
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.
Manifest-backed MCP tools, prompts, and resources with surface affordance contracts; agent capability manifest and governance projection; API contract tests and capability route projection; operations-loop and intelligence-funnel telemetry; release-control subsystem documentation, registry, and tooling; licensing and configuration.
Update docs to reflect the simplified temperature monitoring architecture:
- Remove references to pulse-sensor-proxy throughout
- Update TEMPERATURE_MONITORING.md to focus on unified agent approach
- Update CONFIGURATION.md, DEPLOYMENT_MODELS.md, FAQ.md
- Remove SECURITY_CHANGELOG.md (proxy-specific security notes)
- Clarify current recommended setup in various guides
- Major updates to README.md and docs/README.md for Pulse v5
- Added technical deep-dives for Pulse Pro (docs/PULSE_PRO.md) and AI Patrol (docs/AI.md)
- Updated Prometheus metrics documentation and Helm schema for metrics separation
- Refreshed security, installation, and deployment documentation for unified agent models
- Cleaned up legacy summary files
The storage deduplication logic only checked cluster config's Shared
flag, but this required the cluster config API call to succeed. When
the per-node storage API already returns shared=1 (as the user
verified), we should use that directly.
Now we check three sources for shared storage detection:
1. Per-node API shared flag (storage.Shared)
2. Cluster config shared flag (if available)
3. Storage type heuristics (NFS, RBD, PBS, etc.)
Related to #1049
Adds IncludeAllDeployments option to show all deployments, not just
problem ones (where replicas don't match desired). This provides parity
with the existing --kube-include-all-pods flag.
- Add IncludeAllDeployments to kubernetesagent.Config
- Add --kube-include-all-deployments flag and PULSE_KUBE_INCLUDE_ALL_DEPLOYMENTS env var
- Update collectDeployments to respect the new flag
- Add test for IncludeAllDeployments functionality
- Update UNIFIED_AGENT.md documentation
Addresses feedback from PR #855
- FAQ.md: Replace LXC installer one-liner with Docker quick start
- MIGRATION.md: Replace LXC mention with Kubernetes
- README.md: Remove "Proxmox LXC" from installation methods list
The install.sh script is a unified agent installer, not an LXC
container creator. Pulse server installation is via Docker,
Kubernetes helm, or manual systemd setup.
Scripts like install.sh and install-sensor-proxy.sh are now attached
as release assets and downloaded from releases/latest/download/ URLs.
This ensures users always get scripts compatible with their installed
version, even while development continues on main.
Changes:
- build-release.sh: copy install scripts to release directory
- create-release.yml: upload scripts as release assets
- Updated all documentation and code references to use release URLs
- Scripts reference each other via release URLs for consistency