https://github.com/samchon/ttsc/tree/master/packages/evidence
@evidence <target> <reason>
@evidenceReview <target> <reason>
@evidenceExclude <target> <reason>
우리가 결국 루프를 돌게 된 이유
도구 실행 로그와 결정론적 검사기로 측정했다 (2605.01771) (2608.12426)
2026년 코딩 에이전트 벤치마크 두 편 (2603.17104) (2603.24755)
Loop Until Dry라고도 한다. 현존 최선의 수단이고, 실제로 작동한다.
명세 커버리지 누락이 컴파일 에러가 된다
각 화살표는 자신이 인용하는 근거를 가리킨다.
type: "typescript", files: ["src/components/**/*.tsx"], // sources symbol: "function", reference: { type: "markdown", files: ["docs/specifications/*.md"], // targets symbol: ["h2", "h3"], },
컴포넌트는 설계 명세를 구현한다.
paths
/** * @evidence docs/specifications/discount.md#coupon-stacking * Explains the stacking limit defined by this section. * @evidence POST:/orders/{orderId}/coupons * Explains the rejection response from this endpoint. */ export function CouponStackingNotice(props: IProps): JSX.Element;
@evidence <target> <reason>: 이 코드가 무엇을 구현하며, 왜 그런지.
$ npx ttsc error TS16411: [evidence/graph] Missing acknowledgement for 'docs/specifications/discount.md#coupon-stacking' (Markdown H2 'Coupon Stacking' at docs/specifications/discount.md:3)
/** * @evidence docs/specifications/discount.md#coupon-stacking * Explains the per-issuer limit. */ export function CouponStackingNotice(props: IProps): JSX.Element;
인용이 붙으면 거짓 주장을 86-88%로 탐지하고, 오탐은 0이다 (2606.30689).
/** * @evidence docs/specifications/discount.md#coupon-stacking * Explains the per-issuer limit. * @evidenceReview docs/specifications/discount.md#coupon-stacking * #a1b2c3d4e5f6 Verified against policy section 3. */ export function CouponStackingNotice(props: IProps): JSX.Element;
Luna조차 한 번의 검토로 거짓 인용을 0으로 줄였다.
누락은 컴파일러가, 거짓은 리뷰가 잡는다.
동일한 입력 · 엔진 · 모델 · 플러그인만 차이
Plain은 규모가 커질수록 커버리지가 떨어진다. Evidence는 100%를 유지한다.
Plain은 파랑, Evidence는 주황.
단계별 원본 차트: https://ttsc.dev/docs/benchmark/evidence
진한 색은 개발, 옅은 색은 검토. 각 칸이 그 과제 토큰의 100%다.
요구사항이 인계 지점이다.그 아래는 AI가 100% 커버리지로 전부 만든다.
요구사항이 원천 계층이다.
docs/requirements
방금 본 네 과제 모두 이 방법을 썼다.
아이디어 노트가 원천 계층이다.
사람은 원천 계층 하나만 준다.그 아래는 그래프가 지킨다.
## Coupon stacking limit {#coupon-stacking} <!-- @evidence docs/ideas/discount.md#discount-policy Carries over the per-issuer limit recorded in the idea notes. -->
백엔드 산출물은 요구사항과 설계 명세로 거슬러 올라간다.
프론트엔드 산출물은 문서와 백엔드로 거슬러 올라간다.
docs/principles.md 하나와 claim 하나로 시작한다.
docs/principles.md
## 하드코딩하지 마라 {#no-hardcoding} 입력과 모델에서 동작을 도출하고 특정 사례를 예외 처리하지 않는다. ## 몽키 패칭하지 마라 {#no-monkey-patching} 공개된 확장 지점을 쓰고 프로토타입이나 모듈 상태를 바꾸지 않는다. ## 보편적인 정석으로 구현하라 {#conventional-solution} 측정 없는 과최적화를 피하고 표준 자료구조와 명료한 알고리즘을 우선한다. ## 문제를 본질적으로 해결하라 {#fix-the-root-cause} 눈앞의 실패 사례만 우회하지 말고 원인을 추적해 같은 부류의 문제 전체를 해결한다.
원칙을 하나 추가하면 모든 함수에 새 의무가 즉시 생긴다.
/** * @evidence docs/principles.md#no-hardcoding * 등록된 핸들러로 조회표를 만들며 특정 사례를 분기하지 않는다. * @evidence docs/principles.md#no-monkey-patching * 공개 어댑터를 쓰며 프로토타입이나 모듈 상태를 바꾸지 않는다. * @evidence docs/principles.md#conventional-solution * 표준 Map과 선형 순회를 쓰며 추측성 인덱스나 캐시를 두지 않는다. * @evidence docs/principles.md#fix-the-root-cause * 핸들러 등록 단계에서 잘못된 이름을 차단해 조회 실패만 재시도하지 않는다. */ export function resolveHandler(name: string): Handler;
대상과 비어 있지 않은 이유가 모두 필요하다. 하나라도 빠지면 빌드가 깨진다.
원칙과 설정이 빌드 제약이 된다
스튜디오 사례: 쿨한 성격은 죄다 은발, 장르 불문 똑같은 권선징악 엔딩.
Narrative Flattening (2605.27878) · ConStory-Bench (사이트)
장편의 실패는 국소적이지 않고 전역적이다.
회차를 늘리면 윤이 날 뿐, 사실이 되지는 않는다.
2026년 개고 연구 두 편 (2605.13368) (2604.22142)
엄격한 연속성 안에서 누리는 창작의 자유.
@ttsc/evidence
Samchonhttps://ttsc.dev