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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -152,4 +152,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -98,4 +98,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,64 +1,63 @@
|
|||||||
id: m9-community-profile-sync
|
|
||||||
slug: m9-community-profile-sync
|
slug: m9-community-profile-sync
|
||||||
title: 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
|
description: Opt-in sharing from local embedded profiles to community personalization layers — events flow to shared aggregates while local WAL remains primary
|
||||||
phase: released
|
phase: released
|
||||||
created_at: 2026-03-03T06:29:37.975394Z
|
created_at: 2026-03-03T06:29:37.975394Z
|
||||||
updated_at: 2026-03-04T17:17:00.000000Z
|
updated_at: 2026-03-04T17:17:00Z
|
||||||
artifacts:
|
artifacts:
|
||||||
- artifact_type: spec
|
- artifact_type: spec
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/spec.md
|
path: .sdlc/features/m9-community-profile-sync/spec.md
|
||||||
created_at: 2026-03-04T01:51:00.000000Z
|
created_at: 2026-03-04T01:51:00Z
|
||||||
approved_at: 2026-03-04T01:51:00.000000Z
|
approved_at: 2026-03-04T01:51:00Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: design
|
- artifact_type: design
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/design.md
|
path: .sdlc/features/m9-community-profile-sync/design.md
|
||||||
created_at: 2026-03-04T01:51:05.000000Z
|
created_at: 2026-03-04T01:51:05Z
|
||||||
approved_at: 2026-03-04T01:51:05.000000Z
|
approved_at: 2026-03-04T01:51:05Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: tasks
|
- artifact_type: tasks
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/tasks.md
|
path: .sdlc/features/m9-community-profile-sync/tasks.md
|
||||||
created_at: 2026-03-04T01:51:08.000000Z
|
created_at: 2026-03-04T01:51:08Z
|
||||||
approved_at: 2026-03-04T01:51:08.000000Z
|
approved_at: 2026-03-04T01:51:08Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: qa_plan
|
- artifact_type: qa_plan
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/qa-plan.md
|
path: .sdlc/features/m9-community-profile-sync/qa-plan.md
|
||||||
created_at: 2026-03-04T01:51:10.000000Z
|
created_at: 2026-03-04T01:51:10Z
|
||||||
approved_at: 2026-03-04T01:51:10.000000Z
|
approved_at: 2026-03-04T01:51:10Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: review
|
- artifact_type: review
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/review.md
|
path: .sdlc/features/m9-community-profile-sync/review.md
|
||||||
created_at: 2026-03-04T01:51:50.000000Z
|
created_at: 2026-03-04T01:51:50Z
|
||||||
approved_at: 2026-03-04T01:51:50.000000Z
|
approved_at: 2026-03-04T01:51:50Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: audit
|
- artifact_type: audit
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/audit.md
|
path: .sdlc/features/m9-community-profile-sync/audit.md
|
||||||
created_at: 2026-03-04T01:52:02.000000Z
|
created_at: 2026-03-04T01:52:02Z
|
||||||
approved_at: 2026-03-04T01:52:02.000000Z
|
approved_at: 2026-03-04T01:52:02Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
- artifact_type: qa_results
|
- artifact_type: qa_results
|
||||||
status: approved
|
status: approved
|
||||||
path: .sdlc/features/m9-community-profile-sync/qa-results.md
|
path: .sdlc/features/m9-community-profile-sync/qa-results.md
|
||||||
created_at: 2026-03-04T01:55:40.000000Z
|
created_at: 2026-03-04T01:55:40Z
|
||||||
approved_at: 2026-03-04T01:55:40.000000Z
|
approved_at: 2026-03-04T01:55:40Z
|
||||||
rejected_at: null
|
rejected_at: null
|
||||||
rejection_reason: null
|
rejection_reason: null
|
||||||
approved_by: null
|
approved_by: null
|
||||||
@ -69,34 +68,34 @@ blockers: []
|
|||||||
phase_history:
|
phase_history:
|
||||||
- phase: draft
|
- phase: draft
|
||||||
entered: 2026-03-03T06:29:37.975394Z
|
entered: 2026-03-03T06:29:37.975394Z
|
||||||
exited: 2026-03-04T01:51:00.000000Z
|
exited: 2026-03-04T01:51:00Z
|
||||||
- phase: specified
|
- phase: specified
|
||||||
entered: 2026-03-04T01:51:00.000000Z
|
entered: 2026-03-04T01:51:00Z
|
||||||
exited: 2026-03-04T01:51:08.000000Z
|
exited: 2026-03-04T01:51:08Z
|
||||||
- phase: planned
|
- phase: planned
|
||||||
entered: 2026-03-04T01:51:08.000000Z
|
entered: 2026-03-04T01:51:08Z
|
||||||
exited: 2026-03-04T01:51:08.235537Z
|
exited: 2026-03-04T01:51:08.235537Z
|
||||||
- phase: ready
|
- phase: ready
|
||||||
entered: 2026-03-04T01:51:08.235537Z
|
entered: 2026-03-04T01:51:08.235537Z
|
||||||
exited: 2026-03-04T01:51:13.153999Z
|
exited: 2026-03-04T01:51:13.153999Z
|
||||||
- phase: implementation
|
- phase: implementation
|
||||||
entered: 2026-03-04T01:51:13.153999Z
|
entered: 2026-03-04T01:51:13.153999Z
|
||||||
exited: 2026-03-04T01:51:50.000000Z
|
exited: 2026-03-04T01:51:50Z
|
||||||
- phase: review
|
- phase: review
|
||||||
entered: 2026-03-04T01:51:50.000000Z
|
entered: 2026-03-04T01:51:50Z
|
||||||
exited: 2026-03-04T01:52:02.724965Z
|
exited: 2026-03-04T01:52:02.724965Z
|
||||||
- phase: audit
|
- phase: audit
|
||||||
entered: 2026-03-04T01:52:02.724965Z
|
entered: 2026-03-04T01:52:02.724965Z
|
||||||
exited: 2026-03-04T01:55:40.000000Z
|
exited: 2026-03-04T01:55:40Z
|
||||||
- phase: qa
|
- phase: qa
|
||||||
entered: 2026-03-04T01:55:40.000000Z
|
entered: 2026-03-04T01:55:40Z
|
||||||
exited: 2026-03-04T01:55:48.000000Z
|
exited: 2026-03-04T01:55:48Z
|
||||||
- phase: merge
|
- phase: merge
|
||||||
entered: 2026-03-04T01:55:48.000000Z
|
entered: 2026-03-04T01:55:48Z
|
||||||
exited: 2026-03-04T01:55:48.195642Z
|
exited: 2026-03-04T01:55:48.195642Z
|
||||||
- phase: released
|
- phase: released
|
||||||
entered: 2026-03-04T01:55:48.195642Z
|
entered: 2026-03-04T01:55:48.195642Z
|
||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: m9-leave-revocation
|
|
||||||
slug: m9-leave-revocation
|
slug: m9-leave-revocation
|
||||||
title: Leave & Stop-Forward
|
title: Leave & Stop-Forward
|
||||||
description: 'User leaves community layer: stop forwarding new signals, snapshot current contribution boundary, allow opt-back-in path'
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: m9-purge-rematerialization
|
|
||||||
slug: m9-purge-rematerialization
|
slug: m9-purge-rematerialization
|
||||||
title: Re-materialization after Purge
|
title: Re-materialization after Purge
|
||||||
description: 'Background re-materialization engine: replay community WAL minus purged contributions, verify aggregate convergence, emit audit log'
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: m9-retroactive-purge
|
|
||||||
slug: m9-retroactive-purge
|
slug: m9-retroactive-purge
|
||||||
title: Retroactive Signal Purge
|
title: Retroactive Signal Purge
|
||||||
description: 'On explicit purge request: remove user''s contributed signals from community aggregates with deterministic re-materialization, preserving correctness'
|
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:
|
tasks:
|
||||||
- id: T1
|
- id: T1
|
||||||
title: 'T1: CohortContributionLog'
|
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
|
- id: T2
|
||||||
title: 'T2: Ledger Retraction Methods'
|
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
|
- id: T3
|
||||||
title: 'T3: Tag::PurgeManifest Storage Key'
|
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
|
- id: T4
|
||||||
title: 'T4: PurgeCoordinator and PurgeManifest'
|
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
|
- id: T5
|
||||||
title: 'T5: TidalDb Struct Fields'
|
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
|
- id: T6
|
||||||
title: 'T6: Wire Contribution Log into Signal Hot Path'
|
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
|
- id: T7
|
||||||
title: 'T7: Public API db/purge.rs'
|
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
|
- id: T8
|
||||||
title: 'T8: Integration Tests'
|
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: []
|
comments: []
|
||||||
next_comment_seq: 0
|
next_comment_seq: 0
|
||||||
blockers: []
|
blockers: []
|
||||||
@ -99,4 +146,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p1-briefing-ux-reason-labels
|
|
||||||
slug: p1-briefing-ux-reason-labels
|
slug: p1-briefing-ux-reason-labels
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p1-feedback-loop-ux
|
|
||||||
slug: p1-feedback-loop-ux
|
slug: p1-feedback-loop-ux
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p1-quality-diversity-baseline
|
|
||||||
slug: p1-quality-diversity-baseline
|
slug: p1-quality-diversity-baseline
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p2-cohort-context-views
|
|
||||||
slug: p2-cohort-context-views
|
slug: p2-cohort-context-views
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p2-self-serve-onboarding
|
|
||||||
slug: p2-self-serve-onboarding
|
slug: p2-self-serve-onboarding
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p2-trust-controls
|
|
||||||
slug: p2-trust-controls
|
slug: p2-trust-controls
|
||||||
title: Trust Controls & Transparency
|
title: Trust Controls & Transparency
|
||||||
description: Mute/hide persistence across sessions, quality signals visible to user, explanation UX for why items were surfaced
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p3-launch-support-playbook
|
|
||||||
slug: p3-launch-support-playbook
|
slug: p3-launch-support-playbook
|
||||||
title: Launch & Support Playbook
|
title: Launch & Support Playbook
|
||||||
description: Launch checklist, incident roles, communication templates — team can respond to production issues within defined SLA
|
description: Launch checklist, incident roles, communication templates — team can respond to production issues within defined SLA
|
||||||
@ -72,4 +71,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p3-quality-operations
|
|
||||||
slug: p3-quality-operations
|
slug: p3-quality-operations
|
||||||
title: Quality Operations
|
title: Quality Operations
|
||||||
description: Quality floor checks, regression dashboards, and alerting — no launch-day quality regressions ship undetected
|
description: Quality floor checks, regression dashboards, and alerting — no launch-day quality regressions ship undetected
|
||||||
@ -72,4 +71,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p3-reliability-slos
|
|
||||||
slug: p3-reliability-slos
|
slug: p3-reliability-slos
|
||||||
title: Reliability & SLOs
|
title: Reliability & SLOs
|
||||||
description: Launch SLOs defined, monitoring active, error budgets tracked — briefing generation latency and availability within targets
|
description: Launch SLOs defined, monitoring active, error budgets tracked — briefing generation latency and availability within targets
|
||||||
@ -72,4 +71,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p4-monetization-experiments
|
|
||||||
slug: p4-monetization-experiments
|
slug: p4-monetization-experiments
|
||||||
title: Monetization Experiments
|
title: Monetization Experiments
|
||||||
description: Pricing tests, conversion funnel instrumentation — measure which monetization model converts without degrading quality metrics
|
description: Pricing tests, conversion funnel instrumentation — measure which monetization model converts without degrading quality metrics
|
||||||
@ -72,4 +71,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p4-quality-safe-growth
|
|
||||||
slug: p4-quality-safe-growth
|
slug: p4-quality-safe-growth
|
||||||
title: 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
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: p4-segment-expansion-plan
|
|
||||||
slug: p4-segment-expansion-plan
|
slug: p4-segment-expansion-plan
|
||||||
title: Segment Expansion Plan
|
title: Segment Expansion Plan
|
||||||
description: Data-backed expansion strategy and milestone proposal for next target segment or market
|
description: Data-backed expansion strategy and milestone proposal for next target segment or market
|
||||||
@ -72,4 +71,4 @@ phase_history:
|
|||||||
exited: null
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: pg1-baseline-comparison
|
|
||||||
slug: pg1-baseline-comparison
|
slug: pg1-baseline-comparison
|
||||||
title: Baseline Comparison Study
|
title: Baseline Comparison Study
|
||||||
description: A/B comparison against a non-personalized baseline feed — measure click-through, completion, and return rate lift
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: pg1-instrumented-metrics
|
|
||||||
slug: pg1-instrumented-metrics
|
slug: pg1-instrumented-metrics
|
||||||
title: Instrumented Metrics Pipeline
|
title: Instrumented Metrics Pipeline
|
||||||
description: Signal write rates, ranking latency p50/p99, personalization staleness, and feedback-loop latency all observable in production
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
id: pg1-personalization-correctness
|
|
||||||
slug: pg1-personalization-correctness
|
slug: pg1-personalization-correctness
|
||||||
title: Personalization Correctness Verification
|
title: Personalization Correctness Verification
|
||||||
description: Verify the personalization loop (signal write → decay → ranking) is mathematically correct and updates within 100ms of signal write
|
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
|
exited: null
|
||||||
dependencies: []
|
dependencies: []
|
||||||
archived: false
|
archived: false
|
||||||
schema_version: 3
|
schema_version: 4
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user