`sdlc` 0.5.1 rewrites every feature manifest on read - `sdlc state` alone did this - so the migration cannot be avoided, only recorded. It is idempotent: repeated reads produce no further churn (verified by checksum). What schema 4 drops, so it is findable later: - feature-level `id` (now derived from `slug`) and `updated_at`. - per-task history: `created_at` is re-stamped with the migration instant and `completed_at` is nulled, so task timing before 2026-08-16 is not recoverable from these files. - m9-community-profile-sync additionally loses 18 phase-history and artifact timestamps (`entered`/`exited`/`approved_at`, 2026-03-04). The pre-migration record is this commit's parent: git show HEAD~1:.sdlc/features/m9-community-profile-sync/manifest.yaml Committed separately from any state transition so the loss is one reviewable diff rather than noise inside a feature change. `.sdlc/` is CLI-owned; nothing here was hand-edited.
150 lines
3.9 KiB
YAML
150 lines
3.9 KiB
YAML
slug: m9-retroactive-purge
|
|
title: Retroactive Signal Purge
|
|
description: 'On explicit purge request: remove user''s contributed signals from community aggregates with deterministic re-materialization, preserving correctness'
|
|
phase: released
|
|
created_at: 2026-03-03T06:29:37.992175Z
|
|
updated_at: 2026-03-04T01:51:20.644600Z
|
|
artifacts:
|
|
- artifact_type: spec
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/spec.md
|
|
created_at: 2026-03-03T06:29:37.992175Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: design
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/design.md
|
|
created_at: 2026-03-03T06:29:37.992175Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: tasks
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/tasks.md
|
|
created_at: 2026-03-03T06:29:37.992175Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: qa_plan
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/qa-plan.md
|
|
created_at: 2026-03-03T06:29:37.992175Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: review
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/review.md
|
|
created_at: 2026-03-04T01:51:20.644600Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: audit
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/audit.md
|
|
created_at: 2026-03-04T01:51:20.644600Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: qa_results
|
|
status: approved
|
|
path: .sdlc/features/m9-retroactive-purge/qa-results.md
|
|
created_at: 2026-03-04T01:51:20.644600Z
|
|
approved_at: 2026-03-04T01:51:20.644600Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
tasks:
|
|
- id: T1
|
|
title: 'T1: CohortContributionLog'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081106Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T2
|
|
title: 'T2: Ledger Retraction Methods'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081108Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T3
|
|
title: 'T3: Tag::PurgeManifest Storage Key'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081109Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T4
|
|
title: 'T4: PurgeCoordinator and PurgeManifest'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081110Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T5
|
|
title: 'T5: TidalDb Struct Fields'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081111Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T6
|
|
title: 'T6: Wire Contribution Log into Signal Hot Path'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081116Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T7
|
|
title: 'T7: Public API db/purge.rs'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081117Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T8
|
|
title: 'T8: Integration Tests'
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-08-16T15:43:26.081118Z
|
|
started_at: null
|
|
completed_at: null
|
|
blocker: null
|
|
depends_on: []
|
|
comments: []
|
|
next_comment_seq: 0
|
|
blockers: []
|
|
phase_history:
|
|
- phase: draft
|
|
entered: 2026-03-03T06:29:37.992175Z
|
|
exited: 2026-03-04T01:51:20.644600Z
|
|
- phase: released
|
|
entered: 2026-03-04T01:51:20.644600Z
|
|
exited: null
|
|
dependencies: []
|
|
archived: false
|
|
schema_version: 4
|