5. 마일스톤&WBS

REMAKE DAY는 2026-09-03부터 14일 동안 집중 개발해 2026-09-16에 v1을 공개했습니다. 14일은 설계(Sprint 1) → 구현(Sprint 2) → 검증·v1 공개(Sprint 3) 세 스프린트로 나뉘고, 공개 이후의 작업은 종료일 없는 Sprint 4에 누적합니다. 아래 로드맵과 보드는 _data/project_sprints.yml의 과제 210건을 영역(프론트·백엔드·AI 에이전트·평가·QA·릴리스·시나리오·콘텐츠)별로 보여 줍니다.

스프린트 로드맵

상태 기준일 2026-10-15

v1은 2026-09-16 공개. 이후 작업은 Sprint 4에 누적.

스프린트·기간목표진행사항
Sprint 1
09.03 ~ 09.04
일자별 진행 사항 →
기획서 v6 기준으로 기획 문서를 갱신하고 ERD·API 계약·에이전트 구성을 확정해 화면 5장 구현을 바로 시작할 수 있게 한다.
설계
완료
과제 35건
예정 4 검토 5 완료 26
Sprint 2
09.05 ~ 09.12
일자별 진행 사항 →
절대 방어선 ①~⑤(대화·판정, 침묵 권고, 루프 축적, 민석 예외, 전이)를 코드로 구현하고 1루프 완주 알파를 거쳐 기능을 동결한다.
구현
완료
과제 122건
예정 31 진행 중 2 검토 25 완료 64
Sprint 3
09.13 ~ 09.16
일자별 진행 사항 →
세션/IP 제한·비용 상한·엔딩 텍스트를 공개 수준으로 닫고, RC 검증과 배포·롤백 리허설을 거쳐 v1을 공개한다.
검증·v1 공개
완료
과제 53건
예정 20 검토 9 완료 24
Sprint 4
09.17 ~
일자별 진행 사항 →
v1을 운영하면서 연구 재집계(09-18)와 개발일지를 이어 가고, v1에서 미룬 범위를 확장한다.
v1 이후
진행 중
과제 0건

스프린트 보드

Sprint 1 09.03 ~ 09.04 완료

설계

Sprint 1 일자별 진행 사항 →

목표 기획서 v6 기준으로 기획 문서를 갱신하고 ERD·API 계약·에이전트 구성을 확정해 화면 5장 구현을 바로 시작할 수 있게 한다.
스프린트 종료 기준 ERD v1 FREEZE, API 계약 v1 발행, 도메인 계층 순수 함수 테스트가 CI에서 돈다.

칸반 보기 · 예정 4 / 진행 중 0 / 검토 5 / 완료 26

예정 4

PM-06 ·

QA·릴리스P0
GitHub 브랜치 보호 · PR 템플릿

종료 조건: main 직접 push 차단, PR 템플릿에 방어선 항목 체크란 포함

산출물: 레포 설정

APP-04 ·

프론트P0
노트 · 인스펙터 API 계약 리뷰

종료 조건: 필요한 필드가 계약에 다 있는지 확인하고 누락을 계약 변경 로그에 기록

산출물: 계약 피드백

FE-05 ·

프론트P0
SSE 수신 골격

종료 조건: delta/tool/done/error 이벤트를 받아 상태로 반영, 자체 타임아웃 존재

산출물: sse client

PM-10 ·

QA·릴리스P0
인프라 권한 · 접근 경로 정리

종료 조건: 서버·시크릿·배포 권한과 접근 경로를 문서로 정리 — 단일 장애점 제거

산출물: 권한 정리

진행 중 0

해당 작업 없음

검토 5

FE-02 ·

프론트P0
디자인 토큰 — 읽기 우선 타이포

종료 조건: 본문 행간 1.8 이상, 어절 단위 줄바꿈, 상태색 3종 확정

산출물: design tokens

AI-06 ·

AI 에이전트P0
llm_call 계측 테이블 반영 요청

종료 조건: 역할·모델·스키마통과·재시도·토큰·지연·비용 필드가 ERD v1 에 포함

산출물: ERD 반영

BE-04 ·

백엔드P0
ERD v1 FREEZE + Alembic 초기 리비전

종료 조건: 빈 DB에 전체 스키마 생성 성공, downgrade 작성 완료

산출물: alembic/versions

FE-06 ·

프론트P1
공통 컴포넌트 최소 세트

종료 조건: 버튼·입력·배너·스켈레톤이 토큰 기반으로 구현

산출물: components

PM-07 ·

QA·릴리스P0
ERD FREEZE 결정 · 기록

종료 조건: 18:00 ERD v1 확정, 이후 변경 절차(마이그레이션+클라이언트 대응) 기록

산출물: /plan/data/ 결정 로그

완료 26

AI-01 ·

AI 에이전트P0
에이전트 6층 구성 확정

종료 조건: Planner·Agent·Advisor·Re-plan·Evaluator·Memory 의 입출력 스키마가 문서로 확정

산출물: /plan/ai/

AI-02 ·

평가P0
LLM 프로바이더 선정 · 역할별 후보 · 비용 추정

종료 조건: Agent(저지연)·Planner(추론)·Evaluator(긴 로그) 후보와 판당 예상 비용 표

산출물: 모델 선정서

AI-03 ·

AI 에이전트P0
NPC 3인 초기 상태 · 목표 정의

종료 조건: 민석·채연·은상의 자기 목표와 초기 의심/신뢰, 관계가 데이터로 정의

산출물: NPC 정의

APP-01 ·

프론트P0
화면 범위 조정 — 앱 → 노트·인스펙터

종료 조건: 기획서에 모바일 앱이 없음을 확인하고 노트·인스펙터를 웹 화면으로 확정

산출물: 범위 확정

APP-02 ·

프론트P0
웹 개발 환경 셋업 · 디자인 토큰 공유

종료 조건: 같은 레포에서 dev 서버가 뜨고 아침·대화 화면과 같은 디자인 토큰을 사용

산출물: 환경 셋업

APP-03 ·

프론트P1
노트 · 인스펙터 화면 구조 설계

종료 조건: 두 화면의 정보 구조와 진입 동선을 스케치로 확정

산출물: 화면 설계

BE-01 ·

백엔드P0
ERD 초안 — 세션·루프·발화·판정 로그

종료 조건: 계정 테이블 없이 익명 session 기준으로 테이블 목록과 관계 초안 게시, 고립 테이블 0개

산출물: /plan/data/

BE-02 ·

백엔드P0
도메인 계층 골격 — 의심도·신뢰도·발화 예산

종료 조건: LLM 없이 import 되고 유닛테스트가 도는 순수 함수 모듈이 존재

산출물: domain/

BE-03 ·

백엔드P0
포트 3개 인터페이스 정의 (LLM·도구·도메인)

종료 조건: 세 포트의 시그니처가 코드로 존재하고, 도구 이름이 도메인 중립(ask_third_party·search_history)

산출물: ports/

FE-01 ·

프론트P0
웹 프로젝트 생성 · Vercel 연결

종료 조건: dev 서버가 3300 으로 뜨고 /api 가 8300 으로 프록시, Vercel 프리뷰 배포 1회 성공

산출물: frontend/

FE-03 ·

프론트P1
화면 5장 라우팅 골격

종료 조건: 아침·대화·노트·인스펙터 라우트가 존재하고 이동 동작 (권고는 오버레이)

산출물: 라우팅

PM-01 ·

QA·릴리스P0
Jekyll 개발 허브 구축 · 도메인 연결

종료 조건: 개발 문서 사이트에서 기획·일정·타임라인이 열린다 (DNS 연결 완료)

산출물: 개발 허브 사이트

PM-02 ·

QA·릴리스P0
Vercel 계정 · 프로젝트 등록

종료 조건: 웹 배포 대상이 준비되고, 추후 도메인 연결이 클릭 수준으로 가능

산출물: Vercel 프로젝트

PM-03 ·

시나리오·콘텐츠P0
기획서 v6 를 기획 문서 10편에 반영

종료 조건: 제품 정의·방어선·ERD·에이전트 설계가 원문 기준으로 교체되고 추론 표시가 사라진다

산출물: /plan/ 전체

PM-04 ·

QA·릴리스P1
발화 예산을 설정값으로 분리 · 잠정 기본값 지정

종료 조건: 상수 하드코딩 금지. 초기 5 / 5루프째 4 / 하한 3 을 잠정값으로 두고 확정 전까지 유효함을 기록

산출물: 설정 파일 · 결정 기록

PM-05 ·

QA·릴리스P0
화면 범위 조정 (앱 → 노트·인스펙터)

종료 조건: 기획서에 모바일 앱이 없음을 확인하고 노트·인스펙터를 웹 화면으로 확정

산출물: 범위 문서 갱신

AI-04 ·

AI 에이전트P0
JSON 스키마 하네스 + 재시도

종료 조건: 자유 텍스트 응답이 거부되고, 스키마 위반 시 재시도 후 안전 기본값

산출물: harness/

AI-05 ·

AI 에이전트P0
Agent 판정 프롬프트 v0

종료 조건: 발화 1건에 대해 응답·의심여부·도구호출·계획수정 을 JSON으로 반환

산출물: prompts/agent/v0

APP-05 ·

프론트P0
노트 타임라인 골격

종료 조건: 루프별 항목이 시간순으로 쌓이는 레이아웃이 목데이터로 렌더

산출물: 노트 골격

APP-06 ·

프론트P1
인스펙터 판정 체인 골격

종료 조건: 발화 → 내부 판정 여러 줄 → 출력 구조가 목데이터로 렌더

산출물: 인스펙터 골격

BE-05 ·

백엔드P0
도메인 규칙 테스트 우선 작성

종료 조건: 의심 누적·신뢰 임계·예산 감소/회복/하한·루프 잔류율 5% 가 테스트로 고정

산출물: tests/domain

BE-06 ·

백엔드P0
API 계약 v1 발행 (OpenAPI)

종료 조건: 세션·루프·발화(SSE)·노트·인스펙터 스키마 공개, 프론트가 참조 시작

산출물: /plan/api/

BE-07 ·

백엔드P1
세션 발급 + GET /sessions/me 배선 검증

종료 조건: 로그인 없이 첫 요청에서 익명 세션이 발급되고 200 왕복

산출물: session API

FE-04 ·

프론트P0
API 클라이언트 + 세션 키 보관

종료 조건: 첫 진입 시 세션 발급 후 로컬 보관, X-Session-Key 자동 첨부

산출물: api client

PM-08 ·

QA·릴리스P0
스테이징 API 서버 + PostgreSQL(벡터) 프로비저닝

종료 조건: api-stg 헬스체크 통과, 벡터 확장 설치 확인, 일 1회 백업 크론 동작

산출물: 스테이징 환경

PM-09 ·

QA·릴리스P0
시크릿 체계 + LLM 비용 상한 키 등록

종료 조건: .env.example 만 커밋, GitHub/Vercel 시크릿 등록, LLM_DAILY_LIMIT_USD 값 확정

산출물: /pm/infra/ 시크릿 표

Sprint 2 09.05 ~ 09.12 완료

구현

Sprint 2 일자별 진행 사항 →

목표 절대 방어선 ①~⑤(대화·판정, 침묵 권고, 루프 축적, 민석 예외, 전이)를 코드로 구현하고 1루프 완주 알파를 거쳐 기능을 동결한다.
스프린트 종료 기준 18:00 기능 동결 뒤 회귀 시나리오 R1~R10 전건 통과, P0/P1 0건, 감사 어댑터 교체 시 엔진 코드 diff가 비어 있다.

칸반 보기 · 예정 31 / 진행 중 2 / 검토 25 / 완료 64

예정 31

AI-09 ·

AI 에이전트P0
스트리밍 응답 처리

종료 조건: 토큰 단위 델타가 SSE로 흐르고 done/error 로 반드시 종료

산출물: 스트리밍

APP-08 ·

프론트P1
노트 빈 상태 · 첫 루프 처리

종료 조건: 1루프에는 노트가 거의 비어 있고, 그 상태가 자연스럽게 보인다

산출물: 빈 상태

FE-12 ·

프론트P0
NPC 상태 비노출 확인

종료 조건: 의심도·신뢰도가 화면 어디에도 렌더되지 않음 (인스펙터 제외)

산출물: 점검

PM-17 ·

QA·릴리스P1
데일리 리뷰 #2

종료 조건: 방어선 ① 진척 확인, 내일 통합 선행조건 점검

산출물: 리뷰 기록

AI-13 ·

AI 에이전트P0
Re-plan — 4개 트리거 구현

종료 조건: 의심 임계·신뢰 임계·탐문 결과·계획 실패에서 계획이 실제로 바뀌고 로그에 남음

산출물: Re-plan

AI-14 ·

AI 에이전트P0
SSE 이벤트 계약 확정

종료 조건: advice/delta/tool/done/error 를 프론트와 백엔드가 같은 스펙으로 확정

산출물: SSE 스펙

APP-14 ·

프론트P0
노트 검색 UI (인터페이스 선구현)

종료 조건: 검색창이 존재하고 전량 반환으로 동작. 임베딩 교체 시 UI 변경 없음

산출물: 검색 UI

APP-15 ·

프론트P1
긴 판정 체인 스크롤 처리

종료 조건: 체인이 길어져도 화면이 무너지지 않고 가로 스크롤이 생기지 않음

산출물: 레이아웃

PM-20 ·

QA·릴리스P1
데일리 리뷰 #3 + 진행률 리포트

종료 조건: 방어선 5개별 완료율 산출, 전이 탐색 결과 확인

산출물: 진행률 표

AI-17 ·

AI 에이전트P0
권고 A/B — 근거 표시 유무 분기

종료 조건: rationale_shown 이 세션별로 갈리고 로그에 기록됨

산출물: A/B 분기

APP-16 ·

프론트P0
노트 불일치(손상 2층) 렌더

종료 조건: 불일치가 오류 표시가 아니라 조용히 존재한다. 경고 아이콘 금지

산출물: 손상 2층 UI

FE-18 ·

프론트P1
근거 표시 A/B 렌더 분기

종료 조건: 서버가 내려준 분기값에 따라 근거가 표시되거나 생략됨

산출물: A/B 렌더

PM-21 ·

시나리오·콘텐츠P0
손상 2·3층 문안 (노트 불일치 · 충식 소실)

종료 조건: 불일치 케이스 5개, 충식 언급 소거 단계 3단 문안 작성

산출물: 텍스트 시트

APP-20 ·

프론트P0
노트 대표 캡처 다듬기

종료 조건: 루프가 쌓인 노트 화면이 캡처 한 장으로 설득력을 갖는다

산출물: 캡처본

APP-21 ·

프론트P1
인스펙터 가독성 조정

종료 조건: 수치·화살표·부작용이 한눈에 구분된다

산출물: 가독성

BE-22 ·

백엔드P1
판정 로그 조회 인덱스

종료 조건: 인스펙터 조회가 N+1 없이 단일 쿼리 범위에서 처리

산출물: 인덱스

PM-26 ·

QA·릴리스P1
중간 리스크 재평가

종료 조건: R2~R10 트리거 도달 여부 점검, 상위 5개에 기한 재지정

산출물: /plan/risk/

AI-22 ·

AI 에이전트P0
민석 예외 정책 적용

종료 조건: 민석만 루프 기억 유지, 채연·은상 5% 잔류. 인터페이스는 동일

산출물: 메모리 정책

AI-23 ·

AI 에이전트P0
정체 발현 트리거

종료 조건: 민석이 유저가 아직 하지 않은 말에 반응하고 곧바로 수습한다

산출물: 발현 트리거

APP-22 ·

프론트P0
충식 소실(손상 3층) 표현 지원

종료 조건: 노트에 남은 충식 언급이 후반에 어긋나 보이는 처리

산출물: 손상 3층

FE-23 ·

프론트P0
루프 카운터 비노출 · 후반 문장 변화 대응

종료 조건: 카운터가 없고, 7시 13분으로 바뀌어도 화면이 자연스럽다

산출물: 점검

PM-29 ·

QA·릴리스P1
데일리 리뷰 #5

종료 조건: 방어선 ③④ 실동작 확인 (손상 발현·민석 기억)

산출물: 리뷰 기록

APP-26 ·

프론트P0
Feature Freeze — 노트·인스펙터 동결

종료 조건: 18:00 이후 기능 커밋 없음

산출물: 동결 확인

APP-27 ·

프론트P2
글자 크기 확대 대응

종료 조건: 확대 시 노트·인스펙터 레이아웃이 잘리지 않음

산출물: 접근성

FE-25 ·

프론트P0
Feature Freeze — 웹 본류 동결

종료 조건: 18:00 이후 기능 커밋 없음

산출물: 동결 확인

PM-30 ·

QA·릴리스P0
Feature Freeze 선언

종료 조건: 18:00 이후 기능 PR 중단, 예외는 기록한 건만

산출물: 동결 공지

AI-29 ·

평가P0
탐문 ON/OFF 대조 실험

종료 조건: 동일 발화 시퀀스에서 ask_npc 유무에 따라 발각률이 갈리는지 수치로 확인

산출물: 대조 리포트

APP-30 ·

프론트P1
실기기 확인 (iOS · Android 브라우저)

종료 조건: 양 플랫폼 모바일 브라우저에서 1루프 완주

산출물: 실기기 결과

BE-30 ·

백엔드P0
마이그레이션 롤백 검증

종료 조건: downgrade 1스텝 후 재적용까지 데이터 손상 없이 성공

산출물: 롤백 로그

BE-31 ·

백엔드P1
회귀 R5·R7 수행

종료 조건: 거짓 출처 발각과 민석 간파 시나리오 통과 표시

산출물: 회귀 결과

PM-35 ·

QA·릴리스P1
데일리 리뷰 #6

종료 조건: P0 잔여 0건 확인, 아니면 범위 재조정

산출물: 리뷰 기록

진행 중 2

APP-12 ·

프론트P1
인스펙터 진입 동선

종료 조건: 게임 흐름을 방해하지 않으면서 언제든 열 수 있다

산출물: 진입 동선

FE-21 ·

프론트P1
첫 루프 진입 속도

종료 조건: 방문 → 아침 화면까지 LLM 호출 없이 즉시 렌더

산출물: 진입 최적화

검토 25

FE-07 ·

프론트P0
아침 화면 — 공개 진입점

종료 조건: 서버가 내려준 morning.fixed 를 그대로 렌더. 프론트 하드코딩 없음

산출물: 아침 화면

FE-08 ·

프론트P0
손상 1층 렌더 — 두 번째 문장

종료 조건: 고정 문장 뒤 변형 문장이 자연스럽게 이어지고, 강조 표시가 없다

산출물: 손상 렌더

PM-13 ·

시나리오·콘텐츠P1
아침 문장 · 손상 1층 문안 1차

종료 조건: 고정 문장 1개 + 두 번째 문장 변형 후보 10개 작성

산출물: 텍스트 시트

AI-10 ·

AI 에이전트P0
ask_npc 구현 — NPC가 NPC에게 확인

종료 조건: Agent가 판단해 호출하고, 결과가 재판정에 반영되어 거짓 출처가 발각됨

산출물: ask_npc

APP-11 ·

프론트P0
도구 호출 체인 표시

종료 조건: ask_npc 호출·결과·부작용이 체인 안에서 구분되어 보인다

산출물: 툴 체인 UI

APP-13 ·

프론트P0
1차 통합 — 노트·인스펙터 실데이터 검증

종료 조건: 실제 1루프를 돌린 뒤 두 화면이 그 루프를 정확히 반영

산출물: 통합 확인

PM-19 ·

QA·릴리스P0
LLM 비용 · 스키마 통과율 대시보드

종료 조건: 일일 토큰·비용과 역할별 스키마 통과율을 한 화면에서 확인, 80% 알람

산출물: 관측 대시보드

APP-17 ·

프론트P0
모바일 웹 최적화 1차

종료 조건: 노트·인스펙터가 모바일 화면에서 읽을 수 있는 수준

산출물: 모바일 대응

FE-16 ·

프론트P0
침묵 권고 배너

종료 조건: 권고와 근거가 함께 뜨고, 수용/무시 버튼이 동등하게 배치됨

산출물: 권고 배너

PM-25 ·

QA·릴리스P0
범위 컷 결정 (방어선 미달 시)

종료 조건: 미착수 방어선이 2개 이상이면 ⑨→⑧→⑦→⑥ 순으로 v1에서 제외하고 기록, 이후 재론 없음

산출물: /plan/scope/ 갱신

APP-23 ·

프론트P0
전이 도메인 화면 대응 준비

종료 조건: 인스펙터가 도메인 중립 필드명으로 렌더되어 용어만 갈아끼우면 됨

산출물: 중립 렌더

APP-24 ·

프론트P1
모바일 웹 최적화 2차

종료 조건: 대화창까지 포함해 모바일에서 1루프 완주 가능

산출물: 모바일 대응

FE-24 ·

프론트P1
키보드 완주 · 대비비

종료 조건: 대화 입력→전송→권고 응답을 키보드만으로, 본문 대비비 4.5:1

산출물: 접근성

AI-27 ·

AI 에이전트P0
프롬프트 동결 · 버전 태깅

종료 조건: 운영 프롬프트를 v1.0 으로 태깅, 이후 변경은 새 버전 태깅으로만

산출물: prompts/v1.0

APP-25 ·

프론트P0
감사 도메인 인스펙터 개봉 확인

종료 조건: 같은 인스펙터가 감사 시나리오에서 열리고 용어만 다르다

산출물: 전이 화면

BE-27 ·

백엔드P0
API 계약 최종 고정

종료 조건: Freeze 시점 스키마 태깅, 에러 코드 표 완성

산출물: openapi v1.0

FE-26 ·

프론트P1
크로스 브라우저 점검

종료 조건: Chrome·Safari·모바일 브라우저에서 1루프 완주

산출물: 점검표

FE-27 ·

프론트P2
번들 사이즈 · 초기 로드

종료 조건: 첫 화면 로드가 목표치 이내

산출물: 번들 리포트

PM-31 ·

QA·릴리스P0
릴리스 체크리스트 v1 배포

종료 조건: 방어선 5개 + 기능/오류/데이터/보안/배포 항목을 체크리스트로 확정

산출물: /plan/release/

AI-28 ·

AI 에이전트P0
AI 버그 스쿼시

종료 조건: 배정 P0/P1 전건 종료

산출물: 이슈 종료

APP-28 ·

프론트P0
버그 스쿼시

종료 조건: 배정 P0/P1 전건 종료

산출물: 이슈 종료

APP-29 ·

프론트P0
회귀 R6·R10 수행

종료 조건: 5루프 노트 축적·손상 2층 확인, 전이 인스펙터 개봉 통과 표시

산출물: 회귀 결과

BE-29 ·

백엔드P0
버그 스쿼시 (P0·P1)

종료 조건: 배정 전건 종료. 판정 로그 유실은 최우선

산출물: 이슈 종료

FE-28 ·

프론트P0
버그 스쿼시

종료 조건: 배정 P0/P1 전건 종료

산출물: 이슈 종료

FE-29 ·

프론트P0
회귀 R1~R4 수행

종료 조건: 루프 완주·예산 소진·권고 수용·권고 무시 통과 표시

산출물: 회귀 결과

완료 64

AI-07 ·

AI 에이전트P0
LLM 포트 + 어댑터 구현

종료 조건: 도메인은 포트만 의존, 설정 변경만으로 모델 교체 가능

산출물: LlmPort

AI-08 ·

AI 에이전트P0
Agent 층 — 발화 1건 판정 왕복

종료 조건: 유저 발화가 Agent를 거쳐 응답으로 돌아오고, 수치는 코드가 계산

산출물: Agent 구현

APP-07 ·

프론트P0
노트 타임라인 실 API 연동

종료 조건: 세션의 누적 노트가 실제로 조회되어 렌더

산출물: 노트 화면

APP-09 ·

프론트P1
감각 파편 표현 — 짧고 불완전하게

종료 조건: 노트 항목이 보고서가 아니라 파편처럼 보이는 타이포·간격

산출물: 노트 스타일

BE-08 ·

백엔드P0
루프 생성 · 상태 전이 · 아침 화면 데이터

종료 조건: POST /loops 가 고정 문장과 손상 1층 문장을 담아 반환, LLM 호출 없이 즉시

산출물: loop API

BE-09 ·

백엔드P0
발화 예산 소모 · 차단 · 회복

종료 조건: 예산 소진 시 BUDGET_EXHAUSTED, 루프 스킵 시 회복, 하한 3 유지

산출물: 예산 규칙

BE-10 ·

백엔드P0
발화 엔드포인트 + SSE 골격

종료 조건: POST /loops/{id}/utterances 가 delta→done 이벤트를 실제로 흘린다

산출물: SSE 엔드포인트

FE-09 ·

프론트P0
스테이징 실 API로 아침 화면 진입

종료 조건: 로그인 없이 첫 방문에서 아침 화면까지 도달

산출물: 연동 확인

PM-11 ·

QA·릴리스P0
백엔드 CI — 테스트 + import-linter 게이트

종료 조건: 도메인 계층이 LLM 어댑터를 참조하면 CI 실패하고 머지가 막힌다

산출물: .github/workflows

PM-12 ·

QA·릴리스P0
Vercel 웹 배포 + PR 프리뷰 연결

종료 조건: PR마다 프리뷰 URL 생성, main 머지 시 스테이징 반영

산출물: Vercel 연동

PM-14 ·

QA·릴리스P1
데일리 리뷰 #1

종료 조건: review 카드 판정 완료, 막힌 항목 3개 이하, 사이트 반영 커밋

산출물: 데브로그 1건

AI-11 ·

AI 에이전트P0
Planner — 루프 시작 시 하루 계획

종료 조건: NPC 3인이 각자 비트 단위 계획을 세우고 저장

산출물: Planner

AI-12 ·

AI 에이전트P1
토큰 · 비용 계측 적재

종료 조건: 요청별 토큰/비용/지연이 llm_call 에 기록되고 일자별 집계 가능

산출물: 비용 집계

APP-10 ·

프론트P0
인스펙터 실 API 연동

종료 조건: 발화 1건의 판정 체인이 실제 로그로 열린다

산출물: 인스펙터

BE-11 ·

백엔드P0
판정 로그 저장 — judgement_log

종료 조건: 발화 1건당 의심/신뢰/도구/불일치/재계획 판정이 순서대로 기록됨

산출물: 판정 저장소

BE-12 ·

백엔드P0
도구 디스패치 + 탐문 예산

종료 조건: ask_npc 호출이 하네스를 통과하고, NPC 하루 2회 초과 시 실행 전 거부

산출물: 도구 포트 구현

BE-13 ·

백엔드P0
도구 부작용 반영 — 이름 빌린 쪽 의심도

종료 조건: ask_npc 결과의 side_effect 가 대상 NPC 상태에 실제로 적용되고 로그에 남음

산출물: side_effect 처리

FE-10 ·

프론트P0
대화창 — 발화 입력과 스트리밍 렌더

종료 조건: 입력 → 전송 → 델타가 실시간으로 쌓이고 중단 버튼 동작

산출물: 대화창

FE-11 ·

프론트P0
발화 예산 UI

종료 조건: 남은 예산이 항상 보이고, 소진 시 입력이 비활성화되며 안내가 뜬다

산출물: 예산 표시

PM-15 ·

QA·릴리스P0
스테이징 자동 배포 + HTTPS

종료 조건: main 머지 → 5분 내 반영, api 도메인 https 접속, 인증서 자동 갱신

산출물: 배포 파이프라인

PM-16 ·

시나리오·콘텐츠P1
NPC 3인 말투 가이드

종료 조건: 민석·채연·은상 각각 어휘·문장 길이·회피 방식이 구분되는 예문 5개씩

산출물: 말투 가이드

AI-15 ·

AI 에이전트P0
실패 폴백 — 타임아웃 · 컨텍스트 초과

종료 조건: 재시도 후 AI_UNAVAILABLE, 컨텍스트 초과 시 노트 요약 후 재시도

산출물: 폴백

BE-14 ·

백엔드P0
웹 1차 통합 대응

종료 조건: 프론트가 실 API로 아침→대화→응답을 완주, 계약 이슈 당일 해소

산출물: 계약 변경 로그

BE-15 ·

백엔드P0
도메인 어댑터 30분 탐색

종료 조건: 감사 도메인 어댑터를 시도해 코어가 막히는지만 확인. 막히면 새어든 개념을 지목

산출물: 탐색 기록

BE-16 ·

백엔드P1
노트 자동 기록 — note_entry

종료 조건: 루프 종료 시 죽음의 감각·주요 사건이 노트에 자동 적재

산출물: 노트 저장

FE-13 ·

프론트P0
1루프 end-to-end

종료 조건: 아침 → 대화 3회 → 하루 종료 → 아침 복귀가 실 API로 완주

산출물: 루프 플로우

FE-14 ·

프론트P0
로딩 · 오류 · 종료 상태

종료 조건: LLM 지연·네트워크 끊김·예산 소진에 각각 정해진 화면

산출물: 상태 UI

FE-15 ·

프론트P1
툴 호출 진행 표시

종료 조건: event: tool 수신 시 '~를 확인하는 중' 표시 후 사라짐

산출물: 툴 인디케이터

PM-18 ·

QA·릴리스P0
1루프 스모크 스크립트

종료 조건: 한 명령으로 세션 발급→아침→발화 3회→루프 종료까지 확인, 실패 시 종료코드 1

산출물: scripts/smoke.sh

PM-48 ·

QA·릴리스P0
발화 예산 확정

종료 조건: 초기 회수·감소 곡선·하한을 확정하고 결정 로그에 근거와 함께 기록

산출물: /plan/scope/ 결정 로그

AI-16 ·

AI 에이전트P0
Advisor 구현 — 침묵 권고

종료 조건: 임계 근접 시 희소하게 발동하고 근거를 함께 반환

산출물: Advisor

AI-18 ·

AI 에이전트P0
발동 빈도 초기 튜닝

종료 조건: 1루프에 0~1회 수준으로 발동. 매 턴 뜨지 않음을 로그로 확인

산출물: 발동 규칙

APP-18 ·

프론트P1
루프별 그룹핑 · 접기

종료 조건: 루프가 쌓여도 노트가 한눈에 들어온다

산출물: 그룹 UI

BE-17 ·

백엔드P0
세계 손상 산출 — 개입 깊이

종료 조건: 발화 수·신뢰 변화량·결정적 발언에서 depth_score 가 계산되고 층 전환이 일어남

산출물: world_damage

BE-18 ·

백엔드P0
권고 응답 기록 엔드포인트

종료 조건: POST /advices/{id}/response 로 accepted/ignored 가 저장, 발화 전 무시도 기록됨

산출물: advice API

BE-19 ·

백엔드P1
손상 발현 기록 — damage_event

종료 조건: 층별 발현이 어디서 언제 일어났는지 조회 가능

산출물: damage_event

FE-17 ·

프론트P0
권고 응답 전송 — 무시 포함

종료 조건: 무시 후 발화 시 발화 요청 전에 ignored 가 먼저 전송됨

산출물: 응답 전송

PM-22 ·

QA·릴리스P0
알파 시연 시나리오 확정

종료 조건: 기기별로 따라할 1루프 대본과 확인 항목 작성

산출물: 시연 시나리오

PM-23 ·

QA·릴리스P1
데일리 리뷰 #4

종료 조건: 권고 로깅이 실제로 쌓이는지 DB에서 직접 확인

산출물: 리뷰 기록

AI-19 ·

AI 에이전트P0
알파 시연 대응

종료 조건: 1루프 완주 중 판정 실패·스키마 오류 0건

산출물: 핫픽스

AI-20 ·

평가P0
판정 일관성 실험 (11.1 첫 행)

종료 조건: 같은 발화 20회 반복 투입 시 의심도 변화 편차를 측정하고 기준 설정

산출물: 일관성 리포트

AI-21 ·

AI 에이전트P1
Agent 프롬프트 v1 튜닝

종료 조건: 판정이 흔들린 케이스 5건 반영, 자유 판단을 범주 선택으로 좁힘

산출물: prompts/agent/v1

APP-19 ·

프론트P0
알파 시연 대응

종료 조건: 시연 중 노트·인스펙터에서 발생한 P0 당일 처리

산출물: 핫픽스

BE-20 ·

백엔드P0
알파 시연 대응 · 백엔드 핫픽스

종료 조건: 1루프 완주 중 발생한 백엔드 P0 를 당일 처리

산출물: 핫픽스

BE-21 ·

백엔드P0
인스펙터 API

종료 조건: GET /loops/{id}/inspector 가 8.8 구조 그대로 판정 체인 반환

산출물: 인스펙터 API

FE-19 ·

프론트P0
알파 배포 · 시연 대응

종료 조건: 웹 알파가 스테이징 URL에서 동작하고 1루프 완주

산출물: 알파 배포

FE-20 ·

프론트P0
시연 버그 수정

종료 조건: 시연 중 발견된 웹 P0 당일 처리

산출물: 핫픽스

PM-24 ·

QA·릴리스P0
알파 시연 — 1루프 완주

종료 조건: 여러 기기에서 아침→대화→죽음→아침을 완주

산출물: 시연 결과표

AI-24 ·

AI 에이전트P0
Evaluator — 원인 체인 서술

종료 조건: 루프 종료 시 누가 왜 그 선택에 도달했는지 서술을 생성

산출물: Evaluator

BE-23 ·

백엔드P0
메모리 정책 주입 — 민석 예외

종료 조건: 루프 전이 시 채연·은상은 5% 잔류, 민석은 유지. 같은 인터페이스에 정책만 다름

산출물: 메모리 정책

BE-24 ·

백엔드P0
엔딩 판정 — 4종 분기

종료 조건: 원인 파악·관계 축으로 repeat/isolation/hesitation/handover 가 결정됨

산출물: 엔딩 판정

BE-25 ·

백엔드P0
도메인 포트 정식 구현

종료 조건: 게임/감사 두 어댑터가 같은 포트를 구현하고 설정으로 전환됨

산출물: domain adapter

FE-22 ·

프론트P0
엔딩 화면 4종

종료 조건: 반복·고립·망설임·인계가 각각 다른 마무리로 렌더

산출물: 엔딩 화면

PM-27 ·

QA·릴리스P0
프로덕션 인프라 프로비저닝

종료 조건: 프로덕션 API·DB·Vercel이 스테이징과 동일 구성으로 기동

산출물: prod 환경

PM-28 ·

시나리오·콘텐츠P0
엔딩 4종 텍스트 초안

종료 조건: 반복·고립·망설임·인계 4편 작성. 망설임이 위로상처럼 읽히지 않을 것

산출물: 엔딩 텍스트

AI-25 ·

AI 에이전트P0
감사 도메인 프롬프트 어댑터

종료 조건: 용어만 교체한 프롬프트로 감사 시나리오가 돌고, 엔진 코드는 그대로

산출물: audit adapter

AI-26 ·

AI 에이전트P1
커리어 시나리오 프롬프트

종료 조건: 두 번째 어댑터가 프롬프트 하나로 동작 (5초 시연용)

산출물: career adapter

BE-26 ·

백엔드P0
전이 시연 — 감사 대응 실행

종료 조건: 어댑터 교체만으로 감사 시나리오가 돌고 엔진 코드 diff 가 비어 있음

산출물: 전이 시연

BE-28 ·

백엔드P1
도메인 회귀 테스트 스위트

종료 조건: CI에서 도메인 테스트가 LLM 없이 3분 내 통과

산출물: CI 리포트

PM-32 ·

QA·릴리스P0
전이 시연 — 엔진 diff 확인

종료 조건: 감사 어댑터 적용 시 BeyondBob Engine 코드 diff 가 비어 있음을 직접 확인

산출물: diff 증빙

AI-30 ·

평가P1
Evaluator 판정 일관성

종료 조건: 같은 로그 반복 투입 시 원인 체인이 흔들리지 않음

산출물: 일관성 리포트

FE-30 ·

프론트P2
텍스트 가독성 최종 조정

종료 조건: 긴 대사에서 줄바꿈·행간이 무너지지 않음

산출물: 타이포 조정

PM-33 ·

QA·릴리스P0
버그 트리아지 운영

종료 조건: P0/P1 전건에 기한 지정, 하루 2회 갱신. 판정 로그 유실은 P0로 분류

산출물: 이슈 보드

PM-34 ·

QA·릴리스P0
회귀 시나리오 R1~R10 운영

종료 조건: 10개 시나리오가 표로 존재하고 각 시나리오에 통과 표시

산출물: 회귀 표

Sprint 3 09.13 ~ 09.16 완료

검증·v1 공개

Sprint 3 일자별 진행 사항 →

목표 세션/IP 제한·비용 상한·엔딩 텍스트를 공개 수준으로 닫고, RC 검증과 배포·롤백 리허설을 거쳐 v1을 공개한다.
스프린트 종료 기준 공개 오픈 + 30분 관측 정상 + 첫 실사용 로그 수집 확인.

칸반 보기 · 예정 20 / 진행 중 0 / 검토 9 / 완료 24

예정 20

APP-32 ·

프론트P1
노트 렌더 성능 (루프 20회 기준)

종료 조건: 루프가 쌓여도 스크롤이 버벅이지 않음

산출물: 성능 확인

APP-33 ·

프론트P1
인스펙터 시연용 화면 정리

종료 조건: 공개 시연에서 그대로 띄울 수 있는 상태

산출물: 시연 화면

BE-33 ·

백엔드P0
부하 스모크 · 커넥션 풀

종료 조건: 동시 50 세션에서 커넥션 고갈 없음, 아침 화면 p95 < 500ms

산출물: 부하 리포트

BE-34 ·

백엔드P1
백업 · 복구 리허설

종료 조건: 백업 파일로 별도 DB 복구 후 API 기동 성공

산출물: 복구 로그

FE-31 ·

프론트P0
보안 헤더 · CSP (Vercel)

종료 조건: 헤더가 실제 응답에 적용되고 SSE 가 막히지 않음

산출물: 헤더 설정

FE-33 ·

프론트P1
Lighthouse 목표 달성

종료 조건: 성능·접근성 점수 목표치 충족

산출물: 리포트

APP-34 ·

프론트P0
RC 검증 — 노트·인스펙터

종료 조건: RC1 에서 두 화면 회귀 통과

산출물: 검증 결과

PM-39 ·

QA·릴리스P0
RC1 태깅 · 릴리스 노트

종료 조건: v1.0.0-rc.1 태그와 방어선 5개 달성 내역 발행

산출물: GitHub Release

APP-36 ·

프론트P0
Code Freeze 대응

종료 조건: 핫픽스 외 커밋 없음

산출물: 동결 확인

APP-37 ·

프론트P0
배포 리허설 참여

종료 조건: 리허설에서 노트·인스펙터 정상 확인

산출물: 리허설 기록

BE-38 ·

백엔드P0
Code Freeze 대응 · 핫픽스 대기

종료 조건: 기록한 핫픽스만 처리

산출물: 핫픽스 로그

BE-39 ·

백엔드P0
배포·롤백 리허설 백엔드 파트

종료 조건: 마이그레이션 적용과 downgrade 가 리허설에서 무오류

산출물: 리허설 기록

FE-36 ·

프론트P0
Code Freeze 대응

종료 조건: 핫픽스 외 커밋 없음

산출물: 동결 확인

FE-37 ·

프론트P0
배포·롤백 리허설 웹 파트

종료 조건: Vercel 이전 배포로 되돌리는 절차 확인

산출물: 리허설 기록

PM-42 ·

QA·릴리스P0
Code Freeze 선언

종료 조건: 핫픽스 외 머지 중단, 예외는 기록한 건만

산출물: 동결 공지

AI-40 ·

AI 에이전트P2
데브로그 — 침묵 권고 설계 회고

종료 조건: AI가 제안자가 되는 유일한 층을 어떻게 설계했는지 글 1편

산출물: 데브로그

APP-39 ·

프론트P0
오픈 온콜 — 모바일 유입 관측

종료 조건: 모바일 브라우저에서의 이탈·오류 확인

산출물: 온콜 기록

APP-40 ·

프론트P2
데브로그 — 인스펙터를 왜 이렇게 만들었나

종료 조건: 판정 로그를 사람이 읽을 수 있게 만든 과정을 글 1편

산출물: 데브로그

FE-40 ·

프론트P2
데브로그 — 스트리밍 대화 UI 회고

종료 조건: SSE 렌더와 권고 배너 구현 경험을 글 1편

산출물: 데브로그

PM-47 ·

QA·릴리스P2
회고 · 릴리스 데브로그

종료 조건: 14일간 결정·지연·개선점을 글 1편으로

산출물: 데브로그

진행 중 0

해당 작업 없음

검토 9

APP-31 ·

프론트P0
공개 대비 모바일 진입 점검

종료 조건: 모바일에서 방문 → 아침 화면까지 30초 안에 판단 가능

산출물: 진입 점검

FE-32 ·

프론트P0
공개 진입 동선 · 소개 문구

종료 조건: 소개가 표면 목표로 통일되고, 커리어 시나리오 진입 링크가 같은 화면에 존재

산출물: 진입 화면

PM-38 ·

시나리오·콘텐츠P0
엔딩 텍스트 검토

종료 조건: 4편을 통독하고 망설임 엔딩이 이야기로 성립하는지 확인

산출물: 리뷰 기록

APP-35 ·

프론트P0
프로덕션 환경 확인

종료 조건: 운영 API 기준으로 두 화면 정상 동작

산출물: prod 확인

BE-36 ·

백엔드P0
프로덕션 마이그레이션 스크립트 확정

종료 조건: 추가만 하는 마이그레이션으로 구성, 소요시간·롤백 방법 명시

산출물: 배포 런북

PM-41 ·

QA·릴리스P0
온콜 · 롤백 절차 문서화

종료 조건: 무엇을·몇 분 안에 하는지 한 장으로 정리

산출물: 운영 런북

PM-43 ·

QA·릴리스P0
배포 리허설 + 롤백 리허설

종료 조건: 각 1회 성공, 단계별 소요시간을 런북에 기록

산출물: 리허설 로그

PM-44 ·

QA·릴리스P1
공개 소개 문구 · 진입 동선 확정

종료 조건: 소개 문구를 표면 목표로 통일, 커리어 시나리오가 같은 링크에서 진입 가능

산출물: 공개 콘텐츠

APP-38 ·

프론트P0
프로덕션 배포 검증

종료 조건: 운영에서 노트 축적과 인스펙터 개봉 정상

산출물: 배포 검증

완료 24

AI-31 ·

AI 에이전트P0
비용 상한 · 자동 차단

종료 조건: 일 한도 초과 시 알림 발송 및 차단, 정해진 안내 문구 노출

산출물: 쿼터

AI-32 ·

AI 에이전트P0
프롬프트 인젝션 방어 점검

종료 조건: 주입 시도 10건에서 시스템 지시 유지, NPC가 역할을 벗어나지 않음

산출물: 인젝션 테스트

AI-33 ·

AI 에이전트P1
지연 측정 · 첫 토큰까지 시간

종료 조건: 발화 후 TTFT 목표치 설정 및 충족

산출물: 지연 리포트

BE-32 ·

백엔드P0
세션/IP 루프 제한 구현

종료 조건: 익명 반복 접속이 차단되고 429 반환, 정상 유저는 영향 없음

산출물: 레이트 리밋

PM-36 ·

QA·릴리스P0
공개 대비 — 세션/IP 제한 · 비용 상한 검증

종료 조건: 익명 반복 접속이 실제로 차단되고, 상한 도달 시 정해진 안내가 나온다

산출물: 제한 설정

PM-37 ·

QA·릴리스P0
시크릿 스캔 · 권한 점검

종료 조건: 레포 시크릿 0건, CORS 화이트리스트 확정

산출물: 보안 점검표

AI-34 ·

AI 에이전트P0
RC 검증 — 스키마 통과율

종료 조건: 역할별 통과율·재시도율이 기준치 이상, 하네스 안정 확인

산출물: 하네스 리포트

AI-35 ·

AI 에이전트P0
프로덕션 키 · 역할별 모델 확정

종료 조건: 운영 키가 시크릿에만 존재, 역할별 모델과 한도가 prod 기준으로 설정

산출물: prod 설정

BE-35 ·

백엔드P0
RC 백엔드 검증

종료 조건: RC1 이미지로 스테이징 회귀 전건 통과

산출물: 검증 결과

BE-37 ·

백엔드P1
헬스체크 · 레디니스

종료 조건: DB·LLM 연결 실패가 각각 구분되어 응답

산출물: GET /health

FE-34 ·

프론트P0
RC 검증

종료 조건: RC1 로 스테이징 회귀 전건 통과

산출물: 검증 결과

FE-35 ·

프론트P0
프로덕션 환경변수 전환

종료 조건: Vercel prod 환경이 운영 API를 바라보고 정상 동작

산출물: prod 빌드

PM-40 ·

QA·릴리스P0
릴리스 체크리스트 최종 검증

종료 조건: 전 항목 통과 확인, 미통과 항목은 범위 축소로 처리

산출물: 검증 결과

AI-36 ·

AI 에이전트P0
Code Freeze 대응

종료 조건: 프롬프트·모델 설정 변경 중단, 기록한 핫픽스 건만

산출물: 동결 확인

AI-37 ·

AI 에이전트P0
배포 리허설 AI 파트

종료 조건: 리허설에서 발화 왕복과 권고 발동 정상

산출물: 리허설 기록

AI-38 ·

AI 에이전트P0
프로덕션 에이전트 검증

종료 조건: 운영 환경에서 1루프 완주 + 권고 1회 발동 + 로그 적재 확인

산출물: 검증 로그

AI-39 ·

AI 에이전트P0
오픈 온콜 — 비용 · 실패율

종료 조건: 오픈 2시간 토큰 사용량·스키마 실패율 이상 없음

산출물: 온콜 기록

BE-40 ·

백엔드P0
프로덕션 배포 백엔드 검증

종료 조건: 마이그레이션 후 1루프 완주 + 인스펙터 개봉 정상

산출물: 배포 검증

BE-41 ·

백엔드P0
오픈 온콜 — API·DB

종료 조건: 에러 로그 실시간 확인, 이상 시 즉시 보고

산출물: 온콜 기록

BE-42 ·

백엔드P2
데브로그 — 포트 3개 설계 회고

종료 조건: 도메인 어댑터 교체가 실제로 짧은 작업이었는지 기록

산출물: 데브로그

FE-38 ·

프론트P0
프로덕션 배포 검증

종료 조건: 운영 도메인에서 1루프 완주

산출물: 배포 검증

FE-39 ·

프론트P0
오픈 온콜 — 프론트 오류

종료 조건: JS 오류·실패 요청 이상 없음

산출물: 온콜 기록

PM-45 ·

QA·릴리스P0
프로덕션 배포 실행

종료 조건: 백업 → 마이그레이션 → API → 웹 순서로 배포, 1루프 완주 확인

산출물: v1.0.0

PM-46 ·

QA·릴리스P0
오픈 30분 관측 · 온콜

종료 조건: 에러율·지연·LLM 비용 정상, 실사용 로그가 실제로 쌓이는지 확인

산출물: 관측 기록

Sprint 4 09.17 ~ 진행 중

v1 이후

Sprint 4 일자별 진행 사항 →

목표 v1을 운영하면서 연구 재집계(09-18)와 개발일지를 이어 가고, v1에서 미룬 범위를 확장한다.
스프린트 종료 기준 종료일 없음. 작업이 생기는 대로 이 스프린트에 누적한다.

칸반 보기 · 예정 0 / 진행 중 0 / 검토 0 / 완료 0

예정 0

해당 작업 없음

진행 중 0

해당 작업 없음

검토 0

해당 작업 없음

완료 0

해당 작업 없음

더 보기


Table of contents