← All packages
The record · v0.1.0 · Apache-2.0

@flashyos/holding

What happened to the positions an office holds, as a log

holding/1 — a log of what happened to the positions an office holds. Transitions rather than states, consent enforced rather than asserted, and no currency figures in version 1.

npm install @flashyos/holdingnpm ↗source ↗

Why it exists

A family office’s position table can be edited; a log of transitions can only be appended to. So the current state of a position is derived from its log and never asserted — which means “what did we own, and when did that change” has an answer nobody had to remember to keep accurate.

What it refuses to do
No currency figures at all in version 1. A register carrying valuations invites a reader to treat a log of transitions as a statement of worth, and those are different documents with different obligations.

How it works

`holding/1` records transitions rather than states — acquired, written down, realised — each carrying the date it happened and the date it was recorded. The current state is a fold over that log, so a summary cannot drift from its own history: there is only one of them.

Two rules are unrelaxable. A transition may not be recorded as having happened before it happened, and a recorded date earlier than the event date is a validation error rather than a warning. And a transition naming another organisation needs that organisation’s consent — the same rule the Directory enforces, stated once more where positions need it.

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

Use it

Emit a register with nothing installed
node vendor-holding.mjs

In practice

Answer what the office held, at a date
The register folds to a state for any point in time because it stores the changes rather than the answer, so a question about last quarter does not depend on somebody having kept a table current.
Publish a position without publishing a valuation
The format has no field for a figure, so a register can be shared with a counterparty as evidence of a relationship without disclosing what it is worth.

How it stays honest

The register cannot record a transition as having happened before it happened: a recorded date earlier than the event date fails validation rather than raising a warning, so backdating breaks loudly instead of passing quietly. A dependency-free vendored emitter runs the identical rules in a repository with no toolchain at all, and CI asserts the two agree byte for byte.

Questions

Why transitions rather than a table of positions?
A table of states can be edited and a log can only be appended to. Deriving the current state from the log means the summary and the history cannot disagree, because there is only one of them.
Why are there no currency figures in version 1?
Because a register carrying valuations invites a reader to treat a log of transitions as a statement of worth. Those are different documents with different obligations, and merging them makes the cheaper one carry the heavier duty.

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

The standard
Also in the record
@flashyos/canon@flashyos/directory@flashyos/backlog@flashyos/shiplog@flashyos/checkpoint@flashyos/delivery@flashyos/playbook@flashyos/frontdoor