|
| 1 | +# AGENTS.md — fluxgraph |
| 2 | + |
| 3 | +> Per-repo conventions for coding agents (Claude Code, OpenCode, …). The |
| 4 | +> canonical cross-repo rules — Conventional Commits, minimal-first/YAGNI, no |
| 5 | +> secrets, run checks before asserting success — live in the user's **global** |
| 6 | +> `AGENTS.md` and are not repeated here. This file records only what is |
| 7 | +> **specific to this repo**: the commands, the gate, and the non-obvious things |
| 8 | +> agents get wrong here. |
| 9 | +
|
| 10 | +C++20 physics-simulation library used by Anolis providers. |
| 11 | + |
| 12 | +## Build / test |
| 13 | + |
| 14 | +- Configure + build: `cmake --preset ci-linux-release` then |
| 15 | + `cmake --build --preset ci-linux-release`; test with `ctest`. |
| 16 | +- Whole-repo clang-tidy uses the `ci-linux-tidy` preset. |
| 17 | +- Optional-feature lanes have their own presets (e.g. `ci-linux-release-json`, |
| 18 | + `ci-linux-release-yaml`, `ci-linux-release-server`, |
| 19 | + `ci-linux-release-diagram`). |
| 20 | +- The required CI status check is the **`ok`** job (it aggregates the lanes); |
| 21 | + never bypass it, and never merge red. |
| 22 | + |
| 23 | +## Tooling |
| 24 | + |
| 25 | +- **C++ repos:** clang-format / clang-tidy are pinned to **18.1.8** via the |
| 26 | + shared `setup-clang-tools` action (matches workstation-configs) — do NOT use |
| 27 | + pip/apt/pre-commit/container versions. Run `clang-format -i` before **every** |
| 28 | + commit (CI fails otherwise). |
| 29 | +- Shared `.github` actions/workflows are SHA-pinned with a `# <tag>` comment so |
| 30 | + Renovate can track them — keep that comment when bumping. |
| 31 | + |
| 32 | +## Repo-specific gotchas |
| 33 | + |
| 34 | +- **C++20**, and use **`std::format`** for diagnostics/log messages. |
| 35 | +- **The CORE is zero-dependency and must stay that way.** Optional features pull |
| 36 | + deps and are gated behind CMake options (all default `OFF`): |
| 37 | + `FLUXGRAPH_BUILD_SERVER` → gRPC, `FLUXGRAPH_JSON_ENABLED` → nlohmann/json, |
| 38 | + `FLUXGRAPH_YAML_ENABLED` → yaml-cpp, `FLUXGRAPH_BUILD_DIAGRAM_TOOL` → dot. |
| 39 | + Never let a dependency leak into the core target. |
| 40 | +- **Embedded-friendly:** the library is host-built in CI but targets embedded |
| 41 | + use — avoid host-only assumptions (no exceptions-required APIs in the core |
| 42 | + path, no heap-only design without need, etc.). |
| 43 | +- **`include/fluxgraph/version.hpp` is the canonical version.** It carries split |
| 44 | + macros (`FLUXGRAPH_VERSION_MAJOR/MINOR/PATCH`) *and* the |
| 45 | + `FLUXGRAPH_VERSION` string — keep all four in sync when bumping. |
| 46 | + |
| 47 | +## Backlog |
| 48 | + |
| 49 | +Backlog lives in GitHub issues, not a `TODO.md`. |
0 commit comments