5.3 KiB
5.3 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.dartsrc/backlog.dartsrc/child_tasks.dartsrc/document_mapping.dartsrc/locked_time.dartsrc/persistence_contract.dartsrc/quick_capture.dartsrc/repositories.dartsrc/scheduling_engine.dartsrc/task_actions.dartsrc/task_statistics.dartsrc/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 |
DomainValidationCode, 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 |
DomainValidationException, 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:
flexibleinflexiblecriticallockedsurprisefreeSlot
TaskStatus values:
plannedactivecompletedmissedcancellednoLongerRelevantbacklog
Current notable model fields:
Task:id,title,projectId,type,status,priority,reward,difficulty,durationMinutes,scheduledStart,scheduledEnd,actualStart,actualEnd,parentTaskId,backlogTags,reminderOverride,createdAt,updatedAt,statsProjectProfile:id,name,colorKey, default priority/reward/ difficulty/reminder profile/duration fieldsTimeInterval:start,end, optionallabelTaskStatistics: skip/push/backlog/missed/cancelled/late/locked-hour and parent-child counters
Known baseline gaps to preserve as explicit later work:
TaskStatusdoes not includepushedorskipped; Chunk 11.2 resolves the status/event distinction.Taskdoes not yet have explicit completion timestamp or backlog-entered timestamp fields.- Time is currently
DateTime-based; civil-date, wall-time, clock, ID, and timezone contracts are Chunk 11.4.
Intentional API Changes After Baseline
Chunk 11.3 intentionally changed the public API:
- Added
DomainValidationCodeandDomainValidationException. - Added
Task.actualStart,Task.actualEnd, andTask.reminderOverride. - Added explicit
copyWithclear flags for nullable task fields. - Added
ProjectProfile.copyWith(clearDefaultDuration: true). - Changed several public value constructors from
constto runtime-validating constructors. - Public collection fields now expose unmodifiable snapshots instead of caller mutable collections.
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.