feat: compile-check writes what each run did to the CLI VibeLog
Merged
HA
1d ago+379+379+012345678901234567890123456789-2-2-0123456789
Summary
- With
ULOOP_DEBUGset, eachuloop compile-checkrun now writes what it did to the project's CLI VibeLog. The log shows what was compiled, reused, checked on changed files, or blocked, why a run fell back, and how long each assembly took.
User Impact
- Before: compile-check never talks to the Editor, and it wrote nothing to the VibeLogs even with
ULOOP_DEBUGset. A long session of runs could not be reconstructed afterwards. Which run took the changed-files check, which fell back and why, and where the time went were all lost once the JSON output scrolled away. Runs that exited 1 were the hardest to recover. - After: every run leaves two lines in
.uloop/outputs/VibeLogs/cli_vibe_<UTC date>.json, sharing onecorrelation_id.
Changes
cli_compile_check_start(INFO) is written once the project is found. Its fields arecommand,all,full,jobs,project_identity.cli_compile_check_completeis written on every way out of a run that wrote the start entry:outcome, with the entry's level:succeeded: INFO.errors: WARNING, when compile errors were found.failed: ERROR, when the Editor could not be resolved, the run itself failed, or the response could not be encoded.
duration_msof the whole run.- For
failed:erroranderror_code. - Otherwise, the response's own lists and counts:
error_count,warning_count,compiled,reused,fast_checked,blocked,skipped_count,fast_checks(assembly,reused,changed_file_count),fallbacksandbaseline_notes(assembly,reason). units, with theduration_msandsucceededof each assembly the run compiled or checked. Replayed ones are left out, since they took no work.
- Without
ULOOP_DEBUG, nothing is written and no context is built. - A failed write is ignored; the log never fails a run.
docs/vibe-logs.mddocuments both entries, anddocs/compile-check.mdmentions them.cli/commonis unchanged.
Verification
-
New tests:
- a successful run writes both entries with one correlation id, and every listed field matches the run;
- a run with errors is logged as WARNING with the errors counted;
- a failed run is logged as ERROR with the error and its code;
runCompileCheckon a project whose Editor is not installed writes a start entry and afailedcomplete entry of the same run.
-
Mutations, each restored afterwards:
Mutation Fails No failedentry when the Editor cannot be resolvedthe Editor-resolution test The complete entry uses another correlation id all four tests outcomeis alwayssucceededthe errors, failed, and Editor-resolution tests fallbacksis always emptythe successful-run test -
cli/dispatcher:golangci-lint fmt --diffis empty;go vet ./...passes;golangci-lint runand the complexity config both report 0 issues.go test ./...andgo test -raceon the compile-check and dispatcher packages pass.- Coverage with the CI exclusions: 94.25% (baseline 94.2).
-
cli/release-automation:go test ./...passes;check-skill-sizepasses; the file-length check passes. -
scripts/sync-tool-docs.sh --checkreports no drift. -
Repository CI does not run on pull requests into this branch; the checks above were run locally.