These instructions apply to the whole repository. More specific instructions in a nested AGENTS.md take precedence for that subtree.
- Read
README.md, release notes, workflow files, and relevant docs before editing. - Run
git status --short --branchand inspect recent commits. Existing changes belong to their author; do not overwrite, reset, reformat, or bundle them into your work. - Use a
codex/<task>branch or an isolated worktree. Rebase or fast-forward from the current default branch before delivery; never force-push shared branches. - Keep the diff scoped. Avoid speculative refactors, dependency churn, generated noise, and unrelated formatting.
- Do not commit build directories, caches, virtual environments,
node_modules, logs, temporary captures, device backups, or downloaded release artifacts unless the repository explicitly tracks a generated deliverable. - On the shared Windows workstation, keep builds, caches, worktrees, and temporary files on
F:. Do not consumeC:for firmware/toolchain output. - Use existing scripts and pinned tool versions. Do not introduce a dependency when the standard library or an existing dependency covers the task.
- Run
git diff --checkand leave the worktree clean after committing.
- Never commit credentials,
.envfiles, Wi-Fi passwords, API keys, MQTT credentials, Cloudflare tokens, MeshCore private keys, device identity dumps, live databases, packet captures, or user messages. - Use synthetic or redacted fixtures and screenshots. Treat radio identities, locations, and private channels as user data.
- Do not weaken authentication, public/private API boundaries, or safe defaults merely to simplify testing.
- Resolve the exact board, USB identity, build environment, partition/offset, and release artifact before flashing. Never probe or flash unrelated serial devices.
- Preserve bootloaders, SoftDevices, identities, contacts, channels, preferences, and NVS/SPIFFS data unless an explicitly labeled recovery operation requires otherwise.
- Keep board-specific changes guarded. Regression-build an existing target when shared code changes.
- Hardware claims require evidence from the exact build and device. A green compile is not physical qualification.
- Preserve accessibility, keyboard operation, reduced-motion behavior, mobile layouts, privacy boundaries, and existing public routes.
- Before deployment, identify the exact host, service/container, mounted paths, current hashes, and rollback boundary. Never restart or modify unrelated Pi services.
- Verify desktop plus 390 px and 320 px layouts, public links/assets, console output, service health, and restart count after deployment.
- Prefer focused checks first, then the repository's existing CI. Do not invent a second build or release system.
- A release must come from a clean exact commit, with passing required checks, artifact and manifest hashes, accurate filenames/docs, and clear install versus recovery guidance.
- Do not create, move, or replace tags/releases unless the user explicitly requested a release.
- Report what was actually verified. Mark untested hardware, external delivery, or physical behavior as unverified rather than inferring success.