On 18 and 19 August 2026, one company's digital workers did real work in another company's repository, under authority that was granted narrowly, narrowed again when it was passed on, and revoked while the work was still running. This repository replays that offline so you can check it rather than take it.
npm ci && npm run engagement
A clean run prints engagement: 8/8 verified, 6/6 refused, and exits non-zero if any
published claim fails to re-verify. No network call to either company.
What Ratify is. An open protocol for delegated authority that is bounded to a named resource, revocable while work is in flight, and verifiable offline by the party receiving it. The receiving side checks who authorized what, for how long, and whether it still stands, without calling the party that issued it.
| Protocol and spec | identities-ai/ratify-protocol |
| SDKs, five languages | sdks/ |
| How to verify by hand | VERIFY.md |
| Live evidence, client half | evidence-live-2026-08/client/ |
| Live evidence, contractor half | AgentWorkforce/ratify-agent-relay-evidence |
| Agent Relay's account of the run | Someone else's agent in your repo |
| The full engagement record | Phase 2 technical note |
This is the Ratify-Protocol-side reproduction harness and adversarial annex. It orchestrates an engagement that runs on Agent Relay's adapter and confinement; it does not reimplement them. The path-traversal and two-principal-isolation cases need two OS principals with distinct uids inside that confinement boundary, and the adapter runs as a single unprivileged uid, so they SKIP here and the annex reads six refusals rather than eight. The write-up says why rather than quietly reporting eight.
If any of this is useful, star the repository, and tell us which authority boundary you would want tested next.
npm run engagement), offline, exits non-zero if any published claim fails to re-verify.ProofBundle, the VerificationReceipt chain, and a verifier-signed head checkpoint committed under evidence/.adversarial/): runnable failing tests a skeptic can run.Everything under evidence/ is a synthetic model of the engagement, built so that someone with neither deployment can run it. Its identifiers are fixtures: demo-cert-root, a demo channel id, fixed timestamps. Nothing in here is a certificate that was issued during the live sessions of 18 and 19 August 2026.
That is deliberate. This repository answers "does the mechanism behave as described", offline and on any machine. It does not, on its own, evidence that a particular thing happened on a particular day.
Two consequences worth stating plainly:
npm run checkpoint-test exercises truncation detection against it. The live engagement produced no signed head. Do not read the checkpoint in evidence/ as an artifact of those sessions.evidence-live-2026-08/client/. Agent Relay publishes theirs at AgentWorkforce/ratify-agent-relay-evidence. Checking the crossing needs both halves; either alone evidences only what its own side did./docs of a separate public repo, identities-ai/ratify-agent-relay-engagement.@relayfile/local-mount, @relaycast/engine, and their OS-enforced confinement adapter).npm ci
npm run engagement # replays the engagement scenes (delegation, handoff, the federation beat, the work +
# receipts, the kill switch), re-verifies every committed bundle + receipt offline,
# runs the adversarial annex, prints: "engagement: N/N verified, M/M refused".
# Never modifies evidence/, so a verification run leaves the clone clean.
npm run evidence # same run, but regenerates evidence/ first (--write-evidence). Signature bytes
# differ on every regeneration (hedged ML-DSA); commit the result deliberately.
npm run typecheck # tsc --noEmit
Offline by default. No call to either company. A reader reproduces every claim with the open SDKs.
All dependencies pin the published v1.0.0-alpha.17 release: npm @identities-ai/ratify-protocol, the Go module tag, crates.io ratify-protocol, and PyPI ratify-protocol==1.0.0a17.
Determinism: keys, IDs, scopes, constraints, challenges, timestamps and decisions are deterministic (fixed demo seeds + a fixed time base). The ML-DSA-65 half of each hybrid signature is hedged by the pinned @noble/post-quantum, so raw signature bytes differ between generations while every signature still verifies. See VERIFY.md.
The evidence trail is SDK-agnostic. Each published bundle/receipt can be re-verified with Go, TypeScript, Python, Rust, or C, and the first four run as committed against the published SDK releases. The C lane builds from a source checkout of the SDK. See VERIFY.md for every command.
main): the full engagement harness, the evidence-trail format + replay, and adversarial cases for scope escalation, replay, expired, revoked, wrong-operation binding, and the federation same-id-wrong-authority refusal, each with a genuine negative control (resource_path, receipts, operation-context, and the deployment serve-authority policy are all in place). The federation case models the two-deployment scene: a grant naming the same channel id under a deployment authority the verifier does not serve is refused by deployment policy (reason unserved_authority), while the delegation itself stays cryptographically valid. Authority-to-act and resource-namespace are orthogonal; a verifier serves exactly its own deployment authority and refuses resources under any other.src/engagement.ts: the engagement harness (delegation, handoff, federation, work + receipts, kill switch).src/harness.ts: shared offline/deterministic primitives (demo keys, chain builder, contexts, revocation provider).adversarial/annex.ts: the runnable failing tests + negative controls + case list.scripts/verify-one.ts: re-verify a single published claim from the committed bytes.evidence/: bundles, receipts, delegation chain, and manifest.json.verify/: the Go, Python, Rust, and C verifier lanes (see VERIFY.md).docs-target/: a mirror of the /docs content the agent works in (for local rehearsal before the engagement runs).The engagement article links here when it publishes.
11 commits
TypeScript
74.0%
C
7.2%
Go
6.7%
Rust
6.7%
Python
5.4%
On 18 and 19 August 2026, one company's digital workers did real work in another company's repository, under authority that was granted narrowly, narrowed again when it was passed on, and revoked while the work was still running. This repository replays that offline so you can check it rather than take it.
npm ci && npm run engagement
A clean run prints engagement: 8/8 verified, 6/6 refused, and exits non-zero if any
published claim fails to re-verify. No network call to either company.
What Ratify is. An open protocol for delegated authority that is bounded to a named resource, revocable while work is in flight, and verifiable offline by the party receiving it. The receiving side checks who authorized what, for how long, and whether it still stands, without calling the party that issued it.
| Protocol and spec | identities-ai/ratify-protocol |
| SDKs, five languages | sdks/ |
| How to verify by hand | VERIFY.md |
| Live evidence, client half | evidence-live-2026-08/client/ |
| Live evidence, contractor half | AgentWorkforce/ratify-agent-relay-evidence |
| Agent Relay's account of the run | Someone else's agent in your repo |
| The full engagement record | Phase 2 technical note |
This is the Ratify-Protocol-side reproduction harness and adversarial annex. It orchestrates an engagement that runs on Agent Relay's adapter and confinement; it does not reimplement them. The path-traversal and two-principal-isolation cases need two OS principals with distinct uids inside that confinement boundary, and the adapter runs as a single unprivileged uid, so they SKIP here and the annex reads six refusals rather than eight. The write-up says why rather than quietly reporting eight.
If any of this is useful, star the repository, and tell us which authority boundary you would want tested next.
npm run engagement), offline, exits non-zero if any published claim fails to re-verify.ProofBundle, the VerificationReceipt chain, and a verifier-signed head checkpoint committed under evidence/.adversarial/): runnable failing tests a skeptic can run.Everything under evidence/ is a synthetic model of the engagement, built so that someone with neither deployment can run it. Its identifiers are fixtures: demo-cert-root, a demo channel id, fixed timestamps. Nothing in here is a certificate that was issued during the live sessions of 18 and 19 August 2026.
That is deliberate. This repository answers "does the mechanism behave as described", offline and on any machine. It does not, on its own, evidence that a particular thing happened on a particular day.
Two consequences worth stating plainly:
npm run checkpoint-test exercises truncation detection against it. The live engagement produced no signed head. Do not read the checkpoint in evidence/ as an artifact of those sessions.evidence-live-2026-08/client/. Agent Relay publishes theirs at AgentWorkforce/ratify-agent-relay-evidence. Checking the crossing needs both halves; either alone evidences only what its own side did./docs of a separate public repo, identities-ai/ratify-agent-relay-engagement.@relayfile/local-mount, @relaycast/engine, and their OS-enforced confinement adapter).npm ci
npm run engagement # replays the engagement scenes (delegation, handoff, the federation beat, the work +
# receipts, the kill switch), re-verifies every committed bundle + receipt offline,
# runs the adversarial annex, prints: "engagement: N/N verified, M/M refused".
# Never modifies evidence/, so a verification run leaves the clone clean.
npm run evidence # same run, but regenerates evidence/ first (--write-evidence). Signature bytes
# differ on every regeneration (hedged ML-DSA); commit the result deliberately.
npm run typecheck # tsc --noEmit
Offline by default. No call to either company. A reader reproduces every claim with the open SDKs.
All dependencies pin the published v1.0.0-alpha.17 release: npm @identities-ai/ratify-protocol, the Go module tag, crates.io ratify-protocol, and PyPI ratify-protocol==1.0.0a17.
Determinism: keys, IDs, scopes, constraints, challenges, timestamps and decisions are deterministic (fixed demo seeds + a fixed time base). The ML-DSA-65 half of each hybrid signature is hedged by the pinned @noble/post-quantum, so raw signature bytes differ between generations while every signature still verifies. See VERIFY.md.
The evidence trail is SDK-agnostic. Each published bundle/receipt can be re-verified with Go, TypeScript, Python, Rust, or C, and the first four run as committed against the published SDK releases. The C lane builds from a source checkout of the SDK. See VERIFY.md for every command.
main): the full engagement harness, the evidence-trail format + replay, and adversarial cases for scope escalation, replay, expired, revoked, wrong-operation binding, and the federation same-id-wrong-authority refusal, each with a genuine negative control (resource_path, receipts, operation-context, and the deployment serve-authority policy are all in place). The federation case models the two-deployment scene: a grant naming the same channel id under a deployment authority the verifier does not serve is refused by deployment policy (reason unserved_authority), while the delegation itself stays cryptographically valid. Authority-to-act and resource-namespace are orthogonal; a verifier serves exactly its own deployment authority and refuses resources under any other.src/engagement.ts: the engagement harness (delegation, handoff, federation, work + receipts, kill switch).src/harness.ts: shared offline/deterministic primitives (demo keys, chain builder, contexts, revocation provider).adversarial/annex.ts: the runnable failing tests + negative controls + case list.scripts/verify-one.ts: re-verify a single published claim from the committed bytes.evidence/: bundles, receipts, delegation chain, and manifest.json.verify/: the Go, Python, Rust, and C verifier lanes (see VERIFY.md).docs-target/: a mirror of the /docs content the agent works in (for local rehearsal before the engagement runs).The engagement article links here when it publishes.
11 commits
TypeScript
74.0%
C
7.2%
Go
6.7%
Rust
6.7%
Python
5.4%