---
baseline: N0019@r0000
created: 2026-04-13T00:00:00+00:00
---

## Delta

## ⚠️ 범위 재확정 및 구현 인수인계 (2026-04-13)

이 entry(N0019)의 원안은 **v0.4 범위로 이동**됨.
v0.3은 아래 항목으로 재정의되어 **이미 구현 완료**.

→ see N0018 (v0.3 Discussion Notes, r0010) — 재분류 경위

---

## v0.3 실제 구현 완료 내역 (2026-04-13)

### 1. Compact Layout (schema v2)

**변경 내용**:
- 기존 v1: `entries/`, `revisions/`, `assets/`가 vault root에 위치
- 신규 v2: `.elendirna/entries/`, `.elendirna/revisions/`, `.elendirna/assets/`로 이동

**구현 방식**: filesystem 기반 자동 감지
```rust
// src/vault/mod.rs
pub fn data_root(vault_root: &Path) -> PathBuf {
    if vault_root.join(".elendirna").join("entries").exists() {
        vault_root.join(".elendirna")  // v2
    } else {
        vault_root.to_path_buf()       // v1 폴백 (기존 vault 호환)
    }
}
```

**수정 파일**:
- `src/vault/mod.rs` — `data_root()` 추가
- `src/vault/entry.rs:14` — `entries_dir`: data_root 사용
- `src/vault/revision.rs:16` — `rev_dir`: data_root 사용
- `src/vault/ops.rs:39` — bypass 제거
- `src/cli/entry.rs:73` — bypass 제거
- `src/schema/validate.rs` — entries/revisions/assets 경로 4곳 수정

### 2. `elf migrate`

v1 vault를 v2로 이관하는 서브커맨드. `src/cli/migrate.rs` 신규.

```bash
elf migrate .            # 현재 디렉터리 vault 이관
elf migrate . --dry-run  # 계획만 출력
```

동작:
- `entries/`, `revisions/`, `assets/` → `.elendirna/` 하위로 `fs::rename`
- 이미 v2이면 `schema_version` 최신화만 수행
- 완료 후 `config.toml`의 `schema_version = 2` 기록

### 3. Global Vault Fallback + `elf init --global`

```rust
// src/vault/mod.rs — find_vault_root 끝부분
let home = std::env::var("USERPROFILE")
    .or_else(|_| std::env::var("HOME"))
    .map(PathBuf::from).ok();
if let Some(home) = home {
    if home.join(".elendirna").join("config.toml").exists() {
        return Ok(home);
    }
}
```

`elf init --global` → 홈 디렉터리에 vault 초기화 (`--path`와 충돌)

### 4. 버전

- CLI: `0.3.0` (`Cargo.toml`)
- schema_version: `2` (`CURRENT_SCHEMA_VERSION`, `config.toml`)
- 버전 정렬 원칙: major×10 + minor (v1.0=10, v1.3=13 …)

---

## 현재 상태 검증

```bash
# 1. 빌드 및 전체 테스트 (63개 통과)
cargo test

# 2. vault 상태 확인
elf validate
# 기대값: 0 errors, 2 warnings (N0033·N0099 dangling ref — 기존 항목)

# 3. 레이아웃 확인
ls .elendirna/   # entries/ revisions/ 포함
ls .            # entries/, revisions/ 없음

# 4. config 확인
cat .elendirna/config.toml
# schema_version = 2
```

---

## v0.4 범위 (N0019 원안 → 이관)

N0019 원안의 Phase 1~4는 모두 v0.4로 이동. 우선순위 권고 순:

| 우선순위 | 항목 | 원출처 |
|---------|------|--------|
| 1 | MCP 도구 description 강화 (트리거 조건 내장) | N0019 Phase 3 |
| 2 | `elf serve --mcp` 미연결 시 설정 snippet 출력 | N0019 Phase 3 |
| 3 | `elf bundle --depth N` | N0019 Phase 2 |
| 4 | `elf entry show --bundle` | N0019 Phase 2 |
| 5 | `elf help --json` | N0019 Phase 2 |
| 6 | `elf entry new --body-from <file>` / `--body-stdin` | N0019 Phase 1 |
| 7 | `elf doctor [--fix]` | N0019 Phase 4 |
| 8 | MCP `vault` 파라미터 (멀티 vault) | N0018 r0009 IDEA-A |
| 9 | `elf sessions` | N0018 r0009 IDEA-B |
| 10 | SSE Transport | N0018 §2-D |

---

## 알려진 이슈

- `N0033`, `N0099` dangling inline ref 경고 — entry 미생성 상태. 무시하거나 entry 생성 또는 ref 제거 필요.
- `tests/fixtures/demo_vault/` — v1 레이아웃 그대로 유지 (픽스처 목적상 의도적). `data_root` v1 폴백으로 정상 처리됨.
