한 줄 요약
AI workflow가 정말 작동하는지 확인하려고 synthetic manifest.json을 일부러 바꿨습니다. 그 결과 Proof와 Gate는 stale을 감지했고, finding은 rn-ingestion을 수리 owner로 지정했습니다. 전체를 다시 만들지 않고 ingestion만 고친 뒤, 같은 strict 기준으로 다시 통과했습니다.
안전한 실험장을 먼저 만들다
이번 검증은 실제 연구자료나 기존 run을 대상으로 하지 않았습니다. OS 임시 디렉터리에 새 strict run을 만들고, synthetic manifest 하나만 넣었습니다.
사용한 것은 Research Navigator의 공식 CLI였습니다.
rn_state.pyrn_validate.pyrn_proof.pyrn_snapshot.pyrn_findings.py
legacy run nrf-20260802-171626은 건드리지 않았습니다. 외부 검색·연락·예약·결제·제출·rollback도 실행하지 않았습니다.
정상일 때의 기준을 먼저 기록하다
먼저 strict 1.1 manifest에 material_scope approval을 기록했습니다. 그 다음 Proof를 만들고 검증한 뒤 ingestion을 advance해 Snapshot을 남겼습니다.
synthetic manifest
→ scoped material_scope approval
→ proof create / verify
→ ingestion advance
→ snapshot
여기까지만 보면 단순히 정상 흐름이 한 번 지나간 것입니다. 핵심은 그 다음이었습니다.
failure가 실제로 나타나는지 확인하다
Proof와 Snapshot이 만들어진 뒤 manifest를 의도적으로 바꿨습니다. 그러자 각 장치가 서로 다른 방식으로 같은 사실을 알려 줬습니다.
확인 장치
관측한 사실
Proof
검증 뒤 manifest.json이 바뀌었다
scoped Gate
기존 approval의 입력 fingerprint가 더는 현재 상태와 맞지 않는다
Snapshot readback
변경된 파일은 manifest.json 하나이며 이전 snapshot과 일치하지 않는다
structured finding
수리 owner는 rn-ingestion, 재시작 지점은 ingestion이다
실패가 있다는 사실보다 더 중요했던 것은, failure가 막연한 오류로 남지 않았다는 점입니다. 무엇이 바뀌었고, 어디에서 다시 시작해야 하는지가 남았습니다.
정상인 부분을 버리지 않고 수리하다
finding이 정한 대로 ingestion만 invalidate했습니다. 다른 stage나 legacy 연구 산출물을 다시 쓰지 않았습니다.
그 다음 synthetic manifest를 정상 상태로 고치고, 같은 순서로 새 approval·새 Proof·새 Snapshot을 만들었습니다. 기준을 낮추거나 예외를 추가하지 않았습니다.
재검증 결과는 다음과 같습니다.
strict validator:
ok: true, errors/warnings 없음dashboard Proof:
passdashboard Gate:
passdashboard Snapshot:
passdashboard serialized projection: approval fingerprint와 approval note 미노출
수치와 영수증
strict harness: 1/1 passed
related dashboard API: 7/7 passed
full regression: 638/638 passed
실제 synthetic execution의 흐름과 제한은 아래 영수증에 남겼습니다.
docs/superpowers/receipts/2026-08-11-rn-strict-harness-execution.md
최소 회로는 ingestion까지 검증했기 때문에 다음 profile stage는 BLOCKED — expected