현재 상태
.claude/no-harness, .codex/no-harness, .pi/no-harness 세 마커가 저장소에 커밋돼 있어
세션 계약 게이트(.codex/hooks/session-contract-gate.cjs)가 아무것도 강제하지 않는다.
이 릴리스는 그 상태로 나간다.
왜 껐나
강제를 켜면 계약이 없는 세션(.agents/session-contracts/에 항목이 없는 세션)이
모든 변경성 셸 명령에서 차단된다. 신규 클론에서 실측한 결과다.
| 명령 |
강제 ON |
강제 OFF |
ls -la |
통과 |
통과 |
| 일반 파일 편집 |
통과 |
통과 |
mkdir -p src/new |
차단 |
통과 |
git commit -m wip |
차단 |
통과 |
npm test |
차단 |
통과 |
새로 클론한 사람이 자기 테스트 스위트조차 돌릴 수 없다.
원인
파일 편집 경로는 이미 같은 문제를 겪고 고쳤다. unboundOrdinaryMutationAllowed 위 주석에
그 경위가 남아 있다 — 평범한 작업이 전부 막혀서 결국 모두가 하네스를 끈 채로 돌렸고,
"아무도 그 아래서 일할 수 없는 가드는 아무것도 강제하지 않는다"는 결론으로 평범한 파일 편집을
열었다. 위험한 것(삭제·진입점·거버넌스 디렉터리)만 계약을 요구하도록 좁혔다.
셸 경로에는 같은 처리가 적용되지 않았다. unbound 세션의 셸은 읽기 전용만 통과하고
나머지는 전부 계약을 요구한다. bound 세션도 allowed_shell_commands에 명령을 정확히
사전 열거해야 한다.
고칠 방향
파일 편집에 적용한 논리를 셸에 그대로 적용한다. 평범한 비파괴 명령은 unbound에서도 통과시키고,
실제로 위험하거나 권한을 확대하는 명령만 계약을 요구한다. 사전 열거 방식은 유지하지 않는다 —
사람이 명령을 미리 다 적어야 하는 구조는 천장이 생겨 결국 하네스를 끄게 만든다.
해제 조건
이 이슈를 닫고 마커를 지우기 전에 신규 클론에서 강제를 켠 채로 확인한다.
관련
- 마커 파일 3종에 같은 내용을 적어 뒀다
- README 거버넌스 절에 현재 상태를 명시했다
AGENTS.md 세션 경계 절은 의도한 설계를 서술한 것이며 현재 런타임 동작과 다르다.
이 진입점은 승인된 digest로 잠겨 있어 별도 승인 없이 고치지 않았다
현재 상태
.claude/no-harness,.codex/no-harness,.pi/no-harness세 마커가 저장소에 커밋돼 있어세션 계약 게이트(
.codex/hooks/session-contract-gate.cjs)가 아무것도 강제하지 않는다.이 릴리스는 그 상태로 나간다.
왜 껐나
강제를 켜면 계약이 없는 세션(
.agents/session-contracts/에 항목이 없는 세션)이모든 변경성 셸 명령에서 차단된다. 신규 클론에서 실측한 결과다.
ls -lamkdir -p src/newgit commit -m wipnpm test새로 클론한 사람이 자기 테스트 스위트조차 돌릴 수 없다.
원인
파일 편집 경로는 이미 같은 문제를 겪고 고쳤다.
unboundOrdinaryMutationAllowed위 주석에그 경위가 남아 있다 — 평범한 작업이 전부 막혀서 결국 모두가 하네스를 끈 채로 돌렸고,
"아무도 그 아래서 일할 수 없는 가드는 아무것도 강제하지 않는다"는 결론으로 평범한 파일 편집을
열었다. 위험한 것(삭제·진입점·거버넌스 디렉터리)만 계약을 요구하도록 좁혔다.
셸 경로에는 같은 처리가 적용되지 않았다. unbound 세션의 셸은 읽기 전용만 통과하고
나머지는 전부 계약을 요구한다. bound 세션도
allowed_shell_commands에 명령을 정확히사전 열거해야 한다.
고칠 방향
파일 편집에 적용한 논리를 셸에 그대로 적용한다. 평범한 비파괴 명령은 unbound에서도 통과시키고,
실제로 위험하거나 권한을 확대하는 명령만 계약을 요구한다. 사전 열거 방식은 유지하지 않는다 —
사람이 명령을 미리 다 적어야 하는 구조는 천장이 생겨 결국 하네스를 끄게 만든다.
해제 조건
이 이슈를 닫고 마커를 지우기 전에 신규 클론에서 강제를 켠 채로 확인한다.
npm test가 계약 없이 통과git reset --hard, 거버넌스 파일 변경)은 여전히 차단관련
AGENTS.md세션 경계 절은 의도한 설계를 서술한 것이며 현재 런타임 동작과 다르다.이 진입점은 승인된 digest로 잠겨 있어 별도 승인 없이 고치지 않았다