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

4.8 KiB

V1 Public API Baseline

Status: Captured during Block 11.1.

Starting commit: 775c2ed406f03a73a9b0ca621dea5b4482468616

Public import:

import 'package:adhd_scheduler_core/scheduler_core.dart';

The public library entry point is lib/scheduler_core.dart. It exports the following source files:

  • src/models.dart
  • src/backlog.dart
  • src/child_tasks.dart
  • src/document_mapping.dart
  • src/locked_time.dart
  • src/persistence_contract.dart
  • src/quick_capture.dart
  • src/repositories.dart
  • src/scheduling_engine.dart
  • src/task_actions.dart
  • src/task_statistics.dart
  • src/timeline_state.dart

This baseline is used by later chunks to distinguish intentional breaking changes from accidental API drift.

Public enums

File Enums
src/models.dart TaskType, TaskStatus, PriorityLevel, RewardLevel, DifficultyLevel, ReminderProfile, BacklogTag
src/backlog.dart BacklogFilter, BacklogSortKey, BacklogStalenessMarker
src/locked_time.dart LockedWeekday, LockedBlockOverrideType
src/quick_capture.dart QuickCaptureStatus
src/scheduling_engine.dart SchedulingNoticeType
src/task_actions.dart FlexibleTaskQuickAction, RequiredTaskAction, PushDestination
src/timeline_state.dart TimelineItemCategory, TimelineBackgroundToken, TimelineRewardIconToken, TimelineDifficultyIconToken, TimelineQuickAction

Public classes and top-level functions

File Public API
src/models.dart Task, ProjectProfile, TimeInterval
src/backlog.dart BacklogStalenessSettings, BacklogView
src/child_tasks.dart ChildTaskEntry, ChildTaskView, ChildTaskCompletionResult, ChildTaskCompletionService, ChildTaskSummary
src/document_mapping.dart TaskDocumentExtension, TaskStatisticsDocumentExtension
src/locked_time.dart ClockTime, LockedBlockRecurrence, LockedBlock, LockedBlockOccurrence, LockedBlockOverride, LockedScheduleExpansion, expandLockedBlocksForDay, lockedSchedulingIntervalsForDay, trackCompletedDuringLockedHours, completedDuringLockedHoursMinutes
src/persistence_contract.dart PersistenceEnumName
src/quick_capture.dart QuickCaptureRequest, QuickCaptureResult, QuickCaptureService
src/repositories.dart SchedulingStateSnapshot, InMemoryTaskRepository, InMemoryProjectRepository, InMemoryLockedBlockRepository, InMemorySchedulingSnapshotRepository
src/scheduling_engine.dart SchedulingWindow, SchedulingInput, SchedulingChange, SchedulingOverlap, SchedulingNotice, SchedulingResult, SchedulingEngine
src/task_actions.dart FlexibleTaskActionResult, PushDestinationResult, RequiredTaskActionResult, SurpriseTaskLogRequest, SurpriseTaskLogResult, FlexibleTaskActionService, RequiredTaskActionService, SurpriseTaskLogService
src/task_statistics.dart TaskStatistics
src/timeline_state.dart TimelineItem, CompactTimelineState, TimelineItemMapper

Current model baseline

TaskType values:

  • flexible
  • inflexible
  • critical
  • locked
  • surprise
  • freeSlot

TaskStatus values:

  • planned
  • active
  • completed
  • missed
  • cancelled
  • noLongerRelevant
  • backlog

Current notable model fields:

  • Task: id, title, projectId, type, status, priority, reward, difficulty, durationMinutes, scheduledStart, scheduledEnd, parentTaskId, backlogTags, createdAt, updatedAt, stats
  • ProjectProfile: id, name, colorKey, default priority/reward/ difficulty/reminder profile/duration fields
  • TimeInterval: start, end, optional label
  • TaskStatistics: skip/push/backlog/missed/cancelled/late/locked-hour and parent-child counters

Known baseline gaps to preserve as explicit later work:

  • TaskStatus does not include pushed or skipped; Chunk 11.2 resolves the status/event distinction.
  • Task does not yet have explicit completion timestamp, actual interval, backlog-entered timestamp, or task-level reminder override fields.
  • Nullable clearing is limited; broad explicit patch semantics are Chunk 11.3.
  • Time is currently DateTime-based; civil-date, wall-time, clock, ID, and timezone contracts are Chunk 11.4.

Repository contracts

The current repository surface is pure Dart and in-memory only:

  • Task repository behavior is represented by InMemoryTaskRepository.
  • Project repository behavior is represented by InMemoryProjectRepository.
  • Locked block repository behavior is represented by InMemoryLockedBlockRepository.
  • Snapshot repository behavior is represented by InMemorySchedulingSnapshotRepository.

Future MongoDB adapter work must remain behind repository interfaces and must not import MongoDB APIs into the scheduling core.