Skip to content

audit export drops the event chain, so an exported audit log cannot be verified anywhere #620

Open

Description

@vladimirrott

sysknife audit export writes the transaction chain and drops the event chain, so the file it produces cannot be verified anywhere, including on the host that wrote it. sysknife audit verify checks both chains, and it only reads a live store.

At 82a087f, export reads one table (apps/sysknife-cli/src/runner.rs:1217):

store
    .fetch_chain_rows()

Verify needs both (runner.rs:1614):

let event_rows = match store.fetch_event_rows() {

Transaction rows sign the event tip (crates/sysknife-daemon/src/audit_chain.rs:614-625), so a verifier holding only the exported rows cannot check them. AuditVerifyArgs (apps/sysknife-cli/src/cli.rs:195-206) takes --json and --pubkey <FILE> and has no way to name an exported file.

Why it matters

Scope

Tests first

  • Export a store with a few transactions and events, verify the file with --from: intact.
  • Flip one byte in an event row in the file: verify reports the event chain broken and exits with the documented failure code.
  • Drop the last event row: verify must fail. Remove the event check from the new path and this test must go green, which proves the event half is load-bearing.

Difficulty

medium: no new cryptography, but it changes a published output format and adds a verification mode.

Getting started

CONTRIBUTING.md has the build and test commands. No CLA and no copyright waiver. The project is MIT; sign off each commit with git commit -s (the required dco check enforces it since #732).

Activity

  1. added
    enhancementNew feature or request
    help wantedExtra attention is needed
    mediumDifficulty: needs familiarity with one subsystem
    on Oct 19, 2026
  2. vladimirrott commented on Oct 19, 2026

    @vladimirrott
    MemberAuthor

    @ITSMERNB this fits what you did in #594 and #611: you made the CLI stop on a step that did not succeed and pinned it with tests that fail when the stop is removed. Here the audit export leaves out the event chain, so an export cannot verify anywhere, and the fix needs the same care about what counts as intact. It is yours if you want it; reply here and I will assign it.

  3. added
    claimedSomeone has said in the thread that they are working on this
    on Oct 19, 2026
  4. vladimirrott commented on Oct 24, 2026

    @vladimirrott
    MemberAuthor

    @ITSMERNB I offered you this on 19 October and I'm putting it back in the pool so someone else can pick it up. If you want it later, say so here and it's yours again. Nothing is owed either way.

  5. removed
    claimedSomeone has said in the thread that they are working on this
    on Oct 24, 2026
  6. vladimirrott commented on Oct 24, 2026

    @vladimirrott
    MemberAuthor

    @k4its1t your #289 made audit verify report checks that never ran, and #340 put the anchor into the verdict. An export drops the event chain today, so a verdict computed offline from an export cannot check what yours check on the live store. This issue closes that gap.

    I'm holding it for you. Say so here and I'll assign it. If it isn't for you, no reply needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededmediumDifficulty: needs familiarity with one subsystem

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions