실행 통제
하네스는 우회가 어디서 시작되는지 식별한다. 실행 통제는 그 우회를 실제 실패로 바꾼다.
하네스 파트에서 우회 패턴을 식별했다. 어떤 경로가 열려 있는지, 어디서 우회가 발생하는지를 봤다.
하지만 식별만으로는 경로가 닫히지 않는다. 규칙을 문서에 적어두는 것도, 패턴을 이름 붙이는 것도 경로를 막지 않는다. 경로는 여전히 열려 있다.
강제는 그 경로를 실제로 닫는다. 허용되지 않은 방식으로 코드를 작성하면 빌드가 실패하고, 허용되지 않은 방식으로 실행하면 즉시 중단되고, 테스트에서도 같은 경계가 작동한다.
먼저 한 장면만 본다
예를 들어 Glif에서 Page가 컴포넌트를 직접 import하는 우회를 생각해 보자.
// 위반: Page에서 직접 import
import { HeroBlock } from "@/ui/blocks/HeroBlock";
export function LandingPage() {
return <HeroBlock title="Hello" />;
}빌드 타임에서는 ESLint가 이 경로를 막는다.
Pages must not import UI blocks directly. Use registry resolver.합법 경로는 Resolver를 통해 Registry로 수렴한다.
export function LandingPage({ block }: { block: BlockNode }) {
return renderBlock(block); // Resolver -> Registry -> Component
}런타임에서는 Registry에 없는 type이 들어오면 즉시 실패한다.
{
"error": "UnknownBlockType",
"type": "hero-banner-v2",
"legal_path": "Register the block in the registry before rendering"
}테스트도 같은 경로를 쓴다. 테스트에서 직접 import로 우회하지 않고, 같은 resolver와 provider 경계를 통과시킨다.
이 한 장면이 이 파트의 요점이다. 강제는 규칙을 더 길게 적는 것이 아니라, 우회가 정공법보다 비싸고 더 잘 보이게 만드는 것이다.
빠르게 실체부터 보고 싶다면: 빌드 타임 강제 → 런타임 강제 → Planner 통제
강제의 네 원칙
이 파트 전체를 관통하는 원칙은 네 가지다.
합법 경로를 먼저 만든다. 막기 전에 대안이 있어야 한다. 합법 경로가 우회보다 짧고 쉬워야 한다. 그래야 AI도, 사람도 합법 경로를 선택한다.
실패를 늦추지 않는다. 문제가 발생한 시점과 실패가 발생하는 시점 사이의 간격이 길수록 수정 비용이 높아진다. 빌드 타임에서 잡을 수 있으면 런타임까지 미루지 않는다.
모든 환경에서 같은 경계가 작동한다. 개발 환경에서는 통과되고 CI에서만 실패하거나, 테스트에서는 우회가 허용되고 운영에서만 막히는 강제는 강제가 아니다.
경고는 강제가 아니다. warning은 무시된다. 특히 AI는 warning을 통과로 해석한다. 위반은 error로 처리해서 빌드 자체를 실패시킨다.
두 환경의 강제 도구
하네스 파트에서 Atlas와 Glif 두 환경을 분리했다. 강제 도구도 환경에 따라 다르다.
| 환경 | 정적 강제 | 런타임 강제 |
|---|---|---|
| Atlas (.NET / C#) | Roslyn Analyzer | Guard / Assertion |
| Glif (React / TS) | ESLint + 커스텀 룰 | Runtime Guard |
두 환경의 강제 방식은 구체적인 도구가 다르지만, 작동하는 원리는 같다. 위반이 감지되면 빌드가 실패하고, 합법 경로를 가리키는 오류 메시지가 출력된다.
각 문서에서 두 환경의 구현을 함께 보여준다.
이 파트의 구성
- 순차 문서 — 적용 전략, 빌드 타임, 런타임, 전이 통제, Planner 통제, 테스트 하네스 강제
- 레퍼런스 문서 — 경계 강제 패턴, 패턴 요약
처음 읽을 때는 순차 문서를 먼저 따라가고, 레퍼런스 문서는 중간에 막히는 지점이 생길 때 참조하거나 마지막에 전체를 정리할 때 읽는 편이 자연스럽다.
권장 읽기 순서:
처음 시작한다면: 적용 전략 → 빌드 타임 → 런타임 → 패턴 요약
상태/흐름 통제가 목적이라면: 전이 통제 → Planner 통제
AI 작업 흐름에 강제를 적용한다면: Planner 통제 → 경계 강제 패턴
테스트 환경 정렬이 목적이라면: 테스트 하네스 강제
패턴 요약은 마지막에 읽는다. 개별 강제 방식을 먼저 이해한 뒤에야 전체 조망이 의미 있다.
설계는 문서로 시작하지만, 시스템은 실패 강제로 유지된다.