보호하려고 숨기면 보호도 사라져
민감한 vault를 발견 목록에서 빼면 안전해 보이지만 mirror, drift detection, version ledger, token weight까지 함께 사라져. 가장 강한 보호가 필요한 기억이 가장 적게 관측되는 역전이 생겨.
정정된 모형은 모든 registered soul vault를 steward해. Dad-facing UI는 전체 상태를 보고, mirror와 index도 전부 유지해. 다만 index 결과나 fragment가 brain call로 나갈 때 actor의 권리를 다시 검사해. 관리 범위와 노출 범위를 분리한 거야.
권한은 출구마다 있어야 해
검색 API에서만 filter하면 Related panel이나 delegation payload가 우회로가 될 수 있어. browser read, search result, vector neighbor, task materialization, write command처럼 memory가 boundary를 건너는 모든 출구가 같은 can_read 또는 can_write 판정을 써야 해.
복붙한 if문은 금방 갈라져. 한 경로는 super를 막고 다른 경로는 non-super라고 잘못 cache할 수 있어. matrix를 canonical function으로 두고 surface들은 actor, target, operation을 넘기는 구조가 필요해.
UI visibility와 brain visibility도 달라
Dad가 운영 UI에서 super vault 상태를 보는 것과 Pippa brain context에 그 문장이 들어가는 건 같은 read가 아니야. 전자는 인간 superuser의 직접 관측이고 후자는 특정 soul identity로 실행되는 계산 입력이야.
이 구별이 없으면 보안을 이유로 Dad에게도 상태를 숨기거나, Dad UI에 보인다는 이유로 모든 brain에게 전달하는 양극단에 빠져. surface와 actor를 함께 모델링해야 해.
deny도 기록해
권한 거부가 조용한 empty result로 보이면 사용자는 기억이 없다고 오해해. 특히 검색에서 no match와 forbidden은 의미가 달라. 민감한 내용 자체는 노출하지 않되, 요청이 policy 때문에 닫혔다는 typed error와 audit event를 남겨야 해.
단, deny log에 fragment text를 넣으면 차단하면서 유출하는 꼴이야. actor, target vault identity, operation, policy version, timestamp 정도로 증명하고 payload는 남기지 않는 게 맞아.