Frank e278e4b863 Expand systemd specifiers before calling a unit foreign
The first real `deploy.sh` run on blankpad printed:

    SKIP   live-sync.service (ExecStart '%h/.omp/scripts/live-sync.sh' absent on this host)

while `/home/blank/.omp/scripts/live-sync.sh` sits right there. `%h` is expanded by systemd,
never by the shell, so the literal string was handed to `command -v`, failed, and the unit was
declared to belong to another machine — through the same code path whose whole purpose is to
keep a *foreign* unit inert, and silently. The victim was this repo's own heartbeat, and the
verdict was the same on every box that ever deployed it, because `%h` is exactly where the
checkout lives.

Nothing broke tonight only by luck of install state: `live-sync.service` is `linked`, driven
by its timer, so the heartbeat kept running while the deploy lied about it. A unit whose only
install route was this loop would simply never have been enabled anywhere.

`%h`, `%u` and `%U` are now expanded before resolution; an unrecognised specifier is left
alone so it fails loudly rather than being guessed at. Pinned by a test that writes a
`%h/.local/bin/helper` unit into the scratch home — red before (`SKIP`), green after
(`already linked; not started`), which also keeps the #45 rule intact: resolving a unit is not
licence to start it. Refs #44.

Verification: `bats tests/` 71/71, `kb-lint.sh omp-docs` 0 violations, `kb-coverage.py` 0
issues, `bash -n` clean.
2026-10-20 17:19:49 -07:00
2026-10-15 18:18:40 -07:00

Command Center

Configuration repository for Frank's Userspace configurations (i.e. his desktop setup)

AI Disclosures:

  • Slop rating: 3/5 - Actively using, actively de-slopping, repository still mostly AI owned
  • Completeness: Unfinished, planning planned, no plan yet
  • Datacenter model/spend: Less than $5 of Deepseek 4.1 Flash
  • Local model: Qwen 3.8 27B

slop rating of 3 or higher indicates human reading is a waste of time outside of this README, and that you might as well ask an agent for help with this.

slop rating 3 indicates Frank is comfortable using this for professional use -- but barely.

The Fleet

Host Role IP
Workstation Client box (CachyOS, Niri/Wayland) —
Dankclaw Server (Podman, reverse proxy, Gitea, NPU) 192.168.0.143
Dankserver LLM inference backend 192.168.0.235

The workstation hosts the primary checkout — this repository lives at ~/.omp/ and drives the OMP agent harness.

Structure at a Glance

~/.omp/
├── agent/              # OMP harness runtime
│   ├── config.yml      # Live agent configuration
│   ├── models.yml      # Model providers (single source of truth)
│   ├── APPEND_SYSTEM.md  # System prompt extensions
│   ├── managed-skills/ # Managed skills (SKILL.md bundles)
│   ├── models.db       # Model cache
│   └── sessions/       # Persistent session state
├── dotfiles/           # stow-style env-layer packages (home-relative trees)
│   └── deploy via scripts/deploy.sh (check|adopt|sync; quarantine-and-replace)
├── omp-docs/           # Knowledge base (source of truth)
│   ├── index.md        # KB index — start here
│   ├── system/         # Fleet hardware, OS, network
│   ├── tools/          # Installed software (llama.cpp, Gitea, Caddy, niri…)
│   ├── core/           # Agent config conventions (settings, models, AGENTS.md)
│   ├── pi/             # Legacy pi-era config reference
│   ├── engineering/    # SDLC, languages, infra, skills ecosystem
│   ├── research/       # Decision-support research (not yet facts)
│   ├── references/     # OKF spec, maintenance procedures
│   ├── caddy/          # Reverse proxy configuration
│   ├── packages/       # Pi packages and extensions
│   ├── inventory/      # Userspace config census
│   ├── reports/        # Investigation reports
│   ├── log.md          # Change log
│   └── .okf/           # OKF v0.1 conformance config
├── scripts/            # Utility scripts (kb-lint.sh)
├── plugins/            # npm plugins (pi-peon, etc.)
├── puppeteer/          # Browser automation config
├── .githooks/          # Pre-commit hook
├── .gitignore          # Runtime state ignored (databases, logs, cache)
├── AGENTS.md           # Agent conventions (niri reload, keybindings)
└── README.md           # This file

What Lives Here

Config in, state out. Everything tracked is something an agent reads or writes. Runtime databases (*.db, *.sqlite), logs, caches, and session state are git-ignored — git history captures configuration changes, not agent heartbeat.

Quick Start

Task How
Read the knowledge base omp-docs/index.md — every concept linked from here
Check agent config agent/config.yml + agent/models.yml
Lint the KB scripts/kb-lint.sh (OKF v0.1 conformance)
View change log omp-docs/log.md
Run a pre-commit .githooks/pre-commit

Conventions

  • OKF v0.1 — every doc file carries YAML frontmatter with a type: field. index.md files are directory listings (no frontmatter).
  • Progressive disclosure — index.md is a landing page; drill into subdirectories for detail.
  • Verified facts — stamped with verified: when probed against the live fleet. Trust over memory.
  • Single config source — ~/.omp/agent/models.yml is the only model registry; OMP is the primary harness and there is no second copy to keep in sync.

Legacy Notes

omp-docs/pi/ and omp-docs/core/ retain general documentation about the pi-coding-agent harness (its config format, packages, skill system) for reference. OMP at ~/.omp/ is the live harness; managed skills live in ~/.omp/agent/managed-skills/.

S
Description
No description provided
Readme
82 MiB
Languages
Shell 68.8%
HTML 16.2%
Lua 6.5%
HIP 4.8%
CSS 2.7%
Other 1%