정합성과 내역 뷰
VMark의 정합성 레이어는 재귀적으로 발전하는 글쓰기 프로젝트를 정직하게 유지합니다. 각 AI 생성이 실제로 어떤 문서를 읽었는지 기록하고, 그 업스트림 문서가 이후에 변경되면 이를 알아차리며, 어떤 다운스트림 아티팩트가 이제 오래되었을 수 있는지를 — 요청 시에만 — 정확히 보여줍니다. 아무것도 자동으로 업데이트되지 않습니다. 편집장은 언제나 당신입니다.
작동 방식 (30초 요약)
- 모든 저장, 지니 적용, 수락된 AI 제안, MCP 쓰기, 워크플로우
save-file단계는 워크스페이스 내부의 일반 텍스트 원장에 변환 으로 기록됩니다 (.vmark/— git 친화적이고 사람이 읽을 수 있는 JSONL; 파생된index.db를 삭제해도 아무것도 잃지 않습니다). - AI가 다른 문서들을 읽으면서 한 문서를 쓰면, 그 읽기는 읽은 시점의 정확한 리비전에 고정된 의존성 엣지 가 됩니다.
- 업스트림 문서가 고정된 리비전을 지나 앞으로 나아가면 해당 엣지는 지남 (stale) 상태가 됩니다. 두 리비전이 병렬로 발전했다면 (예: git 브랜치에서) 엣지는 분기됨 (diverged) 상태가 됩니다 — 추측하지 않고 드러내기만 합니다.
- VMark 외부에서 (터미널, 다른 편집기) 편집된 파일은 스캔 시 관찰된 외부 편집 으로 조정됩니다 — 기록은 공백 없이 유지되며, 출처 불명으로 정직하게 표시됩니다.
내역 뷰
창 → 정합성 내역 (또는 명령 팔레트: "Breakdown View")에서 엽니다. 이 뷰는 철저히 풀 기반 입니다: 뷰를 열거나 새로 고침을 누를 때만 갱신되며, 백그라운드에서 재촉하는 일이 없습니다.
항목은 아티팩트 (다운스트림 문서) 별로 그룹화되며, 업스트림 문서, 고정된 리비전, 현재 상태를 보여줍니다:
| 상태 | 의미 |
|---|---|
version-stale | 이 아티팩트의 기반이 된 시점을 지나 업스트림이 앞으로 나아감 |
diverged | 고정된 리비전과 현재 리비전이 병렬 관계 — 계보가 이어지지 않음 |
diverged-multi-head | 업스트림 자체에 병렬 현행 버전이 존재함 |
waived | 사유를 기록하고 분기를 수용함 |
unpinnable | 업스트림을 확인할 수 없음 (예: 잘못된 고정) |
액션
각 항목은 세 가지 정직한 액션을 제공하며, 어느 것도 기록을 다시 쓰지 않습니다:
- 최신 버전 수용 — 아티팩트가 더 새로운 업스트림과 여전히 호환된다고 기록합니다 (추인). 항목은 목록에서 사라지며, 업스트림이 다시 변경되면 돌아옵니다.
- 수정 — 아티팩트를 열어 직접 업데이트할 수 있게 합니다. 새 버전을 저장하면 이전 엣지는 물러납니다.
- 면제 — 필수 사유 와 함께 의도적인 분기를 기록합니다 (신뢰할 수 없는 서술자는 존재하기 마련입니다). 면제된 항목은 뚜렷하게 구분되어 계속 표시되며, 업스트림이 다시 움직이면 다시 열립니다.
업스트림에 여러 현행 버전이 있으면 최신 버전 수용과 면제는 비활성화됩니다 — 해결의 기준이 될 단일 리비전이 없기 때문입니다. 먼저 수정하거나 버전들을 조정하세요.
의미 검사, 설정, 컨텍스트
버전이 지났다는 것은 업스트림이 움직였다는 뜻일 뿐입니다. 의미 검사는 그 움직임이 파생 문서와 실제로 모순되는지를 알려줍니다. 검사는 철저히 풀 기반 입니다: 지난 엣지에서 검사 를 누르면 VMark가 구성된 AI 공급자에게 고정된 업스트림 리비전, 현재 리비전, 파생 텍스트를 비교해 달라고 요청합니다. 판정은 배지로 표시됩니다 — 검증됨(유효), 모순됨 (항상 원문 그대로의 근거 인용과 함께), 그리고 모델이 확신하지 못했거나, 시간이 초과되었거나, 확신도 기준에 못 미치는 답을 한 경우의 미검증입니다. 알 수 없음은 정직함이며, 결코 숨겨지지 않습니다. 검사는 두 문서 중 하나가 다시 움직이는 순간 — 또는 설정 집합이 바뀌는 순간 만료됩니다.
캐논 설정 은 당신이 명시적으로 만든 사실입니다 ("엘레나는 왼손잡이다"). 문서에서 텍스트를 선택하고 선택 영역에서 설정 추출 을 실행하면, 설정은 출처 (어느 문서, 어느 리비전) 와 함께 초안 으로 태어납니다. 캐논이 되면 확립됨 으로 승격하세요 — 의미 검사에 투입되는 것은 확립된 설정뿐입니다. 설정을 정정하거나 종료하면 기록이 덧붙습니다. 아무것도 삭제되지 않습니다. 컨텍스트에서 설정을 숨기는 것은 되돌릴 수 있는 가시성 조작이지, 종료가 아닙니다.
컨텍스트 는 워크스페이스의 이름 붙은 뷰입니다 (default 컨텍스트는 항상 존재합니다). 각 컨텍스트는 "현재"가 무엇을 의미하는지, 어떤 설정이 적용되는지를 선택합니다. 자식 컨텍스트는 부모의 설정을 가산적으로 상속합니다. 컨텍스트는 기본적으로 온실 입니다 — 검사 판정은 조언 성격의 긴장으로 읽힙니다. 컨텍스트를 강제 적용 으로 전환하면 (명시적이고 확인을 거치는 행위) 모순이 캐논 위반으로 표시됩니다. 내역 뷰의 컨텍스트 선택기는 어떤 컨텍스트를 통해 볼지 정합니다. 검사 결과는 그것을 만들어 낸 바로 그 컨텍스트와 설정 스냅숏에 묶이며, 결코 다른 곳으로 새지 않습니다.
출처, 위임, 브랜치
프로젝트가 실제로 진화하는 동안 정합성 레이어를 정직하게 유지해 주는 것이 세 가지 있습니다 — 어느 것도 재촉하지 않고, 모두 풀(pull) 방식입니다.
출처 복구. 파생 문서를 직접 손으로 편집하면 (VMark에서든 외부 편집기에서든), 그 편집은 기록된 입력을 당연히 잃습니다 — 예전의 의존성 엣지는 더 이상 새 텍스트를 설명하지 못합니다. 내역의 출처 불명 그룹이 그것을 복원하도록 제안합니다: 입력 제안 을 누르면 VMark가 그 문서의 가장 최근 이전 입력 집합을 (역할은 보존한 채) 미리 선택되고 편집 가능한 상태로 제안합니다. 출처 확정 은 새 리비전을 만들지 않고 엣지를 현재 버전에 다시 붙이므로, 그 문서 자신의 다운스트림은 엉뚱한 변경을 결코 보지 않습니다. 애초에 입력이 없었던 문서는 결코 나열되지 않습니다 — 복구할 것도 없고 재촉할 것도 없습니다.
에이전트 위임. 기본적으로는 오직 당신만 오래된 엣지를 해소할 수 있습니다. AI 에이전트가 당신을 대신해 최신 버전을 수용하거나 면제하도록 하고 싶다면 (읽기 전용 + resolve MCP 표면을 통해), 내역에서 기간 제한 위임 을 부여하세요: 에이전트의 이름을 정하고, 범위(최신 버전 수용 및/또는 면제)를 고르고, 만료를 설정합니다 (기본값 7일, 결코 "영구"는 아님). 위임된 모든 해소는 그 부여에 기록되므로, 감사 추적은 누구의 권한 아래 누가 행동했는지를 항상 보여 줍니다. 어떤 부여든 클릭 한 번으로 철회할 수 있습니다. 캐논 설정과 컨텍스트는 사람 전용으로 남습니다 — 에이전트는 결코 설정을 승격하거나 컨텍스트를 강제할 수 없습니다.
브랜치 컨텍스트. 컨텍스트는 git 브랜치에 매핑될 수 있습니다. 매핑된 브랜치를 체크아웃하면, 내역은 전환을 제안하는 후보 칩 을 보여 줍니다 — 스스로 전환하는 일은 결코 없습니다. 브랜치에 아직 컨텍스트가 없으면, 칩은 그 이름을 딴 컨텍스트를 만들자고 제안합니다. (fast-forward가 아닌) 진짜 병합이 들어오면, 닫을 수 있는 배너가 내역을 검토하라고 권합니다. 배너가 드러내는 분기와 오래됨은 내역의 정상적인 상태이므로, 새로 실행되는 것은 없습니다 — 그저 검토로 안내될 뿐입니다.
프런트매터 식별자
파일이 처음 캡처될 때 VMark는 프런트매터에 작은 식별 블록을 추가합니다:
vmark:
id: 018f3c7a-9f2e-7cc1-b302-5e9d4a6b21c7이 ID 덕분에 문서는 이름 변경과 이동을 거쳐도 자신의 역사를 유지합니다. 콘텐츠 해싱에는 전혀 영향을 주지 않으며 (추가해도 "변경"이 생기지 않음), 프런트매터의 나머지는 그대로 유지됩니다. 파일을 복사하면 중복된 ID가 감지되어 직접 해결하도록 표시됩니다 — 자동으로 고쳐지지 않습니다.
Git 상호 운용성
.vmark/원장 파일은 git으로 추적되며 브랜치 간에 깔끔하게 병합됩니다 (append 전용,merge=union).- 체크아웃, 브랜치 전환, 리셋은 탐색 으로 인식됩니다 — 유령 리비전을 만들지 않습니다.
git revert와 새 콘텐츠를 만드는 병합은 git에 귀속된 변환으로 캡처됩니다.- 파생 인덱스 (
index.db)는 gitignore 처리되며 필요할 때마다 일반 텍스트 원장에서 다시 빌드됩니다.
AI 에이전트용 (MCP)
외부 에이전트는 VMark에서 연 워크스페이스에 대해 coherence MCP 도구 (status 및 edges 액션)를 통해 정합성 상태를 조회할 수 있습니다. status는 순수 읽기입니다. edges는 먼저 조정을 수행합니다 — 워크스페이스 자체 원장에 출처 기록을 추가할 수는 있지만, 당신의 문서는 절대 건드리지 않습니다. 해결 (추인/면제)은 이 버전에서 의도적으로 MCP에 노출되지 않습니다 — 결정은 앱 안의 사람에게 남습니다.