import type { PlanContext } from "../internals/plan.js"; import type { Check } from "../internals/verify.js"; /** * `aih doctor`'s read-only contract probe — validate the COMMITTED `project.json` * without re-deriving it. * * - No contract on disk → `skip`: a pre-init or `--canon legacy` repo is not broken. * - A non-portable path in the contract → posture-graded finding * (`contract.path-unportable` once denying): a committed `..` / absolute / * drive-letter path misleads the next agent on another machine, so team and * enterprise runs fail while vibe remains warning-only. * - Otherwise `pass`. Deep staleness validation (re-deriving the whole stack to confirm * the contract is current) is graph territory on a LARGE repo, so it is deferred to the * sibling `large-repo graph safety` probe ({@link scaleSafetyCheck}) rather than forced * here — doctor never false-fails a big repo. Reuses {@link trackedFileCount} + * {@link LARGE_REPO_FILE_THRESHOLD} for that gate. */ export declare function contractTruthCheck(ctx: PlanContext): Promise;