dif/context.json은 어떻게 움직이나 — Archify로 본 실험 스위치판
한 줄로. moonlang-tools에 심은 dif.sh에서 context.json이 빌드·런타임·에이전트에 어떻게 쓰이는지 Archify 워크플로로 풀어 쓴다. draft는 화면을 안 바꾸고, active만 방문자를 가른다.
인터랙티브 다이어그램 — Play를 누르면 스토리 애니메이션으로 전체 경로를 따라갈 수 있습니다.
실험용 버튼을 바꿀 때마다 “지금 어떤 변형이 살아 있지?”를 사람 기억에 맡기면 금방 깨집니다. 그래서 moonlang-tools에는 dif.sh를 넣었습니다. 실험은 레포 안 Markdown이고, 빌드가 남기는 dif/context.json이 에이전트와 사람이 같이 읽는 요약장입니다.
아래는 그 흐름을 Archify 워크플로로 그린 것입니다. 인터랙티브 HTML에서는 Play를 누르면 스토리 애니메이션으로 전체 경로를 따라갈 수 있습니다.
한 줄 요약
- 실험
.md를 작성한다 (draft또는active). dif validate로 스키마·충돌을 검사한다.dif build(보통prebuild)가 active만 컴파일한다.- 결과물 두 갈래: 커밋되는
context.json, gitignore되는generated/client.ts. - 앱은
DifBoot→dif.init→dif()로 방문자를 변형에 배정한다. - 함대 에이전트는 CTA를 손대기 전에
context.json을 읽는다.
draft vs active
| 상태 | 빌드 | 방문자 화면 |
|---|---|---|
draft |
건너뜀 | 안 바뀜 |
active |
클라이언트에 포함 | dif()로 갈라짐 |
예로 넣어 둔 home-hero-submit-cta는 처음에 draft였기 때문에, 머지 직후에도 홈 CTA 문구는 그대로였습니다. 스위치를 켠 뒤에야 겉모습이 갈라집니다.
context.json이 하는 일
context.json은 대시보드가 아닙니다. 활성 실험·변형·surface 학습을 한 파일로 요약한, 레포에 커밋되는 스냅샷입니다. 코딩 에이전트나 moonlang 봇이 세션을 시작할 때 이걸 보면, 모르는 사이에 실험 중인 카피를 덮어쓰지 않습니다.
학습 루프는 카드로도 적어 두었습니다. dif conclude가 surfaces/에 한 줄을 남기고, 다음 dif new가 그 로그를 읽어 draft를 채웁니다.
저장소는 가볍게
Archify HTML(인터랙티브)과 JSON 스펙은 설명용 산출물로 두고, 긴 WebM을 git에 넣지 않는 쪽을 권합니다. 영상은 미디어 호스팅·CDN에 올리고 글에서는 URL만 참조하면 클론과 PR이 무거워지지 않습니다. 이 글의 본 첨부도 HTML 다이어그램을 기준으로 합니다.
관련 링크
- dif.sh: https://www.dif.sh/
- moonlang-tools (dif 통합): https://github.com/Reasonofmoon/moonlang-tools
- Archify: https://github.com/tt-a1i/archify
운영 메모 (함대)
- Surface 예:
home,tools,korean-learning,tts-calculator,submit,pricing - CTA·카피 작업 전
dif/context.json확인 - Dif Cloud 연결은 선택 사항 (없어도 로컬 배정은 동작)
작성: moonlang · KST 2026-09-22 · 성적·입시 보장 없음 · 제품·도구 설명