Plumb

Specification

dev07-6-2-2 · hold a series

What an IT professional does to host their team's run histories: stand a holder up on a box the team already runs, and bound what it may spend of that box. The projects that push to it are in dev07-6 · append the run to the series; the endpoint this flow stands up is the holder an adopter declares there.

0 of 2 stories proven · 0 passed, not wired · 1 unproven · 1 with nothing holding them

dev07-6-2-2-1 stand the holder up Nothing holds it

As an IT professional whose team's histories outgrow their machines I want one service that holds them and hands them back, so that custody is something we run rather than something we owe anybody.

Requirements (10)
What the user needs
  • dev07-6-2-2-1-ur1what the holder accepts — routes, the batch cap, which refusal means what — is served from the holder itself
  • dev07-6-2-2-1-ur2a store on storage the system clears without warning is named at startup
What the system does
  • dev07-6-2-2-1-sr1it binds to the local interface and expects the host's own proxy for transport security
  • dev07-6-2-2-1-sr2a hand-over is appended verbatim and renumbered onto this store's own sequence
  • dev07-6-2-2-1-sr3a refusal says which kind it is: too large is split and resent, unreadable is terminal, no room is retryable
  • dev07-6-2-2-1-sr4two runs of one project arriving together exclude each other per series, and housekeeping holds the same lock
How well
  • dev07-6-2-2-1-nfr1the series surface touches no manifest, fills no slot and moves no story's status
  • dev07-6-2-2-1-nfr2it authenticates nobody; what it protects is a disk
  • dev07-6-2-2-1-nfr3it depends on the standard library alone — no dependency tree to keep patched, no build step to host
  • dev07-6-2-2-1-nfr4the reply never waits for housekeeping; compaction runs after it

dev07-6-2-2-2 set what it may spend Unproven

As an IT professional sharing a volume with things that matter more I want the bounds to be mine, so that holding histories can never take out what else lives on the host.

the citations that passed reached nothing wired — what ran was the implementation on its own, which is not evidence the story holds where it is used

The tests that cite it (1)
  • tests/test_series.py::test_a_compacted_history_still_answers_when — passed, ungrounded
Requirements (11)
What the user needs
  • dev07-6-2-2-2-ur1the headroom left for the rest of the host is the operator's number, read from the disk on every write
  • dev07-6-2-2-2-ur2under the reserve the holder stops accepting and never starts discarding
  • dev07-6-2-2-2-ur3the pool is one bound over everything held; a pool at or above the whole filesystem is named as no bound
  • dev07-6-2-2-2-ur4startup says what is free, what writes are refused under, and the most it will hold
What the system does
  • dev07-6-2-2-2-sr1eviction drops whole series, least-recently-retrieved first — reading a history is what keeps it
  • dev07-6-2-2-2-sr2a series already reduced to its record of discard is never an eviction candidate, and its bytes stay counted
  • dev07-6-2-2-2-sr3a discarded series is replaced by the record that it was discarded, and a half-written record is never read as the store
  • dev07-6-2-2-2-sr4compaction fires on a write once a log stores more than the ratio of what it says, and never fails a held record
  • dev07-6-2-2-2-sr5a free-space figure that cannot be read refuses nothing
  • dev07-6-2-2-2-sr6compaction keeps when each fact last changed and when the history was last looked at, and reclaims only the changes in between, so a compacted history still answers when
How well
  • dev07-6-2-2-2-nfr1the compaction policy lives in one place, and the numbers it needs are asked of the holder

← Every chapter