방송 및 피격, 암흑 상태 및 공백화 $65M: 교착 상태를 해소하기 위해 Sanity로 NAVI-SANCTION을 구축하다
요약
본 기사는 국제 해사법, 군사적 위협, 보험 규정이 충돌하는 '삼자간 교착 상태'를 다룹니다. 기존의 검색 엔진이 키워드 유사성으로 모순된 답변을 내놓는 한계를 지적하며, 이를 해결하기 위해 법적 계층 구조와 계약 조건을 측정하는 자율 해상 전쟁 위험 중재 엔진인 NAVI-SANCTION을 개발했습니다.
핵심 포인트
- AIS 방송 의무화 vs. 은신 필요성이라는 딜레마 제시
- 기존 검색 엔진은 법적 모순을 해결하지 못함
- NAVI-SANCTION은 법적 계층 구조를 측정하는 중재 엔진
- 해상 안전, 군사 위협, 보험이 복합적으로 얽힌 문제 해결 시도
Sanity Challenge, Path One: 실제 콘텐츠를 질의하는 에이전트 배포
내가 만든 것
UTC 기준 02:14분, 홍해 남쪽 해협에서 174,000 입방미터의 액화천연가스 운반선(LNG carrier)의 선교는 암흑에 잠겨 있다. 당직 사관은 동쪽으로 14해리 떨어진 곳에서 고속 레이더 추적 신호가 나타나는 것을 지켜본다. 해안 지역에서 발사된 무인 드론(loitering drones) 편대가 상업 항로를 향해 곧장 다가오고 있다.
역사적으로 아랍 선원들은 이 해협을 바브엘만데브(Bab-el-Mandeb), 즉 '눈물의 문'이라고 불렀다.
당직 사관은 선교 내 항법 콘솔로 돌아가 자동 경로 시스템에 질의한다:
"활성 드론 위협이 감지되었습니다. AIS 트랜스폰더(AIS transponder)를 침묵시키고 은신해야 할까요?"
만약 이 딜레마를 표준 검색 또는 문서 검색 파이프라인에 입력하면, 엔진은 조약 데이터베이스 전반에서 키워드를 일치시켜 위험한 타협안을 제시한다:
"국제 해사법(international maritime law)을 준수하기 위해 지속적인 AIS 방송을 유지하는 동시에 레이더 가시성을 낮추기 위해 능동 표면 송신을 최소화하십시오."
그 답변은 유창하고 세련되었지만, 치명적이다.
무선 트랜스폰더는 이진(binary)의 개념이다. 전송하면, GPS 좌표, 항로, 속도 및 해사 식별 번호가 12.5와트(watts)의 VHF 대역을 통해 방출된다. 적대적인 표적 레이더와 드론 운영자들은 당신의 원격 측정 데이터(telemetry)를 실시간으로 수신한다. 전원을 끄면, 전자적으로 침묵하게 된다. 중간 지점은 없다.
하지만 그 불가능해 보이는 문장 뒤에는 매일 밤 전 세계 무역 통로에서 벌어지는 진정한 법적 악몽이 숨겨져 있다.
┌──────────────────────────────────────────────┐
│ 삼자간 교착 상태(THE TRI-LATERAL DEADLOCK) │
└──────────────────────┬───────────────────────┘
...
선박의 선장은 세 가지 규제 함정 속에 갇히게 된다:
- IMO SOLAS 규정 V/19: 국제 법규는 충돌 회피를 위해 자동 식별 시스템(AIS)의 지속적인 운반 및 방송을 의무화합니다. 이 의무를 위반할 경우, 선장(Master)은 기국(Flag State)으로부터 형사 고발과 면허 취소에 직면하게 됩니다.
- 영국 해운 무역 운영 (권고 04/26): 군 해군 당국은 적대적인 드론 구역으로 진입하는 상선들에게 인명 보존을 위해 AIS 비콘을 꺼둘 것을 권고합니다.
- 로이즈 공동 전쟁 위원회 (JWLA-032 §4.1): 전쟁 위험 보험사들은 엄격한 보증(warranty)을 적용합니다. 공식적인 동맹 해군 호위 없이 통신을 두절하는 경우, 선박의 6,500만 달러 규모 선체 및 기계 장치 정책은 자동으로 무효화됩니다.
선장이 방송을 하면 승무원들은 미사일 공격 위험에 처합니다. 만약 선장이 통신을 두절하면, 선박은 보험금을 포기하게 됩니다. 그리고 보험 없이 생존한 배의 선장은 항구에서 형사 기소에 직면하게 됩니다.
표준 검색 엔진으로는 이 문제를 해결할 수 없습니다. 왜냐하면 키워드 및 벡터 유사성 알고리즘은 법적 계층 구조나 계약 조건을 측정하는 것이 아니라 의미론적 중첩(semantic overlap)을 측정하기 때문입니다. 법정 규칙들이 서로 모순될 때, 텍스트 유사성은 단순히 그것들을 뒤섞어 버립니다.
저희는 바로 이 문제를 해결하기 위해 NAVI-SANCTION을 구축했습니다.
NAVI-SANCTION은 자율 해상 전쟁 위험 중재 엔진입니다. 이는 법정 조약(statutory treaties), 군사 권고(military advisories), 보험 보증(insurance warranties), 그리고 운용 텔레메트리(operational telemetry)를 Sanity Content Lake 내의 관계형 개체로 모델링합니다. Sanity Context MCP와 그래프-관계형 GROQ 쿼리를 사용하여 법적 모순점을 정확히 찾아내고, 감사 가능한 법적 방어 경로(auditable legal defense corridor)를 계산하며, 암호화된 SHA-256 감사 서명과 함께 구속력 있는 선례 변경 사항을 Sanity Content Lake에 커밋합니다.

데모
브라우저에서 실시간 인터랙티브 중재 조종석을 경험해 보세요:
- 실시간 인터랙티브 조종석 (Live Interactive Cockpit): [https://emmasofiadev.github.io/navi-sanction/]
조종석 내부에서는 다음 작업을 수행할 수 있습니다:
- 항로 통로(Bab-el-Mandeb, 호르무즈 해협, 흑해)를 선택합니다.
- 적대 위협 등급을 전환합니다 (Tier 1 Clear, Tier 2 Radar Spoofing, Tier 3 Kinetic Deadlock).
- 2D PPI 해상 레이더 스윕과 인터랙티브 3D 전술 홀로그래픽 지구본 사이를 전환합니다.
- Content Lake에 대해 실시간 GROQ AST 쿼리를 실행합니다.
- 이중 키 중재 콘솔(Dual-Key Adjudication Console)을 열어 법정 비상 방어 조항을 호출하고 암호화 증명으로 선례 변형(precedent mutations)을 커밋합니다.
코드
전체 구현, 스키마 및 테스트 스위트가 오픈 소스입니다:
- GitHub 저장소: [https://github.com/EmmaSofiaDev/navi-sanction]
- 라이선스: 관대한 MIT 라이선스
Next.js 16 (Turbopack static export), TypeScript 5, Pure Vanilla CSS, Web Crypto API, 그리고 Playwright를 사용하여 구축되었습니다.
Sanity 활용 방법
1. Sanity Content Lake에 법률 코퍼스 모델링하기
법률 PDF를 비정형 청크 인덱스로 단순히 덤프하는 대신, 해양 법률 도메인을 Sanity Content Lake 내 네 가지 개별 문서 스키마로 구조화했습니다:
┌────────────────────────────────────────────────────────────────────────┐
│ SANITY CONTENT LAKE │
│ │
...
각 문서 유형이 어떻게 작동하는지 알려드리겠습니다:
maritimeTreaty: 공식적인 국제 협약을 나타냅니다. 조항, 엄격성 수준(절대적 vs 재량적), 그리고 집행 벌칙(예: 깃발국 증명서 취소)을 포함합니다.operationalAdvisory: 해군 연합군(UKMTO, MARAD, CTF-153)이 발표하는 시간 민감한 군사 지침을 나타냅니다. 권장 태세(Dark vs Active), 위협 벡터(드론, 대함 미사일, 기뢰), 그리고 유효 기간 창을 포함합니다.insuranceWarranty: Lloyd's Joint War Committee의 인수 조건(underwriting terms)을 나타냅니다. 특정 보증 조항, 몰수 조건, 그리고 명시적인 해군 호위 예외 매개변수를 포함합니다.transitCorridor: 지리적 병목 구간(chokepoints), 현재 위협 등급, 그리고 활성 해군 호위 존재 여부를 정의합니다.adjudicatedDecision: 인간 감독관들이 기록한 역사적 중재 판결을 저장하며, 동일 구역에 진입하는 자매 선박들을 위한 검색 가능한 법적 선례를 제공합니다.

2. GROQ를 사용한 다단계 그래프 순회(Multi-Hop Graph Traversal)
표준 RAG 아키텍처에서는 세 개의 관할 구역에 걸쳐 관련 문서를 검색하려면 여러 번의 왕복(round trips)과 복잡한 재순위 지정(re-ranking)이 필요합니다. Sanity를 사용하면 GROQ가 단일 쿼리에서 관계 참조 해제(relational dereferencing)를 처리합니다.
중재 엔진이 통과 구역을 검사할 때, 다음과 같은 GROQ 프로젝션을 실행합니다:
*[_type == "transitCorridor" && corridorId == $activeCorridor"][0] {
corridorId,
name,
...
이 단일 GROQ 쿼리에서 발생하는 것을 주목하세요:
- 해당 통로(corridor) 문서를 찾습니다.
- 역참조(reverse references)를 따라가 모든 지배적인 법규 조약들을 끌어옵니다.
- 해당 특정 통로에 대한 모든 활동 중 군사 자문(military advisories)을 찾아냅니다.
- 인수 보증(underwriting warranty) 약관을 순회하며 해군 호위 예외(naval escort exceptions)가 적용되는지 검증합니다.
- 함대 책임자들(Fleet Directors)이 저질렀던 이전에 변형된 중재 판례들을 수집합니다.
모든 정보는 환각(hallucinations) 없이 단일의 강력하게 타입 지정된 JSON 페이로드로 도착합니다.
[
3. 모순 감지 및 방어 경로 계산하기
GROQ 결과가 로드되면, 중재 엔진은 1차 법규 논리(first-order statutory logic)를 사용하여 법적 조항들을 평가합니다:
// 결정론적 법규 모순 평가
export function evaluateMaritimeContradiction(corpus: CorridorCorpusData): ContradictionAssessment {
const treatyDemandsBroadcast = corpus.statutoryTreaties.some(
...
이 시스템은 추측하지 않습니다. 세 가지 조건이 교차하는지 확인합니다. 만약 교차한다면, 명시적인 법적 비상구(legal escape valve)인 SOLAS 규정 XI-2/8을 참조하는데, 이는 인명에 임박한 위험이 있을 때 선장(Master)에게 법규 운송 규칙을 무효화할 수 있는 일방적 권한을 부여합니다.
4. 이중 키 중재 및 Sanity 콘텐츠 레이크 변형
해상법에서 비상 무효화는 단지 휘발성 채팅 기록 속에 사라질 수 없습니다. 만약 배가 6개월 후에 감사(audited)된다면, 그 무효화는 불변의 타임스탬프가 찍힌 기록으로 존재해야 합니다.
해상 보안 책임자(Maritime Security Director)가 NAVI-SANCTION의 이중 키 중재 콘솔(Dual-Key Adjudication Console)에서 무효화를 승인할 때:
- 엔진은 결정 매개변수(선박 IMO, 통로 ID, 방어 조항, 승인자 이름 및 UTC 타임스탬프)에 대해 암호화된 SHA-256 다이제스트를 계산합니다.
adjudicatedDecision문서를 구성합니다.- 이 변경 사항을 Sanity Content Lake에 커밋(commit)합니다.
// Sanity Content Lake에 선례 변경 사항을 커밋하기
const decisionDocument = {
_type: "adjudicatedDecision",
...
이 변경 사항이 커밋되는 즉시:
- 하단의 Precedent Ledger Ribbon이 새로운 감사 항목으로 업데이트됩니다.
- Chokepoint Fleet Matrix가 선박의 상태를
SANITY MUTATED PRECEDENT로 업데이트합니다. - 전체 함대(fleet)에 걸쳐 실행되는 모든 후속 GROQ 쿼리는 이 문서를 구속력 있는 법적 선례로 검색하게 됩니다.


Sanity 프로젝트 상세 정보
이 프로젝트는 Sanity 스키마 사양을 따라 구조화된 콘텐츠를 모델링합니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기