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
99 lines
3.0 KiB
YAML
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
|