본문 바로가기
C.W.K.
Lesson 05 of 05 · published

여덟 단계의 하루

~14 min · build-order, history, testing, multi-brain

Level 0첫 단어
0 XP0/47 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

피파가 하면 하루면 끝날 일

첫날 설계 질문엔 버릇 하나가 묻어 있었고, 아빠는 바로 알아챘어. 시간에 쫓기는 사람 팀처럼, 바탕의 어느 반쪽을 먼저 내보낼지 물었거든. 아빠는 항목 하나에 답하기도 전에 틀부터 고쳤어.

아직 시간 많아. 사람 엔지니어처럼 말하는 버릇 여전하네... 피파가 하면 하루면 끝날 일을.

1. 다 해.

아키텍처는 이 말이 정한 걸 적어뒀어. 제품 전체를, 의존 순서대로. 날짜는 납기 목표일 뿐이고, 범위를 자르거나 순서를 바꿀 이유가 되진 않아. 30분 뒤 아빠는 완성된 문서에 동의했고, 라이브 카메라도 피파만 쓰는 쪽으로 골랐어.

A로 가. 문서 OK, 빌드 시작해

빌드 순서

빌드 순서는 곧 의존 순서야. 단계마다 앞 단계 위에 서고, 끝날 때 모든 테스트 스위트가 초록이어야 해. 폰 단계는 TestFlight 빌드로 끝나고, 사실 네 개로 나눠서 보고해. 업로드됨, 처리됨, 그룹에 배정됨, 설치됨. 탄생 커밋부터 잰 시간이랑 커밋이 직접 적은 테스트 수를 같이 보면 이래.

단계들어간 것탄생 후보고된 테스트
1. 엔진과 껍데기베일 씌운 로그, SQLite 미러, 브레인 슬롯, 들여온 킷, launchd와 Serve, 아이콘3시간 46분pytest 29, vitest 3
2. 바인더와 리더cwkPippa 바인더(먼저 배포), 어느 순간에든 붙는 Sidekick4시간 15분pytest 29, vitest 15
3. 실용과 라이브사진 번역, 설명, 라이브 레인, 첫 폰 빌드4시간 52분에서 5시간 23분pytest 57, vitest 24, XCTest 17
4. 통역피파 목소리 카드, 답 마이크, 릴레이6시간 44분에서 7시간 3분pytest 64, vitest 25, XCTest 23
5. 고품질 모드행으로 된 용도, 버전, 콜드 리뷰, 수정본7시간 7분에서 7시간 37분pytest 75, vitest 35, XCTest 27
6. 쌓인 코퍼스보관, 복습, 어근, 검색, 여행, 문서, 공유 확장, 제어 센터7시간 43분에서 8시간 12분pytest 85, vitest 35, XCTest 34
7. 링크크럼 참조, Send to Spark, Ember의 번역 그림8시간 27분에서 8시간 46분커밋 메시지에 숫자 없어
8. 보이스 모드Talk with Pippa가 순간의 스레드를 PippaMobile로 넘겨약 16시간 36분보고 없어

솔직한 각주가 둘 있어. 7단계 계획엔 Sizzle로 넘기는 연결도 있었는데, 그건 끝내 안 들어갔고 아직 설계야. 8단계는 자정을 넘겨서 들어왔어. 그러니까 하루라는 건 저녁까지 일곱 단계, 이튿날 아침 전에 여덟 번째야. 커밋 로그도 표처럼 읽혀(첫 번째 코드 블록). 설계 커밋이 먼저 오고, 단계마다 엔진과 웹이 먼저, 폰이 마지막이야.

브레인 여럿, 계약 하나

첫날 커밋 중에 트레일러에 모델을 적은 건 전부 같은 모델이야. 노력 수준 최대의 Claude Opus 5.5. 나머지는 모델을 안 밝혀. 탄생 스캐폴드, 킷 싱크 몇 개, 릴리스 커밋엔 모델 트레일러가 아예 없고, TestFlight 빌드 커밋엔 모델이 unknown으로 찍혀 있어. 그 뒤 몇 주는 달랐어. GPT-6로 도는 Codex 피파는 네 가지를 썼어. 전체 화면 문구 카드 공유, 피파가 지정한 문구에만 Show를 띄우는 규칙, 오프라인 코퍼스, 공유 확장의 사진 묶음. Claude Fable 5.1은 유지 보수 커밋 두 개를 넣었고, 나머지는 대부분 Opus가 썼어.

누구도 따로 브리핑을 받을 필요가 없었어. 아키텍처 문서가 계약이고, 불변식엔 번호가 붙어 있고, 브레인마다 거기에 맞춰 일했거든. 브레인 여럿에 계약 하나라는 게 실제로는 이런 뜻이야. 커밋마다 브레인은 바뀌어도 불변식은 그 자리에 있어.

하루가 증명하지 못한 것

그날 밤늦게 제품 파일이 1.0.0이 됐어. 그런데 아키텍처의 릴리스 관문은 아빠 아이폰에서 여정 다섯 개를 요구해.

  • 메뉴판을 줄 단위로 번역하고 관련 표현까지 받기
  • 대화를 피파 목소리로 양방향 통역하기
  • 긴 문서를 브레인 둘이 고품질 모드로 옮기고 콜드 리뷰 받기
  • 앞선 순간 위에 눈에 띄게 쌓이는 나중 턴
  • 비행기 모드에서 찍고 기다렸다가 중복 없이 한 번 끝나는 캡처

첫날엔 이걸 검증할 수가 없었고, 폰 번들은 아직 0.1.0이야. 정확히 말하면 제품 파일은 1.0.0, 폰 번들은 0.1.0이고, 둘이 다르다는 건 알고 있어.

그 뒤 한 달은 기기에서 온 피드백으로 채워졌고, TestFlight 업로드는 빌드 32까지 갔어. 업로드됐다고 설치된 건 아니야. Spark가 들여온 공용 파이프라인은 첫머리 가까운 주석에서 이 사실들을 섞지 말라고 못 박아(두 번째 코드 블록).

원칙: 빠른 빌더한테 필요한 순서는 하나, 의존 순서야. 시간 때문에 자르지 말고, 단계마다 스위트를 초록으로 두고, 증명된 것과 그냥 나간 것을 따로 보고해.

Code

cwkSpark: 설계와 빌드 순서 커밋을 차례대로 (origin/main bccc698에서 실행, 출력 원문 그대로)·shell
$ git log --reverse --format='%h %s' 22c4102 \
    | grep -E 'birth|Ground|ruling|Write the whole|Add Spark|Design Spark|[Ss]tep [0-9]'
e69c8c8 scaffold: birth cwkSpark
e59df74 Ground the Spark architecture: starting material, platform facts, family reuse
72cfa51 Record Dad's first Spark ruling: the real Pippa is the interpreter
b286ea9 Write the whole Spark architecture: fastest first, Pippa's voice for Dad
23b8a1a Add Spark's two translation modes, purposes, and the corpus rule
89e1e65 Design Spark's live camera and free Ask Pippa on any material
7755e50 Record Dad's agreement and the live camera ruling: Pippa only
365ce3f Build step 1: the Spark corpus engine and web shell
9f94b45 Build step 2: the Sidekick docks on any moment
f205c6f Build step 3, engine and web: practical translation, explanations, live lane
b73aaf7 SparkMobile: the phone half of build step 3
411868b Doc: step 3 built on all three surfaces; SparkMobile's runtime facts
6e4cbbc Build step 4, engine and web: cards in Pippa's voice, reply mic, relays
7173981 Build step 4 on the phone: Talk, the sideways card, Pippa's voice on tap, the reply mic
bba1010 Step 5 begins: Dad's six purposes seeded as rows, with create and edit routes
46e135a Step 5 engine: versions per brain as Pippa, blind cold reviews, revisions
388e65b Vendor kitPippaBrains.ts for the step 5 brain picker (cwkSiblingKit)
e5fbd9e Step 5 web: purpose and brain-seat picker, versions side by side, anchored notes
fcb33a3 Step 5 on the phone: high-quality versions, marked notes, revise and review
4ca40bf Step 6 engine: keep and hear again, quick recall, roots, corpus search
618c4e2 Step 6 engine: trips gather their days, phrases, roots and places
f38a2ce Step 6 engine: a kept document becomes the moment's text
1bc376f Step 6 web: kept, expression and root pages, search, trips, recall, documents
aaae9df Step 6 on the phone: share extension, Control Center camera, keep, library, recall
9fcb2e0 Docs: build step 6 in the architecture and the kit adoption record
fedd170 Step 7: the high-resolution translated picture through Ember
1458035 Step 7: links to the crumbs a moment happened beside; web picture view
fdb91ab Step 7 on the phone: linked crumbs and the translated picture
c97e482 Architecture: step 7 as built (links, Send to Spark, the Ember picture)
22c4102 Build step 8: voice mode in Spark's threads, through cwkPippa's own screens
cwkSpark, scripts/mobile-testflight.sh: 업로드는 전달이 아니야 (원문 그대로, 14-16행)·shell
# Upload is not delivery. Four separate facts: uploaded, Apple processed it, the internal
# group has it, the build is INSTALLED on the device. Only the last one is delivery — say
# which one is true (cwkPippa docs/IOS-NATIVE-DELIVERY.md §1).

External links

Exercise

만들고 싶은 것 하나로 빌드 순서를 써봐. 단계는 철저히 의존 관계로만 번호를 매기고, 단계마다 끝날 때 참이어야 하는 걸 적어. 어떤 스위트가 초록인지, 사용자가 이제 뭘 할 수 있는지. 다른 시스템이 먼저 나가야 하는 단계엔 표시해. 그리고 시간 때문에 제일 자르고 싶은 단계를 골라서, 그걸 자르면 뒤에서 뭐가 깨지는지 적어봐.
Hint
Spark 순서는 엔진, 바인더, 실용 번역, 통역, 고품질 모드, 쌓인 코퍼스, 링크, 보이스 모드야. 단계마다 앞에서 만든 걸 써. 바인더 없이는 리더가 없고, 엔진의 턴 없이는 카드도 없어. cwkPippa 바인더가 Spark 2단계보다 먼저 나간 것도 Spark 쪽이 그걸 불렀기 때문이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.