`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.
147 lines
4.5 KiB
YAML
147 lines
4.5 KiB
YAML
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
|
|
phase: released
|
|
created_at: 2026-03-03T06:30:08.977848Z
|
|
updated_at: 2026-03-04T06:43:05.765167Z
|
|
artifacts:
|
|
- artifact_type: spec
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/spec.md
|
|
created_at: 2026-03-04T06:39:31.445676Z
|
|
approved_at: 2026-03-04T06:39:34.842385Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: design
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/design.md
|
|
created_at: 2026-03-04T06:40:01.945225Z
|
|
approved_at: 2026-03-04T06:40:04.965345Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: tasks
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/tasks.md
|
|
created_at: 2026-03-04T06:40:24.470868Z
|
|
approved_at: 2026-03-04T06:40:27.224775Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: qa_plan
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/qa-plan.md
|
|
created_at: 2026-03-04T06:40:42.851558Z
|
|
approved_at: 2026-03-04T06:40:45.846764Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: review
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/review.md
|
|
created_at: 2026-03-04T06:41:42.439250Z
|
|
approved_at: 2026-03-04T06:41:45.442878Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: audit
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/audit.md
|
|
created_at: 2026-03-04T06:42:06.821321Z
|
|
approved_at: 2026-03-04T06:42:11.453958Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
- artifact_type: qa_results
|
|
status: approved
|
|
path: .sdlc/features/pg1-personalization-correctness/qa-results.md
|
|
created_at: 2026-03-04T06:42:56.658411Z
|
|
approved_at: 2026-03-04T06:42:59.785592Z
|
|
rejected_at: null
|
|
rejection_reason: null
|
|
approved_by: null
|
|
tasks:
|
|
- id: T1
|
|
title: Decay correctness tests (single_event, multi_event, out_of_order, zero_after_half_lives)
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-03-04T06:40:53.087987Z
|
|
started_at: null
|
|
completed_at: 2026-03-04T06:41:00.435246Z
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T2
|
|
title: Windowed count and velocity tests (one_hour_exact, velocity_formula, all_time_monotonic)
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-03-04T06:40:54.009638Z
|
|
started_at: null
|
|
completed_at: 2026-03-04T06:41:00.851677Z
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T3
|
|
title: Preference vector EMA tests (ema_manual, adaptive_lr, dimension_mismatch)
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-03-04T06:40:54.908014Z
|
|
started_at: null
|
|
completed_at: 2026-03-04T06:41:01.332169Z
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T4
|
|
title: Ranking reactivity test (signal_immediately_visible_in_retrieve)
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-03-04T06:40:55.402298Z
|
|
started_at: null
|
|
completed_at: 2026-03-04T06:41:01.785905Z
|
|
blocker: null
|
|
depends_on: []
|
|
- id: T5
|
|
title: Score ordering and invariant tests (engagement_ranks, interaction_boost, no_nan, gate, diversity)
|
|
description: null
|
|
status: completed
|
|
created_at: 2026-03-04T06:40:56.070800Z
|
|
started_at: null
|
|
completed_at: 2026-03-04T06:41:02.171403Z
|
|
blocker: null
|
|
depends_on: []
|
|
comments: []
|
|
next_comment_seq: 0
|
|
blockers: []
|
|
phase_history:
|
|
- phase: draft
|
|
entered: 2026-03-03T06:30:08.977848Z
|
|
exited: 2026-03-04T06:39:34.843869Z
|
|
- phase: specified
|
|
entered: 2026-03-04T06:39:34.843869Z
|
|
exited: 2026-03-04T06:40:45.847390Z
|
|
- phase: planned
|
|
entered: 2026-03-04T06:40:45.847390Z
|
|
exited: 2026-03-04T06:41:00.448988Z
|
|
- phase: ready
|
|
entered: 2026-03-04T06:41:00.448988Z
|
|
exited: 2026-03-04T06:41:00.859441Z
|
|
- phase: implementation
|
|
entered: 2026-03-04T06:41:00.859441Z
|
|
exited: 2026-03-04T06:41:45.443820Z
|
|
- phase: review
|
|
entered: 2026-03-04T06:41:45.443820Z
|
|
exited: 2026-03-04T06:42:06.822761Z
|
|
- phase: audit
|
|
entered: 2026-03-04T06:42:06.822761Z
|
|
exited: 2026-03-04T06:42:11.456773Z
|
|
- phase: qa
|
|
entered: 2026-03-04T06:42:11.456773Z
|
|
exited: 2026-03-04T06:42:59.787285Z
|
|
- phase: merge
|
|
entered: 2026-03-04T06:42:59.787285Z
|
|
exited: 2026-03-04T06:43:05.765167Z
|
|
- phase: released
|
|
entered: 2026-03-04T06:43:05.765167Z
|
|
exited: null
|
|
dependencies: []
|
|
archived: false
|
|
schema_version: 4
|