Non-blocking findings triaged as follow-ups during the v0.10.0 final whole-branch review (PRs #108–#112).
Re-triaged 2026-08-18 against main. PRs #123 / #124 closed five of the eight. Each line below was checked against the current code, not against the commit message.
✅ Fixed
--help (and any unknown arg) silently launches the GUI — --help now prints usage and exits 0; unknown args exit 2. Fixed in 9a9f09d fix(desktop): reject invalid launch arguments. Covered by desktop/tests/desktop_args_cli.rs::help_exits_zero_without_launching_a_window.
TraceStore::save_to_path is a non-atomic fs::write truncate — now tempfile::NamedTempFile::new_in(parent) + persist. Fixed in ee20b34 fix(desktop): make trace persistence atomic, with the concurrent-writer half in 9843746 fix(desktop): serialize baseline trace writers.
No automated failure-path test for fail <slug> / exit 1 — desktop/tests/baseline_cli.rs now has baseline_lock_contention_fails_clearly and baseline_flag_with_no_discovered_skills_fails_loudly_instead_of_reporting_zero_of_zero.
dry_run is inferred from the absence of a passed key — now corroborated: a dry-run suite is rejected unless graded counts are omitted and every status is dry_run (trace.rs, "invalid dry-run suite: graded counts must be omitted and every status must be dry_run"). Fixed in f7b2198 fix(desktop): reject invalid fidelity suites.
{"error": ...} suites are silently dropped from evaluation_results — an errored suite is now a modelled outcome (EvaluationSuiteOutcome::Error), distinguishable from "never ran". Fixed in 84b1fb0 fix(desktop): harden evaluation evidence edges.
⬜ Still open — verified, not assumed
Non-blocking findings triaged as follow-ups during the v0.10.0 final whole-branch review (PRs #108–#112).
Re-triaged 2026-08-18 against
main. PRs #123 / #124 closed five of the eight. Each line below was checked against the current code, not against the commit message.✅ Fixed
—--help(and any unknown arg) silently launches the GUI--helpnow prints usage and exits 0; unknown args exit 2. Fixed in9a9f09d fix(desktop): reject invalid launch arguments. Covered bydesktop/tests/desktop_args_cli.rs::help_exits_zero_without_launching_a_window.— nowTraceStore::save_to_pathis a non-atomicfs::writetruncatetempfile::NamedTempFile::new_in(parent)+ persist. Fixed inee20b34 fix(desktop): make trace persistence atomic, with the concurrent-writer half in9843746 fix(desktop): serialize baseline trace writers.No automated failure-path test for—fail <slug>/ exit 1desktop/tests/baseline_cli.rsnow hasbaseline_lock_contention_fails_clearlyandbaseline_flag_with_no_discovered_skills_fails_loudly_instead_of_reporting_zero_of_zero.— now corroborated: a dry-run suite is rejected unless graded counts are omitted and every status isdry_runis inferred from the absence of apassedkeydry_run(trace.rs, "invalid dry-run suite: graded counts must be omitted and every status must be dry_run"). Fixed inf7b2198 fix(desktop): reject invalid fidelity suites.— an errored suite is now a modelled outcome ({"error": ...}suites are silently dropped from evaluation_resultsEvaluationSuiteOutcome::Error), distinguishable from "never ran". Fixed in84b1fb0 fix(desktop): harden evaluation evidence edges.⬜ Still open — verified, not assumed
--baseline: a store-save failure suppresses the finalbaseline: n/total oksummary line. Still reproducible.desktop/src/baseline.rsrunslease.save(&traces)?immediately beforeprintln!("baseline: {ok_count}/{total} ok"), so the?returns early and the summary never prints. The run still exits non-zero with a stderr message, so this is cosmetic-ish — but an operator watching stdout sees the per-skillok/faillines and then nothing, which reads like a hang rather than a failure.actionlintin CI for workflow files; consider aSHA256SUMSasset +tar.gzpackaging (preserves the exec bit) for future releases. Not started. Note that all workflowuses:are now SHA-pinned and version-unified as of ci: SHA-pin the actions in clawhub-publish.yml #129 / chore(deps)(deps): bump actions/setup-node from 6.0.0 to 7.0.0 #118 / chore(deps)(deps): bump actions/checkout from 7.0.0 to 7.0.1 #121 / chore(deps)(deps): bump actions/setup-python from 6.3.0 to 7.0.0 #122, so actionlint would be checking syntax and expression safety rather than pinning.masterbranch tomainin docs(eval): split the baseline by test type, tighten an overstated caveat #131.