Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ CI rejects files outside these, the root documents and `.github/`.
- Run the suite of every package you change, and `test/integration/all` with `OMARCHY_TEST_RUNTIME` set when a change touches what the runtime reads.
- `omarchy-mac-boot` covers what stays installed and runs again at updates. What runs once to install a Mac belongs in omacom/omarchy-mac-installer.
- Change the manual in the same commit as the behaviour it describes.
- A udev `add` action that must reach a device already present also gets a pacman hook that does that work on install and upgrade, since on the upgrade that installs the rule no `add` comes. The hook exits 0 in a chroot or an unbooted root, and never fails the transaction. An `add` that should only run when the device appears, such as one tied to the boot splash, does not.
- An invitation is a prompt the runtime shows the owner once, such as the offer after an update to set up a fingerprint reader `omarchy-hw-fingerprint` has just found. A change that makes one appear, such as a new entry in `fingerprint-readers`, ships only after everything the invitation leads to is published.

## Tests

- A test passes or fails the same on every machine. It never reads the host's `/usr/share/omarchy-platform`, installed `omarchy-*` commands, `/sys` or running services: stage into a temporary root, point copies at fixtures, and stub external dependencies, keeping the real commands under test. Run `systemd-analyze verify` with `--root` at the staged package. A pass on a Mac with Omarchy installed says nothing about CI.
- When a change adds a detection path or a fallback, test the inverse too: the new path never hides what the old one found.
- A test that needs something the runtime gained at a later commit moves `test/integration/runtime` to that commit; it does not skip because that pin lacks it.
- Before calling a change tested, check that CI ran it: a skipped test, or a job that failed before reaching the tests, is not a pass.

## Style

Expand Down
Loading