Spaces:
Running
Running
|
Download CHANGELOG.md from solidprivacy/scrub: direct link, hf CLI and curl.
- Browser
- Download file 11.7 kB
-
https://huggingface.co/spaces/solidprivacy/scrub/resolve/1c37dba421af3f25f7f091078992ac8eb763f40a/CHANGELOG.md
- Command line
-
hf download hf://spaces/solidprivacy/scrub@1c37dba421af3f25f7f091078992ac8eb763f40a/CHANGELOG.md
-
curl -L -o CHANGELOG.md https://huggingface.co/spaces/solidprivacy/scrub/resolve/1c37dba421af3f25f7f091078992ac8eb763f40a/CHANGELOG.md
11.7 kB
| # Changelog — SolidPrivacy Scrub | |
| This changelog records meaningful product, architecture, workflow and recognizer changes for the Scrub legal document scrubber. | |
| Conventions: | |
| - Keep this file explicit and human-readable. | |
| - Group changes by project phase / version. | |
| - Record what changed, why it changed, and what is intentionally not changed. | |
| - Do not use this as a substitute for tests; every recognizer hardening step should also add or update regression tests. | |
| --- | |
| ## Current development rule | |
| From v10 onward, recognizer work follows this order: | |
| 1. Add or update synthetic regression cases. | |
| 2. Add or update tests. | |
| 3. Change recognizer / scanner logic. | |
| 4. Verify GitHub Actions tests are green. | |
| 5. Let GitHub sync to Hugging Face automatically. | |
| 6. Test the app in Hugging Face. | |
| For UI/UX-only work, prefer pure helper modules and tests before touching Streamlit UI flow. | |
| --- | |
| ## v13.2 — Scrub Key import/reload UI integration | |
| Status: implemented; awaiting GitHub Actions, Hugging Face sync and app verification. | |
| Purpose: | |
| - Integrate the existing Scrub Key import/reload helper into the Streamlit startup patch flow. | |
| - Let the user upload or paste a previously exported Scrub Key JSON. | |
| - Validate imported Scrub Keys before loading mappings into the current review/replacement table. | |
| - Keep import/reload local and separate from deterministic reinsert or AI-output workflows. | |
| Files added or changed: | |
| - `fix_streamlit_nested_expanders.py` | |
| - `tests/test_scrub_key_import_ui_patch.py` | |
| - `WORKPACKAGES.md` | |
| - `CHANGELOG.md` | |
| - `handover/workpackages/20260607_1645_v13_2_scrub_key_import_ui.md` | |
| Main changes: | |
| - Added the `Scrub Key laden` UI section near the existing `Scrub Key (JSON)` export block. | |
| - Added upload support for Scrub Key JSON files. | |
| - Added paste support for Scrub Key JSON text. | |
| - Reused the existing `build_scrub_key_import_result(...)` helper instead of duplicating parsing or validation logic. | |
| - Added visible validation feedback before mapping rows are loaded. | |
| - Added warnings that a Scrub Key makes values locally reversible and is pseudonymization, not full anonymization. | |
| - Added warning text that the key must stay local and protected and should not be shared with AI services or third parties unless consciously intended and allowed. | |
| - Loaded validated mapping rows into the current replacement table only after the visible `Valideer en laad Scrub Key` user action. | |
| - Kept the existing `Download Scrub Key (.json)` export block. | |
| Testing: | |
| - Added `tests/test_scrub_key_import_ui_patch.py`. | |
| - Local targeted validation on the reconstructed connector subset passed: | |
| - `PYTHONPATH=. pytest -q tests/test_scrub_key.py` → 6 passed. | |
| - `PYTHONPATH=. pytest -q tests/test_scrub_key_import.py` → 8 passed. | |
| - `PYTHONPATH=. pytest -q tests/test_scrub_key_import_ui_patch.py` → 9 passed. | |
| - `PYTHONPATH=. pytest -q tests/test_scrub_key_ui_patch.py` → 12 passed. | |
| - `PYTHONPATH=. pytest -q` on the available subset → 35 passed. | |
| Intentionally not changed: | |
| - No direct edit to `presidio_streamlit.py`. | |
| - No deterministic reinsert behavior. | |
| - No AI-output flow. | |
| - No automatic document rehydration. | |
| - No silent replacement of review rows without a visible user action. | |
| - No change to TXT, CSV, DOCX or PDF export behavior. | |
| - No change to existing Scrub Key JSON export behavior. | |
| - No cloud processing. | |
| - No server-side Scrub Key storage. | |
| - No secrets, tokens or real personal data. | |
| --- | |
| ## v13.2 — Scrub Key import/reload helper and tests | |
| Status: helper and tests implemented; coordinator evidence reported green checks before UI integration. | |
| Purpose: | |
| - Prepare reliable import/reload of a previously saved Scrub Key JSON file. | |
| - Keep this work pure and helper-only before UI integration. | |
| - Prepare future mapping reuse, session continuation and deterministic reinsert work. | |
| - Preserve local-only handling and warning language for sensitive Scrub Keys. | |
| Files added or changed: | |
| - `scrub_key_import.py` | |
| - `tests/test_scrub_key_import.py` | |
| - `WORKPACKAGES.md` | |
| - `CHANGELOG.md` | |
| - `handover/workpackages/20260607_1605_v13_2_scrub_key_import_helper.md` | |
| Main changes: | |
| - Added `scrub_key_import.py` as a pure helper module. | |
| - Added `validate_scrub_key_import_text(json_text)` for safe validation errors. | |
| - Added `normalise_scrub_key_items(scrub_key)` to convert Scrub Key items into review-table-like mapping rows. | |
| - Added `build_scrub_key_import_result(json_text)` with a UI-friendly result shape: | |
| - `ok`; | |
| - `errors`; | |
| - `warnings`; | |
| - `scrub_key`; | |
| - `mapping_rows`; | |
| - `item_count`; | |
| - `reversible`; | |
| - `privacy_model`; | |
| - `document_label`. | |
| - Reused the existing `scrub_key_from_json(...)` and `validate_scrub_key(...)` model helpers. | |
| - Added safe Dutch user-facing errors for empty input, invalid JSON syntax, invalid top-level structure and invalid Scrub Key content. | |
| - Added a local-only privacy warning explaining that imported Scrub Keys make replacements locally reversible and should not be shared with AI services or third parties unless consciously intended and allowed. | |
| Testing: | |
| - Added `tests/test_scrub_key_import.py`. | |
| - Tests cover valid Scrub Key JSON import, normalized row mapping, privacy warning, empty JSON text, invalid JSON syntax, invalid top-level format, structural validation errors, no input mutation and synthetic Dutch legal values only. | |
| - Coordinator evidence supplied for green checks before UI integration: | |
| - Tests #83 green; | |
| - Tests #84 green; | |
| - Sync to Hugging Face Space #98 green; | |
| - Tests #85 green; | |
| - Sync to Hugging Face Space #99 green; | |
| - Tests #86 green; | |
| - Sync to Hugging Face Space #100 green. | |
| Intentionally not changed in helper phase: | |
| - No UI changes. | |
| - No direct edit to `fix_streamlit_nested_expanders.py`. | |
| - No direct edit to `presidio_streamlit.py`. | |
| - No edit to existing Scrub Key export UI. | |
| - No reinsert behavior. | |
| - No AI-output flow. | |
| - No cloud processing. | |
| - No server-side Scrub Key storage. | |
| - No real personal data in tests. | |
| - No change to TXT, CSV, DOCX or PDF download behavior. | |
| --- | |
| ## v13.1 — Scrub Key JSON export UI closeout | |
| Status: completed and app verified after mapping hotfix. | |
| Purpose: | |
| - Close v13.1 after confirming that the local Scrub Key JSON export works in the Hugging Face app. | |
| - Record that the earlier `original_value` validation error was fixed. | |
| - Preserve the boundary that Scrub Key import/reload and reinsert are not implemented yet. | |
| Files added or changed in the full v13.1 line: | |
| - `fix_streamlit_nested_expanders.py` | |
| - `tests/test_scrub_key_ui_patch.py` | |
| - `WORKPACKAGES.md` | |
| - `CHANGELOG.md` | |
| - `handover/workpackages/20260607_1535_v13_1_scrub_key_json_export_ui.md` | |
| - `handover/workpackages/20260607_1535_v13_1_scrub_key_ui_mapping_hotfix.md` | |
| - `handover/workpackages/20260607_1550_v13_1_scrub_key_json_export_closeout.md` | |
| Main changes: | |
| - Added a `Scrub Key (JSON)` section to the download/export flow. | |
| - Added a `Download Scrub Key (.json)` button. | |
| - Added warning text explaining that the Scrub Key makes replaced values locally reversible. | |
| - Added warning text that this is pseudonymization, not full anonymization. | |
| - Added warning text not to share the key with AI services or third parties unless consciously intended and allowed. | |
| - Added timestamp creation in the UI/export layer so the pure `scrub_key.py` model remains deterministic and side-effect free. | |
| - Added the mapping hotfix so app review-table rows are converted into Scrub Key model rows before calling `build_scrub_key(...)`. | |
| Mapping hotfix: | |
| - `find` → `original_value` | |
| - `replace_with` → `placeholder` | |
| - `entity_type` → `entity_type` | |
| - `type_label` → `type_label` | |
| - `source` → `source` | |
| - `review_status` → `review_status` | |
| - `include` → `include` | |
| Testing and verification: | |
| - Initial v13.1 UI implementation: | |
| - `Tests #73` green for commit `9d349bb`. | |
| - `Sync to Hugging Face Space #87` green for commit `9d349bb`. | |
| - Mapping hotfix: | |
| - `Tests #78` green for commit `8d33941`. | |
| - `Sync to Hugging Face Space #92` green for commit `8d33941`. | |
| - User verified in the Hugging Face app: | |
| - `Scrub Key (JSON)` section is visible. | |
| - pseudonymization / reversibility warning is visible. | |
| - `Item has empty required field: original_value` is gone. | |
| - `Download Scrub Key (.json)` is visible. | |
| - Scrub Key JSON download works. | |
| Intentionally not changed: | |
| - No edit to `scrub_key.py` in the mapping hotfix. | |
| - No direct edit to `presidio_streamlit.py`. | |
| - No Scrub Key import/reload. | |
| - No reinsert UI. | |
| - No AI-output flow. | |
| - No cloud processing. | |
| - No server-side Scrub Key storage. | |
| - No change to TXT, CSV, DOCX or PDF download behavior. | |
| - No change to existing replacement/export semantics. | |
| - No `st.stop()` or export blocking behavior added. | |
| Outcome: | |
| - v13.1 Scrub Key JSON export is complete. | |
| --- | |
| ## v12.6 — Export sanity checks closeout | |
| Status: completed and administratively closed after coordinator closeout instruction. | |
| Purpose: | |
| - Close the v12.6 export sanity workpackage after helper and UI integration were completed. | |
| - Record that the UI warning block is advisory only. | |
| - Preserve the documented boundary that export/download behavior was not changed. | |
| Files added or changed in the full v12.6 line: | |
| - `export_sanity.py` | |
| - `tests/test_export_sanity.py` | |
| - `tests/test_export_sanity_ui_patch.py` | |
| - `fix_streamlit_nested_expanders.py` | |
| - `WORKPACKAGES.md` | |
| - `CHANGELOG.md` | |
| - `handover/workpackages/20260607_1405_v12_6_export_sanity_helper.md` | |
| - `handover/workpackages/20260607_1445_v12_6_export_sanity_ui.md` | |
| - `handover/workpackages/20260607_1515_v12_6_export_sanity_closeout.md` | |
| Main changes: | |
| - Added pure helper logic for advisory export readiness checks. | |
| - Added Dutch user-facing warning text for unchecked `Controle nodig` rows, candidate rows not included, no replacements selected, required user review and export not guaranteeing full anonymization. | |
| - Integrated the existing `export_sanity.py` helper into the Streamlit startup patch flow. | |
| - Added UI text for `Extra exportcontrole` near the existing v12.5 `Eindcontrole vóór download` block. | |
| - Added patch-level tests to guard that the export sanity helper is wired into the UI patch. | |
| - Administratively closed WP3C without changing code files. | |
| Testing and verification: | |
| - Helper validation recorded in WP3A handover: `PYTHONPATH=. pytest -q tests/test_export_sanity.py tests/test_review_summary.py` → 12 passed. | |
| - Coordinator reconciled helper verification: `Tests #58` green, `Sync to Hugging Face Space #72` green, commit `b0bf8ae`. | |
| - WP3C was administrative closeout only; no new local pytest run was performed by that worker. | |
| Intentionally not changed: | |
| - No code files changed in WP3C closeout. | |
| - No direct edit to `presidio_streamlit.py`. | |
| - No export/download blocking. | |
| - No change to which rows are included in export. | |
| - No change to TXT, CSV, DOCX or PDF download logic. | |
| - No Scrub Key logic added in v12.6. | |
| - No reinsert workflow added in v12.6. | |
| - No cloud processing introduced. | |
| Outcome: | |
| - v12.6 is closed. | |
| - v12 Review UX is complete through guidance, final review summary and export sanity warnings. | |
| --- | |
| ## Earlier completed work | |
| - v13.0 Scrub Key specification and pure model. | |
| - v12.5 Final review summary. | |
| - v12.4 Review guidance text. | |
| - Project governance setup. | |
| - v12.3 Review table simplification. | |
| - v12.2 Review focus filters. | |
| - v12.1 Review table status model. | |
| - v11.2 Dutch recognizer integration tests. | |
| - v11.1 Legal reference recognizer hardening. | |
| - v10 Regression test layer. | |
| - v9.1 UI polish and baseline stabilization. | |
| - v9 Dutch Legal UI Layer. | |
| --- | |
| ## Planned later phase — v13 and beyond | |
| Possible directions: | |
| - Deterministic reinsert helper. | |
| - AI-output reinsert. | |
| - Further recognizer expansion by legal domain. | |