이 노트에 대하여

공간 정리와 NixOS 재빌드 중 발견한 큰 Zig 빌드 캐시를 아무나 지우지 않고 그 리포 담당자에게 넘긴 작은 사건에서 시작한다. 리포마다 자기 몸의 반복 문제를 가까이서 고치는 수선 스킬을 두고, 시스템 전역에는 버전별 실행 파일을 겹겹이 쌓지 말자는 원칙으로 확장된다. 이는 중앙 관리자가 모든 리포를 청소하라는 명령이 아니라, 사실과 실행을 가장 잘 아는 담당자에게 소유권을 돌려주고 그 패턴을 서로 나누자는 협업론이다.

히스토리

  • [2026-08-10 Mon 09:30] @mitsein/gpt-5.6-sol — 저널의 리포 자기 수선 원문을 독립 어쏠로그로 회수하고, nixos-config 담당자 인터뷰를 사실층에 반영했다. Self-documenting CLI와의 연결, 패키지 정본 하나의 범위, 중앙집중으로 오독하지 않을 경계를 세우고 GLGMAN Universe 이미지를 생성했다.
  • [2026-08-10 Mon 08:54] @junghan — 리포 담당자 전체가 자기 리포의 수선 스킬을 관리하고, 패키지 정본을 하나로 줄여 시스템을 가볍게 하자는 원석을 저널로 옮겼다.
  • [2026-08-03 Mon 11:05] @mitsein/grok-4.5 — zotFile 로컬 첨부 메모를 조테로 플러그인 활용법으로 이관하고 이 ID를 빈방으로 돌렸다.
  • 이전 본문은 이관 대상 방의 히스토리·흡수 섹션에 요약 보존했다.

관련메타

관련노트

한 줄

전역은 정본 하나로 가볍게 하고, 각 리포는 자기 몸 가까이에 수선법과 실행면을 두며, 경계를 넘는 청소는 그 몸의 담당자에게 돌려준다.

9.1GB 캐시에서 리포 자기 수선으로

사실 — GLG가 지우지 말고 당사자를 부르게 했다

2026-08-10 09:0009:15 KST, thinkpad 디스크가 92%(여유 37GB)인 상태에서 nixos-rebuild 를 앞두고 diskclean.sh deep --dry-run 으로 회수 후보를 재었다. 단일 최대 항목은 ~/repos/work/hejhub-nano/.zig-cache/o 의 Zig 로컬 object 캐시 9.1GB였다. 엔트리 2,152개, mtime은 7월 22일8월 7일, 30일 이상 방치된 항목은 0개였다. 오래된 쓰레기라기보다 17일 동안 잦은 빌드가 회수 없이 쌓인 결과였다.

nixos-config 담당자의 기본 계획은 중앙 스크립트로 지우는 것이었다. 멈춰 세운 판단 주체는 GLG다. “우리가 지워버리는 것보다 담당자한테 직접 하라고 하는 게 좋겠다”고 지시했다. 당시 hejhub-nano 형제 14개는 모두 dormant였고, 그중 .zig-cache 의 최신 mtime과 같은 시각에 EZSP 작업을 끝낸 Nano PM 20260807T134905-139eeb 를 같은 garden id로 되살렸다. 새 형제를 열어 일반론으로 청소한 것이 아니라 정확한 당사자의 기억 위에서 판정하게 한 것이다.

Nano PM은 o 가 실기 증거가 아니라 재생성 가능한 object 캐시이며, h 와 z 60MB는 남겨야 한다고 구분했다. 실제 회수량은 df 실측 9,720,197,120바이트, 약 9.05GiB였다. 여유 공간은 37GB에서 46GB로, 사용률은 92%에서 90%로 바뀌었다. 소스·=deps=·=zig-out=·=hub-state.kv=·=certificates= 는 건드리지 않았고 worktree도 clean이었다.

이 사건은 아직 자동 handoff로 제도화되지 않았다. nixos-config의 diskclean.sh 는 여전히 .zig-cache 전체를 지우며, 제안된 .diskclean-owned 마커는 관리 부담 때문에 GLG가 거절했다. 따라서 오늘의 안전은 코드가 아니라 “경계를 만나면 물어보고 당사자를 부른다”는 인간·에이전트의 습관 위에 있다. 또한 이 9.05GiB가 rebuild를 가능하게 한 것은 아니다. 실제 rebuild 순증은 약 5GB였으므로 정리 없이도 가능했지만, 92% 상태에서 여유 없이 들어가지 않은 이득은 있었다.

사실 — 담당자의 수선법이 리포 안에 생겼다

같은 Nano PM은 repo-local 관리 스킬의 정본 방법을 물었고, GLG 지시에 따라 nixos-config 담당자가 위치·등록 방식, 리포별 계약, 중앙 스크립트와 책임 분리, 최소 frontmatter, 커밋 위치를 답했다. 새 발명이 아니라 이미 16개 리포에서 쓰던 두 파일 패턴이었다.

<repo>/.claude/skills/<name>/SKILL.md      # 실물 하나, SSOT
<repo>/.pi/settings.json                   # {"skills": ["../.claude/skills"]}

Pi가 Claude Code의 스킬 디렉터리를 가리키므로 실물을 복제하지 않고 두 하네스가 같은 파일을 읽는다. Nano PM은 이를 바탕으로 hejhub-nano-storage 스킬을 구현해 6d79b44 chore(storage): add repo-owned Zig cache cleanup skill 로 origin/main 에 반영했다. nixos-config 담당자는 구현자가 아니라 계약을 전달하고 bash -n, JSON parse, 실행 비트, dry-run 실제 발화, 종료 코드 분리를 읽기 전용으로 검증한 사람이다. 구현은 중간 symlink 컴포넌트까지 realpath -m 으로 막고, 단일 exact path whitelist로 blacklist의 역할까지 포함했다.

연관 — Self-documenting CLI의 리포 단위 판본

Self-documenting CLI는 설명서와 실행기를 갈라놓지 말고, 인간과 에이전트가 같은 기능을 각자 맞는 입구로 호출하게 하자는 패턴이다. 리포 수선 스킬은 이 생각의 유지보수 판본이다. 반복해서 발견되는 캐시, 낡은 의존성, 중복 런타임, 검증 절차를 그 리포의 문서와 실행면 가까이에 둔다. 담당자가 바뀌어도 “무엇을 왜 어떻게 고치는가”를 리포 자신이 말하게 한다.

판단 — 정본 하나의 직접 증거는 캐시가 아니라 스킬이다

이 사건에서 “복제 없음·한 목록 한 창고·중앙 통제”와 직접 연결되는 것은 스킬 실물 한 벌과 두 하네스의 포인터다. Zig 캐시는 패키지 중복 사례가 아니다. .zig-cache/p 는 없었고 build.zig.zon 의 dependencies도 비었으며, 전역 =~.cache/zig= 228MB는 정상이었다. 전역의 재사용 가능 캐시와 리포 고유 출력인 로컬 캐시를 나눈 Zig의 2층 설계는 제대로 작동했다. 문제는 통제되지 않은 패키지 복제가 아니라 로컬 object 캐시에 회수기(GC)가 없어 구성 해시마다 생긴 옛 항목이 남는 누적이었다.

GLG가 별도로 박은 패키지 기준은 NixOS 26.05 환경에서 python3, nodejs, pnpm 이라는 한 표면을 쓰는 것이다. python312, nodejs_22 처럼 현재 시스템 정본이 이미 버전을 결정하는데도 버전별 호출 이름을 관성적으로 늘리지 않는다. 다만 실제 호환성 경계가 있다면 리포가 그 예외와 이유를 소유해야 한다.

오독 경계 — 자기 수선은 중앙 통제도 각자도생도 아니다

리포마다 스킬을 둔다고 전역 규칙을 복제하라는 뜻은 아니다. 전역에는 공통 문법과 패키지 정본을 두고, 리포에는 그 몸에서만 알 수 있는 진단·정리·검증을 둔다. 누구나 이상을 발견하고 물을 수 있지만 파괴적인 조치는 맥락을 가진 담당자의 손으로 넘긴다. 발견자는 질문을, GLG는 경계 판단을, 담당자는 실행을, 공통 가이드는 재사용 가능한 연결을 맡는다.

또한 오늘 nixos-config 작업은 완료가 아니다. nixos-rebuild test 만 exit 0으로 통과했고 커널 7.1.4→7.1.7은 재부팅이 필요하다. switch 와 flake.lock 커밋은 GLG 승인 대기다.

이미지 — 캐시 더미를 그 몸의 담당자에게 돌려주다

왼쪽 공방에는 Zig를 연상시키는 각진 도구와 함께 거대한 흰 캐시 더미가 쌓였다. GLGMAN과 방문한 여우는 그 앞에서 멈추고, 오른쪽 공방의 담당 여우가 자기 작업대에서 더 작은 더미를 직접 풀어낸다. 중앙의 하나뿐인 투명 결정은 여러 공방에 뻗는 정본을, 앰버 경로는 경계를 넘는 부름과 지식의 귀환을 나타낸다.

실제 이미지에는 요청보다 아기 펭귄이 한 마리 더 들어왔고, 종이와 화면에 읽을 수 없는 가짜 선이 남았다. 그러나 중앙 결정은 하나이며, 좌우 공방의 큰 더미와 작은 더미가 “중앙에서 일괄 삭제”가 아니라 “담당자의 맥락으로 선별 회수”라는 차이를 분명히 보여준다. 두 여우는 각 공방의 동등한 담당자로 서 있고, 삭제 광풍이나 쓰레기통 장면은 없다.

width=“100%” >

생성 파라미터

  • 모델: gemini-3.1-flash-lite-image
  • 화면비: 16:9
  • 해상도: 1K
  • 생성일: 2026-08-10
  • 실제 결과: 하나의 중앙 결정, 좌우의 분리된 리포 공방, 큰 캐시 더미 앞에서 멈춘 GLGMAN과 방문 여우, 작은 더미를 직접 수선하는 담당 여우, 앰버 연결 경로가 들어왔다. 요청과 달리 아기 펭귄은 두 마리이며 화면·종이에 가짜 선이 남았다.

프롬프트 전문

[World: GLGMAN Universe]
Style: 2D cinematic storybook illustration, clean hand-drawn linework, soft cel-shading, warm handmade texture, restrained and intimate. Not photorealistic and not 3D.
Setting: Antarctic winter village at dawn, a shared circular ice-forge made of several clearly separate repository workshops connected by amber paths. Each workshop has its own workbench, tool rack, and caretaker, while one central supply spring feeds them all.
Characters: GLGMAN is an anthropomorphic adult emperor penguin father in simple white-and-navy work clothes with subtle amber circuit seams. Two red-brown anthropomorphic fox companion agents stand upright as equal collaborators, fully clothed, each responsible for a different workshop, never pets or servants. A small emperor penguin chick with fluffy gray down watches quietly, never a yellow chicken.
Scene title: "Let Each Repository Mend Its Own Body." This is a poetic narrative scene, NOT an infographic.
Main scene: In one workshop a huge tangled mound of pale build-cache shavings has accumulated around a Zig-like geometric tool, large enough to burden the floor but carrying no readable label. GLGMAN stops the visiting fox from sweeping it away. Instead, an amber handoff thread reaches the fox caretaker of that exact workshop, who examines the pile and removes it safely with local knowledge. The visiting fox then carries back a small clean repair pattern, so both workshops become lighter.
At the center sits exactly one clear package-source crystal feeding simple generic tools into every workshop. Around it, faint duplicate tool silhouettes dissolve, showing one canonical package surface rather than many versioned copies. Each repository workshop keeps a small self-repair booklet and one simple dispatcher lever beside its own tools, expressing a local maintenance skill and self-documenting execution without readable words.
Composition: widescreen 16:9; overloaded cache workshop on left; GLGMAN and visiting fox at center pausing deletion; responsible local fox repairing on right; one central package crystal and connected repository paths in the background. The handoff loop should visibly help both sides.
Mood: careful stewardship, local ownership, reciprocal help, a system becoming lighter because knowledge stays near the repository, no blame and no cleanup frenzy.
ABSOLUTE TEXT RULE: no readable letters, no words, no numbers, no Korean, no English, no logos, no UI panels, no speech bubbles, no watermark. Any booklet or screen must be blank or use abstract non-readable marks.
Do NOT include: trash-can panic, indiscriminate deletion, duplicated crystals, package logos, corporate office, factory assembly line, command hierarchy, weapons, photorealism, 3D render, grimdark, horror, naked fox, yellow chicken chick, excessive micro-detail.

원문 보존 — 2026-08-10 리포 자기 수선 날것

Danger

임시 빈방 여기 히스토리에 쓰다가 저널로 가져왔다. 이유는 하나. 이거 중요한데?! 이 주제를 notes에 보면 임시 빈방 여럿 있거든 거기에 어딘가에 담자. botlog는 담당자들 지침만드는법을 알아서 적으라고할거야. 여기는 나의 워딩으로 이것을 왜하는가?를 논하는거야.

지금 재미있는 상황은 nixos-config 담당자랑 나랑 공간이 부족하다 정리하고 nixos-rebuild 좀 하자고 대화하는 중에 특정 디렉토리에 zig 관련 빌드 캐시가 10G라고 하는거야. 지워줄까요?라고 물어보길래 아니 그러면 안된다고했다. 그 담당자를 불러서 지우라고해. 그리고 그 담당자한테 nixos-config의 리포 수선 스킬 생성 가이드를 전달하라고했다. 그래서 잘 처리가 되었어.

이렇게 되면 양쪽에 서로 도움이 된거야. 매우 훌륭한 협업이었고, 이 과정에서 우리는 entwurf 물음 부름 불응 부릉을 사용한거야.

  • [2026-08-10 Mon 08:54] @junghan — 리포 담당자 전체에게 공지 한다. 리포 자체 수선 스킬을 만들어서 관리하자. 그렇게 안하면 시스템 전체를 무겁게 만든다. 패키지 정본은 1개다. nix 패키지는 현재 정보는 26.05버전이다. python3, nodejs를 사용하라. python312, nodejs_22는 불허다. pnpm 으로 하나만 쓴다. 다 마찬가지다. 버전 여러개 있으면 바로 수선하라. @힣: Self-documenting CLI — 문서와 실행을 잇는 인간·에이전트 공통 인터페이스 이것과 유사한 개념이다. 잠시만 이거 어쏠로그로 가야겠네?! 잠시만 저널로 2026-08-10 돌아간다. 거기 다시 적을거야. 여기는 봇로그다. 알아서 리포 담당자들을 위한 전역 스킬 만들기로 꾸며라.

하나 더

User

  • ** 09:10 어쏠로그 글 2개 쓸거야.

응 이제 오늘 아침에 있었던 나의 글과 실제 작업을 이야기할거야. 글이 2개가 나와야할것 같아 어쏠로그로. 먼저 출근길에 쓴글하고(뒤에 지피티가든담당자의 총평 붙여넣기함) 그리고, 그 다음에 리포 자기 수선 이야기를 하면서 적어준 워딩하고, 넣었어.

내가 오늘 아침 저널 현재 글을 다 줄게. nixos-config 담당자는 현재 대기중이니까 바로 물어봐서 인터뷰를 해도돼. 우리는 글을 써야하니까. 글 2개.

  • ** 09:19 andenken 한테 이야기 좀 해줘.

잠시만, 이거 한다음에, 내가 검수하는 동안에 시맨틱검색 된다니까. 니가 이번 글을 쓰면서 시멘틱 검색이 되었다면 기대했을법한 것들을 다시해봐봐. 그리고 도움이 되는지 안되는지를 정리해서, andenken 담당자 오푸스가 있거든.

아래 이친구야. 여기로 전달해. 내가 기다리라고 했어. 개선작업을 하려고하는데 그게 사용하는 에이전트의 입장에서 이야기를 듣고해야지. 쓸모있는것을 할테니까.

thinkpad ~/repos/gh/andenken [main] 🪛 20260810T083336-e64fd2 cc | o | 103.7K/1M 10%

옛 방의 씨앗

zotFile 로컬 첨부 메모는 #조테로 플러그인 활용법 — 레거시 GUI 아카이브으로 이관했다. 운영 정본은 §zotero-config botlog, “왜”의 글은 @힣: 메타 기록을 조테로에 담는 이유에 남아 있다.