docs(specs): pseudo-anonymization-readlayer-v0 prebuild (#177) #338

Merged
pdurlej merged 1 commit from claude/pseudo-anonymization-readlayer-v0-prebuild into main 2026-05-23 10:31:04 +02:00
Collaborator

Summary

Pre-implementation Spec Kit for local pseudo-anonymization filter between cloud cousins (Hermes, claude-cloud, codex-cloud) and operator's vault content (Tier 0). Uses openai/privacy-filter (Apache 2.0, 1.5B sparse-MoE, 8 PII categories). Defense-in-depth on top of physical separation (vault-tier-3-architecture-v0).

BATCH G prebuild 4/4. Final prebuild in BATCH G.

What's in

  • docs/specs/pseudo-anonymization-readlayer-v0/ — 4-file Spec Kit
  • prompts/codex-pseudo-anonymization-readlayer.md — execution prompt

Slices

  • A (Full, FIRST): ADR committing to openai/privacy-filter + arch
  • B (Full, canary 3+3): privacy_filter.py with redact() + CI perf gate (<500ms median)
  • C (Full, canary 3+3): vault_read_anonymized.py gatekeeper
  • D (Full, canary 3+3): Hermes integration as first cloud cousin through filter
  • E (Lite): platformctl privacy-filter test CLI for operator verification

Constitution principles (P1-P8)

Defense-in-depth NOT primary / default-deny on filter fail / <500ms perf budget / audit log per access / complementary to physical separation / static 8-category policy / ADR-0018 conformance / local-first deployment.

Architecture

operator writes Iskra-i-Piotr/* (plaintext)
    │
    ▼
agent issues read
    │
    ▼
vault_read_anonymized.py gatekeeper
  ├── path-policy (Tier 0 OK, Tier 1/2 DENY)
  ├── openai/privacy-filter (M1 local)
  ├── mask spans → [REDACTED:PERSON] etc.
  └── audit log
    │
    ▼
agent receives masked content

Tier: Trivial per ADR-0007.

Refs #177 #178 #180 #237 #64

## Summary Pre-implementation Spec Kit for local pseudo-anonymization filter between cloud cousins (Hermes, claude-cloud, codex-cloud) and operator's vault content (Tier 0). Uses `openai/privacy-filter` (Apache 2.0, 1.5B sparse-MoE, 8 PII categories). Defense-in-depth on top of physical separation (`vault-tier-3-architecture-v0`). BATCH G prebuild 4/4. Final prebuild in BATCH G. ## What's in - `docs/specs/pseudo-anonymization-readlayer-v0/` — 4-file Spec Kit - `prompts/codex-pseudo-anonymization-readlayer.md` — execution prompt ## Slices - **A** (Full, FIRST): ADR committing to openai/privacy-filter + arch - **B** (Full, canary 3+3): `privacy_filter.py` with `redact()` + CI perf gate (<500ms median) - **C** (Full, canary 3+3): `vault_read_anonymized.py` gatekeeper - **D** (Full, canary 3+3): Hermes integration as first cloud cousin through filter - **E** (Lite): `platformctl privacy-filter test` CLI for operator verification ## Constitution principles (P1-P8) Defense-in-depth NOT primary / default-deny on filter fail / <500ms perf budget / audit log per access / complementary to physical separation / static 8-category policy / ADR-0018 conformance / local-first deployment. ## Architecture ``` operator writes Iskra-i-Piotr/* (plaintext) │ ▼ agent issues read │ ▼ vault_read_anonymized.py gatekeeper ├── path-policy (Tier 0 OK, Tier 1/2 DENY) ├── openai/privacy-filter (M1 local) ├── mask spans → [REDACTED:PERSON] etc. └── audit log │ ▼ agent receives masked content ``` Tier: Trivial per ADR-0007. Refs #177 #178 #180 #237 #64
docs(specs): pseudo-anonymization-readlayer-v0 prebuild (#177)
All checks were successful
base-is-main / guard (pull_request) Successful in 1s
canary-required / collect-diff (pull_request) Successful in 3s
patchwarden-pr-sanity / collect-diff (pull_request) Successful in 3s
canary-required / canary (pull_request) Successful in 12s
patchwarden-pr-sanity / sanity (pull_request) Successful in 21s
cd82e620d3
Pre-implementation Spec Kit for adding local pseudo-anonymization
filter between cloud cousin agents and operator's vault content
(Tier 0). Defense-in-depth on top of physical separation established
by vault-tier-3-architecture-v0 (#178+#180).

Target model: openai/privacy-filter (Apache 2.0, 1.5B sparse-MoE,
128k context, 8 PII categories: account/address/email/person/phone/
url/date/secret). Local M1 CPU/MPS deployment default.

5 slices:
- A (Full, FIRST): ADR draft committing to openai/privacy-filter + arch
- B (Full, canary 3+3): privacy_filter.py with redact() API + perf gate
- C (Full, canary 3+3): vault_read_anonymized.py gatekeeper wrapper
- D (Full, canary 3+3): Hermes integration as first cloud cousin through filter
- E (Lite, parallel): platformctl privacy-filter test CLI for operator verification

Constitution (P1-P8): defense-in-depth NOT primary, default-deny on
fail, <500ms perf budget, audit log per access, complementary to
physical separation, static 8-category policy, ADR-0018 conformance,
local-first deployment.

Sibling: vault-tier-3-architecture-v0 (#178+#180) — complementary, may
share capabilities.yaml denylist when both land.

Tier: Trivial per ADR-0007 (Spec Kit + prompt, docs-only).

Refs #177 #178 #180 #237 #64 #142
Sign in to join this conversation.
No reviewers
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform!338
No description provided.