Files
document-haness/.agents/skills/writing-tech-log-records/references/from-ssot-to-records.md
T

4.3 KiB

SSOT에서 글감을 뽑는 기준

final/의 긴 글 하나가 정본(SSOT)이다. 거기서 Studio에 올릴 기록을 뽑아낸다. 이 문서는 무엇을 몇 건으로 나눌지를 정하는 기준이다. 나눈 결과는 tech-log-tree.json에 제목만 먼저 적고, 글은 그다음에 쓴다.

왜 먼저 나누는가

긴 글을 앞에서부터 잘라 기록으로 만들면 절 하나가 기록 하나가 된다. 그러면 Case의 칸도 Reference의 칸도 반쯤만 맞는 기록이 나온다. 종류를 먼저 정하고 그 종류가 요구하는 것이 SSOT에 있는지 확인해야 한다.

한 건으로 자르는 단위

절이 아니라 주장이다. SSOT의 ## 하나가 기록 하나가 아니다. 다음 넷 중 하나가 한 건이다.

단위 무엇 종류
재현한 관측 하나 조건을 갖추고 돌려서 얻은 수치·실행계획·로그 Case
남의 것의 동작 하나 문서와 코드를 읽어 정리한 규칙·흐름 Concept
반복 적용할 기준 하나 다음에도 같게 하기로 한 규칙 Reference
프로젝트가 고른 방향 하나 대안을 두고 정한 것 Decision
닫히지 않은 판단 하나 아직 모르는 것과 무엇을 하면 닫히는지 Question

종류를 정하는 물음

순서대로 묻는다. 먼저 걸리는 것이 그 글감의 종류다.

  1. 내가 돌려서 얻은 결과인가 → Case. 수치·실행계획·로그가 SSOT에 있어야 한다. 없으면 Case가 아니다
  2. 남의 것이 어떻게 동작하는지인가 → Concept. 무엇을 보고 썼는지(버전)가 있어야 한다
  3. 다음에도 같게 하기로 한 규칙인가 → Reference
  4. 대안을 두고 고른 것인가 → Decision. 근거로 걸 기록이 최소 하나 필요하다
  5. 아직 모르는 것인가 → Question. 미지수가 최소 하나 필요하다

나눌 때 지키는 것

한 건에 종류를 섞지 않는다. N+1을 재현해 고쳤고 그 과정에서 조회 기준을 굳혔다면 Case 하나와 Reference 하나로 나누고 관계로 잇는다.

증거가 없는 Case는 만들지 않는다. SSOT에 그 수치가 없으면 글감 목록에는 남기되 file 없이 두고, 측정을 먼저 한다. 없는 수치를 쓰지 않는다.

Decision은 근거 없이 만들지 않는다. 게시가 거절된다. 근거로 걸 Case나 Concept이 먼저 있어야 한다. 그래서 Decision은 대개 마지막에 뽑는다.

같은 관측을 두 건으로 쪼개지 않는다. 「N+1이 났다」와 「그래서 몇 개가 나갔다」는 한 건이다. 쪼개면 둘 다 반쪽이 된다.

주제를 먼저 정한다. Studio는 주제 아래에 다섯 종류를 나눠 보여 준다. 주제가 다르면 같은 프로젝트여도 폴더가 갈린다. 주제 slug는 Studio의 것을 그대로 쓴다.

tech-log-tree.json

주제 → 종류 → 글감 순서로 담는다. 아직 쓰지 않은 글감은 file 없이 제목만 둔다.

{
  "project": "n+1liner",
  "ssot": "final/document.md",
  "topics": {
    "jpa-feed-query-performance": {
      "topic": "jpa-feed-query-performance",
      "kinds": {
        "case": [
          { "title": "Fetch 타입이 아니라 조회 방식이 만든 ToOne N+1",
            "slug": "eager-toone-nplus1-without-access",
            "file": "jpa-feed-query-performance/case/case-eager-toone-nplus1-without-access.md",
            "status": "게시 전", "studioId": "32d0be7d-…", "assets": 1, "evidence": 3 },
          { "title": "아직 쓰지 않은 글감" }
        ],
        "concept": [], "reference": [], "question": [], "decision": []
      }
    }
  }
}

기록을 쓰거나 지운 뒤에는 다시 만든다. 스크립트는 기록 파일에서 값을 읽어 채우고, file이 없는 글감은 지우지 않는다.

python3 scripts/build-tech-log-tree.py [프로젝트]

순서

  1. SSOT를 끝까지 읽는다. 절 제목만 훑지 않는다 — 수치와 근거가 어디 있는지 알아야 종류를 정한다
  2. 위 물음으로 글감을 나누고 주제를 정한다
  3. tech-log-tree.json에 제목만 적는다. 이때 글은 쓰지 않는다
  4. 글감 하나를 골라 <주제>/<종류>/에 기록을 쓴다. 형식은 writing-each-kind.md
  5. 트리를 다시 만든다
  6. Studio에 넣고 저장한다