import type { GuardContext, GuardRunResult } from '../types.js'; /** * Behavioural probe of the crystallization gate. * * Before this the contract only asserted that one of three candidate files * exists and mentions "crystalliz"/"sediment"/"promot" — the file it found is * named `crystallization-service.ts`, so the check restated its own filename. * * Here the real gate is driven with a completed and an incomplete task state: * a task whose `gates_passed` is false must be refused at the Zod boundary AND * again at the service boundary. */ export declare function runJ08Contract(ctx: GuardContext): Promise;