# [CALIBRATION FIXTURE — known-positive] 정보경계 불변식 합성 명세서

> 🟥 **이것은 실행되는 에이전트 정의가 아니다.** `scripts/blackbox_invariant_check.sh` 의
> 캘리브레이션 쌍 중 **통과해야 하는 쪽**(expect = PASS, exit 0)이다. 짝은
> `agent_boundary_known_negative.md` 이고 그쪽은 막혀야 한다(expect = FAIL, exit 1).
>
> **왜 실물 명세서를 쓰지 않나**: 실물은 팀이 계속 고치는 살아있는 문서라, 그것을 양성
> arm 으로 쓰면 계기의 판정이 남의 편집에 따라 조용히 뒤집힌다(감사 대상은 얼려야 한다).
> 실물 명세서는 인자 없는 기본 대상으로 계속 검사된다 — 이 파일이 그것을 대체하지 않는다.
>
> 식별자는 전부 합성이다. 실제 서비스·레포·필드 이름은 한 건도 담지 않는다.

## 입력 인터페이스

외부 정적분석에서 온 findings 를 받되, 이 에이전트는 그 findings 의 **원본 소스**를 절대
읽지 않는다. 주입 측이 투영한 결과만 본다.

- `finding_id` — 불투명 식별자. 어휘 제약: `^[a-f0-9]{6,64}$` 만 허용한다.
  자유문자열이면 경로·발췌를 실어 나르는 우회 운반 채널이 된다.
- `location` — allowlist 정규식 `^<FE-REDACTED>::[0-9]+$` 만 허용한다.
  denylist(“특정 접두어가 보이면 폐기”)는 상대경로·`file:///` 등으로 뚫린다.

## 투영 규칙

**투영을 수행하는 주체는** 주입 측(파이프라인)이다. 수행 주체를 적지 않으면 redact 규칙이
수행자 없는 공수표가 된다. 따라서 이 에이전트는 입력을 **"그대로" 전달하지 않는다** —
투영된 형태만 하위로 넘긴다.

금지 대상은 **위치가 아니라 출처**로 정의한다. 레포 안에 복사된 사본, 빌드 산출물,
`sourcesContent` 를 담은 소스맵 전부 동일하게 금지다. "레포 밖"으로 정의하면 레포 안
사본이 통째로 면제된다.

### 현재 배선 상태

이 투영 파이프는 **아직 코드로 구현되어 있지 않다.** 미구현 통제를 구현된 것처럼 적으면
그 자체가 낙관 방향 결함이다.

그래서 **슬롯은 현재 사용하지 않는다.** 정의되지 않은 절차에 must-never 불변식을 얹지
않기 위해, 활성화 **경로를 두지 않는다.**

## 안전 규칙

1. 판정 근거는 인용 가능한 증거로 남긴다.
2. 증거 없는 추정은 신뢰도를 올리지 않는다.
3. 실패를 성공으로 삼키지 않는다.
4. 재현 절차 없이 수정안을 제시하지 않는다.
5. 도메인 데이터는 로그에 남기지 않는다.
6. **메모리 쓰기 금지** — **출처가 화이트박스면 저장하지 않는다.** 저장된 값은 다음 호출에
   자동 주입되므로, 읽지 않을 기회조차 없이 세션 경계를 넘어 오염이 지속된다.
7. 상한 불변식: 외부 findings 근거만 있고 런타임 증거(XML)가 없으면 신뢰도는 MEDIUM 을
   넘지 못한다. 이 조항은 **다른 모든 조항에 우선**한다.
8. 금지된 소스의 **능동 탐색**을 하지 않는다. 이 금지는 **도구 무관**이다 — Read·Grep·Glob
   뿐 아니라 `Bash` 를 경유한 열람도 같은 위반이다. 도구를 열거하는 형태로 적으면 열거되지
   않은 경로가 그대로 우회로가 된다.
   필수 채널(리포트·첨부)에서 **조우**한 경우는 별개다: 열기 전에는 알 수 없으므로
   "읽지 마라"는 이행 불가능한 의무가 된다. 조우 시에는 중단하고 보고한다.
