Step 1 of 6
Run a brutal functional audit
Get the honest map: what works, what is fake, what is broken.
Audit this app feature by feature with zero optimism. For every feature/screen: perform its primary action for real, then refresh and check persistence. Classify each as WORKS (action real + persists), FAKE (UI responds but nothing real happens), or BROKEN (errors/dead). Produce the table: feature -> action tested -> observed result -> classification. Do not skip auth, forms, filters, or buttons in modals.
Expected after this step
A complete truthful WORKS/FAKE/BROKEN feature table.
Should not happen
- ✕Assuming a feature works because its UI renders
- ✕Fixing cosmetics while core actions stay dead
- ✕Claiming success without refresh/persistence tests
- ✕Half-wired forms that validate but never submit
Verify before continuing
Do not move on until every check is true. The complete button stays locked until then.
Do not continue if…
- !Assuming a feature works because its UI renders
- !Fixing cosmetics while core actions stay dead
- !Claiming success without refresh/persistence tests
- !Half-wired forms that validate but never submit
If the AI messes this up
Use this when the AI fakes progress or breaks the feature. It forces a real fix.
The audit trusted appearances. Redo it by executing each feature's primary action and refreshing; reclassify anything that does not persist or errors.