Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Agents panel: Codex collector counts no Pi usage when $HOME is a git repo (rg honors ~/.gitignore)
Reported by Ikractoia · filed Sep 25, 2026Closed upstream on 2026-10-04 by the bot omarchybot; the closing comment says it was fixed by PR #14049. GitHub close reason: completed.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
Intel Core i9-10900K, NVIDIA GeForce RTX 2080 Ti, Omarchy 4.0.4-1, Linux 7.2.5-3-omarchy, ripgrep 15.2.0, codex-cli 0.157.0
What's wrong?
When $HOME is itself a git working tree (a common bare-ish dotfiles setup with a whitelist ~/.gitignore of *), the Codex tab of the agents panel counts zero Pi usage, even with tens of thousands of openai-codex messages under ~/.pi/agent/sessions/.
scan_pi_sessions() in bin/omarchy-agent-usage-codex runs:
[rg, "--json", "-e", r'"provider"\s*:\s*"openai-codex"', "-e", r'"api"\s*:\s*"openai-codex', str(root)]Because root is a directory, ripgrep applies the parent repository's ignore rules (~/.gitignore, ~/.git/info/exclude, the global git excludes). Every session file is ignored, so rg reports "searches":0 and the scan silently returns nothing. The Claude collector is not affected because it walks the Pi roots with Path.rglob().
$ cd ~ && git rev-parse --show-toplevel
/home/me
$ git check-ignore -v .pi/agent/sessions/x.jsonl
.gitignore:2:* .pi/agent/sessions/x.jsonl
$ rg -c '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
0
$ rg -c --no-ignore '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
222Steps to reproduce
- Make
$HOMEa git repo withecho '*' > ~/.gitignore(dotfiles whitelist pattern). - Use a Codex subscription through Pi so
~/.pi/agent/sessions/**/*.jsonlcontains"provider":"openai-codex"messages. omarchy-agent-usage-update codex --force && jq '.totalPrompts, (.modelUsage|keys)' ~/.local/state/omarchy/agents/usage/codex.json
Expected: Pi's openai-codex models and prompts are included.
Actual: only native Codex CLI sessions are counted (here 65 prompts instead of 33,181; Pi's gpt-5.6-* models missing entirely).
Suggested fix
The session roots are data directories, not source trees, so VCS ignore rules should not apply. Pass --no-ignore (and --hidden, in case a session root or file is dot-prefixed) to the rg invocation. --no-ignore also stops a stray .ignore/.rgignore from hiding sessions.
Local workaround until then: printf '!*\n' > ~/.pi/agent/sessions/.ignore (a .ignore file outranks .gitignore in ripgrep).
Note: #12595 passes explicit file paths to rg, which ripgrep searches regardless of ignore rules, so it would fix this incidentally — but nothing there guards against the regression if the invocation goes back to directory roots.
View raw text
### System details Intel Core i9-10900K, NVIDIA GeForce RTX 2080 Ti, Omarchy 4.0.4-1, Linux 7.2.5-3-omarchy, ripgrep 15.2.0, codex-cli 0.157.0 ### What's wrong? When `$HOME` is itself a git working tree (a common bare-ish dotfiles setup with a whitelist `~/.gitignore` of `*`), the Codex tab of the agents panel counts **zero** Pi usage, even with tens of thousands of `openai-codex` messages under `~/.pi/agent/sessions/`. `scan_pi_sessions()` in `bin/omarchy-agent-usage-codex` runs: ```python [rg, "--json", "-e", r'"provider"\s*:\s*"openai-codex"', "-e", r'"api"\s*:\s*"openai-codex', str(root)] ``` Because `root` is a directory, ripgrep applies the parent repository's ignore rules (`~/.gitignore`, `~/.git/info/exclude`, the global git excludes). Every session file is ignored, so `rg` reports `"searches":0` and the scan silently returns nothing. The Claude collector is not affected because it walks the Pi roots with `Path.rglob()`. ```text $ cd ~ && git rev-parse --show-toplevel /home/me $ git check-ignore -v .pi/agent/sessions/x.jsonl .gitignore:2:* .pi/agent/sessions/x.jsonl $ rg -c '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l 0 $ rg -c --no-ignore '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l 222 ``` ### Steps to reproduce 1. Make `$HOME` a git repo with `echo '*' > ~/.gitignore` (dotfiles whitelist pattern). 2. Use a Codex subscription through Pi so `~/.pi/agent/sessions/**/*.jsonl` contains `"provider":"openai-codex"` messages. 3. `omarchy-agent-usage-update codex --force && jq '.totalPrompts, (.modelUsage|keys)' ~/.local/state/omarchy/agents/usage/codex.json` Expected: Pi's `openai-codex` models and prompts are included. Actual: only native Codex CLI sessions are counted (here 65 prompts instead of 33,181; Pi's `gpt-5.6-*` models missing entirely). ### Suggested fix The session roots are data directories, not source trees, so VCS ignore rules should not apply. Pass `--no-ignore` (and `--hidden`, in case a session root or file is dot-prefixed) to the `rg` invocation. `--no-ignore` also stops a stray `.ignore`/`.rgignore` from hiding sessions. Local workaround until then: `printf '!*\n' > ~/.pi/agent/sessions/.ignore` (a `.ignore` file outranks `.gitignore` in ripgrep). Note: #12595 passes explicit file paths to `rg`, which ripgrep searches regardless of ignore rules, so it would fix this incidentally — but nothing there guards against the regression if the invocation goes back to directory roots.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.