Skip to main content
Compendium / Governance & Risk / Audits & Logs / Audit Entry Row
#541

Audit Entry Row

A single row in a flat audit log — timestamp, actor handle, action verb, target id. The minimum unit of accountability.

STABLE GO
#list #real-content #dark-mode-tested #responsive
Live
18:30:14 @governor SIGN SPEC-204@v1.2
audit row · append-only
Spec

Intent

A log is only useful when its rows are scannable. This atom defines the canonical four-column shape every audit-log surface in the framework must conform to.

Acceptance Criteria

  • [ ] Four monospaced columns: time, actor, verb, target
  • [ ] Verb is uppercase, bold, narrowest column
  • [ ] Target id wraps without breaking the row
  • [ ] Negative: does NOT include free-text commentary

Constraints

  • Pure markup, no JS
  • Theme-aware via tokens
  • Tabular numerics for time alignment
// audit-entry-row.astro
---
import type { CompendiumMeta } from '../../../data/types';

export const meta: CompendiumMeta = {
  id: 541,
  slug: 'audit-entry-row',
  name: 'Audit Entry Row',
  category: 'governance-risk',
  subcategory: 'audits-and-logs',
  pillar: 'go',
  description: 'A single row in a flat audit log — timestamp, actor handle, action verb, target id. The minimum unit of accountability.',
  spec: `## Intent
A log is only useful when its rows are scannable. This atom defines the canonical four-column shape every audit-log surface in the framework must conform to.

## Acceptance Criteria
- [ ] Four monospaced columns: time, actor, verb, target
- [ ] Verb is uppercase, bold, narrowest column
- [ ] Target id wraps without breaking the row
- [ ] Negative: does NOT include free-text commentary

## Constraints
- Pure markup, no JS
- Theme-aware via tokens
- Tabular numerics for time alignment`,
  tags: ['list', 'real-content', 'dark-mode-tested', 'responsive'],
  status: 'stable',
  health: { ics: 91, a11y: 'aa', themed: true, animated: false },
};

const row = {
  ts: '18:30:14',
  actor: '@governor',
  verb: 'SIGN',
  target: 'SPEC-204@v1.2',
};
---

<div data-this-component class="w-full bg-paper text-black border-4 border-black p-3 overflow-hidden">
  <div class="grid grid-cols-[auto_auto_auto_1fr] items-baseline gap-3 font-mono text-[11px] uppercase tracking-widest">
    <span class="tabular-nums opacity-70">{row.ts}</span>
    <span class="opacity-80">{row.actor}</span>
    <span class="font-black px-1.5 py-0.5 border-2 border-black bg-success text-black">{row.verb}</span>
    <span class="font-black truncate">{row.target}</span>
  </div>
  <div class="mt-2 pt-2 border-t-2 border-black font-mono text-[9px] uppercase tracking-widest opacity-60">audit row · append-only</div>
</div>