feat: WORM Audit app home, declared alerts and record screens #8

Merged
KofTwentyTwo merged 4 commits from feature/app-home into develop 2026-10-14 12:09:35 +00:00
4 Commits
Author SHA1 Message Date
james.maesandClaude Opus 5.5 4b6717ebdd feat: WORM Audit app home, setup warnings, declared alerts and record screens
Phase (c) of docs/DESIGN.md:
- the WORM Audit app and home: chain status, export status, retention,
  recent purges and setup warnings (missing triggers, owner role, signing
  and trusted keys, bucket without Object Lock, stale verification), plus
  a summary card for host dashboards; no audit content is rendered;
- alert types renamed to wormaudit.* (core name pattern) and declared,
  with daily heartbeat monitors;
- full verification holds one page plus one checkpoint range;
- plain field labels, record labels, full-width sections and child lists;
- a test-scope demo server and screenshots (home and records, light and
  dark, 390/1440/1920) with overflow checks;
- DESIGN.md consistency edits (alert names, object_versions,
  s3:GetObjectVersion, snake_case columns).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:05:32 -05:00
james.maesandClaude Opus 5.5 9c2766e324 feat: sealed exports to S3 Object Lock and the sealed export verifier
Phase (b) of docs/DESIGN.md:
- daily and on-demand exports of contiguous chain ranges up to the latest
  signed checkpoint: links.jsonl, checkpoints.jsonl and a manifest that
  chains to the previous export, each put through qbit-object-storage with
  COMPLIANCE retention (default 6 years) and checked by head; sealed
  object version ids are recorded;
- refuses and alerts (worm_audit.export.failed) on buckets without Object
  Lock or without versions; heartbeat on scheduled runs;
- Verify sealed export: manifest hashes, lock and retention, the manifest
  chain, link and checkpoint recomputation, overwrite detection against the
  pinned versions, and comparison with the live chain and audit rows;
- MinIO Testcontainers round trip, retention, delete refusal, overwrite and
  live tamper detection, and the unsupported-bucket refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:58:14 -05:00
james.maes 19ac187886 Merge develop into feature/chain 2026-10-13 20:28:09 -05:00
james.maesandClaude Opus 5.5 f380b9b2a1 feat: append-only audit tables, hash chain, signed checkpoints and verification
Phase (a) of docs/DESIGN.md:
- Postgres DDL template and renderer: write-once triggers on the core
  audit tables and worm_audit_* tables, lookup id/name protection, the
  SECURITY DEFINER retention purge (call-stack guarded, chain prefix only,
  recorded) and the INSERT/SELECT-only grant model;
- capability guard and a clear write-once error;
- RFC 8785 canonical audit content, a single-writer chainer (advisory
  lock, settle horizon, contiguous ids, late arrivals and late details),
  Ed25519 checkpoints with Merkle roots;
- a paged verifier naming the exact break, the Verify audit chain table
  action, and the daily verification with QAlerts break/heartbeat;
- the assistant deny pattern for worm_audit_* (reflective until RC.6);
- tests: Postgres Testcontainers (triggers, grants, purge, tamper,
  concurrency, time zone), PHI canary, chain and checkpoint units.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:28:00 -05:00