// audit_full — Go-side audit-full runner. Calls into // internal/distillation.RunAuditFull, dumps the Markdown report to // stdout (or a file), and optionally appends an AuditBaseline entry // to data/_kb/audit_baselines.jsonl for the longitudinal log. // // Usage: // audit_full # report only // audit_full -root /home/profit/lakehouse # custom root // audit_full -append-baseline # also append to audit_baselines.jsonl // audit_full -out reports/distillation/run.md # write report file // // Designed to live alongside the Rust scripts/distillation/audit_full.ts // — operators can run either runtime against the same root and the // audit_baselines.jsonl entries are interchangeable. package main import ( "encoding/json" "flag" "fmt" "log" "os" "os/exec" "strings" "time" "git.agentview.dev/profit/golangLAKEHOUSE/internal/distillation" ) func main() { root := flag.String("root", "", "lakehouse data root (defaults to $LH_DISTILL_ROOT or /home/profit/lakehouse)") out := flag.String("out", "", "write Markdown report to this path (default: stdout)") appendBaseline := flag.Bool("append-baseline", false, "append an AuditBaseline entry to data/_kb/audit_baselines.jsonl after the run") jsonOut := flag.Bool("json", false, "emit the full PhaseCheckReport as JSON instead of Markdown") flag.Parse() gitHEAD := resolveGitHEAD() report := distillation.RunAuditFull(distillation.AuditFullOptions{ Root: *root, GitHEAD: gitHEAD, }) var body []byte if *jsonOut { body = mustJSON(report) } else { body = []byte(distillation.FormatAuditFullReport(report)) } if *out == "" { _, _ = os.Stdout.Write(body) } else { if err := os.WriteFile(*out, body, 0o644); err != nil { log.Fatalf("write %s: %v", *out, err) } fmt.Fprintf(os.Stderr, "wrote %s (%d bytes)\n", *out, len(body)) } if *appendBaseline { // Resolve the same path the Rust pipeline uses so both // runtimes share the audit_baselines.jsonl log. resolvedRoot := *root if resolvedRoot == "" { if env := os.Getenv("LH_DISTILL_ROOT"); env != "" { resolvedRoot = env } else { resolvedRoot = "/home/profit/lakehouse" } } bp := distillation.DefaultBaselinePath(resolvedRoot) err := distillation.AppendBaseline(bp, distillation.AuditBaseline{ RecordedAt: time.Now().UTC().Format(time.RFC3339), GitCommit: gitHEAD, Metrics: report.Metrics, }) if err != nil { log.Fatalf("append baseline: %v", err) } fmt.Fprintf(os.Stderr, "appended baseline to %s\n", bp) } if report.Failed > 0 { os.Exit(1) } } // resolveGitHEAD returns the current commit SHA if the Go repo is a // git checkout. Falls back to "" rather than failing — the audit // runs even on a fresh clone without git. func resolveGitHEAD() string { cmd := exec.Command("git", "rev-parse", "HEAD") bs, err := cmd.Output() if err != nil { return "" } return strings.TrimSpace(string(bs)) } func mustJSON(v any) []byte { bs, err := json.MarshalIndent(v, "", " ") if err != nil { log.Fatalf("json marshal: %v", err) } return append(bs, '\n') }