Skip to content

Versioned, Auditable Source Tracking

Questions or comments?

Post them as a comment on the tracking issue -- requires a GitHub account with access to this repo.

Scope

Content-hash-based change detection and an audit trail per document — a document flips to "changed since last crawl" when its hash differs from the prior version, which resurfaces it for SME re-review. Preserves exactly what a given advisor answer was grounded in, even after the underlying source is later updated, and shows who accepted, rejected, or flagged each version and why.

Per ../../../schema/nova-codex-curator.md, content-hash comparison already exists in the crawler (SyncManifest/PartState.content_hash, needs_update()) — this Feature is primarily about wiring that existing signal into the review-resurfacing and audit-trail behavior proposed in ../schema-changes.md, not building hash detection from scratch.

Value

This is the auditability advantage Codex has over a live web-search approach — a compliance team can reconstruct exactly what the advisor knew and cited at any point in time, including for a regulation that has since been amended.

Acceptance criteria

  • When a re-crawl detects a changed content hash for a previously accepted document, the document is resurfaced in the SME review queue as "changed since last crawl," rather than silently replacing the accepted version.
  • The prior accepted version remains retrievable (not overwritten in place) — a compliance team can reconstruct what the advisor was citing before and after the change, with dates.
  • Every accept/reject/needs-review decision on every version records who made it, when, and why (comment, where applicable) — a durable audit trail per document, not just per document family.
  • Advisor answers that cite Codex content can be traced back to the exact version cited at the time the answer was given, even if that source has since been updated (cross-check with ../../nova-policy-advisor/auditable-conversation-history/spec.md on the Advisor side of this trace).