/** * `--frozen` lockfile gate (#589). * * CI needs to know the skills on disk are the ones the lockfile says they are. * `verify --lock-only` covers Society members; this covers third-party skills * installed into the project, which is what a consumer's pipeline actually * depends on. */ export interface FrozenReport { ok: boolean; problems: string[]; } /** * CI gate for one `agenthood install --frozen `. * * It is intentionally narrower than `checkFrozen`: --frozen installs from a * lockfile, and a fresh checkout has no installed skills yet, so "locked entry * missing on disk" is the expected pre-install state, not drift. What --frozen * must catch is a lockfile that cannot describe the skill being requested or a * local file that no longer matches the lock. */ export declare function assertFrozenInstall(projectPath: string, source: string, name: string, fetchedHash: string): FrozenReport; /** * Compare installed skills against skills-lock.json. * * `requestedNames` is the set of skills the caller is about to install or * verify. A name in it that the lockfile has never seen is a problem — installing * it would change the lock — while a name absent from it is not this gate's * business, so members and pre-existing skills do not block a run. */ export declare function checkFrozen(projectPath: string, requestedNames: string[]): FrozenReport; export declare function reportFrozenFailure(report: FrozenReport): never; //# sourceMappingURL=frozen.d.ts.map