남윤서AX 사업개발 · 사업관리

A04

에이전트 세션 핸드오프 규율

컨텍스트가 끊겨도 다음 세션이 재스코핑 없이 이어받는 인계 포맷.

형식
템플릿
붙이는 곳
작업 폴더에 _핸드오프.md 로 저장
분량
99줄
업무 단계
세션 인계
버전
v0.1 · 2026. 8. 10.

언제 쓰나

  • 장기 작업 중 컨텍스트 한계로 세션을 종료해야 하고, 다음 세션의 재파악이 반복될 때
  • 여러 세션 또는 여러 담당자가 동일 작업에 병렬 투입되어 같은 파일을 수정할 때
  • 전일 중단한 작업을 재개할 때 진행 지점이 확인되지 않을 때

안 쓰는 경우

한 세션에 종료되는 작업에는 적합하지 않습니다. 핸드오프 작성 시간이 작업 시간을 초과합니다. 두 세션 이상 이어질 것으로 예상되는 시점부터 효용이 발생합니다.

입력

없습니다. 다만 컨텍스트가 60~70% 소진된 시점에 작성을 시작해야 합니다. 한계에 도달한 뒤 작성하면 앵커를 확인할 여유가 없어 요약본만 산출되며, 요약본은 핸드오프 요건을 충족하지 않습니다.

사용법

  1. 작업 폴더에 _핸드오프.md 로 저장하고 A~D 네 구획을 채웁니다.
  2. 문서 상단의 단일 writer 경계를 파일 단위로 확정합니다. 작업 단위로 분할하지 않습니다.
  3. 다음 세션은 이 파일 하나만 읽고 시작합니다.

본문

99줄
<!-- 에이전트 세션 핸드오프 규율 v0.1 · https://namtank96.github.io/assets/a04-handoff -->

# 세션 핸드오프: {작업명} (v0.1, YYMMDD)

> **목적**: 이 세션이 컨텍스트 한계로 끊길 때 다음 세션이 재스코핑 없이 이어받도록.
> 아래 항목은 전부 현행 산출물로 실측한 것이다. 기억으로 적지 않는다.
>
> **단일 writer 경계**: `{경로 A}` · `{경로 B}` = 이 세션 소유.
> 다른 세션이 동시에 편집하면 충돌한다. 경계 밖은 건드리지 않는다.
>
> **이 작업의 불변 원칙**: {3~5개. 매 세션 반복 설명하지 않기 위해 여기 고정}

---

## A. 이번 세션 완료

| 영역 | 항목 | 앵커 | 검증 |
|---|---|---|---|
| {영역} | {무엇을 했는가. 한 줄} | `{파일:함수}` `{식별자}` | {어떻게 확인했는가} |

**규칙**
- **앵커 없는 완료는 완료가 아니다.** 다음 세션이 파일을 열어 바로 찾을 수 있는
  파일명·함수명·식별자·줄번호를 적는다. "대시보드 개선함"은 앵커가 아니다.
- **검증 방법을 한 줄로 남긴다.** 재현 명령이면 명령을, 눈으로 본 것이면 무엇을 봤는지.
  검증하지 않았으면 "미검증"이라고 적는다. 비워두지 않는다.
- 완료 항목을 요약하지 않는다. 요약하면 다음 세션이 다시 열어봐야 한다.

## B. 남은 작업 (우선순위순)

- **{항목명}** `[S|M|L]`: {무엇을 해야 하는가. 착수 지점 포함}
  - 선행: {이게 끝나야 착수 가능한 것. 없으면 "없음"}
  - ⚠ **보류 권고**: {보류할 이유. 아래 규칙 참조}
- ~~**{완료된 항목}**~~ ✅ YYMMDD: {무엇을 했는지 + 앵커}

**규칙**
- **규모를 반드시 단다.** `S`=한 세션 일부, `M`=한 세션, `L`=여러 세션.
  규모가 없으면 다음 세션이 L짜리를 세션 끝에 집어 들었다가 반쯤 하고 또 끊긴다.
- **선행 의존을 단다.** 순서가 있으면 순서를, 없으면 "없음"이라고 적는다.
- **보류도 기록한다.** 안 하기로 한 것을 그냥 지우면 다음 세션이 똑같이 다시 검토한다.
  보류 사유는 구체적으로 적는다. "동작하는 코드를 리팩터해야 해서 회귀 위험",
  "요구가 확인되지 않은 투기적 기능", "디자인 세션 경계라 여기서 판단 불가" 같은 식.
- **완료 항목은 취소선으로 남긴다.** 지우지 않는다. 무엇이 이미 검토됐는지가 정보다.
- 우선순위를 붙이되, **"왜 이게 먼저인가"를 한 줄** 적는다.

## C. 핵심 결정 · 주의

- **{결정}**: {다음 세션이 이걸 모르면 되돌릴 결정}
- **{함정}**: {이미 한 번 밟은 함정. 다시 밟지 않게}

**규칙**
- 3~5개로 제한한다. 많아지면 아무도 안 읽는다.
- 판단 기준은 **"다음 세션이 이걸 모르면 내 작업을 되돌릴 것인가"** 하나다.
  되돌릴 만한 것만 적는다.
- 미구현을 정직하게 적는다. "아직 없음", "가짜 값", "임시 우회"를 숨기면
  다음 세션이 그걸 완성된 것으로 알고 위에 쌓는다.

## D. 원장 포인터

- 계획: `{마스터 로드맵 경로}`
- 변경 기록: `{항목별 상세 로그 경로}`
- 관련 스펙: `{경로}` · `{경로}`

**규칙**: 내용을 여기 복사하지 않고 경로만 적는다. 복사하면 두 벌이 되고 반드시 어긋난다.

---

# 이 규율을 쓰는 법

## 단일 writer 경계: 이 문서의 핵심

여러 세션이나 여러 사람이 한 작업에 병렬로 붙을 때, **작업 단위가 아니라 파일 단위로 쪼갠다.**

```
세션 1 = core/*.js · index.html
세션 2 = *.css · docs/*.md
세션 3 = 테스트 · 스크립트
```

"세션 1은 기능, 세션 2는 디자인"처럼 나누면 둘 다 같은 파일을 건드리고 충돌한다.
파일로 나누면 충돌이 구조적으로 0이 된다. 경계는 핸드오프 문서 맨 앞에 못박고,
경계를 넘어야 하면 그 세션에서 하지 말고 **다음 세션 항목으로 넘긴다.**

## 언제 쓰는가

- 컨텍스트가 60~70% 찼을 때. 다 차고 나서 쓰면 요약본밖에 못 쓴다.
- 세션을 의도적으로 끊을 때(작업 성격이 바뀔 때, 다른 사람에게 넘길 때).
- 하루를 마칠 때. 내일의 나도 남이다.

## 안티패턴

| 하지 말 것 | 왜 |
|---|---|
| "대략 이런 걸 했다"는 서술 요약 | 다음 세션이 결국 코드를 다 읽는다. 앵커를 적으면 안 읽어도 된다. |
| 남은 작업을 규모 없이 나열 | 세션 끝에 L짜리를 집어 들고 또 끊긴다. |
| 보류 항목 삭제 | 다음 세션이 똑같이 다시 검토하고 똑같이 보류한다. |
| 원장 내용을 본문에 복사 | 두 벌이 되고 어긋난다. |
| 완료 항목에 검증 방법 생략 | 다음 세션이 "됐다고 적혀 있는데 안 되는" 상태를 처음부터 다시 파헤친다. |
| 결정 사항을 10개 이상 나열 | 안 읽힌다. 되돌릴 만한 것만 남긴다. |

출력 예시

A구획에서 앵커가 있는 행과 없는 행의 차이입니다.

❌  | 시각화 | 대시보드 개선함 | | |

✅  | 시각화 | 추세 그래프를 순수함수로 분리 | `trendPoly(series,{w,h,pad})`
                                              (renderDashboard 직전) | node 자체검증 통과 |

위쪽은 다음 세션이 대시보드 관련 파일을 모두 확인해야 하고, 아래쪽은 함수 하나만 확인하면 됩니다.

B구획에서 보류를 기록한 항목입니다.

- **위젯 레지스트리** [M~L] — WIDGETS={id:{title,span,render}} 레지스트리 +
  순서 렌더 + add/remove
  - 선행: 없음
  - ⚠ 보류 권고 — 이유 둘. (1) 동작 중인 6개 섹션을 레지스트리로 재작성해야 해서
    회귀 위험이 실이득보다 큽니다. (2) add/remove 는 엔드유저 커스터마이즈인데
    요구가 확인된 적이 없는 투기적 기능입니다.
    사용자가 커스터마이즈를 명시 요청할 때 착수하세요.
    → 다음은 lineage 흐름(실가치·저위험)을 권장합니다.

이 항목을 삭제했다면 다음 세션이 동일하게 검토하고 동일한 결론에 도달했을 것입니다. 보류 사유를 기록하면 해당 검토 시간이 절약됩니다.

이 규칙의 근거

앵커를 강제하는 것. 무엇을 했다는 서술은 다음 세션에 정보를 제공하지 않습니다. 코드를 열어 위치를 다시 찾아야 하며, 이 과정이 재스코핑입니다. 파일명·함수명·식별자를 기재하면 다음 세션은 해당 지점으로 바로 이동합니다. 핸드오프의 효용은 요약의 품질이 아니라 앵커의 정확도에서 결정됩니다.

단일 writer 경계를 파일 단위로 긋는 것. 작업 단위로 분할하면(기능 세션과 디자인 세션) 양쪽이 같은 파일을 수정하게 됩니다. 기능 변경은 스타일을 수정하고, 디자인 변경은 마크업을 수정하기 때문입니다. 파일 단위로 분할하면 충돌 가능성이 구조적으로 제거됩니다. 경계를 넘는 작업이 발생하면 해당 세션에서 처리하지 않고 다음 세션 항목으로 이관합니다.

규모를 강제하는 것. 규모 표기가 없으면 다음 세션이 종료 시점에 여러 세션 분량의 항목에 착수해 중도에 다시 중단됩니다. 핸드오프가 한 단계 더 누적됩니다. S/M/L 표기가 이를 방지합니다.

보류를 기록하는 것. 수행하지 않기로 한 결정도 결정입니다. 기록을 삭제하면 다음 세션이 동일하게 검토하고 동일하게 보류하여 판단 비용이 중복 발생합니다. 보류 사유는 이후 상황이 변경됐을 때 착수 여부를 판단하는 기준으로도 사용됩니다.

컨텍스트가 다 차기 전에 쓰는 것. 한계에 도달하면 앵커를 확인할 여유가 없어 기억에 의존해 작성하게 됩니다. 기억으로 작성한 앵커는 부정확합니다. 부정확한 앵커는 앵커가 없는 경우보다 손실이 큽니다. 다음 세션이 존재하지 않는 위치를 탐색하는 데 시간을 소모합니다.

주의점·한계

  • A구획의 앵커가 부정확하면 이 포맷 전체가 무의미해집니다. 다음 세션이 코드 전체를 다시 읽게 됩니다.
  • C구획이 10개를 초과하면 열람률이 떨어집니다. "모르면 되돌릴 것"만 남깁니다.
  • 원장 내용을 D구획에 복사하면 동일 내용이 두 벌 생겨 불일치가 발생합니다. 경로만 기재합니다.

변경 이력

  • v0.1 · 2026. 8. 10. · 최초 공개