# insuniverse 정책 문서 인덱스

이 파일은 `docs/` 아래 문서가 **어디에 놓이는지**와 **어느 순서로 읽는지**를 고정한다.
정본은 `.claude/meta/05-final-spec.md` §4(문서 트리)와 §3(상태 모델)이며, 이 파일은 그 사본이다.

## 파서 계약

`docs/_meta/verify/verify.sh` 의 `run_index_gate` 가 이 파일을 읽는다. 아래 형태가 계약이다.

- `## 문서 트리` 절의 **코드펜스 1개**가 트리 정본의 사본이다. 들여쓰기가 계층을 만든다 — 루트 `docs/` 는 들여쓰기 0, 하위 디렉터리는 2칸, 파일은 4칸이다. 한 행에 파일 토큰이 여러 개 올 수 있다(`10-server/` · `20-site/` · `30-admin/` 블록).
- **자기 참조 1건**: 이 파일 자신(`docs/00-index.md`)이 트리에 등장한다. 그래서 계수가 두 값이다 —
  - `index.entry_count` = 코드펜스가 담은 경로 **전수** = **56**
  - `index.doc_count` = 자기 참조 1건을 뺀 값 = **55**
  우산 PRD 가 말하는 문서 수는 뒤쪽 값(`index.doc_count`)이다. 게이트는 자기 참조 경로를 리터럴이 아니라 `$INDEX` 의 ROOT 상대경로에서 유도하고, 그 경로가 이 파일과 정본 양쪽에 **정확히 1회** 등장하는지와 두 계수의 차가 정확히 1 인지를 단언한다.
- `## 상태 범례` 절의 표는 첫 열이 `` `<status>` `` 형태이며 **순서까지** `05-final-spec.md` §3 과 같다.
- `## 폐기 목록` 절은 두 문서를 **링크 문법**으로 건다. 트리 안 경로 등장과 구별된다.

절 제목을 바꾸면 추출이 비고, **추출 0건은 통과가 아니라 실패**다.

## 이 트리는 잠정이다 — 개정 경로

파일 단위 문서 목록을 가진 정본은 `05-final-spec.md` §4 하나뿐이다. 우산 PRD `insuniverse-policy-docs.prd.md` §PRD 분할 맵은 디렉터리 glob(`docs/10-server/**`)만 규정하고, 문서 PRD 5종은 아직 전부 `*Status: DRAFT` 이며 `insuniverse-docs-50-domain.prd.md` §Open Questions 는 *"server modules 40개를 8개 문서로 묶는 경계가 타당한가"* 를 열어 둔 상태다. **게이트는 사본이 정본과 같은지를 증명하지, 정본이 옳은지를 증명하지 않는다.**

트리를 고쳐야 하면 경로는 **3단계**다:

> **정본 개정 → `00-protocol` 소유자가 인덱스 재생성 → `bash docs/_meta/verify/verify.sh --update`**

정본만 고치고 `--update` 를 돌리면 막힌다 — `run_index_gate` 는 이 파일과 정본을 exact-diff 하고, `--update` 는 그 검사를 담은 `validate_candidate` 를 먼저 통과해야 하기 때문이다. 인덱스 재생성이 반드시 중간에 낀다.

하류 PRD 에게 이 파일이 **읽기 전용**이라는 규약(우산 §공유 자산 충돌 방지 프로토콜)은 그대로다. 위 3단계는 정본을 고친 뒤 `00-protocol` 소유자가 인덱스를 다시 만드는 경로이며, **트리 코드펜스는 위임받은 PRD 가 손으로 고친다 — 정본과 사본을 같은 변경에서 함께.** 이 저장소에 인덱스 생성기는 없다(2026-08-24 실측). 3단계의 "인덱스 재생성" 은 그 손 편집을 가리키며, 사본만 고치면 `run_index_gate` 의 exact-diff 가 즉시 막는다. 3단계의 사정거리는 `index.entry_count` · `index.doc_count` · `index.tree_sha256` 이 걸린 코드펜스와 `## 상태 범례` · `## 폐기 목록` 이다 — 어떤 추출 계약과도 겹치지 않는 새 절은 그 밖이며 `index.*` 를 한 키도 움직이지 않는다(`## 흐름으로 읽기` 가 그 사례다). `index.tree_sha256` 이 `golden.txt` 에 있으므로 모든 개정은 명시적 `--update` 로 드러난다 — 조용한 발산이 아니라 기록된 개정이다.

## 읽는 순서

**선행 개념 없이 읽히는 문서가 없도록.** 번호가 곧 읽는 순서다(`05-final-spec.md` §4 `:283`).

| 절 | 내용 | 소유 PRD |
|---|---|---|
| `01-foundation/` | 용어 · 코드 사전 · 에러코드 계층 | `insuniverse-docs-20-foundation-access.prd.md` |
| `02-access/` | 인증 · 역할 · 권한 · 메뉴 권한 · 열람 토큰 | `insuniverse-docs-20-foundation-access.prd.md` |
| `03-contracts/` | 입력 검증 · API 응답 · 데이터 모델 · 상태 전이 · 대외 계약 | `insuniverse-docs-30-contracts-limits.prd.md` |
| `04-limits/` | 금액 상한 · TTL · 레이트리밋 · 기능 게이트 | `insuniverse-docs-30-contracts-limits.prd.md` |
| `05-schedules/` | 보존 주기 · 정산 주기 · 모니터링 · 런타임 토폴로지 | `insuniverse-docs-40-runtime-vendor-legal.prd.md` |
| `06-vendors/` | 벤더별 성공·실패 의미 · 결제 · 메시징 | `insuniverse-docs-40-runtime-vendor-legal.prd.md` |
| `07-legal/` | 약관 · 개인정보 · 감사 로그 | `insuniverse-docs-40-runtime-vendor-legal.prd.md` |
| `10-server/` | server modules 40개 → 8개 도메인 문서 | `insuniverse-docs-50-domain.prd.md` |
| `20-site/` | site features 26 / pages 19 | `insuniverse-docs-50-domain.prd.md` |
| `30-admin/` | admin actor 3분할 콘솔 | `insuniverse-docs-50-domain.prd.md` |
| `90-history/` | prod 릴리스 연대기 · 에픽 서사 · 발산 현황 | `insuniverse-docs-60-history-deprecated.prd.md` |
| `99-deprecated/` | 삭제 기능 · 미복원 revert | `insuniverse-docs-60-history-deprecated.prd.md` |
| `_meta/` | 사람이 읽는 문서 아님 — 추출 규약과 사실 인덱스 | `insuniverse-docs-00-protocol.prd.md` · 인덱스 PRD 3종 |

소유 경계의 정본은 `docs/_meta/ownership.md` 다.

## 흐름으로 읽기

**소유는 주제 축, 읽기는 흐름 축이다.** 위 §읽는 순서 가 주제별 소유 경계라면 이 절은 같은 문서
집합을 사용자 여정 순서로 여는 두 번째 진입점이다. 트리는 그대로다 — 파일을 옮기지 않는다.
정본은 `05-final-spec.md` §4 의 `읽기 축 2 — 흐름 진입` 소절이며 이 절은 그 사본이다.

| 단 | 템플릿 | 여는 것 | 나가는 계약 필드 |
|---|---|---|---|
| 1 · 흐름 | `flow-doc@1` | `20-site/` · `30-admin/` 의 사용자 흐름 | `실패·이탈` 표의 `결과` 열 · `refs` |
| 2 · 화면 | `ia-doc@1` | 각 서비스의 `00-ia.md` — 흐름이 지나는 화면과 그 전이 | `surfaces[].exits` · `refs` |
| 3 · 정책 | `policy-doc@1` | `01-foundation/` ~ `07-legal/` 의 정책 블록 | **마지막 단이라 다음 단이 없다** — `policies[].anchors` 는 코드로, `policies[].supersedes` 는 폐기 문서(시간 축)로 나간다 |

**개별 문서를 여기 열거하지 않는다.** 열거하는 순간 그 목록이 사람이 손으로 유지하는 링크가 되고
문서가 늘 때마다 동기화 지점이 하나씩 더 생긴다. 위 계약 필드가 그 자리를 대신한다 — 어느 흐름이
어느 화면과 정책으로 이어지는지는 프론트매터에서 계산해 낸다.

## 문서 트리

```
docs/
  00-index.md                          읽는 순서 · 상태 범례 · 폐기 목록 링크

  01-foundation/
    01-glossary.md                     용어 · actor · 서비스 경계
    02-identifier-namespaces.md        코드 사전 — namespace 5분할 + 계층(ANS003A/B)
    03-error-codes.md                  E0001~E05xx 계층 규칙

  02-access/
    01-authn.md                        인증 (server 74 / site 120 커밋 언급 최다)
    02-authz-roles.md                  역할 — @Roles 136개소 매트릭스
    03-authz-capabilities.md           agcRole 2종 + orgCanWrite + corpAnalysisViewLevel
    04-authz-db-menu.md                DB 메뉴 권한 — data-dependent-unknown 명시
    05-admin-view-token.md             관리자 열람 단명토큰 (IDOR 차단)

  03-contracts/
    01-input-validation.md             class-validator 3,047회
    02-api-response.md                 Swagger 3,213회 + interceptor
    03-data-model.md                   153테이블 · default 299 · notNull 896
    04-state-transitions.md            ANS/ODD/SUB/PAY 상태 전이
    05-external-client-api.md          고객사(client) 대외 API 계약

  04-limits/
    01-amounts-and-quotas.md           MAX_MONEY_* 등 금액 상한
    02-ttl-and-timeouts.md             *_TTL_MS · AUTH_TIMEOUT · VENDOR_TIMEOUTS
    03-rate-limits-and-batch.md        RATE_LIMIT_CERTIFY_PER_MIN · BATCH_SIZE
    04-feature-gates.md                env 정책 게이트 — known_gates 전건. status 는 근거대로

  05-schedules/
    01-retention.md                    delete-analysis/treat/fc/invoice-files
    02-billing-cycles.md               regular-subscription · settlement-* · expired-money
    03-monitoring.md                   analysis-stall · alimtalk-status · fax-status
    04-runtime-topology.md             CI RUN_MODE · SCHEDULER_TYPE 주입

  06-vendors/
    01-treat-providers.md              codef · coocon · hyphen · octover · inhouse
    02-failure-semantics.md            성공/자료없음/실패 의미 벤더별 차이
    03-payments.md                     toss · smartro
    04-messaging.md                    aligo(알림톡) · FCM

  07-legal/
    01-terms-and-agreements.md         약관 버전 · 기업별 문구 · 재동의
    02-privacy-and-masking.md          개인정보 · 마스킹 · 수탁업체
    03-audit.md                        감사 로그

  10-server/                           modules 40개 → 8개 도메인 문서
    01-analysis.md  02-treat.md  03-subscription-order.md  04-settlement-money.md
    05-agency-corp.md  06-communication.md  07-content.md  08-b2c-insurance.md

  20-site/                             features 26 / pages 19
    00-ia.md                           흐름이 지나는 화면 · 그 이탈 대상
    01-analysis-flow.md  02-alimtalk-certify.md  03-subscription-payment.md
    04-mypage-account.md  05-content-board.md

  30-admin/                            actor 3분할이 이미 존재
    00-ia.md                           흐름이 지나는 화면 · 그 이탈 대상
    01-admin-console.md  02-corp-console.md  03-sales-console.md
    04-authority-management.md  05-treat-monitoring.md

  90-history/
    00-origin.md                       조직·의사결정 서사 (등급 U 전용)
    01-timeline.md                     prod 릴리스 연대기
    02-epics.md                        feat/* 8개 에픽 서사
    03-divergence.md                   prod-only / stg-only 현황
    04-ops-intent.md                   운영 문서 판독 의도·경위 (등급 O 전용)

  99-deprecated/
    01-removed-features.md             Admin/Point 등 + 삭제 커밋 SHA
    02-reverted-policies.md            revert 후 미복원 20건

  _meta/                               §5 산출물 (사람이 읽는 문서 아님)
```

**모바일**: 별도 디렉터리 없음. 해당 정책 문서마다 `## 플랫폼 차이 (웹 / 웹뷰)` 절을 둔다.

## 상태 범례

정본은 `05-final-spec.md` §3 이며 **표 순서까지** 같다.

| status | 뜻 |
|---|---|
| `active-prod` | prod 도달 + 게이트 없음/활성 — 본문 수록 |
| `conditional-enabled` | 게이트 있고 활성 확인 — 본문 수록 + 게이트 명시 |
| `prod-hotfix-unreconciled` | prod만 있고 stg 역류 안 됨 — 본문 수록 + 불일치 경고 |
| `conditional-unknown` | 게이트 있고 운영값 미확인 — 부록 격리 |
| `staged-only` | stg만, prod 미도달 — 부록 격리 |
| `data-dependent-unknown` | DB 데이터 의존 — 구조만 서술 + 한계 명시 |
| `dead-code-candidate` | 참조 0 / 도달 불가 — `99-deprecated/` |
| `deprecated-confirmed` | 삭제·revert 확정 — `99-deprecated/` |

## 폐기 목록

- [삭제된 기능](99-deprecated/01-removed-features.md) — `Admin/Point` 등 + 삭제 커밋 SHA
- [되돌려진 정책](99-deprecated/02-reverted-policies.md) — revert 후 미복원 판정 + 되돌린 커밋 SHA
