파이프라인 2단계(Specification) Phase 1 산출물. /cc-spec:interview 5단계 프로토콜 적용.
인터뷰 방식: 근거 기반 비대화형. 프로젝트 오너는 2026-09-16 "계속 진행 해줘"로 Discovery §5.1 의 권장안(Q1~Q8)을 일괄 수용했고 개별 질문에는 답하지 않았다. 따라서 각 답변은 (a) 권장안 수용 (b) 상위 파이프라인에 기록된 오너 확답(docs/decision-log-cocode.md · docs/seed-spec-cocode.md) (c) Discovery 실측 중 하나를 출처로 밝힌다. 출처가 없는 항목은 답을 지어내지 않고 "이관"(이 명세가 값을 정하지 않는다)으로 처분하며, Seed Spec §4 의 어떤 인수 경계도 이관된 값에 의존하지 않는다.
수렴도: 생성 질문 27 / 응답 27(이관 처분 3건 포함) → 1.0 (임계값 0.95 통과). 오너가 개별 권장안을 뒤집으면 해당 없음 — Seed Spec 진화 프로토콜로 반영한다.
Interview Summary
- Date: 2026-09-16
- Depth Reached: 5
- Convergence: 1.0 (27/27)
- Total Exposed Assumptions: 9
- 출처 표기:
[권장안 Qn] Discovery §5.1 권장안 수용 · [상위 D-nnn] 상위 파이프라인 오너 결정 · [Discovery §n] 실측 · [이관] 이 명세 밖으로 처분
Level 1: 표면 (Surface)
| # |
질문 |
답변 요지 |
출처 |
| L1-1 |
이 프로젝트가 풀려는 문제는? |
Dart 풀스택 개발자가 서버·클라이언트·DB 를 한 작업에서 함께 고칠 때 편집·실행·검사를 한 창에서 끝낼 데스크톱 에디터가 없다. 동시에 cocode ADE 가 3-OS 에 제공하기로 한 개발자 표면(코드 에디터·파일 트리·터미널)은 오늘 플레이스홀더다 |
[Discovery §0·§1.3] · 상위 cocode/AC-03 |
| L1-2 |
핵심 사용자는? |
Serverpod 를 쓰는 외부 Dart 풀스택 개발자(P1). 코코드 내부 팀은 고객이 아니라 검증 환경. 코드 뷰 없는 "드리머"는 범위 밖 |
[상위 D-005] · 상위 cocode/AC-04 · [Discovery §1.1] |
| L1-3 |
성공하면 사용자의 삶이 어떻게 바뀌나? |
서버·클라이언트·DB 를 함께 고치는 하루 작업을 다른 에디터·터미널 앱으로 전환하지 않고 한 창에서 끝낸다. 에이전트에게 맡긴 편집은 같은 창에서 검토·되돌린다 |
[Discovery §1.5·§3.1] |
| L1-4 |
"풀스택"의 뜻은? |
Dart 풀스택 — Flutter 앱 · Serverpod 서버 · Jaspr 웹 · PostgreSQL. 다국어 1급 지원이 아니다 |
[권장안 Q1] · 상위 cocode/AC-05·C-03 |
| L1-5 |
어디에 만드나? |
cocode ADE 의 하위 모듈로 app/cocode 안에. 별도 앱이 아니다 |
[권장안 Q2] |
Project Definition
cocode ADE 의 개발자 표면을, Dart 풀스택 워크스페이스를 한 창에서 편집·실행·검사할 수 있는 코딩 에디터로 채운다.
Level 2: 가정 (Assumptions)
| ID |
가정 |
유형 |
확인 결과 · 출처 |
| A-01 |
"풀스택"은 Dart 풀스택이며, 그 밖의 언어는 파일 단위 편집 지원까지만 제공한다 |
Business |
채택 — [권장안 Q1]. Seed C-02 |
| A-02 |
기존 셸(app/cocode)과 패키지 11종 위에 얹는다. 새 앱을 만들지 않는다 |
Technical |
채택 — [권장안 Q2]. Seed C-01 |
| A-03 |
re_editor 0.10.0 위에 다중 탭·버퍼 관리를 얹어도 응답성이 유지된다 |
Technical |
미검증 — 단일 뷰 벤치만 존재. 스크롤·커서 비용은 1k→10만 줄에서 평평하나 절대 프레임 타임은 미측정 [Discovery §1.4 A-F2] |
| A-04 |
네이티브 PTY 백엔드로 대화형 키 입력·크기 조절·한글 IME 를 3-OS 에서 만족시킬 수 있다 |
Technical |
미검증, 반증 이력 있음 — 상위 D-069(IME 6조합 미충족) · D-067(xterm2 결함 재현) [Discovery §1.4 A-F3] |
| A-05 |
Serverpod 4 의 serverpod start 가 존재하고 서버·DB·Flutter 앱을 함께 실행한다 |
Technical |
확인됨(사실) — 2026-07-08 public beta 블로그 [Discovery §2.2]. beta/stable 차이의 흡수 방식은 Design 으로 이관 |
| A-06 |
P1 은 DB 브라우저·API 클라이언트가 에디터 안에 있는 것을 외부 도구 병행보다 선호한다 |
User |
미검증 — 데스크 리서치만 [Discovery §1.4 A-F5]. 첫 릴리스 밖(May)으로 두고 도그푸딩 결과로 순서 결정 [권장안 Q3] |
| A-07 |
사람이 에디터로 하는 편집은 EditSnapshot·편집 잠금의 대상이 아니다 |
Technical |
확인됨 — 상위 cocode/C-02 후단 문면 "사람이 에디터로 직접 하는 편집은 이 제약의 대상이 아니다". Seed C-03 |
| A-08 |
unibook 모노레포가 도그푸딩·벤치 워크스페이스다 |
Technical |
채택 — [권장안 Q7] · [상위 D-019](커밋 SHA 고정) |
| A-09 |
flutter_ide 코드는 한 줄도 복사하지 않는다 |
Legal |
확인됨 — 저장소 LICENSE 파일 부재 [Discovery §1.2-5] |
Level 3: 모순 (Contradictions)
| ID |
충돌 |
해결 |
| C-01 |
A-01(Dart 전용) vs 풀스택 워크스페이스에는 SQL·YAML·Dockerfile·CI 설정 파일이 있고 편집해야 한다 |
상위 cocode/C-03 후단("프로젝트 내부의 비-Dart 파일 편집은 제한하지 않는다")과 cocode/AC-05 의 "1급" 정의(워크스페이스 생성 선택지·스캐폴딩·에이전트 도구가 전제하는 타입)로 분리한다. 1급 프로젝트 타입은 Flutter 앱·Serverpod 서버·Jaspr 웹 세 종류뿐이고, 언어 지원(구문 강조·언어 서버 연결)은 파일 단위로 제공한다 → Seed C-02 · AC-11 |
| C-02 |
A-07(사람 편집은 잠금 대상 아님) vs 상위 cocode/AC-12(같은 파일 동시 편집 방지) — 에이전트가 편집 리스를 쥔 파일을 사람이 편집하면 어떻게 되는가 |
상위 AC-12 는 두 DelegatedTask 사이의 규칙이고 사람은 대상이 아니다. 사람의 저장을 막으면 사람이 에이전트에 종속되고(ADE 원칙과 충돌), 막지 않으면 에이전트 편집이 낡은 base 위에 얹힐 수 있다. 해결: 저장은 막지 않고 리스 상태를 에디터에 표시하며, 그 파일에 대한 에이전트의 다음 편집은 상위 cocode/AC-02 의 해시 불일치 규칙으로 충돌 처리된다 — 새 규칙을 만들지 않고 기존 메커니즘을 재사용한다 → Seed C-03 · AC-10. 진행자 판단, 오너 재확인 대상(D-009) |
| C-03 |
A-05(serverpod start 존재) + [권장안 Q6](명령 템플릿으로 시작) vs Discovery §2.3 차별화 1("serverpod start 를 1급 실행 구성으로") |
첫 릴리스의 실행 구성은 명령 템플릿이고, 1급 승격은 Serverpod 4 stable 이후다. Seed AC-08 은 "기본 템플릿 3종 제공"까지만 요구한다 → D-006 |
| C-04 |
A-06(DB 브라우저를 원함) vs [권장안 Q3](첫 릴리스는 셸 통합·에디터 코어·실행 구성·PTY 까지) |
모순이 아니라 순서의 문제. DB 브라우저·API 클라이언트·디버거·git·pub.dev 는 May 로 두고 Discovery §1.5 실험 ⓑ(에디터를 떠나게 만든 기능 부재 빈도)로 순서를 정한다 → D-003 |
| C-05 |
A-02(기존 셸 위에 얹는다) vs [Discovery §1.3] "app/cocode/** 는 CI 분석·테스트 범위 밖(상위 D-031)" — 범위 밖 코드 위에 Must 를 쌓을 수 없다 |
셸 통합의 첫 항목이 analysis_options.yaml exclude 를 도너 파일로 좁혀 셸을 CI 안으로 들이는 것이다 → Seed AC-01 의 전제. 도너 파일 삭제는 상위 D-026 으로 금지되어 있으므로 "제외 범위 축소"만 한다 |
Level 4: 경계 (Boundaries)
| 가정 |
실패 시나리오 |
영향 |
발생 가능성 근거 |
대안 / 완화 |
| A-03 |
탭을 여러 개 연 상태에서 프레임 드롭 |
에디터 코어(AC-03~AC-07) 전체 |
단일 뷰 비용은 평평(상위 ac15 실측) → 낮음~중간 |
비활성 탭의 뷰를 해제하고 버퍼만 유지(버퍼는 뷰 밖에서 소유). 상위 D-066 의 분기(자체 텍스트 레이어)는 유보 유지 |
| A-04 |
PTY 백엔드에서도 IME 6조합 미충족 |
터미널 Must(AC-09)와 상위 cocode/AC-16 |
반증 이력 → 높음 |
파이프 백엔드를 유지하고 상위 AC-16 의 처분(D-069: Seed 개정 사항)을 따른다. 이 명세는 IME 판정 기준을 새로 만들지 않는다(Seed C-04) |
| A-05 |
Serverpod 4 stable 에서 명령 형태가 바뀜 |
실행 구성 템플릿 1종 |
중간(beta) |
템플릿은 설정 값 — 코드 변경 없이 교체 |
| A-06 |
P1 이 외부 DB·API 도구를 선호 |
May 항목 2종 |
중간 |
May 삭제, 손실 0 |
| A-01 |
오너가 실제로는 H2(다국어)를 원했다 |
Core Problem · C-02 |
낮음(조직 스택 · 상위 AC-05) |
새 Seed 작성(Core Problem 은 진화 불가) |
| A-07 |
상위 cocode/C-02 가 개정되어 사람 편집도 스냅샷 대상이 됨 |
C-03 · AC-10 · AC-13 |
낮음 |
상위 evolve 에 따라 이 Seed 도 evolve — C-01 상속 조항 |
Level 5: 수렴 (Convergence)
| 질문 |
답 |
| 핵심 문제를 가정 없이 한 문장으로 |
아래 Refined Core Problem |
| 이 명세가 값을 정하지 않고 이관하는 항목 |
(1) DB 접속 비밀의 저장 위치와 CredentialVault 키 네임스페이스 확장 → Design [이관] (2) Dart 이외 언어 서버(SQL·YAML)의 설치·기동 정책 → Planning/Design [이관] (3) 응답성·IME 목표치 → 상위 D-065/D-069 의 절차 [이관] |
| 상위 명세와의 관계 |
별도 Seed 를 쓰되 상위 불변 제약을 상속한다 — 상위가 DRAFT 라 evolve 대상이 아니다 [권장안 Q5] |
Refined Core Problem
Dart 풀스택 개발자가 Flutter 클라이언트·Serverpod 서버·PostgreSQL 을 한 작업에서 함께 고칠 때 편집·실행·검사를 한 창에서 끝낼 수 있는 데스크톱 에디터가 없고, cocode ADE 가 3-OS 에 제공하기로 한 개발자 표면은 플레이스홀더 상태다.
Immutable Constraint Candidates
- 상위 Seed Spec 의 불변 제약 C-01~C-05 와 Must-Not 4종을 그대로 상속한다.
- "풀스택"은 Dart 풀스택이다 — 1급 프로젝트 타입은 Flutter 앱·Serverpod 서버·Jaspr 웹 세 종류뿐.
- 사람 편집은 EditSnapshot·편집 잠금의 대상이 아니며, 리스가 걸린 파일의 사람 저장은 차단되지 않는다.
- 새로 추가되는 모든 텍스트 입력 표면은 상위 AC-16(한글 IME)의 판정 대상이다.
- 앱 자신의 명령은 단일 런처로만 기동한다 — 사용자 터미널의 표준 입력에 명령을 쓰지 않는다.
다음 단계
/cc-spec:seed → docs/seed-spec-fullstack-code-editor.md (v1.0.0 DRAFT)
- 오너 재확인 대상: Level 3 C-02 의 해결(잠긴 파일에 대한 사람 편집 규칙, D-009)
Generated by cc-spec:interview (근거 기반 비대화형) · 2026-09-16