V0 support boundary
| Component | Certified/tested scope |
|---|---|
| Runtime | Node 25.3.0; engines pins this version |
| OS | macOS arm64: Darwin 27 and macos-26-arm64; Linux consumer path unverified; Windows unsupported |
| Minimum API capability | module.registerHooks starts at Node 22.15.0 / 23.5.0; this is not a certification of those or all newer releases |
| npm | Tested versions 11.7.0 and 11.6.2; single-root package-lock v2/v3, integrity-pinned HTTPS registry dependencies |
| pnpm | Exact pinned 12.3.4 on PATH, v9 lock, one root importer (including manager-lock document); other pins may be attempted but are unverified |
| JavaScript | One bounded Node operation, direct entry or resolved npm/pnpm script |
| TypeScript | Synchronous local .ts/.mts/.cts, ESM/CommonJS, relative .js-to-.ts and extensionless imports, self-contained supported tsconfig |
| Transports/providers | global fetch and tested node:http/node:https; exact paths in provider table |
| Topology | One owned isolated process per attempt, revision-private source/dependencies, complete awaited billable work |
The Node module documentation establishes API introduction, not compatibility of this instrumenter with every Node release. MarginCI has been tested with npm and pinned pnpm repositories and independent Node/TypeScript applications within the boundary above. These checks do not certify the example consumer workflow’s Linux runtime or event/credential policies.
Bun, Yarn, generic workspaces/monorepos, tsx, arbitrary children, worker threads, queues, browser/CDP traffic, remote background jobs, webhooks, native/custom networking, HTTP2/WebSockets and unsupported provider endpoints are excluded. No implicit manager conversion, npm fallback from pnpm, or broader provider tracing is supplied.
Source symlinks/submodules, Git export transformations, external loaders/modules, NODE_PATH, existing NODE_OPTIONS, shared writable dependencies, local/file/link/git dependencies and v1 npm locks are rejected. Dependencies requiring lifecycle build scripts are outside V0. The installer uses frozen locks, scripts disabled and separate copies/stores. pnpm must already be provisioned at the repository pin; automatic switching/download is disabled. For a pnpm-installed CLI use node ./node_modules/marginci/dist/cli.js (followed by init/doctor/test). Its generated .bin shim sets NODE_PATH and is correctly rejected; the direct Node invocation preserves isolation. Cold private installs can take minutes; npm and pnpm installer deadlines are 120 and 300 seconds respectively.
TypeScript transpilation occurs synchronously inside the instrumented process; it does not typecheck. Run your typecheck separately. No arbitrary tsconfig extends/references/aliases/plugins, dependency TypeScript, compiler workers, tsx loader or build orchestration. Output directories/caches are irrelevant because the loader emits no files. Committed built JavaScript is an alternative within source isolation.
Operations must reset local state between cases and arrange comparable external state. Snapshot filesystem mutations persist within that revision between cases. Instrumentation cannot discover hidden downstream economics or establish production representativeness. This is not production FinOps, invoice reconciliation, distributed tracing, generic eval infrastructure or a hostile-code sandbox.