///|
/// Run the default HarborCheck audit over a project snapshot.
pub fn audit(snapshot : ProjectSnapshot) -> AuditReport {
  run_audit(snapshot)
}

///|
/// Build a compact Markdown report for a project snapshot.
pub fn audit_markdown(snapshot : ProjectSnapshot) -> String {
  audit(snapshot).to_markdown()
}

///|
/// Build a compact JSON summary for integrations that need machine-readable output.
pub fn audit_json(snapshot : ProjectSnapshot) -> String {
  audit(snapshot).to_json()
}

///|
/// Build an actionable checklist from the audit result.
pub fn release_checklist(snapshot : ProjectSnapshot) -> String {
  audit(snapshot).to_release_checklist()
}

///|
/// Check whether applicant, repository, git and Mooncakes identities agree.
pub fn acceptance_identity_markdown(
  canonical : SubmissionIdentity,
  snapshot : ProjectSnapshot,
  submission_text : String,
  git_user_name? : String = "",
  git_user_email? : String = "",
  git_remote? : String = "",
) -> String {
  acceptance_identity_report(
    canonical,
    snapshot,
    submission_text,
    git_user_name~,
    git_user_email~,
    git_remote~,
  ).to_markdown()
}

///|
/// Combine repository audit, identity proof and documentation proof into one final review.
pub fn acceptance_markdown(
  snapshot : ProjectSnapshot,
  canonical : SubmissionIdentity,
  submission_text : String,
  markdown : String,
  sources : Array[SourceEvidence],
  profile? : AcceptanceProfile = AcceptanceProfile::AcceptanceProfile(),
  git_user_name? : String = "",
  git_user_email? : String = "",
  git_remote? : String = "",
) -> String {
  final_acceptance_markdown(
    snapshot,
    canonical,
    submission_text,
    markdown,
    sources,
    profile~,
    git_user_name~,
    git_user_email~,
    git_remote~,
  )
}

///|
/// Render issue, test, changelog, release and design records as a maintenance report.
pub fn maintenance_evidence_markdown(
  records : Array[MaintenanceRecord],
  policy? : MaintenancePolicy = MaintenancePolicy::MaintenancePolicy(),
) -> String {
  maintenance_review(records, policy~).to_markdown()
}

///|
/// Render maintenance evidence as a compact machine-readable summary.
pub fn maintenance_evidence_json(
  records : Array[MaintenanceRecord],
  policy? : MaintenancePolicy = MaintenancePolicy::MaintenancePolicy(),
) -> String {
  maintenance_review(records, policy~).to_json()
}

///|
/// Return the built-in rule catalog in Markdown form.
pub fn rules_markdown() -> String {
  rule_catalog_markdown()
}

///|
/// Return a runnable fixture that demonstrates a release-ready MoonBit package.
pub fn example_snapshot() -> ProjectSnapshot {
  harborcheck_example_snapshot()
}