# AGENTS.md ## Authority - `PRODUCT.md` is the durable product orientation and product boundary for `mim`. - `REQUIREMENTS.md` is the checkable requirement authority. Cite rows as `req: component/id` in future code, tests, and design notes when a change implements or protects that requirement. - User instructions for the current task override these files when they conflict. ## Product constraints `mim` is a protocol-first, mobile-first terminal code editor for iPhone SSH sessions. Preserve these constraints unless the user explicitly changes direction: - Server-side editor binary; no native iOS client by default. - Terminal UI is the first thin client over the local session socket. See req: session/002 and req: session/003. - No runtime config files, plugin system, package manager, hidden tool installers, or public feature-flag matrix. See req: governance/001, req: governance/002, and req: governance/004. - Optimize for narrow viewports, QWERTZ/thumb input, and source patching. - Treat keyboard layouts as explicit source-patched data backed by terminal traces, not ad-hoc conditionals. See req: input/004 and req: input/005. - Common actions must avoid required Esc/Ctrl/Alt/function-key chords. See req: input/001. ## Verification Before handing off requirement-affecting work, run the cheapest relevant checks: ```sh redgate list redgate lint redgate health ``` Every implementation slice needs carry-their-weight tests: regular tests that prove the intended payoff works, plus adversarial tests for realistic failure, boundary, or regression cases. Prefer protocol/headless/replay/fixture tests over brittle UI snapshots unless rendering behavior is the claim. See req: testing/001 through req: testing/004. No implementation build/test command exists yet. When the Zig project is created, record the canonical build/test command here. ## Work tracking Work is tracked in Gitea Issues at `git.tmk241.com/tmk241/mim`. - Parent outcome issues are labeled `northstar`. - Executable child issues are labeled `slice` and link to their parent in the issue body. - `ready-for-agent` means a child issue has enough scope, acceptance, and verification to start. - Do not mirror issues into local files. - Do not mutate tracker items unless the user or active goal grants exact issue/parent authority.