2026-03-12 19:18:41 +08:00
|
|
|
# Roadmap
|
|
|
|
|
|
|
|
|
|
## Current Starting Point
|
|
|
|
|
|
|
|
|
|
- Date: `2026-03-12`
|
|
|
|
|
- Product state: `Frozen MVP complete`
|
|
|
|
|
- Validation state: `Internal beta passed with conditions on 2026-03-07`
|
|
|
|
|
- Immediate priorities:
|
2026-03-23 17:14:09 +08:00
|
|
|
- turn `Apps` review-only evidence into verifiable and comparable uninstall evidence
|
|
|
|
|
- expand `Smart Clean` safe coverage only on the next high-confidence roots
|
|
|
|
|
- harden `Recovery` payload compatibility and restore evidence after execution boundaries stabilize
|
|
|
|
|
- keep release-readiness work behind the product-path epics until signing materials exist
|
2026-03-12 19:18:41 +08:00
|
|
|
- Release-path blocker:
|
|
|
|
|
- no Apple signing and notarization credentials are available on the current machine
|
|
|
|
|
|
|
|
|
|
## Roadmap Guardrails
|
|
|
|
|
|
|
|
|
|
- Keep scope inside the frozen MVP modules:
|
|
|
|
|
- `Overview`
|
|
|
|
|
- `Smart Clean`
|
|
|
|
|
- `Apps`
|
|
|
|
|
- `History`
|
|
|
|
|
- `Recovery`
|
|
|
|
|
- `Permissions`
|
|
|
|
|
- `Settings`
|
|
|
|
|
- Do not pull `Storage treemap`, `Menu Bar`, or `Automation` into this roadmap.
|
2026-03-23 16:48:26 +08:00
|
|
|
- Respond to competitor pressure by deepening the frozen MVP flows rather than adding new surfaces for parity theater.
|
2026-03-12 19:18:41 +08:00
|
|
|
- Treat trust and recovery honesty as release-critical product work, not polish.
|
|
|
|
|
- Keep direct distribution as the only eventual release route.
|
|
|
|
|
- Do not plan around public beta dates until signing credentials exist.
|
|
|
|
|
|
2026-03-23 16:48:26 +08:00
|
|
|
## Competitive Strategy Overlay
|
|
|
|
|
|
|
|
|
|
- Primary breadth comparison pressure comes from `Mole` and `Tencent Lemon Cleaner`.
|
|
|
|
|
- Primary `Apps` comparison pressure comes from `Pearcleaner` and `Tencent Lemon Cleaner`.
|
|
|
|
|
- Atlas should compete as an `explainable, recovery-first Mac maintenance workspace`, not as a generic all-in-one cleaner.
|
|
|
|
|
- The roadmap response is:
|
|
|
|
|
- preserve trust as the primary release gate
|
2026-03-23 17:14:09 +08:00
|
|
|
- deepen the `Apps` module first where `Pearcleaner` and `Lemon` set expectations
|
|
|
|
|
- then close the most visible `Smart Clean` safe-coverage gaps users compare against `Mole` and `Lemon`
|
|
|
|
|
- harden `Recovery` only after execution boundaries and evidence models are stable
|
|
|
|
|
- treat release readiness as the final convergence step because signing materials, not packaging mechanics, remain the public-release blocker
|
2026-03-23 16:48:26 +08:00
|
|
|
- keep `Storage treemap`, `Menu Bar`, and `Automation` out of scope
|
|
|
|
|
|
2026-03-12 19:18:41 +08:00
|
|
|
## Active Milestones
|
|
|
|
|
|
|
|
|
|
### Milestone 1: Internal Beta Hardening
|
|
|
|
|
|
|
|
|
|
- Dates: `2026-03-16` to `2026-03-28`
|
|
|
|
|
- Goal: harden the current internal-beta build until user-visible execution and recovery claims are defensible.
|
|
|
|
|
- Focus:
|
|
|
|
|
- remove or explicitly development-gate silent XPC fallback
|
|
|
|
|
- show explicit failure states when real worker execution is unavailable
|
|
|
|
|
- rerun bilingual manual QA on a clean machine
|
|
|
|
|
- verify packaged first-launch behavior with a fresh state file
|
|
|
|
|
- tighten README, in-app copy, and help content where recovery or execution is overstated
|
|
|
|
|
- Exit criteria:
|
|
|
|
|
- internal beta checklist rerun against the latest packaged build
|
|
|
|
|
- unsupported execution paths fail clearly instead of appearing successful
|
|
|
|
|
- recovery wording matches the shipped restore behavior
|
|
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
### Milestone 2: Apps Evidence Execution
|
2026-03-12 19:18:41 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
- Dates: `2026-03-31` to `2026-04-11`
|
|
|
|
|
- Goal: turn `Apps` review-only evidence from merely visible into verifiable, comparable, and recoverably consistent.
|
2026-03-12 19:18:41 +08:00
|
|
|
- Focus:
|
2026-03-23 17:14:09 +08:00
|
|
|
- define the fixture app baseline for mainstream and developer-heavy uninstall scenarios
|
|
|
|
|
- make preview, completion, and history reflect the same uninstall evidence model
|
|
|
|
|
- define the restore-triggered app-footprint refresh strategy and stale-evidence handling
|
|
|
|
|
- script the manual acceptance flow for uninstall evidence and restore verification
|
2026-03-12 19:18:41 +08:00
|
|
|
- Exit criteria:
|
2026-03-23 17:14:09 +08:00
|
|
|
- supported fixture apps produce consistent evidence across preview, completion, and history
|
|
|
|
|
- restore follows a defined footprint refresh path or shows explicit stale-evidence state
|
|
|
|
|
- the `Apps` acceptance path is scriptable and repeatable
|
2026-03-12 19:18:41 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
### Milestone 3: Smart Clean Safe Coverage Expansion
|
2026-03-12 19:18:41 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
- Dates: `2026-04-14` to `2026-05-02`
|
|
|
|
|
- Goal: expand only the next batch of high-confidence safe cleanup roots and prove real side effects without widening into high-risk cleanup.
|
2026-03-12 19:18:41 +08:00
|
|
|
- Focus:
|
2026-03-23 17:14:09 +08:00
|
|
|
- add the next safe roots outside app containers
|
|
|
|
|
- stabilize the `review-only` vs `executable` boundary across scan, review, execute, completion, and history
|
|
|
|
|
- strengthen the `scan -> execute -> rescan` evidence chain for the expanded safe roots
|
|
|
|
|
- keep unsupported or high-risk paths explicitly non-executable
|
2026-03-12 19:18:41 +08:00
|
|
|
- Exit criteria:
|
2026-03-23 17:14:09 +08:00
|
|
|
- newly supported safe roots show real post-execution rescan improvement
|
|
|
|
|
- unsupported roots remain clearly marked as `review-only`
|
|
|
|
|
- release-facing surfaces distinguish supported and unsupported execution scope without ambiguity
|
2026-03-12 19:18:41 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
### Milestone 4: Recovery Payload Hardening
|
2026-03-23 16:48:26 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
- Dates: `2026-05-05` to `2026-05-23`
|
|
|
|
|
- Goal: make recovery state structurally stable, backward-compatible, and historically trustworthy.
|
2026-03-23 16:48:26 +08:00
|
|
|
- Focus:
|
2026-03-23 17:14:09 +08:00
|
|
|
- stabilize the recovery payload schema and versioning contract
|
|
|
|
|
- add migration and compatibility handling for older workspace and history state files
|
|
|
|
|
- deepen `History` detail evidence for restore payloads, conflicts, expiry, and partial restore outcomes
|
|
|
|
|
- add regression coverage for conflict, expired payload, and partial-restore scenarios
|
2026-03-23 16:48:26 +08:00
|
|
|
- Exit criteria:
|
2026-03-23 17:14:09 +08:00
|
|
|
- recovery payloads follow a stable versioned schema
|
|
|
|
|
- older state files migrate cleanly or fail with explicit compatibility behavior
|
|
|
|
|
- `History` detail can explain real restore evidence and degraded outcomes
|
|
|
|
|
- regression coverage exists for the main restore edge cases
|
|
|
|
|
|
|
|
|
|
### Milestone 5: Release Readiness
|
|
|
|
|
|
|
|
|
|
- Dates: `2026-05-26` to `2026-06-13`
|
|
|
|
|
- Goal: turn the stabilized product path into a repeatable release candidate process, then switch to the signing chain when credentials exist.
|
|
|
|
|
- Focus:
|
|
|
|
|
- make `full-acceptance` a routine gate on candidate builds
|
|
|
|
|
- stabilize UI automation for trust-critical MVP flows
|
|
|
|
|
- freeze packaging, install, and launch smoke checks as repeatable release scripts
|
|
|
|
|
- switch from the pre-signing release chain to `Developer ID + notarization` once credentials become available
|
|
|
|
|
- Exit criteria:
|
|
|
|
|
- `full-acceptance` runs routinely on candidate builds
|
|
|
|
|
- trust-critical UI automation is stable enough for release gating
|
|
|
|
|
- packaging, install, and launch smoke checks are repeatable
|
|
|
|
|
- the signed chain either passes with credentials present or remains explicitly blocked only by missing credentials
|
2026-03-23 16:48:26 +08:00
|
|
|
|
2026-03-12 19:18:41 +08:00
|
|
|
## Conditional Release Branch
|
|
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
These milestones do not start until Milestone `5` is complete and Apple release credentials are available.
|
2026-03-12 19:18:41 +08:00
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
### Conditional Milestone A: Signed External Beta Candidate
|
2026-03-12 19:18:41 +08:00
|
|
|
|
|
|
|
|
- Trigger:
|
2026-03-23 17:14:09 +08:00
|
|
|
- Milestones `1` through `5` are complete
|
2026-03-12 19:18:41 +08:00
|
|
|
- `Developer ID Application` is available
|
|
|
|
|
- `Developer ID Installer` is available
|
|
|
|
|
- `ATLAS_NOTARY_PROFILE` is available
|
|
|
|
|
- Goal: produce a signed and notarized external beta candidate.
|
|
|
|
|
- Focus:
|
2026-03-23 17:14:09 +08:00
|
|
|
- rerun the release scripts on the signed chain
|
2026-03-12 19:18:41 +08:00
|
|
|
- validate signed `.app`, `.dmg`, and `.pkg` install paths on a clean machine
|
2026-03-23 17:14:09 +08:00
|
|
|
- prepare external beta notes and known limitations
|
2026-03-12 19:18:41 +08:00
|
|
|
- Exit criteria:
|
|
|
|
|
- signed and notarized artifacts install without bypass instructions
|
|
|
|
|
- clean-machine install verification passes on the signed candidate
|
|
|
|
|
|
2026-03-23 17:14:09 +08:00
|
|
|
### Conditional Milestone B: External Beta Learn Loop
|
2026-03-12 19:18:41 +08:00
|
|
|
|
|
|
|
|
- Trigger:
|
|
|
|
|
- Conditional Milestone A is complete
|
2026-03-23 17:14:09 +08:00
|
|
|
- Goal: run a small external beta only after the mainline product path is stable.
|
2026-03-12 19:18:41 +08:00
|
|
|
- Focus:
|
|
|
|
|
- use a hardware-diverse trusted beta cohort
|
|
|
|
|
- triage install, permission, execution, and restore regressions
|
|
|
|
|
- close P0 issues before any GA candidate is named
|
|
|
|
|
- Exit criteria:
|
2026-03-23 17:14:09 +08:00
|
|
|
- no external-beta P0 remains open
|
2026-03-12 19:18:41 +08:00
|
|
|
- primary workflows are validated on more than one machine profile
|
|
|
|
|
|
|
|
|
|
### Conditional Milestone C: GA Candidate and Launch
|
|
|
|
|
|
|
|
|
|
- Trigger:
|
|
|
|
|
- Conditional Milestone B is complete
|
|
|
|
|
- Goal: publish `v1.0` only after trust, recovery, and signed distribution all align.
|
|
|
|
|
- Focus:
|
|
|
|
|
- rerun full acceptance and signed packaging on the GA candidate
|
|
|
|
|
- freeze release notes, notices, acknowledgements, and checksums
|
|
|
|
|
- validate launch candidate install and first-run flow on a clean machine
|
|
|
|
|
- Exit criteria:
|
|
|
|
|
- no open P0 release blocker
|
|
|
|
|
- signed packaging, install validation, and release docs are complete
|
|
|
|
|
- `v1.0` artifacts are published
|
|
|
|
|
|
|
|
|
|
## Current Decision Rules
|
|
|
|
|
|
|
|
|
|
- Do not call the current workstream `public beta`.
|
|
|
|
|
- Do not claim broader cleanup coverage than the worker/helper path can prove.
|
|
|
|
|
- Do not claim physical recovery until file-backed restore is actually validated.
|
|
|
|
|
- Do not schedule a public release date before signing credentials exist.
|
|
|
|
|
|
|
|
|
|
## Not In This Roadmap
|
|
|
|
|
|
|
|
|
|
- `Storage treemap`
|
|
|
|
|
- `Menu Bar`
|
|
|
|
|
- `Automation`
|
|
|
|
|
- new non-MVP modules
|