diff --git a/CHANGELOG.md b/CHANGELOG.md index a5dd89b..98cd544 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## docs — the workflow moved to DooPlex-local execution (2026-07-19) + +**Docs only, no version bump, no code change.** Claude Code now runs on DooPlex (192.168.0.180, +Debian 13, `kisfenyo`) instead of the Windows workstation, working directly in +`/mnt/5_hdd/felhom.eu/git/felhom-agent`. + +- `CLAUDE.md` — the build/deploy table is now local-first: build on DooPlex, then **one** hop + `scp /tmp/felhom-agent- felhom-pve:/tmp/`. The old path went build-server → Windows box → + felhom-pve, needing `cygpath -w` for the local scp path; that two-hop detour and its CRLF hazard + are gone (recorded in the new "Legacy: Windows workstation" note, not deleted). +- **New clean-tree gate** before any build: `git status --porcelain` empty AND `HEAD` == + `origin/main` — the CC working tree is now the tree that gets built. An unpushed change does not + exist. +- `MSYS_NO_PATHCONV=1` is no longer needed for `pct` (it was an MSYS path-mangling workaround); + `ssh felhom-pve` is plain now. Selftests run locally on DooPlex against the demo API. +- Workspace-root pointer updated to `/mnt/5_hdd/felhom.eu/git/CLAUDE.md`. + +Historical Windows references in past CHANGELOG entries and `PLAN.md` are left untouched. + ## build tooling — the golden bakes EVERY infra image, asked from the controller (2026-07-19) **No agent version bump: `configs/build-golden.sh` only (v2.0.0 → v2.1.0). Effective at the NEXT diff --git a/CLAUDE.md b/CLAUDE.md index 972dace..b4fba78 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ > Loads when Claude Code touches this repo. Stable orientation only — **current state lives in > `CONTEXT.md` and the top of `CHANGELOG.md`**, never here. Cross-repo orientation: workspace-root -> `e:\git\CLAUDE.md`. +> `/mnt/5_hdd/felhom.eu/git/CLAUDE.md`. ## What this repo is @@ -52,17 +52,24 @@ internal/storage/ storage observer + durable ids + role/claim classifiers + S - Module `gitea.dooplex.hu/admin/felhom-agent`; binary `felhom-agent` (`cmd/felhom-agent/`). - **Pure Go stdlib + `golang.org/x/crypto` only** — no web frameworks. `go.mod` directive go 1.25.0; - the build server (192.168.0.180) runs a newer upstream Go — build/run live tests there (same LAN - as the demo host). + DooPlex (192.168.0.180, where CC runs) has the Go toolchain and is on the same LAN as the demo + host — build and run live tests locally. - Version via `-ldflags "-X main.version="`; `--version` flag. Bump on meaningful changes + CHANGELOG entry. - **Full build/deploy/publish runbook: use the `felhom-build-deploy` skill.** Summary: +> **Clean-tree gate before any build:** `git status --porcelain` must be empty and +> `git rev-parse HEAD` must equal `git rev-parse origin/main` in the repo being built. An unpushed +> change does not exist — never build a dirty or unpushed tree. The `git pull` in the build step +> stays (it is a no-op when you work in this tree, and load-bearing if anything was pushed from +> elsewhere). + | Step | Where | One-liner | |---|---|---| -| Build | 180 | `cd /mnt/5_hdd/felhom.eu/git/felhom-agent && git pull && go build -ldflags '-X main.version=' -o /tmp/... ./cmd/felhom-agent` (felhom dirs moved off SSD → `/mnt/5_hdd/felhom.eu/` 2026-07-18) | +| Build | DooPlex (local) | `cd /mnt/5_hdd/felhom.eu/git/felhom-agent && git pull && go build -ldflags '-X main.version=' -o /tmp/felhom-agent- ./cmd/felhom-agent` | +| Copy | local → felhom-pve | `scp /tmp/felhom-agent- felhom-pve:/tmp/` (one hop) | | Deploy | felhom-pve | backup `.bak-` → `install -m0755` → `systemctl restart felhom-agent` (non-root `felhom-agent` user, config `/etc/felhom-agent/agent.json`) | | Ship configs | felhom-pve | sudoers (`/etc/sudoers.d/felhom-agent`) + guarded-mkfs wrapper WITH the binary when `configs/` changed | -| Publish | local | `scripts/publish-agent.sh ` (REGISTRY_* creds); hub Day-0 manifest vouch = operator follow-up | +| Publish | DooPlex (local) | `scripts/publish-agent.sh ` (REGISTRY_* creds); hub Day-0 manifest vouch = operator follow-up | | Verify | felhom-pve | `felhom-agent --version` + journal (clean ReassertGuestBinds, no capability degradation) | ## Proxmox model (the load-bearing rules) @@ -81,10 +88,15 @@ internal/storage/ storage observer + durable ids + role/claim classifiers + S ## Demo host (for live tests) Node **`demo-felhom`**, API `https://192.168.0.162:8006`. SSH alias `felhom-pve` (root@pam) — -available to CC; use `MSYS_NO_PATHCONV=1` for pct commands. The agent pins the served leaf cert — -verify the fingerprint still matches before a live run. Selftest modes (run from 180, pointed at the +available to CC as plain `ssh felhom-pve`. The agent pins the served leaf cert — verify the +fingerprint still matches before a live run. Selftest modes (run locally on DooPlex, pointed at the demo API): `--selftest[=read|task|hub|storage|backup|restore-test|pbs-verify]`; no flag = the daemon. +> **Legacy: Windows workstation.** Until 2026-07-19 CC ran on Windows 11; `pct` commands over SSH +> needed `export MSYS_NO_PATHCONV=1`, and every remote command used +> `SSH=/c/Windows/System32/OpenSSH/ssh.exe`. Agent deploy was a two-hop copy via the Windows box +> (`cygpath -w` for the local scp path; CRLF hazard on config files). + ## Conventions ### Trunk-based — no branches