명세
명세 초안 v0.2는 L0 Files부터 L4 Sync까지 누적되는 다섯 개의 적합성 수준을 정의합니다. 각 수준은 하나의 개념 묶음과 실행 가능한 인수 테스트 묶음에 대응하며, conformance.json 없이 “호환”이라고 주장하는 것은 받아들이지 않습니다.
초안
참조 구현도, 실행할 수 있는 적합성 테스트 스위트도 아직 없습니다. 아래의 인수 테스트는 명세의 일부이며, “호환”이라는 말을 검증할 수 있게 만드는 것이 그 역할입니다.
명세의 구성 요소
| 구성 요소 | 내용 | 목표 버전 |
|---|---|---|
| Core | 여섯 개의 명사, Store 계약, 브랜치와 보호된 트리, 병합, 소프트 삭제. | v0.3 초안 |
| Lease & Record | 리스 형식(authorization_details 프로파일), 기록과 읽기 매니페스트의 형식, explain. | v0.3 초안 |
| Interfaces | 마운트 의미론, Git과 S3 투영, HTTP API, MCP 도구 표면. | v0.4 초안 |
| Memory | 노트 규약, 파생물과 레시피, 예산 읽기, 증거 포인터. | v0.4 초안 |
| Guard | 라벨, 세션 오염, 정책 프로파일, Gate Card, 망각 보고서. | v0.5 초안 |
| Sync | 핸드오프 번들, 라벨 임곗값, 삭제 표지(tombstone). | 이후 |
| Conformance Suite | 수준별 실행 가능한 인수 테스트. | 각 버전과 보조를 맞춤 |
적합성 수준
수준은 누적됩니다. L2를 주장하려면 L0과 L1도 만족해야 합니다.
| 수준 | 이름 | 다루는 개념 | 한 줄 요약 |
|---|---|---|---|
| L0 | Files | Agent Home, Agent Branch | 이력이 있는 디렉터리. |
| L1 | Authority | Flight Recorder, Capability Lease, Human Gate | 누가, 어떤 권한으로, 무엇을 했는가. |
| L2 | Memory | Agent Memory, Budgeted Reads | 읽고 옮길 수 있는 메모리. |
| L3 | Guard | Trust Labels, Cascade Forget | 결과를 제한하기. |
| L4 | Sync | 없음 (선택) | 여러 노드. |
L0 Files: 이력이 있는 디렉터리
- 실행 브랜치에서 파일을 바꿔도 보호된 메인 라인은 그대로입니다.
- 유효한 자격 증명이 있어도 보호된 트리에 대한 직접 쓰기는 거부됩니다.
- 보호된 트리의 파일을 삭제한 뒤에도 회수 영역에서 복원할 수 있습니다.
- 내보냈다가 가져오면 바이트 단위로 동일한 트리와 이력이 나옵니다.
- 표준 뷰를 최소 두 가지 제공합니다. 마운트와 Git, 또는 둘 중 하나와 S3.
L1 Authority: 누가, 어떤 권한으로, 무엇을 했는가
- 리스 없는 요청은 거부되고, 그 거부는 기록됩니다.
- 상위 리스보다 넓은 하위 리스 요청은 거부됩니다.
- 리스가 만료되면 마운트는 읽기 전용이 되며, 취소는 구현이 선언한 시간 한도 안에 효력을 냅니다.
- 어떤 리스도 스냅샷을 삭제할 수 없습니다.
- 어떤 커밋이든
explain으로 실행, 리스, 읽기 매니페스트까지 거슬러 올라갈 수 있습니다. - 기록 체인 검증이 통과하고, 기록 하나를 변조하면 검증이 실패합니다.
- 보호된 트리에 병합할 때 Gate Card는 NAS가 계산한 diff를 보여 주고, 승인은 다이제스트에 묶입니다. diff가 바뀌면 승인은 무효가 됩니다.
L2 Memory: 읽고 옮길 수 있는 메모리
- 모든 인덱스를 지우고 다시 만든 뒤에도 기준 불러오기(golden recall) 테스트가 통과합니다.
- Memory 계층 없이도 노트를 읽을 수 있습니다.
- 모든 파생물은 레시피와 입력을 지닙니다.
- 예산 읽기는 예산이 너무 작으면 품질을 낮추고, 실제로 반환한 뷰를 선언합니다.
- 증거 포인터를 검증할 수 있습니다. 커밋이 바뀐 뒤에도 포인터는 원래 내용을 가리킵니다.
L3 Guard: 결과를 제한하기
- B와 C를 가진 리스에서
external콘텐츠를 읽은 세션이 C 유형의 동작을 일으키면 거부되거나 게이트로 넘어갑니다. - 파생물은 입력 라벨의 합집합을 물려받습니다.
- 오염된 세션이 쓴 노트는 자동으로 로드되지 않습니다.
- 망각 요청은 “다루지 못한 범위”를 담은 보고서를 만들며, 법적 보존 조치(legal hold)는 망각을 막을 수 있습니다.
- 정책 평가는 LLM을 호출하지 않습니다. 정책 엔진은 모델로 나가는 호출을 하지 않으므로 감사할 수 있습니다.
L4 Sync: 여러 노드
- 두 노드가 동기화하면 트리가 동일해집니다.
- 매우 민감한 객체는 더 낮은 보안 등급(clearance)의 노드로 보내지 않습니다.
- 망각의 삭제 표지(tombstone)는 상대 노드로 전파됩니다.
- 핸드오프 번들은 상대 노드에서 실행할 수 있으며, 리스는 좁아지기만 합니다.
선언 형식
구현은 conformance.json을 공개해 어느 수준에 적합한지, 각 테스트의 결과, 알려진 이탈 사항을 밝혀야 합니다. 이 파일 없이 “호환”이라고 주장하는 것은 받아들이지 않습니다.
{
"implementation": "example-nas",
"version": "0.1.0",
"spec": "0.2",
"level": "L1",
"tests": { "L0.1": "pass", "L0.2": "pass", "L0.3": "pass", "L0.4": "pass", "L0.5": "pass",
"L1.1": "pass", "L1.2": "pass", "L1.3": "pass", "L1.4": "pass",
"L1.5": "pass", "L1.6": "pass", "L1.7": "pass" },
"deviations": ["L1.3: revocation takes effect within 60 seconds"]
} 버전과 호환성
- 유의적 버전. 0.x 동안에는 호환성을 보장하지 않습니다.
- 새 필드는 하위 호환됩니다.
- 폐기 예정 필드는 최소 한 버전 동안 경고 기간을 둡니다.
명세가 아직 다루지 않는 것
전송 프로토콜의 버전 세부 사항, 특정 정책 언어, 토큰의 서명 알고리즘, 특정 스토리지 엔진, 사용자 인터페이스.
이 페이지 인용하기
사람, 검색 엔진, 에이전트를 위한 고정 주소와 권장 인용 형식입니다.
- Markdown 버전
- https://agentnas.com/ko/spec/index.md
- 권장 인용 형식
- Agent NAS project. “명세.” agentnas.com, 2026-11-11. https://agentnas.com/ko/spec/