2.8 KiB
Planning Review Summary
Status: Planning artifact
What the archived work established
Blocks 01–10 completed a well-tested pure Dart scheduling core. The repository already contains the main domain concepts, scheduling operations, recurring locked-block expansion, Backlog/quick capture, task actions, surprise logging, child ownership/completion, UI-independent timeline mapping, basic internal statistics, repository interfaces, in-memory fakes, and task/statistics document mappings.
That work should be preserved and extended rather than restarted.
Why the next work starts below the UI
The current UI-independent modules are individually useful, but a Flutter screen would still have to assemble scheduling inputs, coordinate several repositories, apply multiple task/stat/project mutations, interpret English notices, and save multi-record changes itself. That is too much correctness responsibility for the UI.
The active sequence therefore completes:
- domain/time invariants
- one scheduling occupancy policy
- lifecycle/statistics/project/reminder policy
- atomic application use cases and read models
- complete versioned persistence contracts
- a trusted MongoDB runtime adapter
- integrated backend acceptance
Only then does the plan create a provisional Flutter shell and one vertical slice.
Highest-risk findings
- Free Slots exist as a task type but are not included consistently as protected scheduler occupancy.
- Surprise tasks repair the immediate overlap, but their completed interval is not consistently treated as future same-day occupancy by all operations.
- Recurring/local calendar semantics are represented with
DateTimein ways that can shift a date-only override when serialized as UTC. - Task and task-statistics mappings are implemented, while projects, locked records, settings, activities, and scheduling state are not fully mapped.
- Multi-task scheduling mutations have no application-level atomic transaction; a future UI could accidentally persist only part of a result.
- Statistics counters exist but completion/locked-hour/project aggregation is not wired through one exactly-once transition path.
- Reminder profile metadata exists only on projects; task overrides and protected-rest policy are absent.
- The current timeline mapper is not yet a complete Today query and has a compact “current versus next flexible” edge case.
- MongoDB is the committed target, but the trusted runtime/credential boundary is not selected. The plan prohibits putting production credentials in Flutter.
Plan outcome
When Blocks 11–17 are complete, the Flutter UI should be able to consume a small, typed application facade for every V1 user intent. It should not need to know how scheduling, statistics, migrations, transactions, or MongoDB work.