tidaldb/.sdlc/features/m9-purge-rematerialization/manifest.yaml
jordan 6f26d03c77 feat(m9): implement purge re-materialization engine
Adds the M9 purge re-materialization feature: a WAL-replay background
engine that rebuilds community cohort aggregates for a (user, community)
pair after retroactive signal purge, restoring ranking correctness without
modifying the immutable WAL.

Key additions:
- cohort::rematerialization module: PurgeJobQueue, RematerializationEngine,
  WAL replay, atomic CohortSignalLedger swap, BLAKE3 audit log, metrics counters
- TidalDb::{submit_purge_job, purge_job_status, rematerialization_metrics}
  public API (db/rematerialization.rs)
- Engine auto-starts in persistent mode; clean shutdown before WAL teardown
- 6 integration tests in tests/m9_purge_remat.rs covering ephemeral and
  persistent modes, job lifecycle, and multi-job independence
- Split oversized files to comply with 600-line limit: db/mod.rs →
  db/from_parts.rs, entities/revocation.rs → revocation/{mod,tests}.rs,
  schema/validation/builders.rs → builders/{mod,tests}.rs,
  signals/warm.rs → warm/{mod,tests,proptests}.rs
- Fix pre-existing bootstrap errors: export AuditKind from session module,
  add overrides_rejected to SessionSnapshot deserialization
2026-03-03 19:18:16 -07:00

99 lines
3.0 KiB
YAML

slug: m9-purge-rematerialization
title: Re-materialization after Purge
description: 'Background re-materialization engine: replay community WAL minus purged contributions, verify aggregate convergence, emit audit log'
phase: merge
created_at: 2026-03-03T06:29:37.999341Z
updated_at: 2026-03-04T01:53:45.021789Z
artifacts:
- artifact_type: spec
status: approved
path: .sdlc/features/m9-purge-rematerialization/spec.md
created_at: 2026-03-04T01:49:14.154070Z
approved_at: 2026-03-04T01:49:17.840490Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: design
status: approved
path: .sdlc/features/m9-purge-rematerialization/design.md
created_at: 2026-03-04T01:49:46.066669Z
approved_at: 2026-03-04T01:49:51.894676Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: tasks
status: approved
path: .sdlc/features/m9-purge-rematerialization/tasks.md
created_at: 2026-03-04T01:50:20.613817Z
approved_at: 2026-03-04T01:50:26.597303Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: qa_plan
status: approved
path: .sdlc/features/m9-purge-rematerialization/qa-plan.md
created_at: 2026-03-04T01:50:47.711899Z
approved_at: 2026-03-04T01:50:51.630617Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: review
status: approved
path: .sdlc/features/m9-purge-rematerialization/review.md
created_at: 2026-03-04T01:51:51.761476Z
approved_at: 2026-03-04T01:51:56.624236Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: audit
status: approved
path: .sdlc/features/m9-purge-rematerialization/audit.md
created_at: 2026-03-04T01:52:40.813915Z
approved_at: 2026-03-04T01:52:44.714129Z
rejected_at: null
rejection_reason: null
approved_by: null
- artifact_type: qa_results
status: approved
path: .sdlc/features/m9-purge-rematerialization/qa-results.md
created_at: 2026-03-04T01:53:41.072426Z
approved_at: 2026-03-04T01:53:44.920277Z
rejected_at: null
rejection_reason: null
approved_by: null
tasks: []
comments: []
next_comment_seq: 0
blockers: []
phase_history:
- phase: draft
entered: 2026-03-03T06:29:37.999341Z
exited: 2026-03-04T01:49:17.841078Z
- phase: specified
entered: 2026-03-04T01:49:17.841078Z
exited: 2026-03-04T01:50:51.631219Z
- phase: planned
entered: 2026-03-04T01:50:51.631219Z
exited: 2026-03-04T01:51:00.494211Z
- phase: ready
entered: 2026-03-04T01:51:00.494211Z
exited: 2026-03-04T01:51:09.209106Z
- phase: implementation
entered: 2026-03-04T01:51:09.209106Z
exited: 2026-03-04T01:51:56.628066Z
- phase: review
entered: 2026-03-04T01:51:56.628066Z
exited: 2026-03-04T01:52:09.000248Z
- phase: audit
entered: 2026-03-04T01:52:09.000248Z
exited: 2026-03-04T01:52:44.714865Z
- phase: qa
entered: 2026-03-04T01:52:44.714865Z
exited: 2026-03-04T01:53:45.021789Z
- phase: merge
entered: 2026-03-04T01:53:45.021789Z
exited: null
dependencies: []
archived: false
schema_version: 3