Frank 4666d0dce0 Correct the lock-watcher law: the trigger is the session restart, and suspend was covered
Two statements in the law added by #48 need measurement rather than inference, and one of them was
wrong.

**Attributed.** `niri` and `noctalia` both started `Mon Oct 12 16:22:31 2026` (`ps -o lstart=`);
swayidle's last state change was `16:22:23`. The compositor session restarted and the watcher died
with it — eight seconds of agreement, which is what `PartOf=graphical-session.target` is for. The
fix that #48 justified by reasoning is now justified by the event itself. The user journal holds no
entries for that window, so the evidence is process ages, not logs.

**Corrected.** #48 said closing the lid suspended blankpad unlocked, because `before-sleep` lived in
the dead unit. `systemd-inhibit --list` says otherwise: `noctalia … sleep "Lock before sleep" delay`
— the shell holds its own sleep inhibitor and locks on suspend independently of swayidle, so the
suspend path held all along. What was dead for eight days is the **idle** lock and `after-resume`.
The method error is worth keeping: `pgrep` for lockers came back empty and I read that as "no lock
path", when a locker can be a hook inside a running shell. The inhibitor table is the instrument.

Added with them, because it answers a question people will ask: while an `omp` session runs, swayidle
logs `Not enabling timeouts: idle inhibitor found` and arms no idle timeout (`omp … idle "omp agent
session" block`). A box with an agent working does not lock on inactivity, by harness design.

Docs only; the unit file from #48 is unchanged and the live watcher is `active` with `NRestarts=1`
after the SIGTERM proof. `kb-lint.sh omp-docs` 0 violations, `kb-coverage.py` 0 issues, `bats tests/`
71/71. Refs #47.
2026-10-20 17:52:59 -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
83 MiB
Languages
Shell 72.9%
HTML 14%
Lua 5.6%
HIP 4.1%
CSS 2.4%
Other 1%