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
14 KiB
Pulse v5 Documentation Audit (pre-stable)
This is a working audit of Pulse documentation as of VERSION=5.0.0-rc.4, focused on release readiness for a v5 stable cut.
Status (updated 2025-12-18)
Most of the issues identified in this audit have been addressed in-repo:
- Updated install recommendation and bootstrap-token guidance across entrypoints (
README.md,docs/INSTALL.md,docs/FAQ.md,docs/TROUBLESHOOTING.md,docs/DOCKER.md) - Rewritten AI and API docs to match the current v5 implementation (
docs/AI.md,docs/API.md) - Rewritten metrics history docs to match SQLite store + tiered retention (
docs/METRICS_HISTORY.md) - Fixed adaptive polling defaults and rollout paths (
docs/monitoring/ADAPTIVE_POLLING.md,docs/operations/ADAPTIVE_POLLING_ROLLOUT.md) - Reduced temperature monitoring contradictions by making the agent the recommended path and scoping sensor-proxy as a legacy/alternative (
docs/TEMPERATURE_MONITORING.md,docs/security/TEMPERATURE_MONITORING.md,SECURITY.md, sensor-proxy docs) - Updated Helm/Kubernetes docs to prefer OCI distribution and flag the legacy agent block (
docs/KUBERNETES.md,deploy/helm/pulse/README.md,deploy/helm/pulse/values.yaml) - Added missing “operator clarity” docs (
docs/DEPLOYMENT_MODELS.md,docs/UPGRADE_v5.md) - Link validation run: no broken relative
.mdlinks found at time of update
Goals
- Identify docs that are stale, contradictory, or redundant
- Identify missing docs needed for a v5 stable release
- Produce an actionable “what to change, where” checklist
Highest-Priority Fixes (release-blockers)
1) Temperature monitoring guidance is contradictory
There are multiple competing “truths” about how temperature monitoring works in v5:
SECURITY.mddescribes container deployments as requiringpulse-sensor-proxyand explicitly blocks SSH-based temps in containers.- Multiple docs under
docs/security/andcmd/pulse-sensor-proxy/README.mdclaimpulse-sensor-proxyis deprecated in favor of the unified agent. docs/TEMPERATURE_MONITORING.mdis an extensive sensor-proxy-first guide and reads as “current”, but conflicts with the “deprecated” banner elsewhere.- The backend still has extensive support and UX flows for sensor proxy install/register (
/api/install/install-sensor-proxy.sh, temperature proxy diagnostics, container SSH blocking guidance).
Action:
- Decide the canonical v5 story:
- Option A (agent-first): “Install
pulse-agent --enable-proxmoxon each Proxmox host for temperatures and management.pulse-sensor-proxyis legacy or edge-case only.” - Option B (proxy-first for containers): “If Pulse runs in Docker/LXC, temperatures require
pulse-sensor-proxy(socket/HTTPS). The agent is optional for other features.”
- Option A (agent-first): “Install
- Update all docs to align with the chosen story, and ensure
SECURITY.mdreflects it unambiguously.
Status:
- Docs updated to be agent-first, with
pulse-sensor-proxytreated as a legacy/alternative option. - Remaining work is primarily product positioning and long-term deprecation decisions, not broken documentation.
Files involved:
SECURITY.mddocs/TEMPERATURE_MONITORING.mddocs/security/TEMPERATURE_MONITORING.mddocs/security/SENSOR_PROXY_HARDENING.mddocs/security/SENSOR_PROXY_NETWORK.mddocs/security/SENSOR_PROXY_APPARMOR.mddocs/operations/SENSOR_PROXY_CONFIG.mddocs/operations/SENSOR_PROXY_LOGS.mdcmd/pulse-sensor-proxy/README.md
2) AI docs do not match the actual v5 API and configuration model
docs/AI.md and the AI section in docs/API.md appear written for an older/alternate API surface:
docs/AI.mddocumentsPULSE_AI_PROVIDERandPULSE_AI_API_KEYenv vars, but the current implementation persists encrypted AI config inai.encand supports multi-provider credentials (Anthropic/OpenAI/DeepSeek/Gemini/Ollama) plus Anthropic OAuth.docs/API.mdreferences endpoints likePOST /api/ai/chatandPUT /api/settings/aithat do not match the router (current endpoints include/api/ai/execute,/api/ai/models,/api/settings/ai/update, OAuth endpoints, patrol stream, cost summary).
Action:
- Rewrite AI docs to match current behavior:
- Providers actually supported
- How keys/tokens are stored (encrypted) and what the UI exposes
- Anthropic OAuth flow and security implications
- Patrol and command execution (“autonomous mode”) safety controls
- Correct API endpoints and auth requirements
Files involved:
docs/AI.mddocs/API.mdinternal/config/ai.go(source of truth for config fields)internal/api/router.go(source of truth for endpoints)
Status:
docs/AI.mdrewritten to match multi-provider + encrypted config.docs/API.mdAI endpoints updated to match router.
3) Installation “recommended path” is inconsistent across docs
README.mdrecommends “Proxmox LXC (Recommended)” via GitHubinstall.sh.docs/INSTALL.mdanddocs/FAQ.mdcurrently present Docker as the easiest/recommended path.
Action:
- Pick one recommendation hierarchy and make it consistent:
- If Proxmox LXC is the primary path, it should be the top section in
docs/INSTALL.mdand the FAQ answer should reflect it.
- If Proxmox LXC is the primary path, it should be the top section in
Files involved:
README.mddocs/INSTALL.mddocs/FAQ.md
Status:
- Install docs now consistently present Proxmox VE LXC installer as the recommended path and include bootstrap-token retrieval.
4) Kubernetes/Helm docs and chart docs are out of date for v5
docs/KUBERNETES.mdreferences a chart repo URL and “Docker Agent sidecar”.deploy/helm/pulse/README.mddescribes “optional Docker monitoring agent” and defaults toghcr.io/rcourtman/pulse-docker-agent.
Action:
- Update Helm docs to match the v5 agent direction:
- If
pulse-docker-agentis deprecated, the chart should not reference it as primary. - Align chart distribution instructions (Helm repo vs OCI).
- If
Files involved:
docs/KUBERNETES.mddeploy/helm/pulse/README.mddeploy/helm/pulse/values.yamldeploy/helm/pulse/templates/*
Status:
docs/KUBERNETES.mdupdated to prefer OCI chart installs and flag the legacy agent block.deploy/helm/pulse/README.mdanddeploy/helm/pulse/values.yamlnow label the agent workload as legacy.
Redundant / Duplicated Docs (needs consolidation)
Auto-update docs: two competing sources
docs/AUTO_UPDATE.mddescribes “Settings → System Updates” and includes docker image instructions that differ from other docs.docs/operations/AUTO_UPDATE.mddocuments systemd timers and edits/var/lib/pulse/system.jsonwhich appears stale for current config defaults (/etc/pulse/system.json).
Action:
- Choose one canonical page (likely
docs/AUTO_UPDATE.md) and:- Move operational/timer details into it (or link to a clearly “advanced ops” page)
- Fix stale paths and service names
- Remove or clearly label the non-canonical duplicate
Files involved:
docs/AUTO_UPDATE.mddocs/operations/AUTO_UPDATE.md
Status:
- Both documents updated to current UI naming and paths; optional future work is to consolidate into a single canonical page.
Temperature monitoring docs: two sources with different “truth”
docs/TEMPERATURE_MONITORING.md(sensor proxy focused, extensive)docs/security/TEMPERATURE_MONITORING.md(agent recommended, proxy “legacy”)
Action:
- Collapse into one canonical document with a clear decision tree, then:
- Keep the other as a short redirect page, or delete it.
Files involved:
docs/TEMPERATURE_MONITORING.mddocs/security/TEMPERATURE_MONITORING.md
Status:
docs/TEMPERATURE_MONITORING.mdis now the canonical deep-dive, anddocs/security/TEMPERATURE_MONITORING.mdis a security/overview page.
Adaptive polling docs disagree with defaults and file paths
docs/monitoring/ADAPTIVE_POLLING.mdclaims adaptive polling is enabled by default and says env default istrue.- Code defaults
AdaptivePollingEnabled=falseanddocs/operations/ADAPTIVE_POLLING_ROLLOUT.mdreferences/var/lib/pulse/system.json.
Action:
- Make one canonical doc, fix defaults and paths, and ensure UI path matches current navigation.
Files involved:
docs/monitoring/ADAPTIVE_POLLING.mddocs/operations/ADAPTIVE_POLLING_ROLLOUT.md
Status:
- Defaults and paths updated to match current behavior.
Stale / Incorrect Content (targeted findings)
docs/API.md
Issues:
- AI endpoints mismatch current router paths (examples:
POST /api/ai/chatvs current/api/ai/execute; settings update path differs). - “complete REST API documentation” claim is optimistic. It’s a curated subset plus a “check router.go” note.
Action:
- Update AI section to match
internal/api/router.go. - Consider splitting into:
- “Stable/public API” (guaranteed)
- “Internal/subject to change” (documented but not stable)
docs/METRICS_HISTORY.md
Issues:
- Documents
PULSE_METRICS_*_RETENTION_DAYSenv vars that do not appear to exist in the server config. - Claims metrics are stored under
/etc/pulse/data/metrics/, but the metrics store is SQLite (metrics.db) under the configured data directory.
Action:
- Rewrite this doc to match the tiered retention model and actual storage format/location.
docs/FAQ.md
Issues:
- Recommends Docker as easiest install, conflicts with repo README.
- Password reset guidance does not mention the bootstrap token requirement that can appear after removing
.env. - Mentions
METRICS_RETENTION_DAYSwhich does not appear to be a current server config knob (v5 uses tiered retention settings).
Action:
- Align install recommendation with v5 positioning.
- Update auth reset steps to include bootstrap token retrieval where applicable.
- Replace metrics retention knob guidance with current retention model and UI location.
docs/TROUBLESHOOTING.md and docs/DOCKER.md
Issues:
- “Forgot password” flow implies you can just rerun the setup wizard after deleting
.env, but first-time setup can require the bootstrap token.
Action:
- Update password reset steps and link to the bootstrap token section in
docs/INSTALL.md.
docs/RELEASE_NOTES.md
Issues:
- Entire document is v4.x release notes.
Action:
- Replace with v5 release notes (or move to
docs/releases/and add v5.0.0 as the top section). - For the v5 stable cut, include: breaking changes, migration notes, and versioned “what changed since v4”.
cmd/pulse-sensor-proxy/README.md
Issues:
- Mentions downloading via
/download/pulse-sensor-proxybut the server router does not expose this endpoint. - “Deprecated” banner conflicts with current server behavior and security guidance.
Action:
- Either bring it in line with the chosen v5 temperature story, or clearly scope it as legacy.
Broken local link
docs/TEMPERATURE_MONITORING.mdcontains an absolute link to/opt/pulse/cmd/pulse-sensor-proxy/README.mdwhich does not work in GitHub.
Action:
- Replace with a repo-relative link (or link to the canonical temperature doc).
Widespread “runtime path” drift (/opt/pulse/...)
Several user-facing docs mix:
- repository paths (
/opt/pulse/...) used in this dev workspace, and - runtime paths used in real installs (
/etc/pulse,/data,/var/log/pulse, systemd units).
This creates confusion and broken copy-paste commands.
Examples to review:
docs/ZFS_MONITORING.mdreferences/opt/pulse/.envand/opt/pulse/pulse.log.docs/operations/*references/var/lib/pulse/system.jsonrather than/etc/pulse/system.json.
Action:
- Adopt a consistent convention across docs:
- Runtime:
/etc/pulse(systemd/LXC),/data(Docker/Helm) - Repo/dev:
/opt/pulseonly in development docs - Logs:
journalctl -u pulse(systemd) anddocker logs(Docker), plus/var/log/pulse/*only if actually used in production images.
- Runtime:
Missing Docs for a v5 Stable Release (recommended additions)
v5 upgrade guide (v4 → v5)
Add a single canonical page covering:
- “What changes in v5” in operator terms
- Any breaking changes and required actions
- Post-upgrade verification checklist (health endpoint, scheduler health, agents connected, temps, notifications)
- Rollback guidance for each deployment model (Docker, systemd/LXC, Helm)
Suggested path:
docs/UPGRADE_v5.md(ordocs/MIGRATION_v5.md)
“Deployment model matrix”
Many docs implicitly assume a deployment type. Add a short matrix page that answers:
- What works on Docker vs Proxmox LXC vs systemd vs Helm
- How updates work per model
- Where config lives per model
- What “recommended” means (and why)
Suggested path:
docs/DEPLOYMENT_MODELS.md
AI safety and permissions
If v5 ships AI “execute/run-command” features:
- Document default safety posture
- What autonomous mode does
- Required scopes/roles
- Audit logging expectations
- Clear warning section for production
Suggested path:
- Expand
docs/AI.mdwith a “Safety” section, or adddocs/AI_SAFETY.md.
Quick “Status” Inventory (what to touch for v5)
This is a fast triage list to help plan the doc refresh. Treat anything marked “Review” as “verify against current behavior”.
- Rewrite:
docs/AI.md - Rewrite:
docs/METRICS_HISTORY.md - Rewrite:
docs/RELEASE_NOTES.md(or replace with v5 release notes) - Update + align:
docs/INSTALL.md,docs/FAQ.md,docs/TROUBLESHOOTING.md - Update:
docs/API.md(especially AI endpoints) - Decide canonical + consolidate:
docs/TEMPERATURE_MONITORING.mdvsdocs/security/TEMPERATURE_MONITORING.mddocs/AUTO_UPDATE.mdvsdocs/operations/AUTO_UPDATE.mddocs/monitoring/ADAPTIVE_POLLING.mdvsdocs/operations/ADAPTIVE_POLLING_ROLLOUT.md
- Review (Helm):
docs/KUBERNETES.md,deploy/helm/pulse/README.md - Review (paths):
docs/ZFS_MONITORING.md(and any other doc that uses/opt/pulse/...in user instructions)
Suggested “Doc Refresh” Execution Order
- Decide v5 canonical stories (agent vs proxy for temps, AI capabilities, Helm strategy).
- Update the primary entrypoints:
README.mddocs/README.mddocs/INSTALL.md
- Fix contradictions and remove duplicates (temperature, auto-update, adaptive polling).
- Update
docs/API.mdto reflect current endpoints (especially AI). - Add v5 upgrade guide and deployment matrix.
- Sweep FAQ + troubleshooting for the new canonical flows.