import type { PlanContext } from "../internals/plan.js"; import type { RepoStack } from "../profile/scan.js"; import type { ProjectContract } from "./schema.js"; /** * Synthesize the repo contract from the detected stack. Read-only and deterministic: * the same tree + runner always yields byte-identical JSON. The only process touch is * the read-only `git ls-files` seam (tracked count + committed set, both mocked in * tests) — locked decision #2's "no `ctx.run`/no spawn" governs COMMAND CONFIDENCE * (we never run a candidate command to mark it `verified`), not this metadata read; * the plan it feeds emits pure write/probe actions, zero `exec`. */ export declare function synthesizeContract(ctx: PlanContext, stack: RepoStack): Promise; /** * The contract's path-bearing values that are NOT portable repo-relative POSIX paths * (empty ⇒ clean). A committed contract that hard-codes `C:\…`, `/abs`, or `../escape` * would mislead the next agent on a different machine, so the doctor/report probes * fail closed on any hit. Commands and CLI target names are not paths and are skipped. */ export declare function unportablePaths(contract: ProjectContract): string[];