# Integration boundaries `test-preflight` is an orchestration and evidence layer. It consumes existing skills instead of implementing their policy or storage formats. | Boundary | Caller-supplied contract | What preflight does | What it must not do | | --- | --- | --- | --- | | agent-runtime | resolved `tester.` binding: binding id, node, environment, project/path, and a node runner | validate that the binding is explicit and route node probes through the runner | parse Orca state, invent a host, or create/reuse a terminal | | deployer | `prepare` only: an argv command returning a JSON deployment receipt for `environment: test` | call it once and record its receipt/status | copy Compose/Argo logic, SSH directly, or accept production | | builder/obtain | caller-provided local artifact path (and optional remote path), hash, source commit, package/bundle identity | hash and inspect the exact file; pass it to install contract | build, guess an old artifact, or silently download/upload | ## Deployer command contract `prepare` requires: ```yaml deployment: environment: test command: [python3, /path/to/existing-deployer-adapter.py] ``` The command receives JSON on stdin: ```json {"operation":"prepare","environment":"test","project_root":"/abs/project","host":"...","public_host":"..."} ``` It must return `{ "status": "ready", "observed": "..." }` (an optional `checks` mapping is recorded). Non-zero/invalid output is an `environment-fail`; absent command or a non-test environment is `blocked`. The adapter owns deployer-specific configuration, receipts, cleanup, and authorization. ## Device contract The node runner owns remote execution. For a local node the implementation uses read-only `adb`/`xcrun simctl` checks in `verify`; `prepare` alone invokes `adb install`/launch or `simctl install`/launch. For a remote node the same operations are JSON requests to the runner. Missing xcrun on Linux, Android `unauthorized`/`offline`, a missing device, or a failed install/start is an `environment-fail`, not a product failure. No client session is created by this skill. The runner's `install` and `start` operations are the only device mutations, and are never called by `verify`.