docs(verification): 창 환경 링크 구성·깃 운영 충돌 조사 기록

- 워크트리 넷의 링크 구성 실측(정션·하드링크·복사본·없음)
- 오르카는 무시 파일만 하드링크, 폴더는 안 만듦 — 그 워크트리에서 세션 훅 안 돎
- 오르카에 커밋·푸시 명령 없음 — 역할 나눔이 방향
- 토큰 실측(커밋 1회 191~338 · 따라오기 52~88)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011N7TKFmaPogzq9HUi6jKo7
This commit is contained in:
2026-09-11 16:18:04 +09:00
co-authored by Claude Opus 5
parent d902d9f8dc
commit 8ba960351f
@@ -0,0 +1,135 @@
# 창 환경 조사 — 워크트리 링크 구성과 깃 운영 방식 (2026-09-11, 랩탑 보조)
> 계획서(`PLAN.md` 10절)에는 **요약과 판단 자리만** 두고, 실측 원문은 이 파일에 둠.
> 조사 자리 — 랩탑 보조 워크트리 `C:\Aislo_wt\aislo-b0506`, 브랜치 `sub_laptop_1`.
---
## 1. 워크트리·링크 실측
### 1-1. 지금 붙어 있는 워크트리 넷
| 폴더 | 브랜치 | 만든 주체 |
| ----------------------------------------------------------------------------- | ---------------- | --------- |
| `C:\Program_coding\임도설계 및 견적자동화 프로그램 개발` | `main_laptop_1` | 사용자 |
| `C:\Aislo_wt\aislo-b0506` | `sub_laptop_1` | 사용자 |
| `C:\Users\umsan\orca\workspaces\임도설계 및 견적자동화 프로그램 개발\main_laptop_1-2` | `CODEX` | 오르카 |
| `C:\Users\umsan\orca\workspaces\임도설계 및 견적자동화 프로그램 개발\안티그래비티` | `안티그래비티` | 오르카 |
근거 — `.git/worktrees/*/HEAD` · `gitdir` 읽음, `git branch -vv --all`.
### 1-2. 폴더마다 링크 구성이 다름
| 대상 | 메인 폴더 | 랩탑 보조(`aislo-b0506`) | 오르카 워크트리 |
| --------------- | --------- | ------------------------ | --------------- |
| `.claude/` | 실물 | **정션**(메인 가리킴) | **없음** |
| `venv/` | 실물 | **정션** | **없음** |
| `.codex/` | 실물(안에 `config.toml` 하나) | 없음 | 없음 |
| `PLAN.md` | 실물 | **없음** | **하드링크** |
| `OWNERS.md` | 실물 | **없음** | **하드링크** |
| `CLAUDE.md` | 실물 | 별도 복사본(내용 동일) | **하드링크** |
| `AGENTS.md` | 실물 | 별도 복사본(내용 동일) | **하드링크** |
근거 — `Get-Item -Force``LinkType`·`Target`, `fsutil hardlink list`,
`stat -c "%h %i"`(링크 수·아이노드). 네 파일은 `.gitignore``/PLAN.md` `/OWNERS.md`
`/AGENTS.md` `/CLAUDE.md` 로 **git 밖**이라 워크트리에 저절로 생기지 않음.
### 1-3. 오르카의 새 워크트리 처리 — 파일만 따라가고 폴더는 안 따라감
- 오르카가 만든 워크트리에는 git 무시 대상 **파일 네 개가 하드링크로 자동** 들어감.
- 반면 `.claude`·`.codex`·`venv` 같은 **폴더는 만들지 않음** — 그 워크트리 둘 다 셋이 없음.
- ⚠ 그 결과 **세션 훅이 아예 안 돎** — 훅은 `.claude/settings.json` 에 실려 있음.
즉 오르카로 만든 워크트리에서 Claude 를 돌리면 따라오기·자동 push 가 없음.
- 오르카 저장소 설정 — `hookSettings.scripts.setup = "npm install"`,
`setupRunPolicy = run-by-default`(새 워크트리마다 자동 실행). `archive` 는 빈 값.
근거 — `orca repo list --json`.
### 1-4. 링크 방식마다 무엇이 다른가
| | 하드링크(파일) | 정션(폴더) | 심볼릭 링크(파일·폴더) |
| --- | --- | --- | --- |
| 관리자 권한 | 불필요 | 불필요 | **필요**(또는 개발자 모드) |
| 실물 | 하나, 이름 둘 | 하나, 표지판 | 하나, 표지판 |
| 「갈아치우기」 저장에 견딤 | ❌ **끊어짐** | ✅ | ✅ |
| 지울 때 위험 | 이름 하나 지워도 실물 남음 | 안을 지우면 **원본이 지워짐** | 링크만 지워짐 |
⚠ 저장소 폴더가 통째로 시놀로지 동기화됨(2026-09-07 기록). 동기화·일부 편집기는
**새 파일을 쓴 뒤 이름을 바꿔 끼우는** 식으로 저장하므로 **하드링크가 조용히 끊어짐**
끊기면 같은 파일처럼 보이면서 값이 갈라짐. 지금은 네 파일 모두 링크 수 2 로 **살아 있음**.
### 1-5. 개발자 모드 — 랩탑에서는 막힘
- 심볼릭 링크 시험 결과 `Administrator privilege required for this operation.`
- 계정 `ESD_LAPTOP\umsan`**관리자 아님**(`IsInRole(Administrator) = False`).
개발자 모드는 `HKLM\...\AppModelUnlock` 에 쓰는 것이라 관리자 자격이 필요함.
- 2026-09-11 사용자 — **데스크탑은 개발자 모드 켰음**, 랩탑은 나중.
### 1-6. 링크가 없어 지금 실제로 잃고 있는 것
- `git-sync.ps1` 5단계가 장부를 `<저장소>\OWNERS.md` · `<저장소>\docs\raw\OWNERS.md`
두 자리에서만 찾음 → 보조 워크트리엔 없어 **`[owners]` 점유표 줄이 안 찍힘**
(이번 세션 시작 출력에 그 줄 없음).
- `wiki_autosync.ps1``OWNERS.md` 가 없으면 「건너뜀」으로 빠짐 — 이건 의도대로임
(위키는 메인 폴더·코덱스 몫).
- `PLAN.md` 는 링크가 없어도 **메인 폴더 절대경로로 읽고 쓰면 같은 파일 한 벌**임.
⚠ 진짜 위험은 링크 없음이 아니라 **보조 폴더에 새 `PLAN.md` 를 만드는 것**
git 무시 대상이라 갈라져도 git 이 못 잡음.
---
## 2. 깃 운영 — 스크립트와 오르카가 겹치는 자리
### 2-1. 오르카가 깃에서 하는 일은 좁음
`orca --help` 전수 — **커밋·푸시·PR 명령이 없음.** 있는 것은
`worktree create/rm`(워크트리·브랜치 만들기·지우기) · `repo set-base-ref`(기준 브랜치) ·
`repo search-refs` · `file diff`·`file open-changed`(변경 파일 열기) 뿐.
⇒ 스크립트가 하는 **따라오기·되받기·모으기·자동 push 를 오르카가 대신할 수 없음.**
### 2-2. 충돌 셋
1. **오르카 워크트리엔 `.claude` 가 없어 깃 자동화가 통째로 안 돎** (1-3).
2. **브랜치 이름이 규칙 밖이면 창끼리 영영 안 보임** — 되받기 대상이
`^(main|wiki|CODEX|안티그래비티|(main|sub)_(laptop|desktop)_\d+)$` 로 못박혀 있음
(`git-sync.ps1` 2.5단계). 오르카는 워크트리 이름으로 브랜치를 만들므로
`fix-login` 류 이름이 생기면 다른 창이 그 커밋을 못 봄.
지금 오르카 워크트리 둘은 **우연히** 규칙 안(`CODEX`·`안티그래비티`)임.
3. **그 두 브랜치는 「`docs/` 만 받기」 문이 걸려 있음** — 위키·리뷰 창용 안전장치.
오르카 창에서 **코드**를 커밋하면 다른 창이 그 코드를 안 받고 조용히 격리됨.
곁딸린 것 — `git-autopush.ps1` 1단계가 `git add -A -- . ':(exclude)docs/wiki'`
**남은 변경을 전부 담음**. 오르카 UI 에서 골라 담는 방식과 부딪힘.
멈추는 스위치는 `tmp/parallel.flag` 파일 하나뿐.
### 2-3. 고를 길 셋
| 길 | 내용 | 판정 |
| --- | --- | --- |
| (가) 지금대로 | 오르카는 창·터미널·브라우저만 | 손질 둘 필요(링크 자동·브랜치 이름) |
| (나) 오르카로 넘기기 | 깃 처리를 오르카에 맡김 | **불가** — 커밋·푸시 명령이 없음 |
| (다) 역할 나눔 | **워크트리·브랜치 만들기·지우기 = 오르카**, **따라오기·되받기·모으기·자동 push = 스크립트** | 겹침 없음 — 권함 |
---
## 3. 토큰 실측 (참고)
토크나이저 라이브러리가 이 환경에 없어 **글자수 × 비율**(한글 1.0~1.6 토큰/글자 ·
ASCII 0.25~0.45 토큰/글자)로 범위를 냄.
| 조각 | 글자 | 토큰 |
| --- | --- | --- |
| 커밋 명령(파일경로 + 첨부 2줄) | 233 | 66~118 |
| 커밋 출력 | 100 | 33~58 |
| autopush 명령 | 82 | 20~37 |
| autopush 출력 한 줄 | 56 | 21~36 |
| 도구호출 뼈대 2회 | — | 50~90 |
| **한 번 커밋+푸시 합계** | | **191~338** |
| 지시마다 도는 `git-sync -Brief` | 118 | 52~88 |
- 거친 하루치 — 커밋 15회 2,900~5,000 토큰 · 지시 60회 따라오기 3,100~5,300 토큰.
- **누적은 중첩임** — 30지시면 새로 들어가는 양은 2,100 토큰인데, 매 차례 대화 전체가
다시 실려 가므로 청구 기준 입력은 70 × (1+2+…+30) ≈ 3.2만. 대부분 프롬프트 캐시에
맞아 값은 1/10 쯤. **맥락 창을 먹는 것은 2,100 뿐.**
- 세션 종료 시 도는 autopush 는 **대화 토큰 0**(세션이 닫혀 문맥에 안 실림).
- 줄일 자리 둘 — 커밋 첨부 2줄(28~50 토큰/회) · 따라오기가 「바뀐 것 없음」일 때 아무 줄도
안 찍게 하기(지금은 「원격과 동일」 + 참고 한 줄을 늘 찍고, 그 참고 줄이 절반).