sgit newsroom v0.1.29 · snapshot 2026-09-24

Reading room · vaults

Reading room / vaults · raw text

From vaults, a file in the seed packEverything on this sheet is the source site's own text; the newsroom's chrome is outside it.

The acceptance record

One entry per decision about a risk. This is the contract between whoever runs the loop (a person, a tool, or a GRC integration) and whoever reads the record (the holder, the board, an auditor, an insurer). risk/record.jsonl is an invented example, 14 entries, chain intact.

Fields

FieldMeaning
seqPosition in the risk's record, from 1.
dayDays since the risk was established. A real record also carries an ISO 8601 timestamp.
typeidentified, placed, accepted, expired, escalated, funded, incident, evidence, reported or closed.
actorWho did it: a named person, or "the clock" for expiries and escalations.
roleThe role acting, for acceptances, escalations and funding.
rungFor acceptances: the ladder rung, such as "1 month".
days / hoursFor acceptances: the interval.
actionFor acceptances: what will happen before the interval ends. Required.
holderWhen the holder changes: the new holder.
facts_add / facts_removeFacts that start or stop holding, by id. Each fact has a source in the risk's facts list.
controlsControl states that change: missing, proposed, funded, in_place.
textOne or two sentences a board member can read.
prev, hashThe chain. SHA-256 over the entry without hash, keys sorted, no whitespace; the first entry's prev is 64 zeros.

Rules

  1. No acceptance without an interval and an action.
  2. No acceptance on somebody else's behalf. actor must be the person holding role.
  3. An expiry is an entry. The clock writes it; nobody has to remember to.
  4. Silence escalates. An expiry with no acceptance, funding or fix within one working day produces an escalated entry to the holder's boss.
  5. A risk closes on facts. A closed entry names the fact that ended it, which must be one of the risk's "ceases when" facts.
  6. Nothing is deleted. Corrections are new entries that point at the one they correct.

tools/verify-record.py checks the chain and exits 1 at the first break.