Files
ruflo/.github/workflows
rUvandr 5a008a150a feat(test): real-binary test tier for ruflo mods (ADR-504) (#4589)
* test(mods): real-binary test tier with a scripted mock model (ADR-504)

Runs the real `claude` binary headless against a local mock of the
Anthropic Messages API, with ruflo-mods loaded through --plugin-dir in a
throwaway project with its own HOME. No API key, no paid model.

- mock-model.mjs: scripted Messages server (streaming and not), logs
  every request; untool'd or unknown requests get a minimal answer.
- run.ts: runner with a minimal child environment, PATH recorders for
  dangerous commands, and readers for events, requests and files.
- loads.test.ts (contract 1): with every option on, the heartbeat is
  written, /ruflo-mods is registered and answered with no model request.
  Negative control: a #4485-shaped copy (second bare session.start) is
  refused silently by the real loader and fails those assertions.
- contracts.test.ts (contracts 2-5): verified-success record from a
  scripted fix turn; [RUFLO_LESSONS] reaches the request (and not below
  the gate); ruflo denies the root delete with its own reason and denies
  a listed command the engine allows (which runs without the plugin);
  the route block reaches the request (and not without the plugin).
- Excluded from the CLI, v3 and root-ratchet default runs; run with
  `npm run test:real-binary`. New CI job mods-real-binary pins Claude
  Code 2.1.289 and fails, naming the step, if the binary will not start.

Co-Authored-By: RuFlo <ruv@ruv.net>

* docs(adr): ADR-504 status names PR #4589

Co-Authored-By: RuFlo <ruv@ruv.net>

---------

Co-authored-by: r <r@x>
2026-10-29 18:43:03 -04:00
..