Download the kit, then either run the bundled sample or pass your own job JSON. It reports what matches and what is still missing so you can repeat with a changed file.
§ 01Acquire
Unpack into a new directory.
Needs Node 22+, curl, and tar. The directory capability-preflight-download must not already exist. Digest, size, and MIME are checked before extraction. Pins live with the archive metadata.
Download · verify · unpack · status
if [ -e capability-preflight-download ]; then echo "capability-preflight-download already exists" >&2; exit 1; fi
mkdir capability-preflight-download || exit 1
cd capability-preflight-download || exit 1
response=$(curl --disable -fsS --max-time 30 --max-filesize 143275 -o capability-preflight.tar.gz \
--write-out '%{http_code} %{content_type}' \
https://neomorphic.io/downloads/capability-preflight/capability-preflight.tar.gz) || exit 1
case "${response%%;*}" in
"200 application/gzip"|"200 application/x-gzip"|"200 application/octet-stream") ;;
*) echo "Unexpected archive HTTP status or MIME" >&2; exit 1 ;;
esac
test -f capability-preflight.tar.gz || exit 1
actual=$(wc -c < capability-preflight.tar.gz | tr -d ' ') || exit 1
test "$actual" = "143275" || { echo "Unexpected archive size" >&2; exit 1; }
node --input-type=module -e 'import {readFileSync} from "node:fs"; import {createHash} from "node:crypto"; const b=readFileSync("capability-preflight.tar.gz"); if(b.length!==143275 || createHash("sha256").update(b).digest("hex")!=="477e31cb09818409ff9fe81b9d8401bc227591be100a2aca7edf73ca1a45e551") throw Error("Untrusted or incomplete release; extraction stopped");' || exit 1
tar -xzf capability-preflight.tar.gz || exit 1
test -f capability-preflight/bin/capability-consumer-kit.mjs || exit 1
node capability-preflight/bin/capability-consumer-kit.mjs status || exit 1
cd capability-preflight || exit 1§ 02Sample
Bundled demo, not your job.
From the unpacked kit directory. These commands load the labelled sample. They are not a substitute for a caller file.
Sample status, cold-start, and journey
node bin/capability-consumer-kit.mjs status node bin/capability-consumer-kit.mjs cold-start --probe node bin/capability-consumer-kit.mjs journey
§ 03Caller
Your JSON, then the same path again.
A real job is a file you write: requirements, declared source, tests, composed parts, context. The kit does not fill gaps from the sample. Repeat with the same --input path; do not swap in a same-named file from the kit tree.
Caller journey
node bin/capability-consumer-kit.mjs journey --input ./your-job.json --out ./out/last-journey.json
If a required field, digest, or prerequisite is missing or contradictory, the result is partial and names the gap. Sample cold-start writes its own directory and does not overwrite your input file.
§ 04Tests
Offline suite in the extract.
Consumer suite · Node 22+
node --test --test-concurrency=1 tests/*.test.mjs
§ 05Nearby
Other laboratory packs.
- Task toolkit turns a source snapshot into a work brief. Different job.
- External-job intake reads public listings. This kit does not bid.
- Download directory holds the tarball, SHA-256, provenance, and license.