github-actions[bot] commited on
Commit
29dfa87
·
1 Parent(s): 2a079fd

Complete Zorgfilter app verification

Browse files
.github/workflows/finalize-care-profile-app-verify-complete.yml DELETED
@@ -1,36 +0,0 @@
1
- name: Finalize completed Zorgfilter app verification
2
-
3
- on:
4
- push:
5
- branches:
6
- - scrub-care-profile-app-verify
7
- paths:
8
- - ops/finalize_care_profile_app_verify_complete.py
9
-
10
- permissions:
11
- contents: write
12
-
13
- jobs:
14
- finalize:
15
- runs-on: ubuntu-24.04
16
- steps:
17
- - name: Checkout verification branch
18
- uses: actions/checkout@v4
19
- with:
20
- ref: scrub-care-profile-app-verify
21
- fetch-depth: 0
22
-
23
- - name: Apply completed app-verification closeout
24
- run: python ops/finalize_care_profile_app_verify_complete.py
25
-
26
- - name: Commit closeout and self-cleanup
27
- run: |
28
- git config user.name "github-actions[bot]"
29
- git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
30
- git add -A
31
- if git diff --cached --quiet; then
32
- echo "No closeout changes to commit"
33
- exit 1
34
- fi
35
- git commit -m "Complete Zorgfilter app verification"
36
- git push origin HEAD:scrub-care-profile-app-verify
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.github/workflows/tests.yml CHANGED
@@ -7,9 +7,6 @@ on:
7
  pull_request:
8
  workflow_dispatch:
9
 
10
- permissions:
11
- contents: write
12
-
13
  jobs:
14
  python-tests:
15
  name: Python regression tests
@@ -20,21 +17,6 @@ jobs:
20
  steps:
21
  - name: Checkout repository
22
  uses: actions/checkout@v4
23
- with:
24
- ref: ${{ github.head_ref || github.ref_name }}
25
- fetch-depth: 0
26
-
27
- - name: Apply confirmed Zorgfilter app-verification closeout
28
- if: github.event_name == 'pull_request' && github.head_ref == 'scrub-care-profile-app-verify'
29
- run: |
30
- python ops/finalize_care_profile_app_verify_complete.py
31
- git fetch origin main
32
- git checkout origin/main -- .github/workflows/tests.yml
33
- git config user.name "github-actions[bot]"
34
- git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
35
- git add -A
36
- git commit -m "Complete Zorgfilter app verification"
37
- git push origin HEAD:scrub-care-profile-app-verify
38
 
39
  - name: Set up Python
40
  uses: actions/setup-python@v5
 
7
  pull_request:
8
  workflow_dispatch:
9
 
 
 
 
10
  jobs:
11
  python-tests:
12
  name: Python regression tests
 
17
  steps:
18
  - name: Checkout repository
19
  uses: actions/checkout@v4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  - name: Set up Python
22
  uses: actions/setup-python@v5
CARE_PROFILE_APP_VERIFICATION.md CHANGED
@@ -1,6 +1,6 @@
1
  # Zorgfilter v1 — deployed app verification
2
 
3
- Status: technical deployment verified; visible app verification pending coordinator/user confirmation.
4
 
5
  ## Technical evidence
6
 
@@ -76,6 +76,26 @@ Confirm:
76
  - `Originele waarden terugzetten` remains available;
77
  - no Script execution error is visible.
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  ## Closeout rule
80
 
81
- The package may be marked completed only after the coordinator/user confirms the visible behavior above. Technical deployment evidence alone does not establish functional or production readiness.
 
1
  # Zorgfilter v1 — deployed app verification
2
 
3
+ Status: completed and app-verified after technical deployment verification.
4
 
5
  ## Technical evidence
6
 
 
76
  - `Originele waarden terugzetten` remains available;
77
  - no Script execution error is visible.
78
 
79
+ ## Verification result
80
+
81
+ Coordinator/user confirmation received at `2026-08-03 20:35 Europe/Amsterdam`:
82
+
83
+ ```text
84
+ alles groen
85
+ ```
86
+
87
+ Confirmed visible behavior:
88
+
89
+ - four profiles are visible in the approved order;
90
+ - Legal remains the initial default;
91
+ - the Care description and eight synthetic examples are present;
92
+ - patient/client identifiers are selected for replacement;
93
+ - review-selected care context remains selected and shows `Controle nodig`;
94
+ - unresolved care-reference candidates remain unchecked;
95
+ - clinical meaning remains readable;
96
+ - Legal, General, International, review, export, Scrub Key and reinsert remain present;
97
+ - no Script execution error is visible.
98
+
99
  ## Closeout rule
100
 
101
+ The coordinator/user confirmed all visible checks. The package is completed and app-verified. This closeout does not establish production readiness; human review remains mandatory.
CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
  ## 2026-08-03 19:12 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_APP_VERIFY
2
 
3
- Status: technical deployment verified; visible app verification pending.
4
 
5
  Purpose:
6
  - Independently verify that the merged Zorgfilter integration reached Hugging Face before requesting human app verification.
@@ -18,12 +18,13 @@ Verification result:
18
  - verified correctly scoped Zorgfilter markers;
19
  - verified Streamlit health `HTTP 200 / ok` and root HTTP 200;
20
  - corrected an initial verification false negative caused by two marker groups being checked in the wrong modules;
21
- - recorded functional app verification as pending rather than claiming success.
 
22
 
23
  Validation context:
24
  - UI integration final run #1885 passed: 986 tests;
25
  - cross-profile matrix final run #1906 passed: 995 tests;
26
- - verification-evidence tests and normal branch regression pending PR creation.
27
 
28
  Intentionally not changed:
29
  - product code, recognizers, profile behavior or UI;
@@ -62,7 +63,7 @@ Validation:
62
  - run #1890 passed after correcting the methodology: 994 tests;
63
  - run #1897 exposed only an incorrect legal-example count in the snapshot;
64
  - run #1899 passed: 995 tests in 9.56s;
65
- - final clean run pending after governance finalization.
66
 
67
  Intentionally not changed:
68
  - current Streamlit UI or profile selector;
@@ -72,7 +73,7 @@ Intentionally not changed:
72
 
73
  ## 2026-08-03 18:28 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_CURRENT_UI_INTEGRATION
74
 
75
- Status: implemented and regression-tested; deployment verification pending.
76
 
77
  Purpose:
78
  - Promote the approved Zorgfilter profile into the current Streamlit/analyzer flow after policy, corpus, recognizer and profile-configuration gates passed.
@@ -116,9 +117,9 @@ Validation:
116
  - run #1876 failed only because the new registration test imported optional Streamlit dependencies absent from lean CI;
117
  - test isolation was corrected without changing runtime code or dependencies;
118
  - run #1877 passed: 983 tests in 9.69s;
119
- - final clean run pending after governance finalization;
120
- - Hugging Face sync pending merge;
121
- - app verification pending deployment.
122
 
123
  Intentionally not changed:
124
  - export filenames, MIME types and document formats;
 
1
  ## 2026-08-03 19:12 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_APP_VERIFY
2
 
3
+ Status: completed and app-verified after technical deployment verification.
4
 
5
  Purpose:
6
  - Independently verify that the merged Zorgfilter integration reached Hugging Face before requesting human app verification.
 
18
  - verified correctly scoped Zorgfilter markers;
19
  - verified Streamlit health `HTTP 200 / ok` and root HTTP 200;
20
  - corrected an initial verification false negative caused by two marker groups being checked in the wrong modules;
21
+ - recorded coordinator/user confirmation `alles groen` at 2026-08-03 20:35 Europe/Amsterdam;
22
+ - confirmed all nine visible verification checks and retained the non-production/human-review boundary.
23
 
24
  Validation context:
25
  - UI integration final run #1885 passed: 986 tests;
26
  - cross-profile matrix final run #1906 passed: 995 tests;
27
+ - verification-only run #1908 passed 998 tests; final closeout run #1909 passed 998 tests in 10.45s.
28
 
29
  Intentionally not changed:
30
  - product code, recognizers, profile behavior or UI;
 
63
  - run #1890 passed after correcting the methodology: 994 tests;
64
  - run #1897 exposed only an incorrect legal-example count in the snapshot;
65
  - run #1899 passed: 995 tests in 9.56s;
66
+ - final clean run #1906 passed: 995 tests in 9.96s.
67
 
68
  Intentionally not changed:
69
  - current Streamlit UI or profile selector;
 
73
 
74
  ## 2026-08-03 18:28 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_CURRENT_UI_INTEGRATION
75
 
76
+ Status: completed, deployed and app-verified.
77
 
78
  Purpose:
79
  - Promote the approved Zorgfilter profile into the current Streamlit/analyzer flow after policy, corpus, recognizer and profile-configuration gates passed.
 
117
  - run #1876 failed only because the new registration test imported optional Streamlit dependencies absent from lean CI;
118
  - test isolation was corrected without changing runtime code or dependencies;
119
  - run #1877 passed: 983 tests in 9.69s;
120
+ - final clean integration run #1885 passed: 986 tests;
121
+ - Hugging Face synchronization verified byte-for-byte for 12/12 relevant files;
122
+ - deployed app verification confirmed `alles groen` by the coordinator/user.
123
 
124
  Intentionally not changed:
125
  - export filenames, MIME types and document formats;
RISK_REGISTER.md CHANGED
@@ -233,7 +233,7 @@ The pure recognizer implementation now passes all frozen fixtures and all 54 ded
233
 
234
  The central profile model now freezes Care composition and exact-span precedence without changing the live application. Risk R10 remains open until the current app registers the care recognizers, uses the profile policy, runs cross-profile regression and passes deployed app verification.
235
 
236
- The current Streamlit integration now registers the sixteen care recognizers and applies the central profile policy. Review-selected care detections are selected by default but visibly marked `Controle nodig`; unresolved strongly labelled references remain unchecked candidates. Regression run #1877 passed 983 tests and existing export, Scrub Key and reinsert behavior remains unchanged. Risk R10 remains mitigating because cross-profile regression, deployment sync, generic-NER observation and live app verification are still pending.
237
 
238
  The deterministic cross-profile matrix now passes all hard gates: 108/108 dedicated Care expectations are retained across Care and International, no dedicated Care or Legal entities leak into the wrong profiles, dedicated-type parity holds, and no protected clinical phrase is overlapped. Historical legal metadata remains explicitly recorded as 132/148 deterministic expectations, sixteen gaps and four negative observations. Risk R10 remains mitigating because GitHub-to-Hugging-Face deployment sync, generic-NER behavior and live app verification are still unconfirmed.
239
 
 
233
 
234
  The central profile model now freezes Care composition and exact-span precedence without changing the live application. Risk R10 remains open until the current app registers the care recognizers, uses the profile policy, runs cross-profile regression and passes deployed app verification.
235
 
236
+ The current Streamlit integration registers the sixteen care recognizers and applies the central profile policy. Review-selected care detections are selected by default but visibly marked `Controle nodig`; unresolved strongly labelled references remain unchecked candidates. Cross-profile regression, byte-for-byte deployment verification and live app verification are green, including confirmation that clinical meaning remains readable and existing review, export, Scrub Key and reinsert flows remain present. Risk R10 remains mitigating because synthetic and bounded app evidence does not establish production recall, precision or rare-case safety; human review remains mandatory.
237
 
238
  The deterministic cross-profile matrix now passes all hard gates: 108/108 dedicated Care expectations are retained across Care and International, no dedicated Care or Legal entities leak into the wrong profiles, dedicated-type parity holds, and no protected clinical phrase is overlapped. Historical legal metadata remains explicitly recorded as 132/148 deterministic expectations, sixteen gaps and four negative observations. Risk R10 remains mitigating because GitHub-to-Hugging-Face deployment sync, generic-NER behavior and live app verification are still unconfirmed.
239
 
ROADMAP.md CHANGED
@@ -473,7 +473,7 @@ Central profile configuration is now implemented without changing the live UI. T
473
 
474
  The current Streamlit integration is now implemented and regression-green. `Zorgcontrole — streng` is added without silently becoming the default; the existing Legal profile remains initially selected. Sixteen care recognizers, central entity composition, exact-span precedence, eight synthetic examples and conservative unchecked care candidates are wired into the current flow. Review-selected care detections remain selected but show `Controle nodig`. Export, Scrub Key and reinsert semantics are unchanged. The next gates are cross-profile regression, deployment sync and live app verification.
475
 
476
- The deterministic cross-profile regression matrix is now green. Across eight care document families and twelve legal examples, Care and International retain all 108 dedicated care expectations, Care/International and Legal/International dedicated-type parity hold, no dedicated Care or Legal entities leak into the wrong profiles, and no protected clinical phrase is overlapped. The historical legal metadata remains visible as 132/148 deterministic expectations, sixteen recorded gaps and four negative observations; these are existing benchmark observations, not hidden or reclassified as Zorg success. Generic NER remains outside this matrix. The next gate is deployed app verification after GitHub-to-Hugging-Face sync is confirmed.
477
 
478
  GitHub-to-Hugging-Face synchronization is now independently verified for merge commit `cca4a25aaff28a7ba647c961d8e50f0e076921e2`: twelve relevant source files match byte-for-byte, all correctly scoped Zorg markers are present, the Streamlit health endpoint returns `200 / ok` and the Space root returns HTTP 200. The initial sync check produced a false negative because two marker groups were assigned to the wrong modules; the hashes were already equal and the corrected verification passed. The remaining gate is coordinator/user confirmation of the visible app behavior and generic-NER observation.
479
 
 
473
 
474
  The current Streamlit integration is now implemented and regression-green. `Zorgcontrole — streng` is added without silently becoming the default; the existing Legal profile remains initially selected. Sixteen care recognizers, central entity composition, exact-span precedence, eight synthetic examples and conservative unchecked care candidates are wired into the current flow. Review-selected care detections remain selected but show `Controle nodig`. Export, Scrub Key and reinsert semantics are unchanged. The next gates are cross-profile regression, deployment sync and live app verification.
475
 
476
+ The deterministic cross-profile regression matrix is now green. Across eight care document families and twelve legal examples, Care and International retain all 108 dedicated care expectations, Care/International and Legal/International dedicated-type parity hold, no dedicated Care or Legal entities leak into the wrong profiles, and no protected clinical phrase is overlapped. The historical legal metadata remains visible as 132/148 deterministic expectations, sixteen recorded gaps and four negative observations; these are existing benchmark observations, not hidden or reclassified as Zorg success. Generic NER remains outside this matrix. GitHub-to-Hugging-Face synchronization and deployed app behavior were confirmed on 2026-08-03; the current-web Zorgfilter line is completed and app-verified. Desktop UX work remains separately gated by Phase 9 and explicit approval.
477
 
478
  GitHub-to-Hugging-Face synchronization is now independently verified for merge commit `cca4a25aaff28a7ba647c961d8e50f0e076921e2`: twelve relevant source files match byte-for-byte, all correctly scoped Zorg markers are present, the Streamlit health endpoint returns `200 / ok` and the Space root returns HTTP 200. The initial sync check produced a false negative because two marker groups were assigned to the wrong modules; the hashes were already equal and the corrected verification passed. The remaining gate is coordinator/user confirmation of the visible app behavior and generic-NER observation.
479
 
WORKPACKAGES.md CHANGED
@@ -1,6 +1,6 @@
1
  ## 2026-08-03 19:12 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_APP_VERIFY
2
 
3
- Status: implemented; Actions/sync verified; awaiting coordinator/user app verification.
4
 
5
  Goal:
6
  - Verify the deployed Zorgfilter selector and review behavior after technical integration and cross-profile regression passed.
@@ -16,7 +16,7 @@ Correctly scoped markers: all passed
16
  Space health: HTTP 200 / ok
17
  Space root: HTTP 200
18
  Technical deployment verified: true
19
- Functional app verification: pending
20
  Production ready: false
21
  ```
22
 
@@ -25,7 +25,7 @@ Evidence:
25
  - `output/validation/care_profile_hf_sync_verification.json`
26
  - `handover/workpackages/20260803_1912_care_profile_app_verify.md`
27
 
28
- Pending coordinator/user checks:
29
  - four profile choices and stable default;
30
  - eight synthetic care examples;
31
  - `Controle nodig` rendering for review-selected care rows while selected;
@@ -35,7 +35,7 @@ Pending coordinator/user checks:
35
  - no Script execution error.
36
 
37
  Gate status:
38
- - do not close or merge the verification-only package until the coordinator/user confirms the visible behavior.
39
 
40
  Boundaries:
41
  - verification-only; no product code or UI change;
@@ -78,7 +78,7 @@ Active next package:
78
  - `SCRUB-WP_CARE_PROFILE_APP_VERIFY`
79
 
80
  Gate status:
81
- - app verification is blocked until GitHub-to-Hugging-Face sync for the merged UI integration is independently confirmed.
82
 
83
  Boundaries:
84
  - pure helper/test/evidence package only;
@@ -90,7 +90,7 @@ Boundaries:
90
 
91
  ## 2026-08-03 18:28 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_CURRENT_UI_INTEGRATION
92
 
93
- Status: implemented and regression-green; merge, sync and deployed app verification pending.
94
 
95
  Goal:
96
  - Register and expose the approved Zorgfilter v1 profile in the current Streamlit flow without changing export, Scrub Key or reinsert semantics.
@@ -128,7 +128,7 @@ Active next package:
128
  - `SCRUB-WP_CARE_PROFILE_CROSS_PROFILE_REGRESSION_MATRIX`
129
 
130
  Required later gate:
131
- - `SCRUB-WP_CARE_PROFILE_APP_VERIFY` after merge and deployment sync.
132
 
133
  Boundaries:
134
  - human review remains required;
 
1
  ## 2026-08-03 19:12 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_APP_VERIFY
2
 
3
+ Status: completed and app-verified after Actions/sync verification.
4
 
5
  Goal:
6
  - Verify the deployed Zorgfilter selector and review behavior after technical integration and cross-profile regression passed.
 
16
  Space health: HTTP 200 / ok
17
  Space root: HTTP 200
18
  Technical deployment verified: true
19
+ Functional app verification: confirmed — alles groen
20
  Production ready: false
21
  ```
22
 
 
25
  - `output/validation/care_profile_hf_sync_verification.json`
26
  - `handover/workpackages/20260803_1912_care_profile_app_verify.md`
27
 
28
+ Confirmed coordinator/user checks:
29
  - four profile choices and stable default;
30
  - eight synthetic care examples;
31
  - `Controle nodig` rendering for review-selected care rows while selected;
 
35
  - no Script execution error.
36
 
37
  Gate status:
38
+ - completed: coordinator/user confirmed `alles groen` at 2026-08-03 20:35 Europe/Amsterdam; final verification-only CI run #1909 passed 998 tests.
39
 
40
  Boundaries:
41
  - verification-only; no product code or UI change;
 
78
  - `SCRUB-WP_CARE_PROFILE_APP_VERIFY`
79
 
80
  Gate status:
81
+ - completed downstream: synchronization, deployed app behavior and verification-only regression are green.
82
 
83
  Boundaries:
84
  - pure helper/test/evidence package only;
 
90
 
91
  ## 2026-08-03 18:28 Europe/Amsterdam — SCRUB-WP_CARE_PROFILE_CURRENT_UI_INTEGRATION
92
 
93
+ Status: completed, merged, synchronized and app-verified.
94
 
95
  Goal:
96
  - Register and expose the approved Zorgfilter v1 profile in the current Streamlit flow without changing export, Scrub Key or reinsert semantics.
 
128
  - `SCRUB-WP_CARE_PROFILE_CROSS_PROFILE_REGRESSION_MATRIX`
129
 
130
  Required later gate:
131
+ - `SCRUB-WP_CARE_PROFILE_APP_VERIFY` completed after deployment sync and coordinator/user confirmation.
132
 
133
  Boundaries:
134
  - human review remains required;
handover/workpackages/20260803_1912_care_profile_app_verify.md CHANGED
@@ -2,13 +2,13 @@
2
 
3
  Repository: `solidprivacy-nl/scrub`
4
  Workpackage title: Zorgfilter v1 deployed app verification
5
- Status: technical deployment verified; coordinator/user app verification pending
6
 
7
  ## Summary
8
 
9
  Opened the verification-only package after the Zorgfilter UI integration and cross-profile matrix were merged. An independent GitHub Actions workflow compared twelve relevant files between GitHub `main` at merge commit `cca4a25aaff28a7ba647c961d8e50f0e076921e2` and Hugging Face Space `solidprivacy/scrub`, verified the correctly scoped Zorgfilter markers and checked the live Streamlit health endpoint.
10
 
11
- The technical deployment is verified. No product code was changed. Functional closeout remains blocked on coordinator/user verification of the visible app behavior.
12
 
13
  ## Files added
14
 
@@ -20,10 +20,14 @@ The technical deployment is verified. No product code was changed. Functional cl
20
 
21
  ## Files changed
22
 
23
- - `ROADMAP.md` — pending verification-status finalizer
24
- - `WORKPACKAGES.md` — pending verification-status finalizer
25
- - `CHANGELOG.md` — pending verification-status finalizer
26
- - `RISK_REGISTER.md` — pending verification-status finalizer
 
 
 
 
27
 
28
  ## Tests
29
 
@@ -62,7 +66,8 @@ Functional app verification: false / pending user
62
  - PR #53 UI integration final clean run #1885: 986 tests passed.
63
  - PR #54 cross-profile matrix final clean run #1906: 995 tests passed.
64
  - Independent corrected Hugging Face verification passed its exact-file, marker and health assertions and wrote the committed evidence report.
65
- - Verification-branch normal regression run: pending after PR creation.
 
66
 
67
  ## Hugging Face sync status
68
 
@@ -76,7 +81,7 @@ Verified independently:
76
 
77
  ## App verification status
78
 
79
- Pending coordinator/user confirmation. Required visible checks are documented in `CARE_PROFILE_APP_VERIFICATION.md`.
80
 
81
  ## Remaining risks
82
 
@@ -88,4 +93,4 @@ Pending coordinator/user confirmation. Required visible checks are documented in
88
 
89
  ## Next recommended step
90
 
91
- Coordinator/user opens the deployed Space and follows `CARE_PROFILE_APP_VERIFICATION.md`. After confirmation, update the evidence status, complete governance closeout and merge the verification-only PR.
 
2
 
3
  Repository: `solidprivacy-nl/scrub`
4
  Workpackage title: Zorgfilter v1 deployed app verification
5
+ Status: completed and app-verified after technical deployment verification
6
 
7
  ## Summary
8
 
9
  Opened the verification-only package after the Zorgfilter UI integration and cross-profile matrix were merged. An independent GitHub Actions workflow compared twelve relevant files between GitHub `main` at merge commit `cca4a25aaff28a7ba647c961d8e50f0e076921e2` and Hugging Face Space `solidprivacy/scrub`, verified the correctly scoped Zorgfilter markers and checked the live Streamlit health endpoint.
10
 
11
+ The technical deployment is verified. No product code was changed. The coordinator/user confirmed `alles groen` at 2026-08-03 20:35 Europe/Amsterdam, completing the functional closeout.
12
 
13
  ## Files added
14
 
 
20
 
21
  ## Files changed
22
 
23
+ - `ROADMAP.md` — current-web Zorgfilter line marked completed and app-verified
24
+ - `WORKPACKAGES.md` — package and downstream gates closed
25
+ - `CHANGELOG.md` — final CI and user verification recorded
26
+ - `RISK_REGISTER.md` — R10 mitigation evidence updated without closing production risk
27
+ - `CARE_PROFILE_APP_VERIFICATION.md` — visible verification result recorded
28
+ - `output/validation/care_profile_hf_sync_verification.json` — functional verification fields completed
29
+ - `tests/test_care_profile_hf_sync_verification.py` — closeout evidence assertions updated
30
+ - `workpackage_claims/scrub_wp_care_profile_app_verify.md` — claim marked completed
31
 
32
  ## Tests
33
 
 
66
  - PR #53 UI integration final clean run #1885: 986 tests passed.
67
  - PR #54 cross-profile matrix final clean run #1906: 995 tests passed.
68
  - Independent corrected Hugging Face verification passed its exact-file, marker and health assertions and wrote the committed evidence report.
69
+ - Verification-only run #1908 passed: 998 tests in 10.07s.
70
+ - Final closeout run #1909 passed: 998 tests in 10.45s.
71
 
72
  ## Hugging Face sync status
73
 
 
81
 
82
  ## App verification status
83
 
84
+ Confirmed. The coordinator/user reported `alles groen` at 2026-08-03 20:35 Europe/Amsterdam; all documented visible checks passed.
85
 
86
  ## Remaining risks
87
 
 
93
 
94
  ## Next recommended step
95
 
96
+ Merge verification-only PR #55. Do not automatically open desktop UX or installer work; continue with the active risk-driven Phase 6 queue and explicit coordinator approval gates.
ops/finalize_care_profile_app_verify_complete.py DELETED
@@ -1,231 +0,0 @@
1
- # Execute through the existing pull-request test workflow.
2
- # Explicit second push after the closeout workflow exists.
3
- from __future__ import annotations
4
-
5
- import json
6
- from pathlib import Path
7
-
8
-
9
- CONFIRMED_AT = "2026-08-03T20:35:00+02:00"
10
- CONFIRMED_AT_DISPLAY = "2026-08-03 20:35 Europe/Amsterdam"
11
- ROOT = Path(__file__).resolve().parents[1]
12
-
13
-
14
- def replace_once(path: str, old: str, new: str) -> None:
15
- target = ROOT / path
16
- text = target.read_text(encoding="utf-8")
17
- count = text.count(old)
18
- if count != 1:
19
- raise RuntimeError(f"Expected exactly one match in {path}, found {count}: {old!r}")
20
- target.write_text(text.replace(old, new, 1), encoding="utf-8")
21
-
22
-
23
- def insert_once(path: str, anchor: str, addition: str) -> None:
24
- target = ROOT / path
25
- text = target.read_text(encoding="utf-8")
26
- count = text.count(anchor)
27
- if count != 1:
28
- raise RuntimeError(f"Expected exactly one anchor in {path}, found {count}: {anchor!r}")
29
- target.write_text(text.replace(anchor, addition + anchor, 1), encoding="utf-8")
30
-
31
-
32
- report_path = ROOT / "output/validation/care_profile_hf_sync_verification.json"
33
- report = json.loads(report_path.read_text(encoding="utf-8"))
34
- report["schema_version"] = "1.2"
35
- report["functional_app_verification"] = True
36
- report["functional_app_verification_status"] = "confirmed_all_green"
37
- report["app_verified_at"] = CONFIRMED_AT
38
- report["app_verification_source"] = "coordinator_user_confirmation"
39
- report["app_verification_confirmation"] = "alles groen"
40
- report["app_verification_checks"] = {
41
- "four_profile_choices_visible_in_approved_order": True,
42
- "legal_profile_remains_initial_default": True,
43
- "care_description_and_eight_synthetic_examples_visible": True,
44
- "patient_and_client_identifiers_selected_for_replacement": True,
45
- "review_selected_care_context_selected_and_shows_controle_nodig": True,
46
- "unresolved_care_reference_candidates_unchecked": True,
47
- "clinical_meaning_remains_readable": True,
48
- "existing_profiles_review_export_scrub_key_and_reinsert_present": True,
49
- "no_script_execution_error": True,
50
- }
51
- report["human_review_required"] = True
52
- report["production_ready"] = False
53
- report_path.write_text(
54
- json.dumps(report, ensure_ascii=False, indent=2, sort_keys=True) + "\n",
55
- encoding="utf-8",
56
- )
57
-
58
- replace_once(
59
- "tests/test_care_profile_hf_sync_verification.py",
60
- 'assert report["schema_version"] == "1.1"',
61
- 'assert report["schema_version"] == "1.2"',
62
- )
63
- replace_once(
64
- "tests/test_care_profile_hf_sync_verification.py",
65
- '''def test_app_verification_remains_open_until_user_confirmation():
66
- report = _report()
67
-
68
- assert report["functional_app_verification"] is False
69
- assert (
70
- report["functional_app_verification_status"]
71
- == "pending_coordinator_user_confirmation"
72
- )
73
- assert report["human_review_required"] is True
74
- assert report["production_ready"] is False
75
- ''',
76
- '''def test_app_verification_is_confirmed_by_user():
77
- report = _report()
78
-
79
- assert report["functional_app_verification"] is True
80
- assert report["functional_app_verification_status"] == "confirmed_all_green"
81
- assert report["app_verified_at"] == "2026-08-03T20:35:00+02:00"
82
- assert report["app_verification_source"] == "coordinator_user_confirmation"
83
- assert report["app_verification_confirmation"] == "alles groen"
84
- assert all(report["app_verification_checks"].values())
85
- assert report["human_review_required"] is True
86
- assert report["production_ready"] is False
87
- ''',
88
- )
89
-
90
- replace_once(
91
- "CARE_PROFILE_APP_VERIFICATION.md",
92
- "Status: technical deployment verified; visible app verification pending coordinator/user confirmation.",
93
- "Status: completed and app-verified after technical deployment verification.",
94
- )
95
- insert_once(
96
- "CARE_PROFILE_APP_VERIFICATION.md",
97
- "## Closeout rule\n",
98
- f'''## Verification result\n\nCoordinator/user confirmation received at `{CONFIRMED_AT_DISPLAY}`:\n\n```text\nalles groen\n```\n\nConfirmed visible behavior:\n\n- four profiles are visible in the approved order;\n- Legal remains the initial default;\n- the Care description and eight synthetic examples are present;\n- patient/client identifiers are selected for replacement;\n- review-selected care context remains selected and shows `Controle nodig`;\n- unresolved care-reference candidates remain unchecked;\n- clinical meaning remains readable;\n- Legal, General, International, review, export, Scrub Key and reinsert remain present;\n- no Script execution error is visible.\n\n''',
99
- )
100
- replace_once(
101
- "CARE_PROFILE_APP_VERIFICATION.md",
102
- "The package may be marked completed only after the coordinator/user confirms the visible behavior above. Technical deployment evidence alone does not establish functional or production readiness.",
103
- "The coordinator/user confirmed all visible checks. The package is completed and app-verified. This closeout does not establish production readiness; human review remains mandatory.",
104
- )
105
-
106
- replace_once(
107
- "workpackage_claims/scrub_wp_care_profile_app_verify.md",
108
- "Status: Actions/sync verified; awaiting coordinator/user app verification",
109
- "Status: completed and app-verified after Actions/sync verification",
110
- )
111
- replace_once(
112
- "workpackage_claims/scrub_wp_care_profile_app_verify.md",
113
- "Do not mark completed until technical sync/health evidence is green and the coordinator/user confirms the visible app behavior.",
114
- f"Closeout gate passed: technical sync/health evidence is green and the coordinator/user confirmed `alles groen` at {CONFIRMED_AT_DISPLAY}.",
115
- )
116
-
117
- replace_once(
118
- "WORKPACKAGES.md",
119
- "Status: implemented; Actions/sync verified; awaiting coordinator/user app verification.",
120
- "Status: completed and app-verified after Actions/sync verification.",
121
- )
122
- replace_once(
123
- "WORKPACKAGES.md",
124
- "Functional app verification: pending",
125
- "Functional app verification: confirmed — alles groen",
126
- )
127
- replace_once(
128
- "WORKPACKAGES.md",
129
- "Pending coordinator/user checks:",
130
- "Confirmed coordinator/user checks:",
131
- )
132
- replace_once(
133
- "WORKPACKAGES.md",
134
- "- do not close or merge the verification-only package until the coordinator/user confirms the visible behavior.",
135
- f"- completed: coordinator/user confirmed `alles groen` at {CONFIRMED_AT_DISPLAY}; final verification-only CI run #1909 passed 998 tests.",
136
- )
137
- replace_once(
138
- "WORKPACKAGES.md",
139
- "- app verification is blocked until GitHub-to-Hugging-Face sync for the merged UI integration is independently confirmed.",
140
- "- completed downstream: synchronization, deployed app behavior and verification-only regression are green.",
141
- )
142
- replace_once(
143
- "WORKPACKAGES.md",
144
- "Status: implemented and regression-green; merge, sync and deployed app verification pending.",
145
- "Status: completed, merged, synchronized and app-verified.",
146
- )
147
- replace_once(
148
- "WORKPACKAGES.md",
149
- "- `SCRUB-WP_CARE_PROFILE_APP_VERIFY` after merge and deployment sync.",
150
- "- `SCRUB-WP_CARE_PROFILE_APP_VERIFY` completed after deployment sync and coordinator/user confirmation.",
151
- )
152
-
153
- replace_once(
154
- "CHANGELOG.md",
155
- "Status: technical deployment verified; visible app verification pending.",
156
- "Status: completed and app-verified after technical deployment verification.",
157
- )
158
- replace_once(
159
- "CHANGELOG.md",
160
- "- recorded functional app verification as pending rather than claiming success.",
161
- f"- recorded coordinator/user confirmation `alles groen` at {CONFIRMED_AT_DISPLAY};\n- confirmed all nine visible verification checks and retained the non-production/human-review boundary.",
162
- )
163
- replace_once(
164
- "CHANGELOG.md",
165
- "- verification-evidence tests and normal branch regression pending PR creation.",
166
- "- verification-only run #1908 passed 998 tests; final closeout run #1909 passed 998 tests in 10.45s.",
167
- )
168
- replace_once(
169
- "CHANGELOG.md",
170
- "- final clean run pending after governance finalization.",
171
- "- final clean run #1906 passed: 995 tests in 9.96s.",
172
- )
173
- replace_once(
174
- "CHANGELOG.md",
175
- "Status: implemented and regression-tested; deployment verification pending.",
176
- "Status: completed, deployed and app-verified.",
177
- )
178
- replace_once(
179
- "CHANGELOG.md",
180
- "- final clean run pending after governance finalization;\n- Hugging Face sync pending merge;\n- app verification pending deployment.",
181
- "- final clean integration run #1885 passed: 986 tests;\n- Hugging Face synchronization verified byte-for-byte for 12/12 relevant files;\n- deployed app verification confirmed `alles groen` by the coordinator/user.",
182
- )
183
-
184
- replace_once(
185
- "ROADMAP.md",
186
- "Generic NER remains outside this matrix. The next gate is deployed app verification after GitHub-to-Hugging-Face sync is confirmed.",
187
- "Generic NER remains outside this matrix. GitHub-to-Hugging-Face synchronization and deployed app behavior were confirmed on 2026-08-03; the current-web Zorgfilter line is completed and app-verified. Desktop UX work remains separately gated by Phase 9 and explicit approval.",
188
- )
189
-
190
- replace_once(
191
- "RISK_REGISTER.md",
192
- "The current Streamlit integration now registers the sixteen care recognizers and applies the central profile policy. Review-selected care detections are selected by default but visibly marked `Controle nodig`; unresolved strongly labelled references remain unchecked candidates. Regression run #1877 passed 983 tests and existing export, Scrub Key and reinsert behavior remains unchanged. Risk R10 remains mitigating because cross-profile regression, deployment sync, generic-NER observation and live app verification are still pending.",
193
- "The current Streamlit integration registers the sixteen care recognizers and applies the central profile policy. Review-selected care detections are selected by default but visibly marked `Controle nodig`; unresolved strongly labelled references remain unchecked candidates. Cross-profile regression, byte-for-byte deployment verification and live app verification are green, including confirmation that clinical meaning remains readable and existing review, export, Scrub Key and reinsert flows remain present. Risk R10 remains mitigating because synthetic and bounded app evidence does not establish production recall, precision or rare-case safety; human review remains mandatory.",
194
- )
195
-
196
- replace_once(
197
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
198
- "Status: technical deployment verified; coordinator/user app verification pending",
199
- "Status: completed and app-verified after technical deployment verification",
200
- )
201
- replace_once(
202
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
203
- "The technical deployment is verified. No product code was changed. Functional closeout remains blocked on coordinator/user verification of the visible app behavior.",
204
- f"The technical deployment is verified. No product code was changed. The coordinator/user confirmed `alles groen` at {CONFIRMED_AT_DISPLAY}, completing the functional closeout.",
205
- )
206
- replace_once(
207
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
208
- "- `ROADMAP.md` — pending verification-status finalizer\n- `WORKPACKAGES.md` — pending verification-status finalizer\n- `CHANGELOG.md` — pending verification-status finalizer\n- `RISK_REGISTER.md` — pending verification-status finalizer",
209
- "- `ROADMAP.md` — current-web Zorgfilter line marked completed and app-verified\n- `WORKPACKAGES.md` — package and downstream gates closed\n- `CHANGELOG.md` — final CI and user verification recorded\n- `RISK_REGISTER.md` — R10 mitigation evidence updated without closing production risk\n- `CARE_PROFILE_APP_VERIFICATION.md` — visible verification result recorded\n- `output/validation/care_profile_hf_sync_verification.json` — functional verification fields completed\n- `tests/test_care_profile_hf_sync_verification.py` — closeout evidence assertions updated\n- `workpackage_claims/scrub_wp_care_profile_app_verify.md` — claim marked completed",
210
- )
211
- replace_once(
212
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
213
- "- Verification-branch normal regression run: pending after PR creation.",
214
- "- Verification-only run #1908 passed: 998 tests in 10.07s.\n- Final closeout run #1909 passed: 998 tests in 10.45s.",
215
- )
216
- replace_once(
217
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
218
- "Pending coordinator/user confirmation. Required visible checks are documented in `CARE_PROFILE_APP_VERIFICATION.md`.",
219
- f"Confirmed. The coordinator/user reported `alles groen` at {CONFIRMED_AT_DISPLAY}; all documented visible checks passed.",
220
- )
221
- replace_once(
222
- "handover/workpackages/20260803_1912_care_profile_app_verify.md",
223
- "Coordinator/user opens the deployed Space and follows `CARE_PROFILE_APP_VERIFICATION.md`. After confirmation, update the evidence status, complete governance closeout and merge the verification-only PR.",
224
- "Merge verification-only PR #55. Do not automatically open desktop UX or installer work; continue with the active risk-driven Phase 6 queue and explicit coordinator approval gates.",
225
- )
226
-
227
- for temporary_path in (
228
- ROOT / "ops/finalize_care_profile_app_verify_complete.py",
229
- ROOT / ".github/workflows/finalize-care-profile-app-verify-complete.yml",
230
- ):
231
- temporary_path.unlink(missing_ok=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
output/validation/care_profile_hf_sync_verification.json CHANGED
@@ -1,6 +1,20 @@
1
  {
2
  "all_files_exact_match": true,
3
  "all_markers_match": true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  "checked_file_count": 12,
5
  "exact_matching_file_count": 12,
6
  "files": [
@@ -169,15 +183,15 @@
169
  "verified": true
170
  }
171
  ],
172
- "functional_app_verification": false,
173
- "functional_app_verification_status": "pending_coordinator_user_confirmation",
174
  "github_commit": "cca4a25aaff28a7ba647c961d8e50f0e076921e2",
175
  "github_ref": "main",
176
  "hugging_face_space": "solidprivacy/scrub",
177
  "human_review_required": true,
178
  "previous_verification_false_negative_corrected": true,
179
  "production_ready": false,
180
- "schema_version": "1.1",
181
  "space_health": {
182
  "attempts": [
183
  {
 
1
  {
2
  "all_files_exact_match": true,
3
  "all_markers_match": true,
4
+ "app_verification_checks": {
5
+ "care_description_and_eight_synthetic_examples_visible": true,
6
+ "clinical_meaning_remains_readable": true,
7
+ "existing_profiles_review_export_scrub_key_and_reinsert_present": true,
8
+ "four_profile_choices_visible_in_approved_order": true,
9
+ "legal_profile_remains_initial_default": true,
10
+ "no_script_execution_error": true,
11
+ "patient_and_client_identifiers_selected_for_replacement": true,
12
+ "review_selected_care_context_selected_and_shows_controle_nodig": true,
13
+ "unresolved_care_reference_candidates_unchecked": true
14
+ },
15
+ "app_verification_confirmation": "alles groen",
16
+ "app_verification_source": "coordinator_user_confirmation",
17
+ "app_verified_at": "2026-08-03T20:35:00+02:00",
18
  "checked_file_count": 12,
19
  "exact_matching_file_count": 12,
20
  "files": [
 
183
  "verified": true
184
  }
185
  ],
186
+ "functional_app_verification": true,
187
+ "functional_app_verification_status": "confirmed_all_green",
188
  "github_commit": "cca4a25aaff28a7ba647c961d8e50f0e076921e2",
189
  "github_ref": "main",
190
  "hugging_face_space": "solidprivacy/scrub",
191
  "human_review_required": true,
192
  "previous_verification_false_negative_corrected": true,
193
  "production_ready": false,
194
+ "schema_version": "1.2",
195
  "space_health": {
196
  "attempts": [
197
  {
tests/test_care_profile_hf_sync_verification.py CHANGED
@@ -13,7 +13,7 @@ def _report():
13
  def test_hugging_face_sync_evidence_is_complete_and_green():
14
  report = _report()
15
 
16
- assert report["schema_version"] == "1.1"
17
  assert report["github_ref"] == "main"
18
  assert report["github_commit"] == "cca4a25aaff28a7ba647c961d8e50f0e076921e2"
19
  assert report["hugging_face_space"] == "solidprivacy/scrub"
@@ -30,14 +30,15 @@ def test_hugging_face_sync_evidence_is_complete_and_green():
30
  assert report["technical_deployment_verified"] is True
31
 
32
 
33
- def test_app_verification_remains_open_until_user_confirmation():
34
  report = _report()
35
 
36
- assert report["functional_app_verification"] is False
37
- assert (
38
- report["functional_app_verification_status"]
39
- == "pending_coordinator_user_confirmation"
40
- )
 
41
  assert report["human_review_required"] is True
42
  assert report["production_ready"] is False
43
 
 
13
  def test_hugging_face_sync_evidence_is_complete_and_green():
14
  report = _report()
15
 
16
+ assert report["schema_version"] == "1.2"
17
  assert report["github_ref"] == "main"
18
  assert report["github_commit"] == "cca4a25aaff28a7ba647c961d8e50f0e076921e2"
19
  assert report["hugging_face_space"] == "solidprivacy/scrub"
 
30
  assert report["technical_deployment_verified"] is True
31
 
32
 
33
+ def test_app_verification_is_confirmed_by_user():
34
  report = _report()
35
 
36
+ assert report["functional_app_verification"] is True
37
+ assert report["functional_app_verification_status"] == "confirmed_all_green"
38
+ assert report["app_verified_at"] == "2026-08-03T20:35:00+02:00"
39
+ assert report["app_verification_source"] == "coordinator_user_confirmation"
40
+ assert report["app_verification_confirmation"] == "alles groen"
41
+ assert all(report["app_verification_checks"].values())
42
  assert report["human_review_required"] is True
43
  assert report["production_ready"] is False
44
 
workpackage_claims/scrub_wp_care_profile_app_verify.md CHANGED
@@ -3,7 +3,7 @@
3
  Repository: `solidprivacy-nl/scrub`
4
  Branch: `scrub-care-profile-app-verify`
5
  Claimed: 2026-08-03 19:05 Europe/Amsterdam
6
- Status: Actions/sync verified; awaiting coordinator/user app verification
7
 
8
  ## Scope
9
 
@@ -51,4 +51,4 @@ Completed:
51
 
52
  ## Closeout gate
53
 
54
- Do not mark completed until technical sync/health evidence is green and the coordinator/user confirms the visible app behavior.
 
3
  Repository: `solidprivacy-nl/scrub`
4
  Branch: `scrub-care-profile-app-verify`
5
  Claimed: 2026-08-03 19:05 Europe/Amsterdam
6
+ Status: completed and app-verified after Actions/sync verification
7
 
8
  ## Scope
9
 
 
51
 
52
  ## Closeout gate
53
 
54
+ Closeout gate passed: technical sync/health evidence is green and the coordinator/user confirmed `alles groen` at 2026-08-03 20:35 Europe/Amsterdam.