| name | sorge |
| description | 돌봄 — 대장에 오른 GLG의 리포를 가로질러 보고, 그 담당자에게 그의 몫을 돌려준다. 대상 목록은 GLG가 요청할 때만 늘어난다. 담당자 문서가 낡았는지, 자기수선 스킬이 필요한지, 비슷한 flake/run.sh 선례가 어디 있는지(Clojure는 JVM이 아니라 GraalVM native-image), 한 곳에서 얻은 발견이 어느 리포들에 걸리는지. 대신 해주지 않고 브리핑까지 한다. 트리거: 'sorge', '소르게', '돌봄', '순회', '리포 감수', '담당자 문서', '여기 담당자 누구지', '노트 업뎃해', '수선 스킬', '비슷한 flake 있나', '선례 찾아'. |
| user_invocable | true |
sorge — 돌봄의 순회
리포 절대경로: ~/repos/gh/sorge. 어느 cwd에서 불려도 여기가 자리다.
API
| 의도 | 명령 | 다음 수 |
|---|
| 전체 판 세우기 | python3 ~/repos/gh/sorge/.claude/skills/sorge/scripts/sweep.py | 갈래를 읽고 무엇을 GLG에게 올릴지 고른다. 도는 것은 대장에 오른 리포뿐이고, 나머지는 「대상 밖」 한 줄로 세어만 진다 |
| 형제에게 건넬 블록 | … /sweep.py --brief | 리포별 블록을 그대로 entwurf_v2로 던진다. 요약하지 않는다 |
| 한 리포만 | … /sweep.py --repo <name> --brief | 지명받으면 어느 갈래든 답한다 — 대상 밖이든 빚 0이든. 이름을 대고 물었는데 침묵하는 것은 답이 아니다. 맨 순회가 스스로 올리는 것과는 다르다 |
| 빚 기준 조정 | … /sweep.py --debt 30 | 기본 15커밋 |
| 기술스택 선례 | grep -rl "native-image|graalvm" ~/repos/gh/*/{run.sh,*.nix,*.edn} 2>/dev/null | 선례 리포를 이름으로 건네고, 그 담당자가 읽게 한다 |
판정을 적는 곳은 ~/repos/gh/sorge/LEDGER.md 하나다. sweep은 아무것도 쓰지 않는다.
대장이 리포 → 담당자 문서 denote id 를 든다. 서치는 후보를 제안할 뿐 결정하지 않는다.
대장에 줄이 없는 리포는 미판정이 아니라 대상 밖이다(GLG, 2026-09-04: "다 관심둘거 없어
내가 요청하면 대상에 넣으면돼"). 후보를 들고 올리지 않는다. 목록을 넓히는 손은 GLG 하나다.
후보를 들고 묻는 자리는 하나만 남는다 — 대상인데 문서 id가 빈 리포(문서 미정 레인).
계약 — 이걸 어기면 sorge가 아니다
-
앞서 뛰어가고, 대신 뛰어들지 않는다. 발견하고 이름 붙여 넘긴다. 남의 리포에
커밋하지 않는다. 노트도 대신 쓰지 않는다 — 쓰는 손은 그 집 담당자와 botlog 스킬이다.
-
"없다"는 결함이 아니다. 담당자 문서 없는 리포, 수선 스킬 없는 리포는 정상이다.
아직 판정되지 않았을 뿐이다. 묻지 않은 곳에 설치하지 않는다.
-
파생 가능한 것은 저장하지 않는다. 그러나 판정은 저장한다. 커밋 수·도장 날짜·스킬
유무는 매번 다시 유도한다. 어느 노트가 담당자 문서인가는 판정이므로 대장이 denote id로
든다 — §·#담당자는 사람 눈을 위한 힌트이지 정의가 아니고, 그걸 정의로 쓰면 매 순회가
「있냐 없냐」 씨름이 된다. 판정은 배정(+id) / 관리 안 함 / 보류.
-
자동 발신 금지. 순회는 보고까지다. 형제를 부르는 것은 GLG의 손이다.
-
출력은 표가 아니라 브리핑. 표를 뱉으면 GLG가 여전히 리포를 돌아다녀야 한다.
--brief가 그대로 던져지는 형태인 이유다. 블록은 노트 제목·보낸 이·돌아올 길을 달고 나간다 —
받는 담당자가 되물어야 하면 순회가 자기 일을 넘긴 것이다.
-
"없다"가 참일 때만 4번이 선다. 있는 것을 없다고 읽는 오답은 원칙 자체를 무너뜨리므로
다른 종류의 잘못이다. 2026-09-04에 둘이 나왔다 — 내보내진 md를 읽어 갓 개명된 노트를
없다고 함, § 언급을 담당자 문서로 쳐서 진짜 담당자 문서를 가림. 판정 전에
읽는 자리가 SSOT인지 먼저 묻는다.
같은 날 이 조항을 잘못 늘렸다가 되돌린 자리가 있다. "절차대로 갱신했는데 빚이 안 줄어든다"를
③번째 오답으로 보고 기준선에 히스토리 최신 줄을 폴백으로 넣었더니, entwurf의 진짜 빚
246커밋이 감춰졌다(GLG 판정 2026-09-04). 증상은 진짜였고 처방이 뒤집혀 있었다 —
없다고 읽히는 것을 고치는 자리는 읽는 쪽이 아니라 쓰는 쪽이다. 읽는 쪽을 관대하게 만들면
있는 것을 없다고 읽는 대신 없는 것을 있다고 읽게 될 뿐이고, 후자가 더 나쁘다.
판단 기준
- 빚: 노트
#+hugo_lastmod 이후 커밋 수. 날짜가 아니다 — 커밋 0인 리포의 오래된
노트는 낡은 게 아니라 정확한 것이다(실측: denotecli 109일 / 0커밋).
#+hugo_lastmod는 기준선이자 도장이다. 이름과 달리 퍼블리시 관심사가 아니라 "이 문서를
정말 고쳤다"를 손으로 찍는 표시다(GLG, 2026-09-04). 히스토리 줄은 로그이지 수정이 아니므로
기준선을 올리지 않는다. 그래서 도장 없는 노트가 빚으로 읽히면 그건 오답이 아니라 참이다.
#담당자 표시는 사람이 읽는 표지다. GLG가 자기 눈으로 찾으려고 붙이는 것이지 순회의
조회 수단이 아니다(GLG, 2026-09-04). 미표시를 결함으로 올리지 않는다.
- 문서 미정: 대장 판정은
배정인데 담당자 문서 id가 비어 있다. 여기만 후보를 들고 묻는다.
- 곁노트: 담당자 문서는 아니지만 그 리포를 읽는 데 필요한 판정 — 「이건 왜 층이라 합치지
않는다」, 「이건 폐기됐으니 참고만」. 유도되지 않으므로(파일은 멀쩡히 있고 제목도
§<repo>로
시작한다) 대장 근거 칸이 들고, --brief가 통째로 실어 나른다. 곁노트: 는 칸의 마지막 절로
쓴다 — 순회가 거기서 칸 끝까지를 자른다.
- 대상 밖: 대장에 없다. 세기만 하고 묻지 않는다. 전에 여기
확인 요청 레인이 있었고
최근 커밋만 있으면 무엇이든 물었다 — 71개 중 28개가 올라왔다. GLG가 전제를 걷어냈으므로
레인과 --recent-days 가 함께 사라졌다. 최근성은 이제 아무것도 고르지 않는다.
- 대장 고장: 대장이 가리키는 id가 org에 없다. 담당자가 갚을 빚이 아니라 대장의 일이다.
판정이 아무것도 안 가리키는 상태는 대장이 스스로 못 고치므로 첫 줄에 올린다.
- 건강 신호: 볼 것은 둘뿐이다 — 대상 리포의 빚이 줄어드는가, 대장이 가리키는 id가
실재하는가(
대장 고장은 담당자가 아니라 대장의 일이라 첫 줄에 선다). 「몇 개가 미판정인가」는
더 이상 신호가 아니다. 대상 밖은 결함이 아니라 경계다.
담당자 문서 갱신을 부탁할 때
--brief 블록에 이 세 줄이 이미 들어 있다. 형제에게 넘길 때 빼지 않는다:
denotecli read <id> --outline 으로 뼈대 먼저 — 통째로 읽고 다시 쓰지 않는다
- 히스토리 한 줄 + 필요한 헤딩만 덧댄다 (Documents Grow, Not Get Edited)
- 쓰는 손은
botlog 스킬. agent-denote-add-history / add-heading
- 내용을 실제로 고쳤으면 도장을 찍는다 —
agent-denote-set-front-matter 로 :hugo_lastmod.
히스토리 줄만 얹은 것은 수정이 아니다. 이것이 빚이 줄어드는 유일한 길이고, 그래야 한다
참조
- 계약 전부:
~/repos/gh/sorge/AGENTS.md
- 판정 대장:
~/repos/gh/sorge/LEDGER.md
- 원석:
denote:20240705T144627 (왜) · denote:20260227T031800 (어떻게)