Problem Statement. anonymize() returns a result; that result is logged (potentially
exposing anonymized text) or dropped. Long-term, the audit trail of "we removed PII X
from doc Y" is important.
Technical Context. app/ai-service/services/pii_scrubber.py.
Expected Outcome. Successful anonymizations are persisted to a periodic store
(pii_decisions table or Postgres), with a pii_decisions_retention_days config.
Acceptance Criteria.
- E2E test verifies that after a month, decisions are pruned.
- Search API (
/v1/ai/pii-decisions) returns recent decisions for auditors.
Files or modules likely to be affected.
app/ai-service/services/pii_scrubber.py,
new app/ai-service/persistence/pii_decisions.py.
Difficulty. Medium
Estimated effort. M
Test Coverage — Issues 67–74
Backlog item #66 from `docs/maintainer-issue-backlog.md.
Problem Statement.
anonymize()returns a result; that result is logged (potentiallyexposing anonymized text) or dropped. Long-term, the audit trail of "we removed PII X
from doc Y" is important.
Technical Context.
app/ai-service/services/pii_scrubber.py.Expected Outcome. Successful anonymizations are persisted to a periodic store
(
pii_decisionstable or Postgres), with apii_decisions_retention_daysconfig.Acceptance Criteria.
/v1/ai/pii-decisions) returns recent decisions for auditors.Files or modules likely to be affected.
app/ai-service/services/pii_scrubber.py,new
app/ai-service/persistence/pii_decisions.py.Difficulty. Medium
Estimated effort. M
Test Coverage — Issues 67–74
Backlog item #66 from `docs/maintainer-issue-backlog.md.