Massive amounts of historical data #97
Open
opened 2026-10-31 16:34:33 +00:00 by jakman85
·
5 comments
No Branch/Tag Specified
main
feat/pihole-explicit-lan-names
feat/dns-via-cloudflare-tunnel
feature/cloudflare-tunnel-config
chore/rotate-cloudflared-tunnel
fix/cloudflared-creds-permission
feat/cloudflare-tunnel
feat/parallel-l0-checks
feat/gate-toolbox-container
fix/keycloak-servicemonitor-owner
feat/runner-capacity-2
chore/renovate-config-cleanup
fix/keycloak-operator-crds
feat/devcontainer-velero-cli
feat/gitea-28
feat/l0-externaldns-annotation-prefix
fix/public-dns-wan-a-record
feat/pm-agent-pr-mentions
docs/source-comment-audit
chore/pm-agent-digest-99
fix/pm-agent-triage-exit
chore/pm-agent-go-live
chore/pm-agent-runner-digest
feature/pm-agent-credentials
feat/pm-agent-registry-pull-secret
feat/pin-pihole-jackett-plex
fix/renovate-hold-auth-and-self
feat/renovate-track-keycloak-operator
fix/renovate-run-hygiene
fix/renovate-auth
fix/renovate-first-run
feat/keycloak-passkey-reconcile
fix/gitea-admit-buildkit
feat/image-pipeline
fix/renovate-config-filename
fix/vpn-ingress-l2-lease-collision
fix/renovate-cron-window
fix/renovate-invalid-config
fix/pihole-local-ttl
fix/unattended-upgrades-debian-sentinel
fix/ha-check-catastrophic-regex
feat/automated-upgrades
fix/coredns-ha
feat/keycloak-passkeys
fix/oauth2-proxy-oidc-startup-race
feat/graceful-cluster-shutdown
plex/volume-expamsion
fix/bulk-nfs-truenas
fix/peers-configmap-content-hash
vpn/add-keith-phone
fix/new-peer-ignores-template-comments
fix/vpn-ingress-ip-forward
feature/add-private-key-for-wireguard
fix/vpn-server-key-in-sops
docs/pm-agent-registry-pull-prereq
fix/vpn-runbook-ansible-command
feat/pm-agent-issue-to-pr
docs/agents-work-in-their-own-workspace
feat/vpn-remote-access-wireguard
feat/cilium-roll-out-on-config-change
docs/oauth2-sidecar-scrape-verified
fix/plex-resolver-independent-advertise
fix/plex-unblock-app-tier
feat/hubble-flow-export-plex
fix/oauth2-sidecar-metrics-scrape-netpol
feat/plex-vip-hostname-and-lan-networks
fix/plex-advertise-plexdirect
docs/pihole-ha-verified
feat/pihole-multi-replica
feat/pihole-declare-state
feat/plex-remote-access-l4
fix/cilium-cgroup-hostroot
fix/node-keycloak-hosts-pin
feat/public-dns-wan-target
fix/plex-quicksync-verification
sync-39-onto-main
fix/admin-approval-override
feat/quicksync-via-device-plugin
bugfix/arr-to-plex
feat/oauth2-proxy-api-route-per-app
feat/intel-gpu-device-plugin
feat/oauth2-proxy-auth-failure-visible
fix/render-selftest-runs-in-gate
feat/plex-quicksync
feat/sd-hardware-capability
fix/jackett-oauth2-proxy-session
feat/node-health-render-device
fix/oauth2-proxy-cookie-collision-fleet
fix/flux-deploy-notification-inhibited
feat/flux-deploy-notifications
feat/conformance-job-template
feat/conformance-trigger-kubeconfig
feat/conformance-runner-image
fix/crafty-oauth2-proxy-signin
chore/decisions-log-conflict-free
fix/crafty-bedrock-19132
fix/gitea-settings-comment-names-impossible-secret
feat/ci-is-the-approver
fix/kyverno-policy-was-never-applied
docs/handoff-2026-09-29
fix/secret-name-and-require-gitea-settings
feat/conformance-trigger-admission-boundary
fix/cluster-available-would-fake-a-green
feat/gitea-settings-drift-check
fix/gitea-admins-could-override-the-gate
docs/close-out-ci-hardening
docs/ci-reality-vs-phase-0
docs/runbooks-pr-flow
fix/dind-native-sidecar
fix/gate-push-trigger-matches-feat-prefix
feat/plex-claim-token-013124
fix/conformance-context-is-fail-open
docs/ci-delivery-flow-for-agents
feat/plex-claim-sops-secret
feat/prod-hardening
prod/deliver-fixes
docs/memattr-6-12-backport
migration/dns-apex-inversion
feat/prod-memattr-and-nodes
docs/node2-memory-refine
feat/prod-node-2
feat/r-state-03-proven
feat/ledger-section-parsing
feat/conformance-run-ledger
chore/cilium-split-merge2
feat/cilium-own-kustomization
docs/poststart-incident
fix/poststart-exit-status
fix/strict-postbuild-substitutions
docs/phase-7-open-prod-node-1
rescued/fix/act-runner-dind-readiness
rescued/fix/node-dns-resilient-upstream
docs/reconcile-with-reality
No results found.
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Home-Network/home-network-k3s-impl#97
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The codebase seems to have a lot of historical data peppered throughout the codebase when it really should be captured in the decision and docs areas. Comments within files should be succinct and to the point to keep attention to developers and not lose focus on unimportant or fluff details.
Holding this for scoping rather than opening a branch — as written it's an unbounded sweep over the whole tree, and I'd be guessing at which comments you consider historical fluff versus load-bearing context.
Two constraints worth stating before we agree on a plan. The
docs/tree and theR-*requirements live in the human-owned spec repo and are immutable to agents (R-TEST-06), so "capture it in the docs area" is not something a worker can do here — at most it can draft a proposal for the architect. Anddecisions/is an append-only, dated handoff log; prior entries must not be rewritten to absorb narrative lifted out of source files, or the log stops being evidence of what was known when.What I can do is prune in-file comments down to what a reader needs at that line, per directory, one PR at a time. To start that I need from you: (1) two or three concrete directories or files that bother you most — ideally with one example comment you'd delete and one you'd keep, so the worker has a calibration point; and (2) confirmation that where context genuinely needs to survive, a short pointer such as
see decisions/2026-xx-xx-<slug>.mdis an acceptable replacement rather than deletion.Scoping it also keeps the PRs reviewable: much of the tree is under the sensitive-path policy (
ci/**,clusters/**,bootstrap/**,conformance/**,platform/kyverno/**,CLAUDE.md), so a sweep that crosses those will sit red pending your review no matter how cosmetic the diff is. Nothing in this request traces to a requirement that I can see, which is fine for housekeeping but means it should stay small and obviously reversible. Reply with the directories and I'll brief it.Action:
comment— no work started.Posted by the PM agent. It opens pull requests and never merges them; every change reaches
mainonly through the merge gate."historical" talks about previous issues or intent that have changed and why/how it is used today within comments of source files rather than keeping them in the decisions and documentation. Source file comments should only talk about the current files and sections of code/yaml purposes, uses, expectations.
Spin up another agent to provide a list of recommended changes and report back in this issue
@pm-agent see previous comment and continue since you were interrupted before
Picking this up where it stopped: your clarification makes the ask bounded, so I'm dispatching a worker to do exactly the audit you asked for — a list of recommended changes, no edits to source files yet — on branch
docs/source-comment-audit. It will land a single dated report underdecisions/and post a condensed summary (per-directory counts, the clearest examples, and a suggested order for the follow-up PRs) back on this issue. A PR will follow and will merge on a green gate; it adds one file and touches no sensitive path, so it should not need your review, though the pruning PRs that follow it will where they land inci/,clusters/,bootstrap/,conformance/,platform/kyverno/orCLAUDE.md.Two things I've told the worker to hold to. Comments that explain a current non-obvious constraint get recommended for rewrite rather than deletion even when they read as history, and anything genuinely borderline comes back to you as
ambiguousrather than being decided by an agent — your calibration examples would still sharpen that if you have them. It will not propose edits to the spec repo (docs/, theR-*requirements) and will not rewrite existingdecisions/entries, since that log has to stay evidence of what was known when.For the record: the open PR #99 on
fix/pm-agent-triage-exitis unrelated to this issue despite being linked here, so I am not continuing it. Nothing in this request traces to a requirement, which is fine for housekeeping but is the reason I'm keeping it to an audit first and splitting the actual pruning into small, reversible, per-directory PRs you can reject individually.Action:
implementon branchdocs/source-comment-audit— workerpm-agent-task-97-1793466760started.Posted by the PM agent. It opens pull requests and never merges them; every change reaches
mainonly through the merge gate.Pull request #101 is open from
docs/source-comment-auditfor this issue.Source-comment audit — recommended changes (read-only; no source file touched)
The audit you asked for is in one new file:
decisions/2026-10-31-source-comment-audit.md.git diff --statagainstmainis exactly one added file and nothing else. Every findingcites
path:line-rangeand is checkable offline by opening that line.Your premise holds — with one number worth pricing in
I found ~420 candidate hits across ~190 files, so the "massive amounts" reading is right.
But of the 55 findings I judged in detail, 22 are genuinely historical and 32 are
load-bearing — phrased as history, yet the only record of a current non-obvious
constraint. Those get a rewrite, not a deletion. A mechanical "delete the history" sweep
would strip real constraints, which is the main reason I'd keep the pruning per-directory
and individually rejectable.
Counts
platform/kyverno/**)infra/gitea/**)conformance/(excl.runs/)clusters/ci/catalog/.gitea/bootstrap/platform-config/apps/vms/apps/wave-*conformance/runs/runbooks/This is a sample, not an exhaustive inventory — your brief capped it at ~50 findings and
I'd rather say so than pad. Fully covered:
.gitea/,bootstrap/,platform-config/,apps/vms/. Sampled:platform/,infra/,conformance/,clusters/,ci/,catalog/.Roughly 365 candidate hits remain unexamined (candidate ≠ finding — precision on what I
read was under half, so the real residual is smaller, but it is still in the low hundreds).
29 of the 55 findings sit on sensitive paths, so about half this work needs your review
no matter how cosmetic the diff is.
Three things I found that change how the pruning must be done
1.
apps/wave-0/1/2are generated — do not hand-edit comments there. They're goldensfrom
catalog/render.py, andci/render-golden.sh:136-150byte-compares every one. Anyhand-edit is a hard gate FAIL. The 15 candidate hits there are copies of comments whose
source is
catalog/*.yaml(e.g.apps/wave-0/gitea.yaml:130is the rendered form ofcatalog/gitea.yaml:100). Fix the catalog source and re-render.2. A dangling pointer, replicated across 18 files. 18 files cite
DECISIONS-LOG: "Headlamp gating stall"as their rationale — and no such entry exists:grep -ci "gating stall" DECISIONS-LOG.md→ 0, and it's nowhere indecisions/either.This is the audit's warning about its own remedy: "replace the narrative with a pointer" only
helps if the target exists.
decisions/<file>.mdis checkable;DECISIONS-LOG: "<title>"isnot. Your call: write one real
decisions/entry for the leaf-gating lesson and repointall 18, or drop the citations. Worth doing before the per-directory PRs so they don't each
re-litigate it. (Nothing in my report recommends a pointer target I didn't confirm exists.)
3.
conformance/runs/*/run.log(18 files) are archived evidence, not source — thecomments in them are copies of test bodies as they stood at run time. I excluded them;
please confirm you agree.
The clearest examples
platform/crafty/service-l4.yaml:33-91— 58 lines of "CORRECTED 2026-09-14 after an 8-DAYLAN OUTAGE… this file used to say
Local". Load-bearing → rewrite: keep "Cilium's L2announcer isn't backend-aware", "SNAT loses the client IP so use
/bannot/ban-ip" and"
clustersubsumesremote-node, do NOT 'fix' the CNP". Drop the outage story.apps/vms/unifi/50-service-l4.yaml:27-78is its ~52-line twin.ci/decisions-log.sh:5-23— 19 lines reproducing the four-PR conflict table verbatimfrom
decisions/README.md:9-30, which the comment itself already cites. Replace withthe pointer it already has.
catalog/qbittorrent.yaml:7-12— "DELIVERED 2026-09-12 (the deferral below is CLOSED;kept for the record)". Self-describes as exactly what you're objecting to. Delete.
clusters/prod/kustomization.yaml:335-351— three completed, unrepeatable DNS flipprerequisites ("dev's 18 A records released", "18 legacy TXT entries deleted by hand").
Rewrite, keeping only the still-true note about the zone's wildcards.
catalog/qbittorrent.yaml:141-151— "It USED to be a doubled-dollar expansion… thatMISDIAGNOSIS is preserved in this service's own marker log at 2026-09-13T05:35Z".
Rewrite to "PORT is a literal; a literal cannot be mangled by envsubst" — the war
story is already preserved where the comment says it is.
platform/longhorn/helmrelease.yaml:249-254— "CORRECTION, re-measured later the sameday: the line originally recorded here read…". Delete; the correct reading is three
lines above it.
conformance/.../bulk-tier-distinct-from-replicated/check.sh:447— the same "It used toassert …
ci/l0.shcarried a hand-written UNCONDITIONAL stage" paragraph is duplicatedverbatim in 3 check.sh files. One small PR, identical edit ×3.
infra/plex/claim-ship.sh:29-32— "Branch prefix is now cosmetic. It used to matter…".Delete; the live trigger set is already in
.gitea/workflows/gate.ymlandCLAUDE.md§4.apps/vms/unifi/30-virtualmachine.yaml:119# legacy Network UI (still served)—"legacy" is the vendor's own name for a port that still serves. Keep. Same for
catalog/jackett.yaml:73, a dated version floor.catalog/pihole.yaml:210and:218are alreadyreduced to
see decisions/2026-10-04-pihole-multi-replica.md/-pihole-declare-state.md.That's the shape I'd converge everything on.
Proposed PR order — cheapest and least sensitive first
catalog/+ re-renderapps/wave-*(7, not sensitive) — best value: also fixes thegenerated copies.
platform/excl.kyverno/**(9, not sensitive) — biggest residual; I'd split it bycomponent into 2–3 PRs.
infra/excl.gitea/**(8, not sensitive).apps/vms/(2, not sensitive) — do straight afterplatform/crafty/service-l4.yaml.platform-config/kustomization.yaml(3, sensitive) — one file, three edits: thesmallest possible sensitive-path review.
bootstrap/(3, sensitive)..gitea/(5, sensitive) — keepgate.yml:118-123in its own commit; it documents alive, deliberate tolerance-widening and reads like a behaviour change if buried.
ci/→clusters/→conformance/(6 + 7 + 5, all sensitive) — last, becauseci/edits touch the thing doing the approving.
Steps 1–4 are 26 findings that can merge on a green gate alone.
Two things I'm not deciding for you
ci/tests/*.test.shheaders (5 files) say things like "this suite exists becauseci/gate.shused to set BLOCK=1 for a FAILED stage but…". For a regression test, theregression it guards is arguably the test's subject, not fluff. Calling these historical
would strip the only record of what each assertion is for. Your ruling.
README.mdprose (platform/vpn-egress/README.md:91,platform/crafty/README.md:52,infra/devcontainer/README.md:126,infra/gitea/README.md:253) — documentation, not sourcecomments, so arguably already where you want narrative to live. Not audited as findings.
Gate
./ci/gate.sh→ rc 3 (UNDETERMINED), with "Stages that did not run:spec-immutability gitea-settings" — the two expected skips per
CLAUDE.md§3(the sibling spec repo isn't reachable from the cluster, and I deliberately hold no
SETTINGS_API_TOKEN). Nothing failed. Green stages:decisions-log,lint,l0,render-golden,l1,approval-policy. Not a pass — I'm not rounding rc 3 up.One note on the gate log: it also prints "TOUCHED-REQUIREMENT SET NOT DETERMINABLE
(on-base) — HEAD is not ahead of
origin/main". That's because I run before the commitexists; it should resolve once the branch is pushed and the PR gate runs with real branch
commits. Worth a glance on the PR run rather than assuming.
What I did not verify, and what I need from you
kubectlcannot run here. No behaviour changed, so there's nothing to measure — but italso means every factual claim quoted inside the comments I audited (lease holders,
Longhorn series counts, the NFS address, the k3s version) is unverified by me. I
classified comments by what they talk about, not by whether their measurements still hold.
Any rewrite that restates one as current fact should re-measure first.
spec-immutabilityskipped).rationale written confidently in the present tense is invisible to it — and that's the
most dangerous category. A complete audit needs a reader per directory, not a grep.
load-bearing residue; whoever prunes must confirm it's still true.
apps/wave-*,conformance/runs/); (b) rule onthe
ci/tests/and README groups above; (c) decide the dangling-pointer fix (newdecisions/entry vs. drop the citations); (d) pick which directories from the order aboveyou want briefed first. Your original calibration examples would still sharpen the
historical/load-bearing line if you have them.
Nothing here traces to an
R-*requirement — housekeeping, as you framed it.3· did not run:spec-immutability gitea-settingscheck on #101, not this line.
Posted by the PM agent's worker.