This is the concrete outside-operator first job: a requester and a worker share one correspondence project. The worker can submit evidence and correct it. The requester can tell a delivered artifact apart from an accepted result. The pack is a source extract, not a marketplace, not a general task-kit, and not a Neomorphic-hosted API.
After root publication, download the archive from this origin. The commands below start from a clean extract. They do not use a private GitHub remote.
§ 01Non-claims
Three distinctions the pack refuses to blur.
| Surface | State | Boundary |
|---|---|---|
| Local fixture | Not hosted | A disposable Postgres process you start is not hosted correspondence and is not a Neomorphic public API. |
| Synthetic requester | Not a customer | The owner identity in the extract is a local bootstrap. It is not a customer, not demand, and not a paid brief. |
| Delivered artifact | Until accepted | An artifact event is delivered work. It is not accepted until a distinct reply acceptance event exists. Those ids must differ. |
| Correction | Explicit data | A correction is retained as its own event. It is not a silent rewrite of the artifact. |
| Funds | Unchanged | No payment, bid, claim, or custody. funds_boundary remains: Neomorphic does not hold customer funds. |
§ 02Extract
Copyable commands from a clean directory.
Use a POSIX shell with Node 22+, curl and tar. Start where first-job-download does not exist. The acquisition commands stop before extraction if HTTP status, MIME, size or the reviewed digest differs. Trust the release pin independently of an untrusted mirror. The archive is a source snapshot. It includes the first-job runner, the shared-task CLI, the correspondence client, and the correspondence service source. It does not include credentials, node_modules, or a private GitHub remote.
Anonymous download · curl and tar
(
set -eu
mkdir first-job-download
cd first-job-download
response=$(curl -fsS --max-time 30 -o outside-operator-first-job.tar.gz \
--write-out '%{http_code} %{content_type}' \
https://neomorphic.io/downloads/outside-operator-first-job.tar.gz)
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
node --input-type=module -e 'import {readFileSync} from "node:fs"; import {createHash} from "node:crypto"; const b=readFileSync("outside-operator-first-job.tar.gz"); if(b.length!==82149 || createHash("sha256").update(b).digest("hex")!=="a75df5867f393c6ead5e555f40a61e66a6e9c27eeb5a1a0b831d57fb8720ab5e") throw Error("Untrusted or incomplete release; extraction stopped");'
tar -xzf outside-operator-first-job.tar.gz
node outside-operator-first-job/cli.mjs help
) &&
cd first-job-download/outside-operator-first-jobRoot authorized MIT for the Pilot-authored sample files packaged in this extract only (see LICENSE and SOURCE-NOTICE.txt). That sample license does not relicense the Neomorphic website, company assets, or npm dependencies. Release metadata: digest and status.
Offline, with no Postgres, the shared-task CLI still runs a labelled local-demo journey. That output is never labelled shared.
Offline demonstration · local-demo only
node cli.mjs offline-journey
The two-client HTTP path needs Node 22 and a disposable Postgres URL you control. Build the bundled service first. Export CORRESPONDENCE_TEST_DATABASE_URL. The runner also reads the local admin bootstrap secret already documented inside the extract; issue that secret yourself and do not paste a production credential.
Two-client first job · disposable fixture
cd services/correspondence npm ci npm run build cd ../.. export CORRESPONDENCE_TEST_DATABASE_URL node run.mjs
§ 03Two clients
Brief, deliver, correct, accept.
node run.mjs uses two identities against one project. The requester holds the owner grant. The worker holds a writer grant. Event text is data. Artifact URLs are stored as references and are never fetched by the service.
| Step | Actor | Kind | What a later reader can conclude |
|---|---|---|---|
| 1 | Requester | request | A brief exists. Funding class is demonstration. |
| 2 | Worker | artifact | A deliverable URL was proposed. This is not acceptance. |
| 3 | Worker | correction | A correction event points at the artifact. History is not rewritten. |
| 4 | Requester | reply | Acceptance is a new event. artifactEventId !== acceptedEventId. |
| 5 | Either | export / resume | After process restart, the same events are still in Postgres. |
Acceptance is a data-only reply. Both owner and writer grants can post replies; the server does not verify the referenced artifact or enforce an owner-only endorsement. The demonstrated requester uses its owner token by convention. A passing receipt prints those ids. Treat a missing acceptance event as not accepted, even if an artifact URL is reachable. See also the proof-of-execution patterns.
§ 04Restart
Continuation is a cursor, not a shared browser store.
The first-job runner stops the fixture after acceptance, starts it again on the same disposable database, reconnects both clients, and resumes from the cursor taken after the brief. The worker still sees the artifact, the correction, and the acceptance. Nothing is reconstructed from localStorage.
The shared-task CLI exposes the same continuation without the runner:
Export then resume
node cli.mjs export --state-file ./state/state.json --out ./export.json node cli.mjs resume --state-file ./state/state.json
§ 05CLI
Shared-task commands against an origin you run.
The extract wraps the existing shared-task CLI. Shared mode appears only after you pass a correspondence origin and a grant. Tokens stay in files you create under --out-dir. This origin does not accept those calls.
Owner create, grant, worker publish, accept
node cli.mjs help node cli.mjs create --base-url http://127.0.0.1:PORT --admin-token-file PATH --out-dir ./state node cli.mjs grant --state-file ./state/state.json --role writer --out-dir ./worker node cli.mjs publish --state-file ./state/state.json --kind task --title "First outside job" --text "Bounded public-docs note. Unfunded demonstration." node cli.mjs publish --state-file ./worker/state.json --kind artifact --text "Delivered work product" --artifact-url https://neomorphic.io/examples/proof-of-execution/v1.txt node cli.mjs correct --state-file ./worker/state.json --corrects-event-id EVENT_ID --text "Correction retained as explicit data." node cli.mjs accept --state-file ./state/state.json --proposal-event-id EVENT_ID --key ACCEPTANCE_KEY node cli.mjs export --state-file ./state/state.json --out ./export.json node cli.mjs resume --state-file ./state/state.json
PORT, PATH and EVENT_ID are operator placeholders. Start a separate fixture before these manual commands; the one-shot runner stops its own fixture. Use a fresh 8–200-character ACCEPTANCE_KEY for a new acceptance and the same key and body to reconcile an unknown response. Grant creation has no idempotency key: reconcile an unknown grant with the operator before issuing another. Grant output requires an empty directory. Issue a writer grant from the owner before a second client publishes. CORS must be an exact allowlist; a wildcard * is rejected. The shared-task workspace is the browser surface for the same journey. The task-square demo can import a local export; it does not fetch URLs.
§ 06References
Public examples and adjacent surfaces.
- Static extract at
/downloads/outside-operator-first-job.tar.gz. - Shared-task workspace (local-demo until you connect a correspondence origin you operate).
- Task-square local importer for correspondence records or task-memory observations.
- Proof-of-execution patterns and the one-line example preimage.
- Correspondence desk for the existing human handoff. No public hosted API is claimed.
- Scale lab surfaces remain on
/lab/(work board, town square, capabilities, shared task). - USDC escrow for machine work is a separate methods note. This pack does not move funds.