https://github.com/samchon/ttsc/tree/master/packages/evidence
@evidence <target> <reason>
@evidenceReview <target> <reason>
@evidenceExclude <target> <reason>
Why we all ended up looping
Measured with tool logs and deterministic verifiers (2605.01771) (2608.12426)
Two 2026 coding-agent benchmarks (2603.17104) (2603.24755)
Also called Loop Until Dry. It is the state of the art, and it works.
Missing specification coverage becomes a compile error
Each arrow points to the evidence it cites.
type: "typescript", files: ["src/components/**/*.tsx"], // sources symbol: "function", reference: { type: "markdown", files: ["docs/specifications/*.md"], // targets symbol: ["h2", "h3"], },
Components implement specifications.
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>: what this code implements, and why.
$ 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;
Citations make the false claim detectable: 86-88%, no false positives (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;
Even Luna reduced false citations to zero in one review pass.
The compiler catches omissions. Review catches falsehoods.
Same inputs · engine · model · Plugin only
Plain coverage falls with scope. Evidence remains at 100%.
Plain in blue. Evidence in orange.
Original charts by phase: https://ttsc.dev/docs/benchmark/evidence
Dark is development. Light is review. Each cell represents 100% of its tokens.
Requirements are the handoff.AI builds everything below them with 100% coverage.
Requirements are the source layer.
docs/requirements
The four subjects you just saw all used this method.
Idea notes are the source layer.
Humans provide one source layer.The graph protects everything below it.
## Coupon stacking limit {#coupon-stacking} <!-- @evidence docs/ideas/discount.md#discount-policy Carries over the per-issuer limit recorded in the idea notes. -->
Backend artifacts trace back to Requirements and Specifications.
Frontend delivery traces back to the documents and Backend.
Start with one docs/principles.md and one claim.
docs/principles.md
## Do not hardcode {#no-hardcoding} Derive behavior from inputs and models. Never special-case a fixture. ## Do not monkey patch {#no-monkey-patching} Use public extension points. Never replace prototypes or module state. ## Use the conventional solution {#conventional-solution} Avoid unmeasured optimization. Prefer standard structures and clear algorithms. ## Fix the root cause {#fix-the-root-cause} Do not route around one visible failure. Trace the cause and solve the whole class.
Add one rule, and every function immediately gains one obligation.
/** * @evidence docs/principles.md#no-hardcoding * Builds the lookup from registered handlers, with no case-specific branch. * @evidence docs/principles.md#no-monkey-patching * Uses the public adapter without replacing prototypes or module state. * @evidence docs/principles.md#conventional-solution * Uses a standard Map and linear pass, with no speculative index or cache. * @evidence docs/principles.md#fix-the-root-cause * Rejects invalid names at registration instead of retrying failed lookups. */ export function resolveHandler(name: string): Handler;
Both the target and a non-empty reason are required. Miss one and the build breaks.
Principles and settings become build constraints
Studio case: every cool character got silver hair, every genre got the same moral ending.
Narrative Flattening (2605.27878) · ConStory-Bench (site)
Long-form failure is global, not local.
More rounds buy polish, not truth.
Two 2026 revision studies (2605.13368) (2604.22142)
Creative freedom inside hard continuity.
@ttsc/evidence
Samchonhttps://ttsc.dev