Record format

@flashyos/directory

directory/1 — the estate’s record: one entity per real thing, emitted as federated fragments by each repository, merged with one authority per id. The vocabulary (KINDS, EDGE_TYPES, EDGE_REQUIRES), the merge, and the validator.

version 0.2.0 · audit of 2026-10-04 · source: flashyos/packages/directory

npm i @flashyos/directory

Federation’s core rule: one id, one authority. Defining an entity and asserting a fact about one are different acts — the merge permits a second property to assert an edge about an id it does not define, which is what makes cross-checking (witnessing) possible at all.

Partner organisations are borrowed, not missing: each repository’s directory.externals.json names the ids it references but cannot define. The estate cannot define BMW, and a report that lists it as a gap is asking for a fabrication.

Edge cases — each one paid for once

declareEmitters, or 91% of your edges cite nothing

The first estate run found 2,478 edges signed by agent/<slug>-ci identities no fragment defined. An emitter is a machine the org operates — deliberately not a charter role, because a "ci" role would advertise continuous-integration-as-a-service to the network.

`declares` needs a role only when it names an agent

Measured, not decided: all 88 published declares edges naming an agent carry a role; none of the 43 naming a machine surface do. A flat requires rule would read 43 correct facts as defects.

One letter of filename drift hid seventeen partners

gda-group emitted directory.external.json (no s) and its own hand-written checker passed. Seventeen partner companies read as undefined endpoints until the reader learned the canonical name.

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