A Gord Holdings company on the FlashyOS meshRoadmapFlashyOS ↗

Record format

@flashylabs/flashyid-spec

delegation/1 — the Identity layer’s contract for a cryptographically provable chain of attenuated authority that runs human → organisation → agent → sub-agent → session and can never grow on the way down. The spec, a JSON Schema, vectors and a dependency-free checker.

version 0.1.0 · measured 2026-10-19 from a checkout · source: flashyid-spec

node vendor-delegation.mjs check <file> — dependency-free; the spec, not on npm

Attenuation only: a child grant carries a subset of its parent’s scopes, a cap no higher, an expiry no later and the same or a narrower purpose. Any widening is refused with a named reason — never clamped, never averaged — so an agent can act on a person’s authority and can never exceed it.

Enforcement before minting: every grant names in enforcedBy the https endpoint that checks it before anything acts on it, and a grant with no checker is refused. Authority that nothing checks is theatre.

Edge cases — each one paid for once

The checker refuses to verify a signature

delegation/1 fixes what is signed — the canonical JSON of the grant without its signature field — and mandates no algorithm; the vectors are unsigned and the CLI prints “signed: no — structural check only” so nobody mistakes a structural pass for a cryptographic one. Claiming to verify would be the one dishonest line in the repository.

A float cap is read from the raw bytes first

A cap is integer minor units, and 2500.0 parses to 2500 — so the CLI reads the file text before JSON.parse can quietly round it, and refuses the float. Every spelling of expiry but expires is refused too, decay derived from the grant, never accepted as input.

← Full catalog · The doctrine behind the tools · Adopt one