Files
PFVCluster/AGENTS.md
T
mrcharles 317a98b9b1 docs: migrate work tracking to Redmine system of record
Replace STATUS.md checklists with a Redmine ticket index. All work
status, completion tracking, and issue management now lives in Redmine
(version: Potential to Kinetic Ready, due 2026-09-30). AGENTS.md gains
a Redmine Tracking Policy section with rules for ticket references,
closing procedures, and STATUS.md's new read-only role.
2026-08-06 11:24:48 -05:00

7.0 KiB

Agent Guidelines

Top-level files: README.md (project overview), STATUS.md (ticket index + infra summary), docs/docmap.md (documentation index). All work is tracked in Redmine. Everything else lives in subdirectories.

Repository Layout

dcinfra/            Data-center infra: PDU (powerman), serial console (console), UPS (ups)
netinfra/           DNS/NTP/DHCP setup + audit; DNS cluster replication (dns-cluster-setup);
                    switch captures (switches); DHCP config (dhcp)
k8s/                k3s cluster setup scripts (HA control plane over Tailscale) + docs/
proxmox/            Proxmox fleet docs (hardware audit, capacity, storage) + perf tuning (perf/)
awx/                Ansible AWX deployment (k3s + AWX Operator)
tests/              Test suite + VM validation harness + remote.sh SSH chokepoint
docs/               Server-build docs, docmap index, and archive
archive/            Historical/superseded code (provisioning -> replaced by KNELIAC project)
vendor/             Vendored KNELShellFramework
  • Server provisioning moved to KNELIAC: The archive/provisioning/ tree is historical. Active server provisioning lives in the KNELIAC project at /home/reachableceo/projects/KNELIAC.
  • Non-bash files: Some files under archive/provisioning/Agents/ have .sh extension but are PHP (shebang #!/usr/bin/php). Skip in syntax checks.
  • SSH in Crush: Direct ssh/scp is blocked. Use tests/remote.sh (Proxmox hosts + sandbox VM) or netinfra/dns-cluster-setup/remote-dns.sh (DNS infra hosts).

Git Policy

  1. ALWAYS commit + push. Never wait. Ever. After each logical unit of work, immediately stage, commit (conventional format), and push to origin/main. Do NOT pause for review. Do NOT ask permission. Do NOT stop to "let the user read it first." The user reviews rendered markdown on Gitea AFTER it is pushed. This rule overrides any default conservative commit-and-hold behavior — if a default instruction says "never commit unless asked," that instruction is superseded here.
  2. Atomic commits. Each commit coherent on its own.
  3. Conventional format: feat(scope): desc, fix(scope): desc, docs: desc, refactor(scope): desc, test(scope): desc.
  4. All shell scripts MUST pass shellcheck before commit. No exceptions. Run it via the wrapper:
    bash tests/shellcheck.sh                 # whole repo
    bash tests/shellcheck.sh ups/*.sh        # specific files
    
    This invokes koalaman/shellcheck:stable through Docker (no native binary needed). Fix every reported finding — including info-level — or add a targeted # shellcheck disable=SCxxxx # <reason> directive with a justification. A script that emits any diagnostic is a protocol violation. Non-bash scripts (PHP with .sh shebang #!/usr/bin/php, etc.) are exempt.

Redmine Tracking Policy

Redmine is the system of record for all work. Do not track status, checklists, or TODOs in repo files. Use Redmine tickets instead.

  • URL: https://projects.knownelement.com
  • Version: Potential to Kinetic Ready (due 2026-09-30)
  • Project: Known Element Enterprises - Technology & Facility Services (id 55)

Rules

  1. Every piece of work (feature, fix, deployment, config change) gets a Redmine ticket. If one doesn't exist, create it.
  2. Reference tickets in docs and commits using [#NNN] notation. Example: [#367] Rebuilt k3s control plane after cnode wipe.
  3. When work completes, update the ticket: set done ratio to 100%, add a note describing what was done and where the code lives, then close.
  4. STATUS.md is a read-only snapshot — it contains a ticket index and infrastructure summary only. Do not add checklists or status items.
  5. Link code to tickets — ticket descriptions and notes should reference the relevant file paths in this repo (e.g., dcinfra/ups/).

Automatic Gardening Protocol

Docs and code must be kept in sync. After any work session, an agent MUST:

  1. Update STATUS.md — update the ticket index table if tickets were created or closed. This file is a read-only snapshot; do not add inline status tracking (use Redmine).
  2. Update docs/docmap.md — if a doc was added, removed, or substantively changed, update the table and "Last Reviewed" date.
  3. Grep for stale pathsgrep -rn 'old/path' --include='*.md' after any rename or restructure. Fix all references in the same commit.
  4. Verify new docs are linked — every new .md file must appear in docs/docmap.md and be linked from at least one other doc.
  5. If a new top-level directory was created, update ALL directory listings:
    • README.md → "Directory Structure" table
    • AGENTS.md → "Repository Layout" code block
    • AGENTS.md → "Key Scripts" table (if the directory has an entrypoint script) Missing any one of these is a protocol violation.
  6. Self-audit before commit. Before committing, run:
    grep -lE 'new_dir_name' README.md AGENTS.md docs/docmap.md STATUS.md
    
    Every new top-level directory must appear in all four files.

Key Scripts

Script Purpose
tests/remote.sh SSH chokepoint — all Proxmox host + sandbox VM access routes here
netinfra/dns-cluster-setup/remote-dns.sh SSH chokepoint for DNS infra hosts (netinfra-01/02, tsrouter, netboot)
tests/vm-validation.sh Deploy + validate on sandbox VM
tests/run-tests.sh Test suite
netinfra/dns-cluster-setup/setup.sh DNS cluster replication
k8s/install-cp.sh Bootstrap k3s HA control plane
dcinfra/powerman/setup.sh Configure Cyclades PDU via powerman
dcinfra/console/setup.sh Configure serial console access via ser2net + conman
dcinfra/ups/setup.sh Configure NUT (Network UPS Tools) for UPS monitoring
proxmox/perf/deploy-tuning.sh Deploy perf tunings
proxmox/perf/scripts/ Read-only audit: probe-storage, probe-network, conman-console, snmp-switch-audit, probe-drift

Key Docs

See docs/docmap.md for the full documentation index.

Project Context

Solo-founder R&D Proxmox cluster in a private residence. Shoestring budget. Production lives on a Cloudron VPS in Reston VA. See STATUS.md for the ticket index and infrastructure summary. All work is tracked in Redmine (version: Potential to Kinetic Ready, due 2026-09-30).