Skip to content
Sign in

audit-log

v0.1.1

Append-only, hash-chained record of every human decision. Tamper-evident on its own. Tamper-proof once the chain head is anchored outside.

license: MITauditcomplianceprovenanceaccountabilityapprovals
Experimental
Published as experimental by its release pipeline. It installs and resolves like any other worker, but its interface may change without notice.

Install

bash
iii trigger compose::add worker=audit-log

Run in your project with the iii engine running. Exact versions are immutable and digest-pinned.

Functions7

audit::append

Function

Record one decision in the append-only, hash-chained log

Request
  • actorstring

    Who decided. Name the person where there was one.

  • detailobject
  • kindstringrequired

    The kind of decision. Required.

  • subjectstring

    What the decision was about.

Response
  • errorstring

    Set only when nothing was recorded.

  • hashstring

    The proof the caller keeps: seq plus hash names the entry.

  • kindstring
  • known_kindboolean

    False when the kind is not on AUDIT_LOG_KINDS. Recorded anyway.

  • seqinteger

audit::head

Function

The chain head, seq and hash. The fact an anchor stores

Request
Empty object
Response
  • atinteger
  • hashstring

    The fact an anchor stores. 64 zeros when the log is empty.

  • seqinteger

    -1 when the log is empty.

audit::read

Function

Entries, optionally narrowed by kind or subject

Request
  • kindstring
  • limitinteger

    Newest N entries. Default 200.

  • subjectstring
Response
  • entriesobject[]
    • actorstringrequired

      Who or what decided: a person, a worker, a rule id.

    • atintegerrequired

      When the entry was sealed, epoch milliseconds.

    • detailobjectrequired

      Whatever else the decision carries.

    • hashstringrequired

      SHA-256 over every field above.

    • kindstringrequired

      What kind of decision, in the deployment's vocabulary.

    • prevstringrequired

      Hash of the entry before; 64 zeros at the start.

    • seqintegerrequired

      Position in the chain, starting at 0.

    • subjectstringrequired

      What the decision was about.

    • vintegerrequired

      Entry format version.

  • problemsstring[]
  • totalinteger

    Matching entries, before the limit cut.

audit::recorded

Function

The sealed-entry event source. Observe it: your target receives the entry, seq and hash included. Private, so only this worker fires it

Request
  • actorstringrequired

    Who or what decided: a person, a worker, a rule id.

  • atintegerrequired

    When the entry was sealed, epoch milliseconds.

  • detailobjectrequired

    Whatever else the decision carries.

  • hashstringrequired

    SHA-256 over every field above.

  • kindstringrequired

    What kind of decision, in the deployment's vocabulary.

  • prevstringrequired

    Hash of the entry before; 64 zeros at the start.

  • seqintegerrequired

    Position in the chain, starting at 0.

  • subjectstringrequired

    What the decision was about.

  • vintegerrequired

    Entry format version.

Response
  • actorstringrequired

    Who or what decided: a person, a worker, a rule id.

  • atintegerrequired

    When the entry was sealed, epoch milliseconds.

  • detailobjectrequired

    Whatever else the decision carries.

  • hashstringrequired

    SHA-256 over every field above.

  • kindstringrequired

    What kind of decision, in the deployment's vocabulary.

  • prevstringrequired

    Hash of the entry before; 64 zeros at the start.

  • seqintegerrequired

    Position in the chain, starting at 0.

  • subjectstringrequired

    What the decision was about.

  • vintegerrequired

    Entry format version.

audit::summary

Function

What the log says: whether it verifies, and what it counts

Request
  • bystring[]

    Fields to count by: top-level or detail. Defaults to kind and actor.

Response
  • byobject

    One counts object per requested field.

  • entriesinteger
  • filesstring[]
  • first_atinteger
  • last_atinteger
  • problemsstring[]
  • verifiedboolean
  • verified_throughinteger

audit::tally

Function

Count entries by any field, narrowed to one kind

Request
  • bystring

    The field to count. Default kind.

  • kindstring

    Narrow to one kind before counting.

Response
  • countsobject
  • totalinteger

audit::verify

Function

Is the chain intact, and from which entry is it not

Request
Empty object
Response
  • entriesinteger
  • folderstring
  • okboolean
  • problemsstring[]
  • verified_throughinteger

    Last seq that verified. Everything after it is unproven.

Search the registry

Find workers, kits and executables, or jump to a page.