한 줄 요약

FableLayer는 “모델 능력은 하네스로 전이되지 않고 절차만 전이된다”는 실측 전제 위에서, 검증 규율·fail-closed 게이트·비용 인식 라우터·정직한 벤치마크를 Opus/Sonnet/로컬 LLM에 모듈로 주입하는 공개안전 레이어다. 왜 배우나: “능력 자랑” 대신 “근거 없으면 차단”을 코드 게이트로 강제하는, 가장 정직하게 자기 한계를 명시한 하네스 설계를 보여주기 때문이다.

한눈 정의 / 아키텍처 / 언어

항목내용
정의LLM 워크플로의 절차·검증·벤치마크 레이어. capability 전이는 명시적으로 거부, procedure만 전이
제작자 / 버전 / 라이선스VoidLight00 / v0.1.1 / AGPL-3.0 (+ NOTICE)
아키텍처4레이어(PromptCore·ProcedureHarness·ValueOptimizer·SkillPack&Router) + 셸 게이트 검문소 + 배포 3형태(Claude Code 플러그인·CLI·Local LLM 어댑터)
언어 / 의존성Python 3.10+ 표준 라이브러리만(외부 런타임 의존 0), 게이트는 bash 3.2 안전 셸 스크립트
핵심 원칙fail-closed(불확실하면 실패), 자가보고 금지(exit code로만 판정), 외부 publish는 승인 게이트 뒤

그림

flowchart TD
  SSoT["REQUIREMENTS.md (SSoT)<br/>FL1~FL20 요구사항"] --> RUNTIME

  subgraph RUNTIME["Python 런타임 (fablelayer/, 표준 라이브러리만)"]
    PC["promptcore.py<br/>9섹션 운영 프로파일"]
    EG["evidence_gate.py<br/>완료어+증거 검증 / early-stop 스캔"]
    PR["procedure.py<br/>조사 4절차 프로파일"]
    RT["router.py<br/>6신호 sonnet to opus 상향"]
    AD["adapters.py<br/>단일 core to 4형태 export"]
    BM["benchmark.py<br/>심판 A/B 결정론 채점"]
    SP["source_policy.py<br/>소스 분류 fail-closed"]
  end

  RUNTIME --> GATES
  subgraph GATES["Fail-closed 게이트 (gates/, exit code 판정)"]
    G1["license / perf_claim / bench_integrity"]
    G2["completeness / render / runtime / preflight"]
    G3["publish (승인토큰 AND 전체green)"]
  end

  GATES --> MASTER["verify_fablelayer.sh<br/>마스터 OR 집계 (하나라도 비0 = FAIL)"]
  MASTER --> DEPLOY["배포 3형태<br/>Claude Code 플러그인 / CLI / Local LLM 어댑터"]
  MASTER --> BENCHOUT["bench/RESULTS.md + raw.json + 한계 섹션"]

쉽게 풀기

식당 프랜차이즈 본사를 떠올리면 된다. 본사가 “우리 셰프(고성능 모델)의 천재성을 그대로 복제해서 동네 가게에 심어주겠다”고 하면 거짓말이다. 천재 셰프의 미각은 복제되지 않는다. 대신 본사가 실제로 전수할 수 있는 건 “조리 매뉴얼”이다 — 재료를 칼로 직접 썰어보고 확인한 다음에야 “준비 완료”라고 적는 습관, 빠뜨린 단계가 없는지 체크리스트로 점검하는 습관, 근거 없이 “맛있게 됐다”고 쓰지 못하게 막는 규칙.

FableLayer가 정확히 이 일을 한다. 모델의 능력 자체(capability)는 못 옮긴다고 솔직히 인정하고, 대신 “잘하는 작업의 반복 가능한 절차(procedure)“만 모듈로 옮긴다. 옮기는 절차는 네 가지다 — (1) 결과물을 실제로 실행·관찰한 뒤에만 완료 선언, (2) 근거 없는 “done”을 거부하는 증거 게이트, (3) 재현→가설경쟁→인과사슬의 체계적 조사, (4) “시간 관계상 생략”처럼 중간에 멈추려는 패턴 차단.

그리고 이 모든 걸 말로만 하지 않고 “검문소(게이트)“로 강제한다. 검문소의 기본값은 “애매하면 통과 불가(fail-closed)“다. 특히 “95% 동급” 같은 성능 자랑은 벤치 원자료 링크가 없으면 코드가 빌드를 막아버린다. 자기 자랑을 자기 코드가 검열하는 셈이다.

핵심 정리

레이어하는 일대표 파일
PromptCore (L1)공개안전 운영 프로파일 9섹션을 정본으로 보유·렌더fablelayer/promptcore.py
ProcedureHarness (L2)검증 grounding·증거 게이트·체계적 조사·early-stop 방지fablelayer/evidence_gate.py, procedure.py
ValueOptimizer (L3)VFF v2 출력구조 + 비용 라우팅 (압축 규칙 금지)fablelayer/router.py
SkillPack & Router (L4)6신호 모델 라우팅 + 배포 어댑터 통합fablelayer/router.py, adapters.py

10축 빠른 점수

#점수근거 한 줄
1아키텍처/포지셔닝4Python 표준 라이브러리만(의존 0)·4레이어+게이트, INTERFACE.md를 계약 SSoT로 둔 명확한 구조
2컨텍스트 엔지니어링3PromptCore 9섹션 정본 + VFF v2 출력구조 주입은 강하나, 동적 컨텍스트 관리는 promptcore.py 정적 렌더 수준
3툴/확장3adapters.py가 Ollama/LM Studio/SillyTavern/Claude 플러그인 4형태 export, 단 외부 툴 호출 자체는 범위 밖
4오케스트레이션/멀티에이전트2router.py는 단일 작업의 모델 등급 선택에 집중, 멀티에이전트 협업 오케스트레이션은 MVP 범위 밖(ROADMAP Phase 1+)
5가드레일/안전5license/source_policy fail-closed + publish 승인 게이트(FL15 HARD), non-public 프롬프트 차단이 핵심 정체성
6검증 루프5evidence_gate.py 완료어+증거 매칭·early-stop 스캔 + 8종 게이트 exit code 판정, “증거 없으면 차단”이 설계 중심
7자기개선/반복3FAILURE_LOG 누적·재발 패턴의 게이트 룰 승격 경로(FL12)는 있으나 자율 개선 루프는 없음
8상태/영속성3runs//RUN_MANIFEST.json + status/resume 서브커맨드(FL11), 세션 핸드오프는 단순 수준
9배포/DX4CLI(init/upgrade/benchmark/check/status/resume) + 플러그인 + README 영/한, 의존 0으로 설치 간단
10철학/차별점5”capability 전이 불가, procedure만 전이”를 코드 게이트로 강제·자기 한계를 벤치로 증명하는 정직성이 독보적

기능별 분해

이 폴더의 기능 노트(번호순):

  • FL_10_promptcore — PromptCore: 9섹션 공개안전 운영 프로파일을 정본으로 보유·결정론 렌더, 압축 규칙은 ValueError로 금지
  • FL_20_evidence-gate — Evidence Gate: 완료어가 나오면 증거 토큰 매칭을 요구, early-stop(약속-미실행·범위-축소) 패턴을 정규식으로 차단
  • FL_30_gates — Fail-closed Gates: license·perf·bench·completeness·render·runtime·publish를 각기 다른 exit code로 막는 셸 검문소 묶음
  • FL_40_router — Router: 6개 상향 신호로 기본 sonnet에서 opus로 결정론 라우팅, note에 capability 비전이 문구 고정
  • FL_50_adapters — Adapters: 단일 rendered core에서 Ollama/LM Studio/SillyTavern/Claude 플러그인 4형태를 드리프트 없이 export
  • FL_60_benchmark — Benchmark: 심판 A(rubric 0-5 모사)·B(키워드 커버리지) 결정론 채점, 불일치를 평균으로 덮지 않고 raw에 보존
  • FL_70_hooks-plugin — Hooks & 플러그인 구조: early-stop hook과 플러그인/마켓플레이스 매니페스트·설치 흐름
  • FL_80_procedure-source-policy — Procedure & Source Policy: 조사 4절차 프로파일과 소스 라이선스 분류(reference-only/unverified/blocked) fail-closed 정책

실제 예시

# fablelayer/evidence_gate.py — 완료 단언에 증거가 동반되는지 fail-closed 검증
from fablelayer.evidence_gate import Claim, check_claim
 
# 증거 없는 완료 단언 → 차단
r1 = check_claim(Claim(text="배포 완료", evidence=()))
# r1.passed == False  ("completion claim present but evidence empty (fail-closed)")
 
# 증거 토큰이 ACCEPTED_EVIDENCE_RE에 매치되면 통과
r2 = check_claim(Claim(text="테스트 통과", evidence=("tests/run_tests.py: 152 passed",)))
# r2.passed == True
# gates/verify_fablelayer.sh — 마스터 게이트 OR 집계 (하나라도 비0이면 전체 FAIL)
bash gates/verify_fablelayer.sh . --mode new
 
# README.md 검증 근거(로컬 실측)
# - 152 stdlib tests pass
# - LICENSE/PERF/BENCH/COMPLETE/RENDER/RUNTIME 게이트 통과
# - 승인 없는 publish는 설계상 non-zero 종료
# fablelayer/router.py — 신호 하나라도 발화하면 opus, note에 비전이 명시
from fablelayer.router import TaskSpec, route
 
d = route(TaskSpec(kind="refactor", files_touched=5))
# d.model == "opus"
# d.fired_signals == ("files>=3",)
# d.note 끝에 "capability not transferable: routing selects model tier,
#              it does not transfer capability across models."

요약 & 셀프체크

  • FableLayer는 “모델 능력은 전이 안 되고 절차만 전이된다”를 전제로, 검증·게이트·라우터·벤치마크를 LLM에 주입하는 공개안전 레이어다(Python 표준 라이브러리만, AGPL-3.0).
  • 핵심은 fail-closed 규율: 증거 없는 완료 단언, bench 참조 없는 성능 자랑, 승인 없는 외부 publish를 모두 exit code로 차단한다.
  • 자기 한계를 README와 벤치(원자료+한계 섹션)로 증명하는 정직성이 다른 하네스와의 결정적 차별점이다.
  1. evidence_gate가 “배포 완료”라는 문장만 보고도 차단하는 이유는 무엇이며, 어떤 토큰이 있어야 통과하는가?
  2. perf_claim_gate가 막는 “미검증 성능 단언”의 구체적 예시를 들고, 그것을 통과시키려면 무엇을 추가해야 하는가?
  3. 라우터의 6신호 중 explicit_opus만 “비강등”으로 처리하는 설계 의도는 무엇인가?

다른 프레임워크와 비교

fablize의 fablize/fablize 계열이 “검증 grounding·완결성 evidence gate” 같은 절차 전이의 원천 아이디어를 제공했다면, FableLayer는 그 절차를 (a) 셸 게이트로 fail-closed화하고 (b) 벤치마크·라우터·멀티 어댑터까지 묶어 제품화했다는 점이 다르다. fablize/fablize류가 주로 프롬프트·절차 권고에 머문다면, FableLayer는 evidence_gate.py·license_gate.sh처럼 위반을 exit code로 강제 차단하고(자가보고 금지), 성능 주장을 코드가 검열하며(perf_claim_gate), 동일 core에서 4형태로 export하는 어댑터와 심판 A/B 결정론 벤치까지 포함한다. 무엇보다 “capability는 전이 불가”라는 한계를 정체성으로 못박고 ROADMAP에서 LoRA/대시보드를 명시적으로 defer한 점에서, 능력 향상을 약속하는 다른 하네스들과 포지셔닝이 정반대다.

연결

_분석축_루브릭