diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c40ddec..b02ad9e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,6 +11,8 @@ npm run bench # frozen routing/satisfaction benchmark — run it if you touc There is no hidden CI magic yet: the suite you run locally is the gate. If you change routing behavior, paste the before/after bench output in the PR description. +**Platform note (honest).** The router, matcher, planner, receipts, and Claude Code hooks run on any Node ≥18 platform, and so does `npm run bench`. The corpus labeling harness (`scripts/label-corpus.js`) requires **Linux** — it uses `/proc/self/fd` with `O_NOFOLLOW` for race-safe I/O and fails with `race-safe exam I/O requires Linux /proc/self/fd and O_NOFOLLOW` elsewhere; `extract-corpus.js` degrades gracefully via `(O_NOFOLLOW || 0)`. Some replay and provenance tests also exercise symlink-rejection paths, which need symlink-creation rights (e.g. Windows Developer Mode). If you're on a non-Linux host, expect `scripts/label-corpus.js` to error while the core router suites and `npm run bench` stay green — that's a harness constraint, not a regression you introduced. + ## What goes where * **Quick fixes** (typo, doc bug, obvious regression) → straight to a PR. diff --git a/README.md b/README.md index 7078306..3455ac6 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,8 @@ npx github:Nazim22/leadline init --claude-code # flip to enforce Dry-run mode is the benchmark: it watches your own sessions and shows you your agent’s wrong-source calls, empty receipts, and unproven “done” claims — your data, your numbers — before a single call is ever denied. +**Platform note.** The router, matcher, planner, receipts, and Claude Code hooks run anywhere Node ≥18 runs, and so does `npm run bench`. The corpus labeling harness (`scripts/label-corpus.js`) requires **Linux**: it uses `/proc/self/fd` with `O_NOFOLLOW` for race-safe I/O and fails with `race-safe exam I/O requires Linux /proc/self/fd and O_NOFOLLOW` elsewhere. Some replay and provenance tests also exercise symlink-rejection paths, which need symlink creation rights (on Windows, Developer Mode). + ## Policy packs — enforcement with receipts Every shipped rule carries a `why` field with the real measurement behind it. Packs without receipts are opinions.