Files
PFVCluster/AGENTS.md
T
mrcharles 132c0854d1 merge: combine KNELServerBuild into PFVCluster
Merge the KNELServerBuild repository (server provisioning, security
hardening, DNS cluster setup, test suite) into PFVCluster (Proxmox
cluster ops, performance tuning, fleet audit). Both histories are
preserved via --allow-unrelated-histories.

The two repos had no source-file collisions; only AGENTS.md and
.gitignore conflicted (both resolved by merging content from both).

Directory reorganization and doc gardening will follow in subsequent
commits.

🤖 Generated with [Crush](https://github.com/charmassociates/crush)

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-07-28 11:23:22 -05:00

3.0 KiB

Agent Guidelines

This repo combines two formerly-separate projects:

  • Server provisioning (formerly KNELServerBuild): provisioning/, tests/, vendor/, dns-cluster-setup/
  • Proxmox cluster ops (formerly PFVCluster/perfopt): perf/, netinfra/, switches/, returned-logs/

Repository Layout

  • Vendored framework: KNELShellFramework lives at vendor/git@git.knownelement.com/29418/KNEL/KNELShellFramework/. Its includes are under Framework-Includes/ there. Never assume ./Framework-Includes exists relative to the repo root.
  • Self-locating scripts: All provisioning scripts derive their own location via BASH_SOURCE and compute PROJECT_ROOT_PATH from it. They must never depend on the current working directory. Run from anywhere.
  • Local config files are the source of truth: Configs in provisioning/ConfigFiles/ are read with cat/cp. Do NOT re-introduce curl ${DL_ROOT}/... downloads — that CDN is deprecated.
  • Non-bash agents: Some files under provisioning/Agents/ carry a .sh extension but are PHP (e.g. mysql.sh, shebang #!/usr/bin/php). Syntax checkers must skip these.
  • Proxmox hosts are standalone installs managed via PDM (Proxmox Datacenter Manager). SSH keys deployed to root on all hosts.
  • SSH in Crush: Direct ssh/scp is blocked in the Crush bash environment. Use the wrapper scripts: tests/remote.sh, dns-cluster-setup/remote-dns.sh, or the deploy-check.sh / deploy-tuning.sh patterns.

Git Commit Requirements

  1. Commit atomically: each logical change its own commit.
  2. Conventional commit format: feat(scope): desc, fix(scope): desc, docs: desc, refactor(scope): desc, test(scope): desc, chore: desc.
  3. Verbose messages: title (50 chars max), blank line, body explaining WHAT and WHY, footer with attribution.

Autonomous Git Workflow

Agents are authorized to commit AND push autonomously. After each logical unit of work: stage, commit, push to origin/main. Group changes so each commit is coherent on its own.

Key scripts

Script Purpose
provisioning/SetupNewSystem.sh Full server provisioning (packages, hardening, 2FA)
tests/vm-validation.sh End-to-end deploy + validate on sandbox VM
tests/run-tests.sh Project test suite (unit/security/validation)
dns-cluster-setup/setup.sh Technitium DNS cluster replication
perf/deploy-check.sh Deploy read-only data collector to hosts
perf/deploy-tuning.sh Deploy perf tunings to hosts
perf/validate-fixes.sh Validate applied tuning changes
perf/iperf-full-matrix.sh Full iperf throughput suite

Project context

This is a solo-founder R&D Proxmox cluster in a private residence. Shoestring budget. Redundancy is not a concern for the R&D cluster. Backups DO matter (PBS in use). Production lives on a VPS in Reston VA (Cloudron). See docs/PROJECT.md for the comprehensive fleet report and docs/TODO.md for pending hardware work.