solidprivacy commited on
Commit
aeeade6
·
1 Parent(s): cf688ab

docs(ui): add Premium App Shell implementation handover

Browse files
handover/workpackages/20260808_1528_premium_app_shell_implementation.md ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Handover — SCRUB-WP_PREMIUM_APP_SHELL_IMPLEMENTATION
2
+
3
+ Repository: `solidprivacy-nl/scrub`
4
+ Workpackage title: `SCRUB-WP_PREMIUM_APP_SHELL_IMPLEMENTATION — integrate premium staged workspace`
5
+ Role: `implementation_operations`
6
+ Status: `RELEASE_CANDIDATE_READY — independent assurance pending`
7
+
8
+ ## Summary
9
+
10
+ Implemented the first production Premium Core Flow shell in Streamlit under the merged staged-workspace decision:
11
+
12
+ ```text
13
+ One document. One workspace. Three stages. One active task.
14
+ Toevoegen → Controleren → Downloaden
15
+ ```
16
+
17
+ The Standard flow is now orchestrated as one persistent workspace with exactly one dominant stage, compact completed-stage summaries, passive future stages, explicit return, automatic processing/review progression and fail-closed lineage invalidation. Expert remains available for advanced controls. Reinsert remains a separate top-level workflow.
18
+
19
+ This workpackage intentionally stops at the shared shell. It does not claim that the separate Input, Review or Export stage simplification workpackages are complete.
20
+
21
+ ## Files added
22
+
23
+ - `premium_streamlit_state.py`
24
+ - `premium_streamlit_shell_ui.py`
25
+ - `tests/test_premium_streamlit_state.py`
26
+ - `tests/test_premium_app_shell_streamlit_integration.py`
27
+ - `workpackage_claims/scrub_wp_premium_app_shell_implementation.md`
28
+ - this handover
29
+
30
+ ## Files changed
31
+
32
+ - `premium_app_shell.py`
33
+ - `presidio_streamlit.py`
34
+ - `fix_streamlit_nested_expanders.py`
35
+ - selected source-level UI contract tests whose literal expectations described the retired form/two-mode shell:
36
+ - `tests/test_care_profile_current_ui_integration_snapshot.py`
37
+ - `tests/test_duplicate_input_surface_simplification_contracts.py`
38
+ - `tests/test_export_sanity_ui_patch.py`
39
+ - `tests/test_premium_app_shell.py`
40
+ - `tests/test_reinsert_interface_simplification_ui.py`
41
+ - `tests/test_review_export_vertical_density_contracts.py`
42
+ - `CHANGELOG.md`, `WORKPACKAGES.md`, and `RELEASE_NOTES.md` are finalized in the administrative closeout commit after this handover is written.
43
+
44
+ ## Main implementation
45
+
46
+ - global `Anonimiseren | Terugzetten` workflow choice;
47
+ - global `Standaard | Expert` presentation choice;
48
+ - Standard starts with the permanent sidebar collapsed/absent as the primary interaction surface;
49
+ - persistent stage headers for Add, Review and Download;
50
+ - one active Standard stage at a time;
51
+ - completed-stage summaries and passive future-stage status;
52
+ - `Document verwerken` as Add progression action;
53
+ - `Controle afronden` as Review progression action;
54
+ - explicit return through completed-stage `Openen` actions;
55
+ - deterministic source/processing generation tracking;
56
+ - fail-closed invalidation on processing-affecting changes;
57
+ - reopening completed Review invalidates Download until Review is completed again;
58
+ - current-generation analysis is cached so stage navigation does not silently re-run recognition;
59
+ - current Review rows are cached so return/navigation does not silently reconstruct a different review state;
60
+ - Expert-only `highlight` / `synthesize` modes are not silently converted when Standard is selected;
61
+ - the legacy runtime source patch exits early when the direct Premium shell is present, preventing startup from restoring the retired form UI.
62
+
63
+ ## Tests
64
+
65
+ Added/expanded pure state, staged-shell and source integration contracts covering:
66
+
67
+ - active/completed/future stage semantics;
68
+ - exactly one active stage;
69
+ - compact summaries;
70
+ - Add → Review and Review → Download transitions;
71
+ - return-to-Add lineage preservation;
72
+ - return-to-Review fail-closed export invalidation;
73
+ - deterministic processing generation;
74
+ - analysis cache lifecycle;
75
+ - workflow/presentation state changes;
76
+ - no three-page routing;
77
+ - no nested expander shell;
78
+ - no permanent Standard sidebar;
79
+ - no hidden re-analysis on navigation;
80
+ - no silent Expert-only operator mutation;
81
+ - legacy runtime patch bypass;
82
+ - unchanged export and Scrub Key payload markers.
83
+
84
+ Normal GitHub Actions evidence on the clean runtime/product head before administrative finalization:
85
+
86
+ ```text
87
+ Head: 0e1a5fbb3d6c3b8f8293779e598ececd6ea4aa1d
88
+ Tests run #2200 / ID 31259576962
89
+ Job: 93108182555
90
+ Command: python -m pytest -q tests
91
+ Result: 1225 passed in 12.55s
92
+ Conclusion: success
93
+ ```
94
+
95
+ A fresh full regression on the final post-administration PR head remains mandatory because the administrative closeout commits change candidate identity.
96
+
97
+ ## Validation status
98
+
99
+ - GitHub Actions: `GREEN` on clean runtime/product head; final exact-head administrative candidate run pending.
100
+ - Hugging Face sync: `PENDING AFTER MERGE`; runtime UI changed, so exact merged candidate must be synchronized and verified.
101
+ - App verification: `PENDING AFTER MERGE/DEPLOYMENT`; required because UI behavior changed.
102
+ - Independent governance assurance: `PENDING`; implementation cannot self-certify.
103
+
104
+ ## Intentionally unchanged
105
+
106
+ - recognizers and profile rules;
107
+ - threshold meaning/recognizer processing semantics;
108
+ - authoritative review-table/include state;
109
+ - direct masking semantics;
110
+ - export bytes, filenames and MIME types;
111
+ - Scrub Key schema, binding and lifecycle;
112
+ - reinsert semantics;
113
+ - audit semantics;
114
+ - dependencies;
115
+ - cloud/local-processing boundary;
116
+ - mandatory human review.
117
+
118
+ ## Remaining risks
119
+
120
+ - Live Streamlit/Hugging Face behavior still requires exact deployment verification; source and regression tests cannot establish subjective UX quality or browser interaction fidelity.
121
+ - This App Shell exposes the staged architecture but does not complete the subsequent dedicated Input, Review and Export visual simplification packages.
122
+ - Exact-head assurance must check the larger `presidio_streamlit.py` integration independently rather than trusting implementation conclusions.
123
+
124
+ ## Next recommended step
125
+
126
+ 1. complete administrative closeout without further runtime changes;
127
+ 2. run the full suite on the final exact PR head;
128
+ 3. freeze candidate identity;
129
+ 4. fresh blind `SCRUB-WP_PREMIUM_APP_SHELL_IMPLEMENTATION_VERIFY` by `governance_release_assurance`;
130
+ 5. if PASS, merge unchanged;
131
+ 6. verify exact-main Actions and GitHub → Hugging Face sync;
132
+ 7. request coordinator live-app verification;
133
+ 8. only after closeout, start `SCRUB-WP_PREMIUM_INPUT_STAGE_SIMPLIFICATION`.