put back the orientation the sweep overwrote

2360a3ef moved CLAUDE.md's text into AGENTS.md verbatim — which is exactly what
its brief asked for, and the brief was wrong. it described root AGENTS.md as "41
lines, currently a pointer". it was not: it carried an Orientation section — the
owner/member split, why execution permissions can never be granted, that
mounting a router without a registry entry refuses the boot, and the reading
list. all of it was replaced rather than merged, and none of it survived
anywhere else in the tree.

my fault, not the agent's. i skimmed a file and then told something else to
overwrite it. the other four pairs are clean — none of those directories had a
prior AGENTS.md, so there was nothing to lose.

restored at the top of the file, with three corrections rather than a straight
revert:

  · the sibling repo is `capabilities/`, not `permissions/` — the old text named
    a directory that does not exist
  · "read the Permissions section of CLAUDE.md" now says "below", since this is
    that file
  · the reading list no longer lists CLAUDE.md as the architecture doc, which
    would now be a pointer pointing at the thing pointing at it

the file also still called itself "# CLAUDE.md". it says AGENTS.md now, and says
why both exist: opencode walks the tree for AGENTS.md and nothing else, Claude
Code for CLAUDE.md, and one set of instructions has to reach both.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
2026-08-27 06:59:48 +00:00
co-authored by Claude Opus 5
parent d381140d54
commit a865bcfdfc
+32 -1
View File
@@ -1,4 +1,35 @@
# CLAUDE.md
# AGENTS.md
Guidance for any coding agent working in the Officer platform repo. **This is the file with the
instructions in it**; `CLAUDE.md` beside it only points here. Both exist because the two harnesses
discover different names — opencode walks the tree for `AGENTS.md` and nothing else, Claude Code for
`CLAUDE.md` — and one set of instructions must reach both.
## Orientation
Officer is built around **one owner** (user id 1, role `Super Admin`, who bypasses every permission
check), which since 2026-08-07 also admits **additional accounts holding a strict subset of it**. What
each may reach is decided by per-role permission grants, resolved on every request.
If a design question turns on "which user", the answer depends on the surface: real for the **app**
permissions (gitea, music, photos, calendar…), and still always **the owner** for anything that
executes code or touches the disk — terminal, chat, tasks, files, desktop and browser are
`kind: 'execution'` and can never be granted. `src/servers/permissions/registry.ts` is the authority.
**Mounting a router without a registry entry makes the server refuse to boot.** Read the Permissions
section below before adding one.
This repo is one of two. The other, `capabilities/`, holds the agent's tasks, tools and skills as plain
files, and is where many changes belong — adding or changing a task needs no code change here and no
restart.
- [`docs/working-on-officer.md`](docs/working-on-officer.md) — the deployment-wide guide: which
directory a change belongs in, how to run and verify it, the task system, and the failure modes worth
knowing about
- `CONVENTIONS.md` — component organisation and React patterns, with rationale
- `TODO.md` — current direction; takes precedence where it disagrees with anything else
Treat the code as the source of truth where anything disagrees with it.
## Project Overview