sdlc: accept the schema_version 3 -> 4 migration
`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.
This commit is contained in:
parent
c97aaa8e5b
commit
cc0b894480
@ -161,4 +161,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -152,4 +152,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -98,4 +98,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,64 +1,63 @@
|
||||
id: m9-community-profile-sync
|
||||
slug: m9-community-profile-sync
|
||||
title: Community Profile Sync
|
||||
description: Opt-in sharing from local embedded profiles to community personalization layers — events flow to shared aggregates while local WAL remains primary
|
||||
phase: released
|
||||
created_at: 2026-03-03T06:29:37.975394Z
|
||||
updated_at: 2026-03-04T17:17:00.000000Z
|
||||
updated_at: 2026-03-04T17:17:00Z
|
||||
artifacts:
|
||||
- artifact_type: spec
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/spec.md
|
||||
created_at: 2026-03-04T01:51:00.000000Z
|
||||
approved_at: 2026-03-04T01:51:00.000000Z
|
||||
created_at: 2026-03-04T01:51:00Z
|
||||
approved_at: 2026-03-04T01:51:00Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: design
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/design.md
|
||||
created_at: 2026-03-04T01:51:05.000000Z
|
||||
approved_at: 2026-03-04T01:51:05.000000Z
|
||||
created_at: 2026-03-04T01:51:05Z
|
||||
approved_at: 2026-03-04T01:51:05Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: tasks
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/tasks.md
|
||||
created_at: 2026-03-04T01:51:08.000000Z
|
||||
approved_at: 2026-03-04T01:51:08.000000Z
|
||||
created_at: 2026-03-04T01:51:08Z
|
||||
approved_at: 2026-03-04T01:51:08Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: qa_plan
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/qa-plan.md
|
||||
created_at: 2026-03-04T01:51:10.000000Z
|
||||
approved_at: 2026-03-04T01:51:10.000000Z
|
||||
created_at: 2026-03-04T01:51:10Z
|
||||
approved_at: 2026-03-04T01:51:10Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: review
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/review.md
|
||||
created_at: 2026-03-04T01:51:50.000000Z
|
||||
approved_at: 2026-03-04T01:51:50.000000Z
|
||||
created_at: 2026-03-04T01:51:50Z
|
||||
approved_at: 2026-03-04T01:51:50Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: audit
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/audit.md
|
||||
created_at: 2026-03-04T01:52:02.000000Z
|
||||
approved_at: 2026-03-04T01:52:02.000000Z
|
||||
created_at: 2026-03-04T01:52:02Z
|
||||
approved_at: 2026-03-04T01:52:02Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
- artifact_type: qa_results
|
||||
status: approved
|
||||
path: .sdlc/features/m9-community-profile-sync/qa-results.md
|
||||
created_at: 2026-03-04T01:55:40.000000Z
|
||||
approved_at: 2026-03-04T01:55:40.000000Z
|
||||
created_at: 2026-03-04T01:55:40Z
|
||||
approved_at: 2026-03-04T01:55:40Z
|
||||
rejected_at: null
|
||||
rejection_reason: null
|
||||
approved_by: null
|
||||
@ -69,34 +68,34 @@ blockers: []
|
||||
phase_history:
|
||||
- phase: draft
|
||||
entered: 2026-03-03T06:29:37.975394Z
|
||||
exited: 2026-03-04T01:51:00.000000Z
|
||||
exited: 2026-03-04T01:51:00Z
|
||||
- phase: specified
|
||||
entered: 2026-03-04T01:51:00.000000Z
|
||||
exited: 2026-03-04T01:51:08.000000Z
|
||||
entered: 2026-03-04T01:51:00Z
|
||||
exited: 2026-03-04T01:51:08Z
|
||||
- phase: planned
|
||||
entered: 2026-03-04T01:51:08.000000Z
|
||||
entered: 2026-03-04T01:51:08Z
|
||||
exited: 2026-03-04T01:51:08.235537Z
|
||||
- phase: ready
|
||||
entered: 2026-03-04T01:51:08.235537Z
|
||||
exited: 2026-03-04T01:51:13.153999Z
|
||||
- phase: implementation
|
||||
entered: 2026-03-04T01:51:13.153999Z
|
||||
exited: 2026-03-04T01:51:50.000000Z
|
||||
exited: 2026-03-04T01:51:50Z
|
||||
- phase: review
|
||||
entered: 2026-03-04T01:51:50.000000Z
|
||||
entered: 2026-03-04T01:51:50Z
|
||||
exited: 2026-03-04T01:52:02.724965Z
|
||||
- phase: audit
|
||||
entered: 2026-03-04T01:52:02.724965Z
|
||||
exited: 2026-03-04T01:55:40.000000Z
|
||||
exited: 2026-03-04T01:55:40Z
|
||||
- phase: qa
|
||||
entered: 2026-03-04T01:55:40.000000Z
|
||||
exited: 2026-03-04T01:55:48.000000Z
|
||||
entered: 2026-03-04T01:55:40Z
|
||||
exited: 2026-03-04T01:55:48Z
|
||||
- phase: merge
|
||||
entered: 2026-03-04T01:55:48.000000Z
|
||||
entered: 2026-03-04T01:55:48Z
|
||||
exited: 2026-03-04T01:55:48.195642Z
|
||||
- phase: released
|
||||
entered: 2026-03-04T01:55:48.195642Z
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: m9-leave-revocation
|
||||
slug: m9-leave-revocation
|
||||
title: Leave & Stop-Forward
|
||||
description: 'User leaves community layer: stop forwarding new signals, snapshot current contribution boundary, allow opt-back-in path'
|
||||
@ -99,4 +98,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: m9-purge-rematerialization
|
||||
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'
|
||||
@ -99,4 +98,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: m9-retroactive-purge
|
||||
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'
|
||||
@ -65,28 +64,76 @@ artifacts:
|
||||
tasks:
|
||||
- id: T1
|
||||
title: 'T1: CohortContributionLog'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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'
|
||||
status: done
|
||||
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: []
|
||||
@ -99,4 +146,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p1-briefing-ux-reason-labels
|
||||
slug: p1-briefing-ux-reason-labels
|
||||
title: Briefing UX & Reason Labels
|
||||
description: Card UI spec with reasons taxonomy and source exposure rules — users see why each item was surfaced
|
||||
@ -162,4 +161,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p1-feedback-loop-ux
|
||||
slug: p1-feedback-loop-ux
|
||||
title: Feedback Loop UX
|
||||
description: Mute/hide/like controls with immediate next-refresh reflection; negative feedback visible in ranking within one refresh cycle
|
||||
@ -113,4 +112,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p1-quality-diversity-baseline
|
||||
slug: p1-quality-diversity-baseline
|
||||
title: Quality & Diversity Baseline
|
||||
description: Quality gates (min completion rate, score threshold) and diversity constraints active in top results; no creator dominates the brief
|
||||
@ -126,4 +125,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p2-cohort-context-views
|
||||
slug: p2-cohort-context-views
|
||||
title: Cohort & Context Views
|
||||
description: Cohort-trending surface ('what's trending for people like you') and session context mode visible in the product
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p2-self-serve-onboarding
|
||||
slug: p2-self-serve-onboarding
|
||||
title: Self-Serve Onboarding
|
||||
description: Onboarding flow with defaults and profile bootstrap; new user goes from signup to first ranked brief in under 3 minutes
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p2-trust-controls
|
||||
slug: p2-trust-controls
|
||||
title: Trust Controls & Transparency
|
||||
description: Mute/hide persistence across sessions, quality signals visible to user, explanation UX for why items were surfaced
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p3-launch-support-playbook
|
||||
slug: p3-launch-support-playbook
|
||||
title: Launch & Support Playbook
|
||||
description: Launch checklist, incident roles, communication templates — team can respond to production issues within defined SLA
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p3-quality-operations
|
||||
slug: p3-quality-operations
|
||||
title: Quality Operations
|
||||
description: Quality floor checks, regression dashboards, and alerting — no launch-day quality regressions ship undetected
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p3-reliability-slos
|
||||
slug: p3-reliability-slos
|
||||
title: Reliability & SLOs
|
||||
description: Launch SLOs defined, monitoring active, error budgets tracked — briefing generation latency and availability within targets
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p4-monetization-experiments
|
||||
slug: p4-monetization-experiments
|
||||
title: Monetization Experiments
|
||||
description: Pricing tests, conversion funnel instrumentation — measure which monetization model converts without degrading quality metrics
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p4-quality-safe-growth
|
||||
slug: p4-quality-safe-growth
|
||||
title: Quality-Safe Growth
|
||||
description: Guardrails that prevent revenue-over-quality regressions as user volume scales — D7 retention and useful-item rate monitored against growth rate
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: p4-segment-expansion-plan
|
||||
slug: p4-segment-expansion-plan
|
||||
title: Segment Expansion Plan
|
||||
description: Data-backed expansion strategy and milestone proposal for next target segment or market
|
||||
@ -72,4 +71,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: pg1-baseline-comparison
|
||||
slug: pg1-baseline-comparison
|
||||
title: Baseline Comparison Study
|
||||
description: A/B comparison against a non-personalized baseline feed — measure click-through, completion, and return rate lift
|
||||
@ -153,4 +152,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: pg1-instrumented-metrics
|
||||
slug: pg1-instrumented-metrics
|
||||
title: Instrumented Metrics Pipeline
|
||||
description: Signal write rates, ranking latency p50/p99, personalization staleness, and feedback-loop latency all observable in production
|
||||
@ -162,4 +161,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
id: pg1-personalization-correctness
|
||||
slug: pg1-personalization-correctness
|
||||
title: Personalization Correctness Verification
|
||||
description: Verify the personalization loop (signal write → decay → ranking) is mathematically correct and updates within 100ms of signal write
|
||||
@ -144,4 +143,4 @@ phase_history:
|
||||
exited: null
|
||||
dependencies: []
|
||||
archived: false
|
||||
schema_version: 3
|
||||
schema_version: 4
|
||||
|
||||
Loading…
Reference in New Issue
Block a user