focus-flow/Codex Documentation/Current Software Plan/V1_REQUIREMENTS_TRACEABILITY_MATRIX.md

16 KiB

V1 Requirements Traceability Matrix

Status: Baseline captured during Block 11.1.

Review basis:

  • Human Documentation/Overall App Design Spec.docx, section 25, plus MVP requirements from sections 5-19.
  • Human Documentation/Unified Product Design Summary.md
  • Human Documentation/Starter Architecture Notes.md
  • Public exports from lib/scheduler_core.dart
  • Tests under test/

Starting commit: 775c2ed406f03a73a9b0ca621dea5b4482468616

Verification result on 2026-06-24:

  • dart pub get: passed
  • dart format lib test: passed, 0 files changed
  • dart analyze: passed, no issues found
  • dart test: passed, 143 tests
  • git diff --check: passed

Latest Block 12 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed
  • dart analyze: passed, no issues found
  • dart test: passed, 203 tests
  • git diff --check: passed

Latest Block 13.1 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed
  • dart analyze: passed, no issues found
  • dart test: passed, 211 tests
  • git diff --check: passed

Latest Block 13.2 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed
  • dart analyze: passed, no issues found
  • dart test: passed, 218 tests
  • git diff --check: passed

Latest Block 13.3 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 225 tests
  • git diff --check: passed

Latest Block 13.4 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 233 tests
  • git diff --check: passed

Latest Block 13.5 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 243 tests
  • git diff --check: passed

Latest Block 14.1 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 249 tests
  • git diff --check: passed

Latest Block 14.2 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 257 tests
  • git diff --check: passed

Latest Block 14.3 verification result on 2026-06-25:

  • dart format lib test: passed, 0 files changed after final format
  • dart analyze: passed, no issues found
  • dart test: passed, 268 tests
  • git diff --check: passed

Status values:

  • complete: Current backend APIs and tests cover the requirement.
  • incomplete: Some required backend, application, persistence, or UI-facing contract work remains.
  • intentionally deferred: The human spec places this outside MVP, or the active plan explicitly defers it.
  • contradictory: The human spec conflicts with the V1 backend direction and an active plan must resolve it without silently changing behavior.

Section 25 MVP acceptance criteria

ID Acceptance criterion Production API surface Representative tests Status Active-plan reference or issue
MVP-AC-01 Create a task through quick capture with only a title. V1ApplicationCommandUseCases.quickCaptureToBacklog, Task.quickCapture, QuickCaptureRequest, QuickCaptureService.capture test/scheduling_engine_test.dart, test/edge_case_regression_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds the atomic application command boundary.
MVP-AC-02 Store quick-capture tasks in Backlog with neutral defaults. Task.quickCapture, QuickCaptureService.capture, TaskStatus.backlog, PriorityLevel.medium, RewardLevel.notSet, inbox project default test/scheduling_engine_test.dart, test/edge_case_regression_test.dart complete Backlog-entered timestamp remains incomplete; see Blocks 11 and 15.
MVP-AC-03 Optionally schedule a quick-capture task into the next available slot after entering duration. V1ApplicationCommandUseCases.quickCaptureToNextAvailableSlot, QuickCaptureRequest.scheduleImmediately, QuickCaptureService.capture, SchedulingEngine.insertBacklogTaskIntoNextAvailableSlot test/scheduling_engine_test.dart, test/edge_case_regression_test.dart, test/scheduling_invariants_test.dart, test/application_commands_test.dart complete Block 12 covers scheduling rules; Chunk 14.3 adds the atomic application command boundary.
MVP-AC-04 Create recurring hidden locked blocks and one-day overrides. LockedBlock, LockedBlockRecurrence.weekly, LockedBlockOverride.remove, LockedBlockOverride.replace, LockedBlockOverride.add, expandLockedBlocksForDay test/scheduling_engine_test.dart, test/timeline_state_test.dart, test/edge_case_regression_test.dart complete Date-only/time-zone hardening remains in Chunk 11.4 and Block 15.
MVP-AC-05 Render Today as a timeline with project border, task-type background, task name, reward icon, and difficulty icon. GetTodayStateQuery, TodayState, TodayTimelineItem, TimelineItemMapper, TimelineItem, timeline token enums test/timeline_state_test.dart, test/today_state_test.dart incomplete Backend Today read model and tokens are complete; actual Flutter rendering is Block 18.
MVP-AC-06 Use compact Today mode manually. GetTodayStateQuery, TodayCompactState, TimelineItemMapper.compactStateForTasks, CompactTimelineState test/timeline_state_test.dart, test/today_state_test.dart complete Complete at backend/read-model level, including current/next deduplication; Flutter UI remains Block 18.
MVP-AC-07 Push flexible tasks to next available slot, tomorrow, or backlog. V1ApplicationCommandUseCases.pushFlexibleToNextAvailableSlot, V1ApplicationCommandUseCases.pushFlexibleToTomorrowTopOfQueue, V1ApplicationCommandUseCases.moveFlexibleToBacklog, FlexibleTaskActionService.applyPushDestination, SchedulingEngine push methods, TaskActivityCode test/scheduling_engine_test.dart, test/required_task_actions_test.dart, test/task_lifecycle_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds atomic application commands with persisted activities and operation records.
MVP-AC-08 Move backlog items into the soonest flexible slot where they fit and shift later flexible tasks. V1ApplicationCommandUseCases.scheduleBacklogItemToNextAvailableSlot, SchedulingEngine.insertBacklogTaskIntoNextAvailableSlot test/scheduling_engine_test.dart, test/edge_case_regression_test.dart, test/occupancy_policy_test.dart, test/free_slots_test.dart, test/scheduling_invariants_test.dart, test/application_commands_test.dart complete Block 12 covers scheduling rules; Chunk 14.3 adds the atomic application command boundary.
MVP-AC-09 Automatically roll unfinished flexible tasks to tomorrow/top of queue with a small notice. SchedulingEngine.rolloverUnfinishedFlexibleTasks, SchedulingNotice, TodayPendingNotice, GetTodayStateQuery test/scheduling_engine_test.dart, test/edge_case_regression_test.dart, test/scheduling_invariants_test.dart, test/today_state_test.dart incomplete Domain movement, structured rollover notices, and Today pending-notice read model exist; explicit durable app-open rollover orchestration remains in Chunk 14.5.
MVP-AC-10 Log unplanned completed tasks and push overlapping flexible tasks normally. V1ApplicationCommandUseCases.logSurpriseTask, SurpriseTaskLogRequest, SurpriseTaskLogService.log, SurpriseTaskLogResult, Task.completedAt test/surprise_task_logging_test.dart, test/scheduling_invariants_test.dart, test/task_lifecycle_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds atomic surprise logging use case with flexible repair, activity persistence, project stats, and operation records.
MVP-AC-11 Break a large task into child tasks with row-level priority, reward, and duration. V1ApplicationCommandUseCases.breakUpTask, ApplicationChildTaskDraft, ChildTaskEntry, ChildTaskBreakUpRequest, ChildTaskBreakUpResult, ChildTaskBreakUpService, ChildTaskView test/child_tasks_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds atomic child break-up command wiring.
MVP-AC-12 Auto-complete parent tasks when all children are done and allow force-completing all children from the parent or a child. V1ApplicationCommandUseCases.completeChildTask, V1ApplicationCommandUseCases.completeParentTask, V1ApplicationCommandUseCases.completeParentFromChild, ChildTaskCompletionService, ChildTaskCompletionResult, parent-child helpers, TaskActivity test/child_tasks_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds atomic parent/child completion command wiring.
MVP-AC-13 Display backlog staleness icons without per-task stale prompts. BacklogStalenessMarker, BacklogStalenessSettings, BacklogView test/scheduling_engine_test.dart, test/edge_case_regression_test.dart incomplete Backend marker exists; settings persistence and UI display remain in Blocks 14, 15, and 18.
MVP-AC-14 Track baseline internal statistics needed for later reports and filtering. TaskStatistics, ProjectStatistics, TaskActivity, TaskActivityApplicationResult, TaskActivityAccountingService, ProjectStatisticsAggregationService, ApplicationUnitOfWork, V1ApplicationCommandUseCases, selected action services test/scheduling_engine_test.dart, test/required_task_actions_test.dart, test/document_mapping_test.dart, test/task_lifecycle_test.dart, test/child_tasks_test.dart, test/project_statistics_test.dart, test/application_layer_test.dart, test/application_commands_test.dart complete Chunks 13.1-13.4 add canonical statistics/accounting; Chunk 14.3 persists command activities and project aggregate updates atomically in memory. MongoDB adapter persistence remains tracked separately under MVP-SUP-07.

Additional MVP backend requirements

ID Requirement Production API surface Representative tests Status Active-plan reference or issue
MVP-SUP-01 Flexible tasks move while locked, inflexible, and critical time does not move automatically. OccupancyPolicy, SchedulingInput.blockedIntervals, SchedulingEngine placement methods test/scheduling_engine_test.dart, test/edge_case_regression_test.dart, test/occupancy_policy_test.dart, test/scheduling_invariants_test.dart complete Block 12 centralizes occupancy and adds structured outcomes plus invariant coverage for immovable placements.
MVP-SUP-02 Critical missed tasks are marked missed and moved to backlog. RequiredTaskActionService, SchedulingEngine.markMissed, TaskTransitionService, TaskType.critical test/scheduling_engine_test.dart, test/required_task_actions_test.dart, test/task_lifecycle_test.dart complete Chunk 13.1 records both missed and moved-to-backlog activities.
MVP-SUP-03 Inflexible missed tasks are marked missed and left in place/history. RequiredTaskActionService, SchedulingEngine.markMissed, TaskTransitionService, TaskType.inflexible test/scheduling_engine_test.dart, test/required_task_actions_test.dart, test/task_lifecycle_test.dart complete Actual/historical interval semantics are formalized in Chunk 11.2 and Block 12.
MVP-SUP-04 Cancelled and no-longer-relevant are separate calm lifecycle outcomes. TaskStatus.cancelled, TaskStatus.noLongerRelevant, RequiredTaskAction, TaskActivityCode test/required_task_actions_test.dart, test/task_lifecycle_test.dart complete Chunk 13.1 centralizes both transitions and emits distinct activity codes.
MVP-SUP-05 Free Slot is intentional rest that blocks normal flexible placement and suppresses normal flexible reminders. V1ApplicationCommandUseCases.createProtectedFreeSlot, V1ApplicationCommandUseCases.updateProtectedFreeSlot, V1ApplicationCommandUseCases.removeProtectedFreeSlot, TaskType.freeSlot, OccupancyPolicy, FreeSlotService, ReminderPolicyService, timeline tokens test/timeline_state_test.dart, test/occupancy_policy_test.dart, test/free_slots_test.dart, test/scheduling_invariants_test.dart, test/reminder_policy_test.dart, test/application_commands_test.dart complete Blocks 12 and 13 cover scheduling/reminder policy; Chunk 14.3 adds atomic protected Free Slot commands.
MVP-SUP-06 Project defaults apply, learned suggestions stay optional, and task reminder overrides are possible. ProjectProfile, ProjectStatistics, ProjectSuggestionService, ProjectDefaultResolution, ReminderPolicyService, Task.reminderOverride, ReminderProfile test/scheduling_engine_test.dart, test/domain_invariants_test.dart, test/project_statistics_test.dart, test/reminder_policy_test.dart complete Chunk 13.5 adds effective reminder resolution without using learned suggestions as silent configuration.
MVP-SUP-07 Repository boundaries prepare for MongoDB without coupling the scheduler to MongoDB APIs. Repository interfaces, in-memory repositories, ApplicationUnitOfWork, V1ApplicationCommandUseCases, document mapping helpers test/repositories_test.dart, test/document_mapping_test.dart, test/persistence_edge_cases_test.dart, test/application_layer_test.dart, test/application_commands_test.dart incomplete Chunks 14.1-14.3 add pure Dart transaction/read/command contracts; complete codecs, durable revisions, and runtime adapter remain in Blocks 15 and 16.
MVP-SUP-08 Hidden locked time remains hidden by default, with explicit reveal as an overlay. LockedBlockOccurrence.hiddenByDefault, TimelineItemMapper.fromLockedOccurrence, GetTodayStateQuery, TodayTimelineItem test/timeline_state_test.dart, test/edge_case_regression_test.dart, test/today_state_test.dart complete Chunk 14.2 adds hidden-by-default Today omission, explicit reveal mode, and date-stable locked overlay IDs.
MVP-SUP-09 Push/backlog/restore movement should be activity/stat data, not shame language. TaskStatistics, ProjectStatistics, TaskActivity, TaskActivityCode, SchedulingChange, SchedulingMovementCode, ApplicationUnitOfWork, V1ApplicationCommandUseCases, action result objects test/scheduling_engine_test.dart, test/required_task_actions_test.dart, test/scheduling_invariants_test.dart, test/task_lifecycle_test.dart, test/project_statistics_test.dart, test/application_layer_test.dart, test/application_commands_test.dart complete Chunk 14.3 adds atomic command persistence for movement activities, task stats, project stats, and operation records.
MVP-SUP-10 The human spec lists pushed and skipped as statuses. TaskStatus excludes both; movement and burnout compatibility are modeled as activity/stat metadata. test/domain_contracts_test.dart contradictory Resolved by V1_ADR_001_Lifecycle_Metadata_Reminder_Semantics.md; the contradiction is kept visible so later chunks do not add movement labels as statuses.

Intentionally deferred human-spec items

ID Requirement Status Deferred location
DEF-01 Week view and month view. intentionally deferred V2/non-MVP.
DEF-02 Weekly reports and dashboard. intentionally deferred V2/non-MVP; internal stats remain MVP baseline only.
DEF-03 Overwhelm shield and burnout catch-up flow. intentionally deferred V2/non-MVP.
DEF-04 Drag-and-drop reordering. intentionally deferred V2/non-MVP.
DEF-05 Visible per-task history panel. intentionally deferred V2/non-MVP.
DEF-06 Task dependencies and context tags. intentionally deferred Wishlist/non-MVP.
DEF-07 Flexible-task overrun behavior. intentionally deferred Wishlist/non-MVP decision.