The agentic network · a Gord Holdings companyRoadmap
← All packages
The record · v0.1.0 · Apache-2.0

@flashyos/shiplog

What you shipped, sealed so a stranger can check it

shipped/1 — the past tense of a record. One sealed entry per thing that shipped, emitted per repository and merged into one cross-repository calendar, changelog and attribution report. Verifiable offline; the past is append-only.

npm install @flashyos/shiplognpm ↗source ↗

Why it exists

One entry per thing that reached the branch that deploys: dated, attributed to the agents and humans who did it, and sealed with the same canonicalisation that seals every settlement here. The cross-repository calendar and the changelog are projections of the merge rather than services, so a company joins by publishing one file instead of being integrated.

What it refuses to do
Nothing is edited. A wrong entry is superseded by a new one, because an edited entry has a different digest and every receipt that quoted the old one would stop verifying. It also refuses to guess: a commit it cannot classify is filed as `other` rather than inflating the number everybody reads.

How it works

`shipped/1` is one sealed entry per thing that reached the branch that deploys — dated, attributed to the agents and humans who did it, and sealed with the same canonicalisation that seals every settlement. The cross-repository calendar and the changelog are projections of the merge rather than services, so a company joins by publishing one file.

Nothing is edited. A wrong entry is superseded by a new one, because an edited entry has a different digest and every receipt that quoted the old one would stop verifying. An emit is a union, never a replacement: an id already in the fragment keeps its sealed entry, and only new ids are added, so merging a branch cannot silently delete work whose commits were still reachable.

It refuses to guess: a commit it cannot classify is filed as `other`, and a `Kind:` trailer or `.shiplog/kinds.json` records a human’s decision rather than an inferred one.

Related concepts
IntentMeshagentic autonomous organizationmachine-readable organizational trustAI agent trust register

Use it

Re-verify every seal, then read the calendar
npx @flashyos/shiplog check ./fragments
npx @flashyos/shiplog calendar ./fragments --grain week

Installing it puts this command on your path — read from the package’s own manifest, so this list cannot drift from what you actually get.

flashy-shiplog

In practice

Make agent authorship a measured fact
`by` carries Directory node ids and an agent id is as first-class as a person’s, so the share of shipping done by agents becomes a number anyone can recompute from published documents rather than a claim in a deck.
Publish a cross-repository changelog for free
A merged shiplog sorted by date is the calendar and the changelog; a portfolio company appears in both by publishing one sealed fragment, with nothing to integrate.

How it stays honest

The log is a generated artifact regenerated by the Shiplog workflow and never hand-edited; paths-ignore stops the commit it makes from triggering it again, and a daily run keeps a log current even in a quiet week. Everything lands private — publishing is one field in .shiplog/config.json — and the served copy is the public projection written by the emitter, so a forgotten copy step cannot leak private entries. Re-derive it yourself from git history with `npx @flashyos/shiplog check ./fragments`.

.github/workflows/shiplog.yml ↗the workflow that keeps this current — read it, it hides nothing

Questions

What is shipped/1?
shipped/1 is the past tense of a record: one sealed entry per thing that reached the deploying branch — dated, attributed to the agents and humans who did it, and hashed so a stranger can re-verify it.
Can a shiplog entry be edited?
No. Nothing is edited; a wrong entry is superseded by a new one. An edited entry would have a different digest, and every receipt that quoted the old one would stop verifying — so correction is append-only.
How is the share of agent-authored work measured?
Each entry’s `by` field carries Directory node ids, and an agent id is as first-class as a person’s. The share done by agents is then recomputable from published documents, which is the only form of that number worth quoting.
Why is emitting a shiplog a union rather than a replacement?
Because the log is derived first-parent, and a commit stops being first-parent once its branch merges. Overwriting the fragment would delete entries for shipped work; a union keeps sealed ids and adds only new ones.

The licence

Apache-2.0, read from the package’s own manifest. Embed it in anything, including closed software — that is what makes a spec adoptable and a verifier worth running. FlashyOS’s server side is AGPL-3.0-only instead, and a test in the monorepo asserts the direction between them: AGPL code may consume this, this may never consume AGPL code.

Keep reading

Machine surfaces
Also in the record
@flashyos/canon@flashyos/directory@flashyos/backlog@flashyos/checkpoint@flashyos/assetmesh@flashyos/delivery@flashyos/playbook@flashyos/mesh@flashyos/holding@flashyos/mail@flashyos/frontdoor