Skip to content

docs: standardize README format across all apps#285

Merged
hobroker merged 2 commits intomasterfrom
docs/update-readmes
Mar 20, 2026
Merged

docs: standardize README format across all apps#285
hobroker merged 2 commits intomasterfrom
docs/update-readmes

Conversation

@hobroker
Copy link
Copy Markdown
Owner

@hobroker hobroker commented Mar 19, 2026

Summary

  • Simplified Helm install commands to single-line format (removed --namespace default --create-namespace)
  • Standardized storage tables with consistent columns: source, container path, type, description
  • Added explicit type column (hostPath, nfs, etc.) to storage tables
  • Removed redundant PV/PVC reference lines from storage sections
  • Minor section restructuring for consistency

Affected apps: n8n, openclaw, backrest, syncthing, code-server, http-https-echo, bazarr, fileflows, flaresolverr, jellyfin, plex, prowlarr, qbittorrent, radarr, recyclarr, seerr, sonarr, tautulli, threadfin, grafana-backup, prometheus-operator, scraparr, adguardhome, argocd, infisical-operator, local-path-provisioner, metallb, traefik

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Simplified manual Helm install/upgrade examples into single-line commands and removed explicit namespace flags.
    • Standardized Kubernetes apply steps to target the config directory (kustomize in some cases).
    • Reworked storage tables: added a “type” column and renamed “containerPath” to “container path.”
    • Moved/removed several Secrets sections and reordered content for clearer flows.
    • Added/clarified manual install notes and post-install steps (including ArgoCD sync and IP-pool/postsync guidance).

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 19, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c4c70b19-881d-4e26-aaa6-fef32884db9f

📥 Commits

Reviewing files that changed from the base of the PR and between 38dd55d and b4f2bd1.

📒 Files selected for processing (32)
  • apps/automation/n8n/README.md
  • apps/automation/openclaw/README.md
  • apps/backup/backrest/README.md
  • apps/backup/syncthing/README.md
  • apps/development/code-server/README.md
  • apps/development/http-https-echo/README.md
  • apps/media/bazarr/README.md
  • apps/media/fileflows/README.md
  • apps/media/flaresolverr/README.md
  • apps/media/jellyfin/README.md
  • apps/media/plex/README.md
  • apps/media/prowlarr/README.md
  • apps/media/qbittorrent/README.md
  • apps/media/radarr/README.md
  • apps/media/recyclarr/README.md
  • apps/media/seerr/README.md
  • apps/media/sonarr/README.md
  • apps/media/tautulli/README.md
  • apps/media/threadfin/README.md
  • apps/monitoring/grafana-backup/README.md
  • apps/monitoring/prometheus-operator/README.md
  • apps/monitoring/scraparr/README.md
  • apps/network/adguardhome/README.md
  • apps/system/argocd/README.md
  • apps/system/infisical-operator/README.md
  • apps/system/local-path-provisioner/README.md
  • apps/system/metallb/README.md
  • apps/system/metallb/application.yaml
  • apps/system/metallb/config/kustomization.yaml
  • apps/system/metallb/postsync/ippool.yaml
  • apps/system/metallb/postsync/kustomization.yaml
  • apps/system/traefik/README.md

📝 Walkthrough

Walkthrough

This PR standardizes many app READMEs: switch kubectl apply targets to config (or -k config where noted), collapse multi-line Helm commands to single-line forms (removing explicit --namespace ... --create-namespace flags), reformat storage tables to use container path and a new type column, remove explicit PV→PVC mapping lines, and add/move a few ArgoCD/Kustomize postsync entries (metallb).

Changes

Cohort / File(s) Summary
Media apps (many)
apps/media/bazarr/README.md, apps/media/fileflows/README.md, apps/media/flaresolverr/README.md, apps/media/jellyfin/README.md, apps/media/plex/README.md, apps/media/prowlarr/README.md, apps/media/qbittorrent/README.md, apps/media/radarr/README.md, apps/media/recyclarr/README.md, apps/media/seerr/README.md, apps/media/sonarr/README.md, apps/media/tautulli/README.md, apps/media/threadfin/README.md, apps/media/sonarr/README.md
Changed kubectl apply to config (or kustomize where noted), simplified Helm invocations to single-line (removed explicit namespace flags), refactored storage tables: renamed containerPathcontainer path, added type column (hostPath/nfs/emptyDir), and removed PV→PVC mapping lines; some Secrets sections adjusted/removed.
Automation & Backup
apps/automation/n8n/README.md, apps/automation/openclaw/README.md, apps/backup/backrest/README.md, apps/backup/syncthing/README.md
Apply config instead of single PV files, collapse Helm commands, update storage table schema to include type, remove PV→PVC mapping lines; backrest removed the manual /var/local/backrest/data prerequisite; openclaw secrets/storage reorganized.
Development & Misc apps
apps/development/code-server/README.md, apps/development/http-https-echo/README.md, apps/media/recyclarr/README.md, apps/automation/openclaw/README.md
Standardized kubectl apply -f config, simplified Helm command formatting, updated storage table column names/types; recyclarr and openclaw updated Secrets wording to reference Infisical secrets.
Network & Monitoring
apps/network/adguardhome/README.md, apps/monitoring/grafana-backup/README.md, apps/monitoring/scraparr/README.md, apps/monitoring/prometheus-operator/README.md
Normalized apply steps (config or -k config), collapsed Helm commands; Prometheus-operator consolidated persistence notes and adjusted apply ordering.
System apps & ArgoCD/Kustomize changes
apps/system/argocd/README.md, apps/system/infisical-operator/README.md, apps/system/local-path-provisioner/README.md, apps/system/traefik/README.md, apps/system/metallb/README.md, apps/system/metallb/application.yaml, apps/system/metallb/config/kustomization.yaml, apps/system/metallb/postsync/kustomization.yaml
Added ArgoCD application apply/sync snippet; standardized kubectl apply -f config; added Manual Helm workflow for local-path-provisioner; Traefik added prerequisites and storage table edits; MetalLB: removed namespace label prerequisite, moved IPPool to postsync/ippool.yaml (kustomize updated) and added postsync source to ArgoCD Application.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🎉 README fiesta—papers in order, charts humming like a copier,
Configs now march from config/ with Helm commands lean and proper.
Tables grew a “type” column—tidy as a Dwight-approved desk,
PV→PVC lines retired, the docs look fresh and picturesque.
Pizza Party Friday for READMEs—celebrate the little wins!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs: standardize README format across all apps' clearly and concisely summarizes the main objective of the changeset, which is to standardize documentation across multiple application README files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/update-readmes
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/monitoring/grafana-backup/README.md (1)

24-26: ⚠️ Potential issue | 🟡 Minor

Hold on, hold on, hold on! We've got an inconsistency here, people!

According to the PR objectives, we're "Simplified Helm install commands to a single-line format by removing --namespace default --create-namespace." But this file still has the multi-line format with namespace flags:

helm upgrade --install grafana-backup bjw-s/app-template \
  --namespace monitoring --create-namespace \
  -f values.yaml

Meanwhile, http-https-echo and flaresolverr got the streamlined treatment! Why is grafana-backup being left out of the simplification party?

Now, I get it - maybe monitoring namespace apps need special treatment. But then we need to be consistent: either ALL apps get simplified, or we have a clear pattern (like "only default namespace apps get simplified"). Right now it's like having a pizza party but only inviting accounting!

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/monitoring/grafana-backup/README.md` around lines 24 - 26, The README
contains an inconsistent multi-line Helm command for grafana-backup; change the
multi-line command (the block starting with "helm upgrade --install
grafana-backup") to the simplified single-line form used elsewhere (remove the
trailing backslashes/newlines so the entire command is one line), keeping the
same flags if the monitoring namespace is required (e.g., "--namespace
monitoring --create-namespace") or remove namespace flags only if following the
established rule of dropping "--namespace default --create-namespace"; ensure
the final single-line command matches the pattern used by http-https-echo and
flaresolverr.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/backup/backrest/README.md`:
- Around line 29-32: The README table lists hostPath mounts like
`/var/local/backrest/data` but doesn't state that the PV uses
`DirectoryOrCreate` to create the host path, which can confuse operators; update
the README (near the table rows for `/var/local/backrest/data` and `/var/local`)
to add a short note stating that the persistent volume uses `DirectoryOrCreate`
so the host path will be created automatically by the PV and no manual directory
creation is required, replacing the removed prerequisite guidance.

In `@apps/media/qbittorrent/README.md`:
- Line 32: Update the README line that currently reads "Full nebula share
(downloads, etc)" to include proper punctuation by changing "etc" to "etc." so
it becomes "Full nebula share (downloads, etc.)" — locate the table row string
"`192.168.50.7:/mnt/nebula` | `/mnt/nebula` | `nfs` | Full nebula share
(downloads, etc)` and replace the final fragment accordingly.

In `@apps/media/sonarr/README.md`:
- Around line 29-35: Remove the legacy PV→PVC mapping lines and update the
storage table entries to match the new format: delete the lines containing "PV:
`sonarr-config-pv` → PVC: `sonarr-config-pvc`" and "PV: `sonarr-nebula-pv` →
PVC: `sonarr-nebula-pvc`", and change the description text for the `/mnt/nebula`
row from "Full nebula share (tvshows, downloads)" to "Full nebula share (TV
shows, downloads)" so the table remains standardized and readable.

In `@apps/media/threadfin/README.md`:
- Line 32: Replace the em dash placeholder '—' in the README table row for the
emptyDir source with a machine-friendly token like 'N/A' so the row reads the
three columns as '/tmp/threadfin', 'emptyDir', 'Temporary files'; update the
single table cell that currently contains '—' to 'N/A' to improve plain-text
searchability and consistency.

In `@apps/monitoring/prometheus-operator/README.md`:
- Line 21: Add a one-line explanatory comment before the existing kubectl apply
command to clarify its purpose: explain that kubectl apply -f config creates the
InfisicalSecret used for Grafana credentials which must exist before running the
Helm install; update the README.md section containing the line "kubectl apply -f
config" to include that comment so readers understand why order matters.

In `@apps/system/local-path-provisioner/README.md`:
- Around line 20-26: The README shows creating the namespace via "kubectl apply
-f config" (which applies config/namespace.yaml) and then runs the Helm command
for "helm upgrade --install local-path-provisioner ... --namespace
local-path-storage --create-namespace"; remove the redundant
"--create-namespace" flag from the Helm invocation so the namespace creation is
solely handled by the kubectl apply step and the Helm call uses only
"--namespace local-path-storage".
- Line 22: The README currently instructs cloning into a fixed path ("git clone
--depth 1 --branch v0.0.35 https://github.com/rancher/local-path-provisioner.git
/tmp/local-path-provisioner"), which can conflict on repeated runs; update the
README to show either a safe cleanup step that removes
/tmp/local-path-provisioner before cloning or an alternative that clones into a
unique temporary directory (e.g., mktemp-based) and cleans it up after use;
reference the git clone command and the /tmp/local-path-provisioner target so
readers know exactly what to replace or clean up.

In `@apps/system/metallb/README.md`:
- Line 48: The README claims an ArgoCD `postsync/` separate source with
`sync-wave: "1"` exists but the ArgoCD Application manifest does not define that
source; either add the missing postsync kustomize/Helm `source` entry to the
Application manifest (so the IP pool manifests are included as a separate source
with `sync-wave: "1"`) or update the README to remove/clarify the postsync
statement; locate the Application manifest reference (search for the Application
resource and the `spec.sources` block and the `sync-wave` annotation) and either
add a new source entry referencing `postsync/` with the appropriate `path` and
`sync-wave: "1"` annotation, or change the README line to accurately reflect the
current `spec.sources`.
- Around line 35-37: The helm command "helm upgrade --install metallb
metallb/metallb ..." in the README lacks a --version pin and can pull a
different chart than ArgoCD's targetRevision (0.14.9); fix by adding a --version
0.14.9 flag to that helm upgrade/install invocation so the manual deploy matches
the ArgoCD locked chart version.

---

Outside diff comments:
In `@apps/monitoring/grafana-backup/README.md`:
- Around line 24-26: The README contains an inconsistent multi-line Helm command
for grafana-backup; change the multi-line command (the block starting with "helm
upgrade --install grafana-backup") to the simplified single-line form used
elsewhere (remove the trailing backslashes/newlines so the entire command is one
line), keeping the same flags if the monitoring namespace is required (e.g.,
"--namespace monitoring --create-namespace") or remove namespace flags only if
following the established rule of dropping "--namespace default
--create-namespace"; ensure the final single-line command matches the pattern
used by http-https-echo and flaresolverr.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9f43ed7d-020a-472b-8747-e6e0ebce34c0

📥 Commits

Reviewing files that changed from the base of the PR and between eae58d4 and b6f318a.

📒 Files selected for processing (28)
  • apps/automation/n8n/README.md
  • apps/automation/openclaw/README.md
  • apps/backup/backrest/README.md
  • apps/backup/syncthing/README.md
  • apps/development/code-server/README.md
  • apps/development/http-https-echo/README.md
  • apps/media/bazarr/README.md
  • apps/media/fileflows/README.md
  • apps/media/flaresolverr/README.md
  • apps/media/jellyfin/README.md
  • apps/media/plex/README.md
  • apps/media/prowlarr/README.md
  • apps/media/qbittorrent/README.md
  • apps/media/radarr/README.md
  • apps/media/recyclarr/README.md
  • apps/media/seerr/README.md
  • apps/media/sonarr/README.md
  • apps/media/tautulli/README.md
  • apps/media/threadfin/README.md
  • apps/monitoring/grafana-backup/README.md
  • apps/monitoring/prometheus-operator/README.md
  • apps/monitoring/scraparr/README.md
  • apps/network/adguardhome/README.md
  • apps/system/argocd/README.md
  • apps/system/infisical-operator/README.md
  • apps/system/local-path-provisioner/README.md
  • apps/system/metallb/README.md
  • apps/system/traefik/README.md

Comment on lines +29 to +32
| source | container path | type | description |
| -------------------------- | -------------- | ---------- | ------------------------------------- |
| `/var/local/backrest/data` | `/data` | `hostPath` | Backrest config, repos index and logs |
| `/var/local` | `/var/local` | `hostPath` | Backrest varlocal data |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Tiny clarity boost recommended before this train leaves Scranton.

Consider adding a brief note that the host path is created by the PV (DirectoryOrCreate) to replace the removed prerequisite guidance and avoid operator confusion.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/backup/backrest/README.md` around lines 29 - 32, The README table lists
hostPath mounts like `/var/local/backrest/data` but doesn't state that the PV
uses `DirectoryOrCreate` to create the host path, which can confuse operators;
update the README (near the table rows for `/var/local/backrest/data` and
`/var/local`) to add a short note stating that the persistent volume uses
`DirectoryOrCreate` so the host path will be created automatically by the PV and
no manual directory creation is required, replacing the removed prerequisite
guidance.

Comment thread apps/media/qbittorrent/README.md Outdated
| source | container path | type | description |
| -------------------------- | --------------------- | ---------- | ---------------------------------- |
| `/var/local/qbittorrent` | `/config/qBittorrent` | `hostPath` | Application configuration |
| `192.168.50.7:/mnt/nebula` | `/mnt/nebula` | `nfs` | Full nebula share (downloads, etc) |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Tiny punctuation snag at Line 32.

Please change etc to etc. in “Full nebula share (downloads, etc)” for correct American English punctuation.

🧰 Tools
🪛 LanguageTool

[style] ~32-~32: In American English, abbreviations like “etc.” require a period.
Context: ...s` | Full nebula share (downloads, etc) |

(ETC_PERIOD)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/media/qbittorrent/README.md` at line 32, Update the README line that
currently reads "Full nebula share (downloads, etc)" to include proper
punctuation by changing "etc" to "etc." so it becomes "Full nebula share
(downloads, etc.)" — locate the table row string "`192.168.50.7:/mnt/nebula` |
`/mnt/nebula` | `nfs` | Full nebula share (downloads, etc)` and replace the
final fragment accordingly.

Comment thread apps/media/sonarr/README.md Outdated
Comment on lines 29 to 35
| source | container path | type | description |
| -------------------------- | -------------- | ---------- | -------------------------------------- |
| `/var/local/sonarr` | `/config` | `hostPath` | Application configuration and database |
| `192.168.50.7:/mnt/nebula` | `/mnt/nebula` | `nfs` | Full nebula share (tvshows, downloads) |

PV: `sonarr-config-pv` → PVC: `sonarr-config-pvc`
PV: `sonarr-nebula-pv` → PVC: `sonarr-nebula-pvc`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Storage section still has leftover “old world” artifacts.

The standardized table is great, but Lines 34-35 still keep PV→PVC mapping lines. That breaks the new format goal. Also, consider changing tvshows to TV shows for readability.

Suggested doc cleanup
 | source                     | container path | type       | description                            |
 | -------------------------- | -------------- | ---------- | -------------------------------------- |
 | `/var/local/sonarr`        | `/config`      | `hostPath` | Application configuration and database |
-| `192.168.50.7:/mnt/nebula` | `/mnt/nebula`  | `nfs`      | Full nebula share (tvshows, downloads) |
-
-PV: `sonarr-config-pv` → PVC: `sonarr-config-pvc`
-PV: `sonarr-nebula-pv` → PVC: `sonarr-nebula-pvc`
+| `192.168.50.7:/mnt/nebula` | `/mnt/nebula`  | `nfs`      | Full nebula share (TV shows, downloads) |
🧰 Tools
🪛 LanguageTool

[grammar] ~32-~32: Ensure spelling is correct
Context: ...ula |nfs | Full nebula share (tvshows, downloads) | PV:sonarr-config-pv` →...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/media/sonarr/README.md` around lines 29 - 35, Remove the legacy PV→PVC
mapping lines and update the storage table entries to match the new format:
delete the lines containing "PV: `sonarr-config-pv` → PVC: `sonarr-config-pvc`"
and "PV: `sonarr-nebula-pv` → PVC: `sonarr-nebula-pvc`", and change the
description text for the `/mnt/nebula` row from "Full nebula share (tvshows,
downloads)" to "Full nebula share (TV shows, downloads)" so the table remains
standardized and readable.

| source | container path | type | description |
| ---------------------- | ---------------------- | ---------- | ------------------------- |
| `/var/local/threadfin` | `/home/threadfin/conf` | `hostPath` | Application configuration |
| — | `/tmp/threadfin` | `emptyDir` | Temporary files |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Optional polish: make placeholder machine-friendlier.

Using N/A instead of for the emptyDir source can improve searchability and consistency in plain-text tooling.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/media/threadfin/README.md` at line 32, Replace the em dash placeholder
'—' in the README table row for the emptyDir source with a machine-friendly
token like 'N/A' so the row reads the three columns as '/tmp/threadfin',
'emptyDir', 'Temporary files'; update the single table cell that currently
contains '—' to 'N/A' to improve plain-text searchability and consistency.

Comment thread apps/monitoring/prometheus-operator/README.md
Comment thread apps/system/local-path-provisioner/README.md
Comment thread apps/system/local-path-provisioner/README.md
Comment on lines 35 to 37
helm upgrade --install metallb metallb/metallb \
--version 0.14.9 --namespace metallb-system --create-namespace \
--namespace metallb-system --create-namespace \
-f values.yaml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify chart version consistency between README and ArgoCD application source.

set -euo pipefail

echo "== README manual helm command =="
rg -n -C2 'helm upgrade --install metallb metallb/metallb|--version' apps/system/metallb/README.md || true

echo
echo "== ArgoCD chart targetRevision =="
rg -n -C2 'chart:\s*metallb|targetRevision:\s*' apps/system/metallb/application.yaml || true

Repository: hobroker/selfhosted

Length of output: 820


We have a version clash situation here – and it's not the fun kind. 🎭

The manual helm command on line 35 ships without a --version flag, so it'll grab whatever the latest metallb/metallb chart is. Meanwhile, ArgoCD's application.yaml is locked in on targetRevision: 0.14.9. That's like showing up to a meeting where everyone agreed on 2 PM, but you interpreted it as 2:15 PM. Close? Sure. Consistent? Not even close.

When two deployment paths pull different versions, you're setting yourself up for the "works on my machine" nightmare. One person deploys via manual helm, gets version X.Y.Z. Someone else uses ArgoCD, gets 0.14.9. Suddenly you're troubleshooting phantom bugs that don't actually exist.

Add the version pin to the manual command:

Fix
 helm upgrade --install metallb metallb/metallb \
+  --version 0.14.9 \
   --namespace metallb-system --create-namespace \
   -f values.yaml
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
helm upgrade --install metallb metallb/metallb \
--version 0.14.9 --namespace metallb-system --create-namespace \
--namespace metallb-system --create-namespace \
-f values.yaml
helm upgrade --install metallb metallb/metallb \
--version 0.14.9 \
--namespace metallb-system --create-namespace \
-f values.yaml
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/metallb/README.md` around lines 35 - 37, The helm command "helm
upgrade --install metallb metallb/metallb ..." in the README lacks a --version
pin and can pull a different chart than ArgoCD's targetRevision (0.14.9); fix by
adding a --version 0.14.9 flag to that helm upgrade/install invocation so the
manual deploy matches the ArgoCD locked chart version.

Comment thread apps/system/metallb/README.md Outdated
@hobroker hobroker force-pushed the docs/update-readmes branch 2 times, most recently from 38dd55d to dc76aaf Compare March 19, 2026 21:13
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (4)
apps/system/local-path-provisioner/README.md (1)

22-26: ⚠️ Potential issue | 🟡 Minor

Tiny reliability trap: fixed /tmp path can still do a full Michael Scott fire drill.
If /tmp/local-path-provisioner already exists before git clone (e.g., prior interrupted run), clone fails before reaching cleanup. Consider pre-cleaning or using mktemp for a unique directory.

Proposed doc-safe tweak
 kubectl apply -f config
+rm -rf /tmp/local-path-provisioner
 git clone --depth 1 --branch v0.0.35 https://github.com/rancher/local-path-provisioner.git /tmp/local-path-provisioner
 helm upgrade --install local-path-provisioner /tmp/local-path-provisioner/deploy/chart/local-path-provisioner \
   --namespace local-path-storage \
   -f values.yaml
 rm -rf /tmp/local-path-provisioner
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/local-path-provisioner/README.md` around lines 22 - 26, The
README uses a fixed clone target (/tmp/local-path-provisioner) which can cause
git clone to fail if that directory exists; update the steps around the git
clone, helm upgrade --install and cleanup to create a unique temporary directory
(e.g., via mktemp), use that temp dir as the clone target (instead of
/tmp/local-path-provisioner), and ensure the final rm -rf cleans that same temp
dir; specifically modify the git clone invocation, the chart path passed to helm
(currently /tmp/local-path-provisioner/deploy/chart/local-path-provisioner) and
the rm -rf line so they reference the generated temp directory variable rather
than the fixed path.
apps/media/sonarr/README.md (1)

29-35: ⚠️ Potential issue | 🟡 Minor

We've got a Code Red situation here, people!

Lines 29-32 look beautiful - that storage table is magnificent. But then... Lines 34-35 are like finding a Toby in a room full of Jim Halperts. Those PV→PVC mapping lines are the OLD format! They need to GO. The whole point of this PR - our MISSION - is to remove those legacy artifacts!

Look at apps/media/jellyfin/README.md, apps/media/bazarr/README.md, apps/media/plex/README.md - they all removed these lines! We need consistency across the board, or this whole standardization thing falls apart like my Willy Wonka sketch at the company picnic.

🔥 Remove the legacy mapping lines
 | source                     | container path | type       | description                             |
 | -------------------------- | -------------- | ---------- | --------------------------------------- |
 | `/var/local/sonarr`        | `/config`      | `hostPath` | Application configuration and database  |
 | `192.168.50.7:/mnt/nebula` | `/mnt/nebula`  | `nfs`      | Full nebula share (TV Shows, Downloads) |
-
-PV: `sonarr-config-pv` → PVC: `sonarr-config-pvc`
-PV: `sonarr-nebula-pv` → PVC: `sonarr-nebula-pvc`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/media/sonarr/README.md` around lines 29 - 35, Remove the legacy PV→PVC
mapping lines from the Sonarr README: delete the two lines that read "PV:
`sonarr-config-pv` → PVC: `sonarr-config-pvc`" and "PV: `sonarr-nebula-pv` →
PVC: `sonarr-nebula-pvc` so the storage table (the rows for `/var/local/sonarr`
→ `/config` and `192.168.50.7:/mnt/nebula` → `/mnt/nebula`) stands alone and
matches the format used by apps/media/jellyfin, apps/media/bazarr, and
apps/media/plex.
apps/system/metallb/README.md (2)

48-48: ⚠️ Potential issue | 🟠 Major

Line 48 documents ArgoCD automation that is not actually configured.

The README says postsync/ is a separate Application source with sync-wave, but apps/system/metallb/application.yaml does not define such a source. This creates a false expectation that IP pool resources auto-apply.

Suggested fix
-> When deploying via ArgoCD, `postsync/` is a separate source with `sync-wave: "1"` — applied automatically after the helm chart is healthy.
+> When deploying via ArgoCD, apply `ippool.yaml` after the chart is healthy (or add a dedicated Application source for it).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/metallb/README.md` at line 48, The README line claiming postsync/
is a separate ArgoCD Application source with sync-wave is misleading because
apps/system/metallb/application.yaml does not define that source; update the
repo so the documentation matches reality by either (A) adding a separate ArgoCD
Application entry that points at postsync/ with the appropriate sync-wave
annotation (e.g., create or modify the Application resource in
apps/system/metallb/application.yaml to include postsync as a separate source
and set sync-wave: "1"), or (B) revert the README statement to explicitly state
that IP pool resources are not auto-applied and document the manual apply steps;
reference the postsync/ directory and the Application resource in
apps/system/metallb/application.yaml when making the change.

35-37: ⚠️ Potential issue | 🟠 Major

Manual Helm version drift risk on Line 35–Line 37.

Manual install no longer pins chart version, while ArgoCD is pinned to targetRevision: 0.14.9 in apps/system/metallb/application.yaml. This can create inconsistent cluster states depending on deploy path.

Suggested fix
 helm upgrade --install metallb metallb/metallb \
+  --version 0.14.9 \
   --namespace metallb-system --create-namespace \
   -f values.yaml
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/metallb/README.md` around lines 35 - 37, The helm install command
in README.md is unpinned while ArgoCD's apps/system/metallb/application.yaml is
pinned to targetRevision: 0.14.9, causing potential drift; update the README's
helm upgrade --install metallb ... invocation to explicitly pin the chart
version (e.g., add the equivalent --version 0.14.9 or the matching chart
reference) so the manual install matches the ArgoCD targetRevision and keep both
locations aligned when updating versions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/system/argocd/README.md`:
- Line 29: The heading "## Register / update the Application resourceing
Services" contains a typo ("resourceing"); update that heading in the README to
a correct phrase such as "## Register / update the Application resources and
Services" (or simply "## Register / update the Application resources") by
replacing "resourceing" with "resources" in the README heading to restore proper
grammar and clarity.

In `@apps/system/metallb/README.md`:
- Line 45: The README contains a broken kubectl command string `kubectl apply -f
postsync/ippool.yaml` that points to a non-existent path; update that line to
reference the local ippool manifest instead (e.g., `kubectl apply -f
./ippool.yaml`) so the command runs from the README's directory and successfully
applies the ippool.yaml manifest.

---

Duplicate comments:
In `@apps/media/sonarr/README.md`:
- Around line 29-35: Remove the legacy PV→PVC mapping lines from the Sonarr
README: delete the two lines that read "PV: `sonarr-config-pv` → PVC:
`sonarr-config-pvc`" and "PV: `sonarr-nebula-pv` → PVC: `sonarr-nebula-pvc` so
the storage table (the rows for `/var/local/sonarr` → `/config` and
`192.168.50.7:/mnt/nebula` → `/mnt/nebula`) stands alone and matches the format
used by apps/media/jellyfin, apps/media/bazarr, and apps/media/plex.

In `@apps/system/local-path-provisioner/README.md`:
- Around line 22-26: The README uses a fixed clone target
(/tmp/local-path-provisioner) which can cause git clone to fail if that
directory exists; update the steps around the git clone, helm upgrade --install
and cleanup to create a unique temporary directory (e.g., via mktemp), use that
temp dir as the clone target (instead of /tmp/local-path-provisioner), and
ensure the final rm -rf cleans that same temp dir; specifically modify the git
clone invocation, the chart path passed to helm (currently
/tmp/local-path-provisioner/deploy/chart/local-path-provisioner) and the rm -rf
line so they reference the generated temp directory variable rather than the
fixed path.

In `@apps/system/metallb/README.md`:
- Line 48: The README line claiming postsync/ is a separate ArgoCD Application
source with sync-wave is misleading because apps/system/metallb/application.yaml
does not define that source; update the repo so the documentation matches
reality by either (A) adding a separate ArgoCD Application entry that points at
postsync/ with the appropriate sync-wave annotation (e.g., create or modify the
Application resource in apps/system/metallb/application.yaml to include postsync
as a separate source and set sync-wave: "1"), or (B) revert the README statement
to explicitly state that IP pool resources are not auto-applied and document the
manual apply steps; reference the postsync/ directory and the Application
resource in apps/system/metallb/application.yaml when making the change.
- Around line 35-37: The helm install command in README.md is unpinned while
ArgoCD's apps/system/metallb/application.yaml is pinned to targetRevision:
0.14.9, causing potential drift; update the README's helm upgrade --install
metallb ... invocation to explicitly pin the chart version (e.g., add the
equivalent --version 0.14.9 or the matching chart reference) so the manual
install matches the ArgoCD targetRevision and keep both locations aligned when
updating versions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6fe9e0be-fa03-4a1e-bbfb-97b599e6b209

📥 Commits

Reviewing files that changed from the base of the PR and between b6f318a and 38dd55d.

📒 Files selected for processing (28)
  • apps/automation/n8n/README.md
  • apps/automation/openclaw/README.md
  • apps/backup/backrest/README.md
  • apps/backup/syncthing/README.md
  • apps/development/code-server/README.md
  • apps/development/http-https-echo/README.md
  • apps/media/bazarr/README.md
  • apps/media/fileflows/README.md
  • apps/media/flaresolverr/README.md
  • apps/media/jellyfin/README.md
  • apps/media/plex/README.md
  • apps/media/prowlarr/README.md
  • apps/media/qbittorrent/README.md
  • apps/media/radarr/README.md
  • apps/media/recyclarr/README.md
  • apps/media/seerr/README.md
  • apps/media/sonarr/README.md
  • apps/media/tautulli/README.md
  • apps/media/threadfin/README.md
  • apps/monitoring/grafana-backup/README.md
  • apps/monitoring/prometheus-operator/README.md
  • apps/monitoring/scraparr/README.md
  • apps/network/adguardhome/README.md
  • apps/system/argocd/README.md
  • apps/system/infisical-operator/README.md
  • apps/system/local-path-provisioner/README.md
  • apps/system/metallb/README.md
  • apps/system/traefik/README.md

argocd app sync argocd
```

## Register / update the Application resourceing Services
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Houston, we have a tiny spelling disaster!

Okay, so this isn't your fault – it's like inheriting a messy desk from the previous manager. But "resourceing" isn't a word, people! It's like when I said "conversate" in that meeting and Toby corrected me (he was right, but I'll never admit it to his face).

Let's fix this while we're in the neighborhood:

✏️ Fix the typo
-## Register / update the Application resourceing Services
+## Register / update the Application managing Services

Or even cleaner:

-## Register / update the Application resourceing Services
+## Register / update Application Services
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## Register / update the Application resourceing Services
## Register / update the Application managing Services
Suggested change
## Register / update the Application resourceing Services
## Register / update Application Services
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/argocd/README.md` at line 29, The heading "## Register / update
the Application resourceing Services" contains a typo ("resourceing"); update
that heading in the README to a correct phrase such as "## Register / update the
Application resources and Services" (or simply "## Register / update the
Application resources") by replacing "resourceing" with "resources" in the
README heading to restore proper grammar and clarity.

Once the helm chart is deployed and MetalLB CRDs are available, apply the IP pool config:

```sh
kubectl apply -f postsync/ippool.yaml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Broken command path on Line 45 — this will fail at runtime.

kubectl apply -f postsync/ippool.yaml points to a non-existent path; the manifest is at apps/system/metallb/ippool.yaml (repo-relative), i.e. local ippool.yaml from this README directory.

Suggested fix
-kubectl apply -f postsync/ippool.yaml
+kubectl apply -f ippool.yaml
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
kubectl apply -f postsync/ippool.yaml
kubectl apply -f ippool.yaml
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/system/metallb/README.md` at line 45, The README contains a broken
kubectl command string `kubectl apply -f postsync/ippool.yaml` that points to a
non-existent path; update that line to reference the local ippool manifest
instead (e.g., `kubectl apply -f ./ippool.yaml`) so the command runs from the
README's directory and successfully applies the ippool.yaml manifest.

@hobroker hobroker force-pushed the docs/update-readmes branch from dc76aaf to dca10cb Compare March 19, 2026 21:25
@hobroker hobroker force-pushed the docs/update-readmes branch from dca10cb to 08037f3 Compare March 19, 2026 21:28
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hobroker hobroker merged commit 4631128 into master Mar 20, 2026
5 of 6 checks passed
@hobroker hobroker deleted the docs/update-readmes branch March 20, 2026 09:40
@hobroker hobroker self-assigned this Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant