import type { ReleaseScoreResult } from '@enterprise-skills/core'; import type { DetectedControl } from '@enterprise-skills/orchestrator'; /** * Graduation report (docs/GRADUATION_REPORT_SCOPE.md, phase 2). * * Composes EXISTING machinery into one plain-language report for a project * exported from an AI app builder: governance controls detected, authority * pack state, test/env reality, the release-readiness score as-is, and what * the Release Governor would require going forward. No new analyzers. * * Builder fingerprints tailor one line of copy and nothing else (OD-2: no * integration claims); with no fingerprint the report is identical. */ export type BuilderFingerprint = 'replit' | 'bolt' | 'lovable' | null; export interface TestReality { testFileCount: number; hasTestScript: boolean; /** True when the test script is npm's "no test specified" placeholder. */ testScriptIsPlaceholder: boolean; } export interface EnvHygiene { hasEnvExample: boolean; gitignoreCoversEnv: boolean; } export interface GraduationReport { schema: 'es-graduation-report'; version: 1; generated_at: string; project_name: string; builder_fingerprint: BuilderFingerprint; has_git: boolean; authority_pack: { present: boolean; valid: boolean; missing_files: string[]; }; controls: { implemented: number; partial: number; missing: number; details: DetectedControl[]; }; tests: TestReality; env: EnvHygiene; release_score: ReleaseScoreResult; /** Plain-language priority list derived from the findings above. */ next_steps: string[]; } export declare function detectBuilderFingerprint(projectRoot: string): BuilderFingerprint; export declare function assessTests(projectRoot: string): TestReality; export declare function assessEnv(projectRoot: string): EnvHygiene; export declare function buildGraduationReport(projectRoot: string, now?: Date): GraduationReport; export declare function renderGraduationReportMarkdown(r: GraduationReport): string; //# sourceMappingURL=graduation.d.ts.map