Add docs for coding agents

This commit is contained in:
Takumi Sueda
2026-03-22 22:28:46 +09:00
parent c7e05fb77b
commit 98a42ab772
11 changed files with 1116 additions and 0 deletions

148
AGENTS.md Normal file
View File

@@ -0,0 +1,148 @@
# AGENTS.md
## Purpose
This repository builds Brainux, a Debian-based Linux distribution and SD card image for SHARP Brain devices. The root repo is the orchestration layer: it wires together kernel, bootloader, rootfs, image-building scripts, CI, and several hardware-specific submodules.
Future agents should treat this file as project memory plus operating instructions for working in `buildbrain`.
## Repository map
- `linux-brain/`: Linux kernel submodule.
- `u-boot-brain/`: U-Boot submodule.
- `boot4u/`: chain-boot tool for newer models.
- `brainlilo/`: chain-boot tool for older models.
- `nkbin_maker/`: converts `u-boot.bin` into `nk.bin` for the Windows CE boot flow.
- `buildroot/`: alternative lightweight rootfs build.
- `os-brainux/`: Brainux rootfs customization scripts and overrides.
- `os-buildroot/`: Buildroot-side overrides.
- `image/`: SD image creation scripts.
- `tools/`: helper scripts such as cross-prefix detection and APT cache tooling.
- `docs/knowledge/`: hardware and boot-process knowledge for SHARP Brain devices. Prefer the Markdown files over PDFs for fast reading and search.
## Search strategy
Do not start with a repo-wide search from the root unless you actually need submodule results. This repo contains large submodules, and broad searches are noisy and slow.
Prefer scoped searches:
- Kernel work: search only under `linux-brain/`.
- U-Boot work: search only under `u-boot-brain/`.
- Rootfs and image work: search `os-brainux/`, `image/`, `tools/`, and the root `Makefile`.
- Hardware/background research: read `docs/knowledge/*.md`.
## Important project knowledge
- Brainux development often happens in submodules, not in the root repo.
- Typical kernel workflow:
1. work inside `linux-brain/` on a branch based on `brain`
2. return to the repo root
3. run `make lclean ldefconfig lbuild` for a clean rebuild, or `make lbuild` for incremental rebuilds
4. test on real hardware by copying `linux-brain/arch/arm/boot/zImage` and matching DTBs
5. commit in `linux-brain/` using the surrounding kernel commit style
- Typical U-Boot workflow is similar, but uses `u-boot-brain/` plus the `make udefconfig-*` and `make ubuild` targets.
- Typical Brainux rootfs workflow edits files under `os-brainux/`, then runs `make brainux` or `make image/sd.img`.
- Real-device testing is part of the normal loop. A local build passing is useful but not sufficient for hardware changes.
## Main build targets
The root `Makefile` is the main entry point.
- Setup:
- `make setup`: initialize submodules.
- `make setup-dev`: create `env/` and install `r3build`.
- `make watch`: run the file watcher after `setup-dev`.
- Linux:
- `make ldefconfig`
- `make ldefconfig-x1`
- `make lbuild`
- `make lclean`
- U-Boot:
- `make udefconfig-<model>` such as `udefconfig-sh1` or `udefconfig-h1`
- `make ubuild`
- `make uclean`
- NK.bin:
- `make nkbin-maker`
- `make nk.bin`
- Chain boot tools:
- `make boot4ubuild`
- `make lilobuild`
- Rootfs and images:
- `make brainux`
- `make brainux-umount-special`
- `make brainux-clean`
- `make buildroot_rootfs`
- `make image/sd.img`
- `make image/sd_x1.img`
- `make image/sd_buildroot.img`
- Utilities:
- `make aptcache`
- `make uuu`
## Build behavior and constraints
- `make brainux` only works on Linux. It uses `debootstrap`, `qemu-arm-static`, `sudo`, chroot, and bind mounts.
- Outside CI, `make brainux` expects the local APT cache from `make aptcache` and points debootstrap at `http://localhost:65432/debian/`.
- `make brainux-umount-special` is the normal cleanup step after rootfs builds.
- `make image/sd.img` and related image targets depend on a prepared rootfs and remove `image/work` via `make clean_work`.
- `make ubuild` chooses the output format from the detected cross toolchain:
- `arm-linux-gnueabi-` builds `u-boot.sb`
- other configured prefixes build `u-boot.imx`
## CI reference
The authoritative automation is `.github/workflows/build.yml`.
CI currently does the following:
- Builds Linux artifacts for both the default family and the `x1` family.
- Builds U-Boot artifacts for multiple models through a matrix.
- Builds `nk.bin` for the older-model U-Boot jobs.
- Builds full Debian-based SD images for the default family and for `x1`.
When changing build logic, keep the local Makefile workflow and CI workflow aligned.
## Files and outputs to know
- Linux outputs:
- `linux-brain/arch/arm/boot/zImage`
- DTBs under `linux-brain/arch/arm/boot/dts/`
- U-Boot outputs:
- `u-boot-brain/u-boot.bin`
- `u-boot-brain/u-boot.sb` or `u-boot-brain/u-boot.imx`
- Converted boot image:
- `nk.bin`
- SD images:
- `image/sd.img`
- `image/sd_x1.img`
- `image/sd_buildroot.img`
## Guidance for edits
- If the task is about kernel or U-Boot source, make the change in the relevant submodule rather than trying to patch generated outputs or wrapper scripts in the root repo.
- If the task is about Brainux package selection, startup behavior, or filesystem contents, inspect `os-brainux/` first.
- If the task is about image layout or packaging, inspect `image/` and the root `Makefile`.
- If the task is about cross-compile behavior, inspect `tools/getcross` and the relevant Makefile targets.
- Avoid using interactive config editors such as `menuconfig` unless the user explicitly asks; prefer editing committed defconfig/config sources where practical.
## Validation expectations
Choose the lightest validation that matches the change:
- Makefile or CI edits: run the directly affected `make` target when feasible.
- Kernel build plumbing: at least run the relevant `make ldefconfig*` or `make lbuild` path if the environment supports it.
- U-Boot build plumbing: at least run the matching `make udefconfig-*` and `make ubuild` path if feasible.
- Rootfs/image changes: prefer `make brainux brainux-umount-special`, and image targets when dependencies and privileges are available.
If a full build is not possible because of missing toolchains, root privileges, mounts, or long runtime, say that explicitly and leave the repo in a clean state.
## Knowledge docs
- Start with `docs/knowledge/*.md` when you need hardware, boot-sequence, suspend, or eMMC-install context.
- `docs/knowledge/AGENTS.md` defines the rule for converting a knowledge PDF into Markdown. If asked to do such a conversion, preserve page positions with `# Page NN` headings, add an abstract, and write a concise text-first technical explanation rather than raw OCR.
## Commit and review notes
- Submodules have their own history and conventions. Kernel commits should follow the style already used in `linux-brain/`.
- Root-repo changes should stay focused on orchestration, config, CI, docs, image assembly, and rootfs customization.
- When a task spans both the root repo and a submodule, keep the responsibility split clear in the final report.