28장. DecisionDesk를 실행한다

DecisionDesk는 외부 API 없이 실행되는 로컬 실습이다. Node.js 20 이상이 필요하다. 패키지 설치가 없으므로 네트워크 없이도 핵심 실습을 진행할 수 있다.
cd /Users/honi/WithAI/books/ai-competence-bible
npm test
npm run lab
브라우저에서 http://127.0.0.1:4317을 연다. 화면에는 작업 계약, 네 개 자료, 다섯 검증 게이트, 근거가 붙은 초안, 승인 영수증이 보인다. WEB-99는 인젝션 때문에 격리된다. 자동 품질 게이트가 100이어도 외부 고객 초대 권한 때문에 승인 대기다.
첫 번째 실패 실습은 필수 근거 삭제다. 원본을 보존하고 복사본에서 SRC-03을 제거한다.
cp lab/data/case.json /tmp/decisiondesk-case.backup.json
편집 후 테스트의 “필수 근거가 사라지면 실행을 차단한다” 사례와 비교한다. 실습이 끝나면 복사본을 되돌린다. Git을 사용한다면 diff를 확인하고 사용자 변경을 덮어쓰지 않는다.
두 번째 실습은 과도한 확정 표현이다. draft에 반드시 성공을 넣으면 평가가 경고한다. 세 번째는 외부 발송 플래그다. externalWrite가 true이면 사람 승인 없이 ready가 되지 않는다.
전체 검증과 화면 캡처:
npm run qa
이 명령은 29개 테스트, 웹북 빌드, 로컬 Chrome 화면 캡처, 원고·자산 검사를 수행한다. 실제 출간 전에는 다른 운영체제와 사람이 같은 절차를 다시 실행해야 한다.
코드를 읽지 않는 독자의 완주 기준
화면에서 네 가지를 자기 말로 설명한다. 왜 품질 점수가 100인데 실행되지 않았는가, 격리된 자료의 경쟁사 주장을 왜 쓰지 않았는가, 어떤 자료가 사라지면 blocked가 되는가, 실행 뒤 문제가 생기면 어떤 순서로 복구하는가. 버튼을 누르는 것이 아니라 상태와 이유를 설명하는 것이 완주다.
개발자는 lab/src/decision-engine.mjs의 classifyRisk, auditSources, evaluateDraft, buildDecisionRun을 읽는다. “승인 내용 해시가 바뀌면 재승인” 실패 테스트를 먼저 추가하고 구현한다. 기능을 만들기 전 빨간 테스트와 구현 뒤 녹색 테스트를 모두 확인한다.