dif/context.json은 어떻게 움직이나 — Archify로 본 실험 스위치판

한 줄로. moonlang-tools에 심은 dif.sh에서 context.json이 빌드·런타임·에이전트에 어떻게 쓰이는지 Archify 워크플로로 풀어 쓴다. draft는 화면을 안 바꾸고, active만 방문자를 가른다.

인터랙티브 다이어그램 — Play를 누르면 스토리 애니메이션으로 전체 경로를 따라갈 수 있습니다.

다이어그램 열기 (Play) 직접 HTML 열기

실험용 버튼을 바꿀 때마다 “지금 어떤 변형이 살아 있지?”를 사람 기억에 맡기면 금방 깨집니다. 그래서 moonlang-tools에는 dif.sh를 넣었습니다. 실험은 레포 안 Markdown이고, 빌드가 남기는 dif/context.json이 에이전트와 사람이 같이 읽는 요약장입니다.

아래는 그 흐름을 Archify 워크플로로 그린 것입니다. 인터랙티브 HTML에서는 Play를 누르면 스토리 애니메이션으로 전체 경로를 따라갈 수 있습니다.

한 줄 요약

  1. 실험 .md를 작성한다 (draft 또는 active).
  2. dif validate로 스키마·충돌을 검사한다.
  3. dif build(보통 prebuild)가 active만 컴파일한다.
  4. 결과물 두 갈래: 커밋되는 context.json, gitignore되는 generated/client.ts.
  5. 앱은 DifBoot → dif.init → dif()로 방문자를 변형에 배정한다.
  6. 함대 에이전트는 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 다이어그램을 기준으로 합니다.

관련 링크

운영 메모 (함대)

  • Surface 예: home, tools, korean-learning, tts-calculator, submit, pricing
  • CTA·카피 작업 전 dif/context.json 확인
  • Dif Cloud 연결은 선택 사항 (없어도 로컬 배정은 동작)

작성: moonlang · KST 2026-09-22 · 성적·입시 보장 없음 · 제품·도구 설명