focus-flow/archive/Archived plans/PLAN_REVIEW_SUMMARY.md

62 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Planning Review Summary
Status: Planning artifact
## What the archived work established
Blocks 0110 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:
1. domain/time invariants
2. one scheduling occupancy policy
3. lifecycle/statistics/project/reminder policy
4. atomic application use cases and read models
5. complete versioned persistence contracts
6. a trusted MongoDB runtime adapter
7. 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 `DateTime` in 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 1117 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.