Record format

@flashyos/backlog

backlog/1 — the future tense. One item per intention, filed where the work happens, decaying unless renewed, private until a named human promotes it.

version 0.1.1 · audit of 2026-10-04 · source: flashyos/packages/backlog

npm i @flashyos/backlog

file() always writes private, always rev 1, expiry always derived from kind — there is no visibility parameter and there will not be one. Publication is promote(), it takes a person/ id, and it is recorded on the item.

capabilitiesWanted is what makes an item matchable: normalised exactly as the matcher reads (trimmed, lowercased, de-duped, capped at 20), so a promotion never silently stops matching over whitespace.

Edge cases — each one paid for once

A write-once wants field made every item invisible

For weeks nothing could add capabilitiesWanted after filing, so all 53 items across the estate were permanently unmatchable and no check could say so. revise() exists now — and changes everything about an item except its visibility.

Full distribution with nothing distributed is worse than no adoption

Thirty repositories filed backlogs, twelve served one, and 0 items were public — every structural check passes on an empty projection. It teaches every reader the format is decorative, one fetch at a time.

The machine that filed an item is the only machine that closes it

Agent closure is restricted to ids the closing tool itself defines — a person’s item is not an agent’s to close because no rule happens to measure it. The consent rule, run backwards.

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