"뭐가 절대 안 될지 말해줘, 그럼 그게 뭔지 알게 될 테니."
거부로 정의하는 목록
대부분의 스펙은 기능 목록이야. Firelink 의 제일 중요한 스펙은 거부 목록이고. 이런 게 다 안 돼. monorepo 나 소스코드 소유자. IDE·editor·formatter·code generator·코드를 알아서 고치는 에이전트. 일반 fleet 터미널이나 fleet 컨트롤러를 대신하는 것. canonical 형제 도구랑 경쟁하는 signing·build·rsync·launchd 독트린. 두 번째 Pippa 정체성·메모리·대화 저장소·model router. travel 브라우저에서 사무실 GUI 앱을 띄우는 remote desktop. repo 를 지우거나 은퇴시키거나 force-push·reset·clean 하는 UI. 플러그인 마켓플레이스나 아무 인프라나 관리하는 범용 플랫폼.
그 목록을 다시 읽어봐. 항목 하나하나가 Firelink 가 됐을 법한 구체적인 god-object 야. 아무 면책 조항이나 갖다 붙인 게 아냐. 중력이 당기는 정확한 방향마다 이름을 붙이고 벽을 세운 거지.
'안 돼' 하나하나가 미리 막아둔 failure mode 야
'editor 아님'은 허브가 '돕는 척' 형제 파일을 몰래 고치는 걸 막아. '두 번째 뇌 아님'은 Pippa 메모리를 fork 해서 다른 성격으로 흘러가는 걸 막고. 'fleet 터미널 아님'은 아무 명령이나 도는 통제 안 된 shell 이 되는 걸 막아. '삭제·은퇴·force-push UI 없음'은 제일 못 되돌리는 작업을 원클릭이 아니라 손으로 신중하게 하는 일로 남겨. 각 거부가 하중을 받는 이유는, 그게 막는 기능이 하필 — 뭔가를 부수기 직전까지 제일 도움 되는 것처럼 느껴지는 바로 그거라서야.
필요가 이끌지, 예측이 이끌지 않아
Non-Goal 마지막 줄은 미래에 관한 규율이야. 구체적인 가족 필요가 확장을 이끌고, Firelink 는 있지도 않은 제품을 미리 내다보며 가족 밖으로 넓히지 않는다. 정체성으로 적어놓은 YAGNI 인 셈이지. 플러그인 마켓플레이스, 범용 인프라 플랫폼, config 로 뭐든 하는 엔진. 이런 건 아직 없는 유저를 섬기려 할 때 도구가 취하는 모양이야. Firelink 는 딱 한 가족을 섬기고, 그 가족이 진짜 필요할 때만 자라.