클로드가 고치다 망가뜨려도 되돌리기 — 시험 한 벌과 마지막 정상본 (Git)
이 페이지 목차
시작 전에1단계 · 지금 모습을 Git 으로 첫 저장2단계 · 시험 한 벌 만들기3단계 · 시험이 통과하면 「정상본」 이름표4단계 · 고치게 시켰더니 시험이 빨간불5단계 · 정상본으로 되돌리기 (지금 것은 먼저 따로 저장)6단계 · 이 순서를 규칙 파일에 적어 두기7단계 · 새 대화에서 규칙대로 하는지 시험다 됐습니다 — 이제 이렇게 말하면 됩니다막히면한 번에 맡기기 (익숙해진 다음에)내가 만들 때는클로드에게 「이것 좀 고쳐 줘」 하고 맡겼더니, 고치기 전에는 돌아가던 것이 안 돌아가는 일이 있습니다. 어디까지가 정상이었는지 기록이 없으면 처음부터 다시 설명해야 합니다. 그래서 세 가지를 갖춰 둡니다. 저장 지점(고치기 전 모습), 시험(정상인지 알려 주는 짧은 검사), 이름표(시험이 통과한 마지막 저장 지점에 붙이는 표). 아래 말을 순서대로 한 줄씩 치면 됩니다. (예시 자료는 가짜 이름입니다.)
시작 전에
- 작은 프로그램이 든 폴더 하나를 준비하고(폴더 이름은 영문), 그 폴더에서 클로드(Claude Code)를 엽니다. 여는 방법은 15편 「시작 전에」와 같습니다. 이 편의 예시는 가나다전자 견적 계산기
quote.js파일 하나입니다. 품목마다 단가와 수량을 받아 합계에 부가세 10%를 더해 주는 20줄쯤의 프로그램입니다. 아직 없으면 클로드에게 「가나다전자 견적 계산기를 quote.js 하나로 만들어 줘. 품목은 이름·단가·수량이고 합계와 부가세 10%를 계산해 줘. 예시 품목은 온도센서 12,000원 3개, 연결케이블 2,500원 10개. 결과는 꾸미지 말고 숫자만 찍어 줘」라고 부탁해 만들어 두세요. 예시 품목을 꼭 넣으세요. 수량 10개짜리가 있어야 4단계에서 시험이 빨간불을 냅니다. 내 프로그램이 있으면 그것으로 하고, 4단계와 7단계의 부탁만 내 프로그램에 맞게 바꾸세요. - 예시 계산기는 Node.js(자바스크립트를 돌리는 프로그램)로 돌아갑니다. 클로드에게 「node 가 깔려 있는지 봐 줘」라고 물어 없다고 하면, 공식 사이트에서 LTS 판을 내가 직접 설치하세요.
- 승인 방식은 Manual 로 두세요(15편에 방법이 있습니다). 클로드가 Git 명령을 실행하려 할 때마다 무엇을 하는지 보여 주고 허락을 묻는 방식입니다. 이 편에서는 허락 창의 명령을 읽고 주세요. 특히 지금 작업을 저장 없이 지우는
reset --hard·restore·checkout --·clean, 인터넷에 올리는push가 보이면 허락하지 마세요(「막히면」 5번). - 저장은 이 PC 안에서만 합니다. GitHub 같은 인터넷 저장소에는 올리지 않습니다. 비밀번호·키가 든 파일이 폴더에 있으면 저장하기 전에 먼저 빼 두세요.
- Git 이 이 PC 에 없으면 1단계에서 클로드가 알려 줍니다. 설치는 공식 사이트에서 내가 직접 합니다. Git·Node.js 를 새로 설치했으면 클로드를 닫았다가 다시 여세요. 열려 있던 클로드는 새로 깐 프로그램을 못 찾기도 합니다.
- 제 화면과 클로드의 답이 글자 하나까지 같지는 않을 것입니다(저장 번호는 사람마다 다릅니다). 단계마다 쓴 「이렇게 나오면 성공」 표시만 맞으면 다음으로 가세요.
준비물 자세히 (용어)
- Git은 폴더 안 파일의 변화를 단계마다 기록해 두는 프로그램입니다. 게임의 세이브 기능과 비슷합니다. 인터넷 없이 내 PC 안에서만도 쓸 수 있습니다. 더 쉬운 설명은 기초 3편에 있습니다.
- **커밋(저장 지점)**은 지금 모습을 한 번 저장하는 일, 또는 그렇게 저장된 한 시점입니다. 저장할 때마다 번호(예:
581cdce)가 붙습니다. (git commit) - **태그(이름표)**는 저장 지점 하나에 붙이는 이름입니다. 이 편에서는
last-good(마지막으로 정상이던 것)이라는 이름표를 씁니다. 새 저장을 해도 이름표는 저절로 따라오지 않습니다. 사람이나 클로드가 옮겨야 합니다. (git tag) - **갈래(브랜치)**는 저장 지점의 줄기를 따로 하나 더 만드는 것입니다. 이 편에서는 「망가진 작업을 지우지 않고 보관하는 서랍」으로 씁니다. (git switch)
- 시험은 프로그램을 돌려 정답과 견주어 보는 짧은 파일입니다. 클로드가 만들어 줍니다. 「시험이 통과했다」는 것은 「시험이 아는 범위 안에서는 정상」이라는 뜻입니다(「막히면」 7번).
- CLAUDE.md는 클로드가 대화를 시작할 때마다 읽는 규칙 파일입니다(15편).
1단계 · 지금 모습을 Git 으로 첫 저장
가장 먼저 「고치기 전 모습」을 저장합니다. Git 을 시작해도 내 파일은 바뀌지 않습니다. 폴더에 .git 이라는 숨김 폴더(기록 서랍)가 생길 뿐입니다. 말을 짧게 「저장해 둬」라고만 하면 클로드가 Git 이 아니라 자기 메모에 적어 버리기도 하니, 「Git으로」를 꼭 붙이세요(「막히면」 1번).
✅ 이렇게 나오면 성공 — 「저장(커밋)을 만들었다」는 말과 일곱 글자쯤의 번호가 보이면 다음 단계로. 허락 창이 뜨면 명령을 읽고 허락하세요. 「LF will be replaced by CRLF」라는 경고가 나와도 괜찮습니다(「막히면」 8번).
(갈래 이름이 main 대신 master 로 나와도 같은 것입니다. Git 의 기본 이름이 master 라서 제 두 번째 실험에서도 그렇게 나왔습니다. 이 편의 main 을 master 로 바꿔 읽으세요. 「작성자 정보가 비어 있다」고 하면 「막히면」 3번, 「git 명령을 찾을 수 없다」고 하면 「시작 전에」의 공식 사이트에서 Git 을 설치하고 클로드를 다시 여세요.)
2단계 · 시험 한 벌 만들기
이제 「정상」이 무엇인지 알려 줄 시험을 만듭니다. 클로드가 직접 짜고 돌려서 결과까지 보여 줍니다.
✅ 이렇게 나오면 성공 — 폴더에 quote.test.js 같은 시험 파일이 생기고 「모두 통과」가 보이면 됩니다. 시험 이름과 개수는 클로드마다 다릅니다. 내 프로그램이 Node.js 가 아니면 시험 방법도 다르지만, 같은 식으로 「시험을 만들어 돌려 줘」라고 하면 됩니다.
3단계 · 시험이 통과하면 「정상본」 이름표
위 답의 마지막 질문에 이어서 답합니다. 시험 파일까지 저장하고, 시험이 전부 통과했을 때만 그 저장 지점에 last-good 이름표를 붙이게 합니다. 이 이름표가 앞으로 돌아갈 자리입니다.
✅ 이렇게 나오면 성공 — 가장 위 저장 옆에 last-good 이 보이면 됩니다. 확인하고 싶으면 「저장 기록과 이름표를 보여 줘」라고 하세요. 다음 단계부터 이 이름표가 「마지막으로 시험이 통과한 곳」을 가리킵니다.
4단계 · 고치게 시켰더니 시험이 빨간불
이제 고쳐 달라고 해 봅니다. 이번에는 새 기능이 옛 시험과 부딪히는 부탁입니다. 「시험 파일은 건드리지 말고」를 붙여야 시험이 제 일을 합니다. 클로드가 시험을 새 기능에 맞춰 슬쩍 고쳐 버리면 정상 여부를 알려 줄 기준이 사라집니다. 이 단계에서는 저장(git commit)이나 이름표(git tag) 허락 창이 뜨면 거절하세요. 이번 변경은 5단계에서 따로 저장합니다.
✅ 이렇게 나오면 성공 — 시험이 하나라도 실패했다고 하고, 「저장하지 않았다」「이름표는 그대로」라고 말하면 됩니다. 이름표가 안전선 노릇을 한 것입니다. 이번에 실패한 이유는 새 규칙(할인)이 옛 시험과 맞지 않아서였습니다. 새 규칙이 옳다고 판단되면 「시험을 새 규칙에 맞게 고쳐 줘」라고 할 수도 있습니다. 어느 쪽이 맞는지는 사람이 정합니다. 이 편에서는 되돌리기를 익히려고 취소하는 쪽으로 갑니다. 시험이 전부 통과했다고 나오면 내 시험에 수량 5개 이상인 품목이 없어서입니다(「막히면」 7번). 저장만 안 됐으면 5단계로 그대로 가세요. 되돌리기 연습은 똑같이 됩니다.
5단계 · 정상본으로 되돌리기 (지금 것은 먼저 따로 저장)
되돌리기 전에 망가진 지금 모습도 지우지 않고 따로 저장하게 합니다. 나중에 「아까 그 작업 아깝다」 싶을 때 꺼내 쓸 수 있습니다.
✅ 이렇게 나오면 성공 — ① quote.js 에서 할인 코드가 사라졌고 ② 시험이 전부 통과하고 ③ 따로 저장한 갈래 이름(여기서는 discount-wip)이 보이면 됩니다. 파일을 열어 눈으로도 확인하세요. 나중에 그 할인 작업을 다시 보려면 「discount-wip 로 옮겨 줘」라고 하면 됩니다.
6단계 · 이 순서를 규칙 파일에 적어 두기
지금까지 한 순서(고치기 전 저장 → 고친 뒤 시험 → 통과해야 이름표 → 망가지면 따로 저장하고 되돌리기)를 매번 말하지 않도록 규칙 파일에 적습니다. 규칙 파일은 15편과 같은 CLAUDE.md 입니다.
✅ 이렇게 나오면 성공 — 폴더에 CLAUDE.md 가 생기고 「시험이 전부 통과해야 이름표를 옮긴다」「되돌릴 땐 먼저 따로 저장」이 들어 있으면 됩니다. 파일을 열어 읽어 보세요. 문장은 클로드마다 조금 다릅니다. 이 답에서 클로드는 규칙에 따라 CLAUDE.md 자체도 시험을 돌린 뒤 저장하고 이름표를 옮겼다고 말했습니다.
7단계 · 새 대화에서 규칙대로 하는지 시험
가장 중요한 단계입니다. 지금 대화를 닫고 같은 폴더에서 새 대화를 엽니다. 새 대화는 앞 이야기를 모르니, 규칙은 파일에서 읽어 와야만 지킬 수 있습니다. 규칙은 말하지 않고 작은 일만 시킵니다. 이번에는 계산은 그대로 두고 화면에 찍는 모양만 바꾸는 작은 부탁이라, 보통은 시험이 통과합니다. (내 프로그램이면 비슷하게 작은 부탁으로 바꾸세요.)
✅ 이렇게 나오면 성공 — 내가 시험이나 저장을 말하지 않았는데도 클로드가 시험을 돌리고, 저장하고, 이름표를 옮겼으면 규칙이 읽힌 것입니다. 시험이 화면 모양까지 검사하는 경우에는 시험이 실패할 수 있습니다. 그때 클로드가 저장하지 않고 이름표도 그대로 둔 채 물어보면 그것도 규칙대로 한 것이니 성공입니다. 「이미 쉼표가 찍혀 있다」고 하면 다른 작은 부탁으로 바꿔 보세요(예: 「실행하면 맨 위에 '가나다전자 견적' 제목 한 줄을 찍어 줘」). 시험을 안 돌리거나 실패했는데 저장하면 「막히면」 9번을 보세요.
다 됐습니다 — 이제 이렇게 말하면 됩니다
항상 이 폴더에서 클로드를 열고 이야기합니다. 고치는 순서는 규칙 파일이 알고 있습니다.
- 「○○ 기능 넣어 줘.」 (저장 → 시험 → 이름표는 말하지 않아도 규칙대로 합니다.)
- 「마지막으로 시험이 통과했을 때와 지금이 뭐가 달라졌는지 알려 줘.」 (이름표와 지금을 견줘 줍니다.)
- 「방금 고친 거 망가졌어. 지금 것을 먼저 따로 저장하고 last-good 으로 되돌려 줘.」
- 「따로 저장해 둔 작업이 어떤 게 있는지 목록을 보여 줘.」
- 「last-good 이 가장 최근 저장과 같은 자리를 가리키는지 확인해 줘.」
따로 저장해 둔 갈래(여기서는 discount-wip)는 지우라고 하기 전에는 그대로 둡니다. 서랍이 늘어도 해가 없습니다.
막히면
- 「저장해 둬」라고만 했더니 클로드가 Git 이 아니라 메모에 적었다 → 제 실험에서 실제로 났습니다. 클로드는 「지금 상태를 메모리에 저장했다」고 하며, 이 폴더가 Git 저장소가 아니니 보존하려면 복사하거나 Git 으로 관리하라고 덧붙였습니다. 메모(자동 기억)는 코드 백업이 아닙니다. 이렇게 다시 말하세요: "메모 말고 Git으로 저장해 줘. 이 폴더가 아직 Git 저장소가 아니면 Git 시작부터 해 줘."
- 클로드가 「Git 명령은 승인이 필요한데 창을 띄울 수 없다」며 멈췄다 → 허락 창이 뜨지 않는 방식(비대화형)으로 돌렸을 때 제 실험에서 실제로 났습니다. 데스크톱 앱이나 터미널에서 대화로 쓰면 창이 뜹니다. 창이 뜨지 않는 방식이라면 클로드가 알려 주는 허용 방법을 따르되,
git전체를 한꺼번에 허용하지 말고 저장·시험·상태 보기처럼 필요한 명령만 허용하세요. 전체를 열면reset --hard나push까지 열립니다. - 클로드가 「작성자 정보가 비어 있다」며 이름과 이메일을 묻는다 → Git 은 저장할 때마다 작성자 이름과 이메일을 함께 적습니다(공식 안내). 이 PC 에서 처음 쓰면 한 번 정해야 합니다. 작성자를 비워 둔 Windows PC 로 다시 해 보니, 저장은 됐지만 작성자가
unknown <PC 계정 이메일>로 들어갔습니다. 클로드는 이 PC 전체 설정(--global)으로 정하자며 제 계정의 이름과 이메일을 미리 채워 보여 주었습니다. PC 에 따라서는 저장이 아예 안 되기도 합니다. 이렇게 말하세요: "이 폴더에서만 쓸 작성자 이름과 이메일을 정하고 싶어. 먼저 나한테 물어보고, 이 PC 전체 설정은 바꾸지 마" 그러면 클로드가 이름과 이메일을 묻습니다. 답하면 이 폴더 안에만 적습니다. 이메일은 가짜여도 저장은 됩니다. 이미 만든 첫 저장의 작성자도 고칠지 물어보는데, 인터넷에 올리지 않은 저장이라 고쳐도 되고 그냥 둬도 됩니다. - 시험이 실패했는데 클로드가 시험 쪽을 고쳐서 통과시킨다 → 제 실험에서는 클로드가 시험을 건드리지 않고 「시험을 고칠까요, 취소할까요」라고 물었습니다. 하지만 시험이 낡은 것인지 프로그램이 틀린 것인지는 클로드도 헷갈릴 수 있습니다. 이렇게 다시 말하세요: "시험 파일은 건드리지 마. 시험이 실패한 이유를 먼저 설명하고, 시험을 고쳐도 되는지는 내가 정할게."
- 클로드가 되돌리려고
git restore나reset --hard를 쓰겠다고 한다 → 4단계 답에서 실제로git restore를 제안했습니다. 이 명령들은 지금 작업을 저장 없이 덮어씁니다(공식 문서: git restore, git reset의--hard). 허락 창이 뜨면 거절하고 이렇게 말하세요: "지금 것을 먼저 따로 저장하고, 그다음 last-good 으로 되돌려 줘." - 되돌렸는데 이름표가 옛날 저장에 그대로다 → 정상입니다. 이름표는 저절로 따라오지 않습니다(공식 문서: Git 은 태그를 사용자 몰래 바꾸지 않습니다). 새 저장에서 시험이 전부 통과했을 때만 이렇게 말하세요: "시험이 전부 통과했으니 last-good 을 지금 저장으로 옮겨 줘." 6단계 규칙이 있으면 클로드가 알아서 합니다.
- 시험이 다 통과하는데 새 기능은 안 돌아간다 → 시험은 시험이 아는 것만 잡습니다. 4단계에서도 클로드가 「지금 시험에는 할인 자체를 확인하는 항목이 없다」고 직접 짚었습니다. 이렇게 말하세요: "방금 넣은 기능을 확인하는 시험도 추가해 줘. 경계값(정확히 5개일 때와 4개일 때)도 넣어서."
- 저장할 때 「LF will be replaced by CRLF」 경고가 뜬다 → Windows 에서 줄바꿈 글자를 맞춰 준다는 안내이고, 계산이나 시험에는 영향이 없다고 클로드가 설명했습니다(제 실험에서 실제로 났습니다). 무시해도 됩니다.
- 새 대화인데 규칙대로 안 한다 → 클로드를 연 폴더가
CLAUDE.md가 있는 폴더가 아닌 경우가 흔합니다. 이렇게 다시 말하세요: "지금 열린 폴더 경로를 말하고, 그 폴더의 CLAUDE.md 를 읽은 다음 고칠 때 순서를 한 줄씩 요약해 줘." 자세한 점검은 15편의 「막히면」을 보세요.
한 번에 맡기기 (익숙해진 다음에)
긴 프롬프트 펼치기 — 위 1\~3단계와 6단계를 한 번에 시키는 말
저장 → 시험 → 정상본 이름표 → 규칙 파일까지 한 번에 갖춥니다. 프로그램이 든 폴더에서 클로드를 연 뒤, 꺾쇠 <…> 자리를 내 것으로 바꿔 붙여 넣으세요. 4~5단계(고치기·되돌리기)는 이어서 직접 해 보세요. 이 말은 규칙 파일에 「통과해야 이름표」와 「되돌릴 땐 먼저 따로 저장」을 한꺼번에 적습니다.
역할: 너는 내 PC 에서 일하는 도우미다. 이 폴더의 작은 프로그램을 앞으로 안전하게 고칠 수 있도록 「저장 → 시험 → 정상본 표시 → 되돌리기」 장치를 갖춰 준다. 나는 초보자이니 어려운 말은 풀어서, 한 단계씩 말해 줘.
맥락: 지금 열려 있는 이 폴더가 작업 폴더다. 프로그램은 <프로그램이 하는 일 한 줄>이다. 저장은 이 PC 안의 Git 에만 한다. 인터넷에 올리지 않는다(push·원격 연결 금지). 너는 이 폴더에서 시작한 Claude Code 이고, 이 폴더의 CLAUDE.md 는 새 대화를 열 때마다 읽힌다.
입력: <운영체제>, <쓰는 클로드: Claude Code 터미널 / 데스크톱 앱의 Code 탭>
작업:
① 확인 — 아무것도 바꾸기 전에 폴더 안 파일 목록과 Git 저장소 여부를 본다. 이미 Git 저장소이거나 CLAUDE.md 가 이미 있으면 멈추고 어떻게 할지 묻는다.
② 첫 저장 — Git 을 시작하고(저장소 만들기) 지금 파일을 한 번 저장(커밋)한다. 비밀번호·키가 든 파일이 보이면 저장하지 말고 먼저 알린다.
③ 시험 — 프로그램이 맞게 계산하는지 확인하는 시험 파일을 만들고 돌려서 결과를 보여 준다. 새로 설치해야 하는 도구는 쓰지 않는다(Node.js 가 있으면 기본 시험 도구).
④ 정상본 — 시험이 전부 통과하면 시험 파일도 저장하고, 그 저장에 last-good 이름표(태그)를 붙인다.
⑤ 규칙 — CLAUDE.md 에 「고칠 때 순서」를 적는다. (가) 고치기 전에 저장 안 된 변경이 없는지 본다. (나) 고친 뒤 시험을 돌려 결과를 보여 준다. (다) 전부 통과해야 저장하고 last-good 을 옮긴다. (라) 하나라도 실패하면 저장하지 않고 이유를 말한 뒤 묻는다. 통과시키려고 시험을 임의로 고치지 않는다. (마) 되돌릴 때는 지금 것을 먼저 별도 갈래(브랜치)에 따로 저장하고, 저장 없이 변경을 버리는 명령(git reset --hard, git restore, git clean)은 쓰지 않는다.
⑥ 마무리 — 초보자 눈높이로 무엇이 갖춰졌고 앞으로 어떻게 말하면 되는지 설명한다.
제약: 비밀키·토큰·비밀번호를 출력하거나 저장하지 않기. 오류를 건너뛰지 않기. 기존 파일을 지우거나 덮어쓰지 않기. git push 를 쓰지 않고 원격 저장소를 연결하지 않기(git remote add 금지 — 목록 보기는 된다). git config --global 로 내 PC 전체 설정을 바꾸지 않기(작성자 이름·이메일이 없거나 unknown 으로 들어가면 멈추고 나에게 물을 것). 이 폴더 밖의 파일은 읽지도 쓰지도 않기.
출력: 한 일, 만든 파일 목록, 저장(커밋) 목록, last-good 이 붙은 자리, 검증 결과, 남은 문제와 다음 조치.
검증: 아래를 직접 다시 확인해서 모두 맞아야 "완료"라고 보고한다. 하나라도 실패하면 완료로 보고하지 말 것.
(가) git log 에 저장이 두 개 이상 있고, 저장 안 된 변경이 없다(git status 가 깨끗하다).
(나) 시험 파일이 있고, 시험을 다시 돌리면 전부 통과한다.
(다) last-good 이름표가 있고 가장 최근 저장과 같은 자리를 가리킨다.
(라) CLAUDE.md 에 「last-good」, 「시험」, 「따로 저장」이 들어 있고 reset --hard 를 쓰지 말라는 줄이 있다.
(마) git remote -v 로 본 원격 목록이 비어 있다.
내가 만들 때는
처음엔 이렇게 말했습니다. 2026-08-05 오전 10시 16분, 제 개인 비서 AI 파이스를 만들던 대화였습니다. 파이스는 자기 코드를 스스로 고치는 비서인데, 고치다 한 번 깨지면 「고쳐 줘」라고 말할 화면까지 같이 죽었습니다. 저는 이렇게 썼습니다. 「내가 파이스에게 자가 수정이나 저런 도구들 수정시키면 … 여기서 pais 자체에 코드를 수정하거나 하면 또 이놈이 저렇게 먹통이 되어 버려. … 파이스 위에 말 그대로 한 개 더 필요한 거지.」 계획을 세운 뒤 같은 날 12시 33분에는 「ㅇㅋ 6a 시작해.. … 이거 먼저 github에 저장해 놓고.. … 6a 부터 단계적으로 하나씩 작업 시킬때 먼저 6a 작업하고 완료되면 말해줘..」라고 했습니다(6a 는 구조대 공사의 첫 단계 이름입니다). 고치기 전에 먼저 저장부터 시킨 셈입니다. 저는 GitHub(인터넷 저장소)에 올렸지만, 이 편은 PC 안에만 저장합니다. 계획을 적은 11시 57분부터 74분 만에 구조대가 생겼습니다. 서버 바깥에서 지켜보는 감시 프로그램입니다. 파이스가 다시 켜진 뒤 90초 동안 5초 간격으로 살아 있는지 찔러 보고, 세 번 연속 통과해야 그 저장 지점을 「정상(last-good)」으로 적습니다. 통과하지 못하면 last-good 으로 되돌려 다시 띄웁니다. 이 편 3단계의 이름표가 같은 이름이고 같은 생각입니다. 다만 파이스는 사람이 곁에 없을 때 혼자 되돌려야 해서 강제 복원(git reset --hard)을 쓰는데, 그때도 되돌리기 전에 저장 안 된 작업은 먼저 저장해 둡니다. 이 편이 「지금 것을 먼저 따로 저장」을 계속 강조하는 이유입니다. 사람이 곁에 있는 이 편에서는 강제 복원을 권하지 않습니다.
구조대는 문법은 맞고 기능만 깨진 저장 지점도 90초 검사로 잡아 되돌렸습니다(8/5에 일부러 한 글자를 바꿔 시험했습니다). 그런데 90초 검사는 설정·권한·기억·대화 기록·도구 설명서, 이 다섯 가지만 찔러 봅니다. 그 다섯 가지에 닿지 않는 기능 고장은 문법만 맞으면 빠져나갈 수 있었습니다. 그래서 이튿날(8/6) 모듈(프로그램을 이루는 부품 파일)마다 스스로 시험을 돌리는 **시험 틀(selftest)**을 만들었습니다. 시험을 통과해야 저장하고, 통과한 것만 last-good 이 됩니다. 시험 항목은 그날 10개에서 19개로 늘었습니다. 일부러 한 모듈의 기능만 깨 보았더니 문법 검사는 통과(종료코드 0)했는데 시험 틀은 실패(1)했습니다. 이 편의 2~3단계(시험을 만들고, 통과해야 이름표)가 그 구조입니다. 4단계의 「시험 파일은 건드리지 말고」도 같은 곳에서 나왔습니다. 안전장치가 고치는 쪽 손 안에 있으면 안전장치가 아니라서, 파이스의 자기수정 도구는 구조대 프로그램과 last-good 기록을 고치지 못하게 했습니다(명령창 명령으로 돌아가는 길은 남았습니다). 평가 틀은 평가받는 쪽이 못 지워야 한다는 연구 원칙도 따랐습니다.
한계도 있습니다. 시험은 우리가 짠 검사만 잡습니다. 상상하지 못한 고장은 여전히 사람이 되돌립니다. 이 편 「막히면」 7번이 그 이야기입니다. 파이스를 살리는 이 구조는 연구 논문과 오래된 시스템 설계의 원칙(회복하는 쪽은 작고 안 바뀌어야 하고, 되돌릴 목표는 요청이 아니라 따로 둔 정상 기록에서 읽는다)을 참고했습니다. → 뒷이야기 5단계에서 자세히 보세요. 참고한 연구는 파이스가 참고한 연구에 모아 두었습니다.