Skip to content

fix(cli): truthful pass-fail progress; --count/--exists mutex; docs polish (#459 #428 #429 #374 #419) - #484

Open
HumanBean17 wants to merge 2 commits into
masterfrom
fix/issues-459-428-429-374-419
Open

HumanBean17 wants to merge 2 commits into
masterfrom
fix/issues-459-428-429-374-419

Conversation

@HumanBean17

Copy link
Copy Markdown
Owner

Summary

Batch of five small, verified-still-valid issues from the triage of the open issue list: one real bug, one small CLI contract tightening, one cosmetic refactor, and two docs gaps. Plus housekeeping on two stale issues.

Fixes

Housekeeping (done directly, not via this PR)

Tests

  • New: test_graph_pass_progress_reports_failed_when_pass_body_raises / ..._reports_done_on_clean_exit (direct unit tests of the context manager, incl. exception propagation), test_count_and_exists_together_rejected_at_parse_time (envelope shape + rc + no index access needed).
  • render()-level exists-wins precedence test (test_exists_takes_precedence_over_count) intentionally kept: the render precedence chain itself is unchanged defense-in-depth; only the parse-time path is new.
  • scripts/sync_agent_artifacts.py run — skill/agent edits are mirrored into install_data (test_install_data_sync green).

Test run

Full suite: 2224 passed, 45 skipped, 2 failed — both failures verified pre-existing on clean master (stash-checked) and unrelated to this diff:

(Note for reviewers running locally: 21 tests in the first full run here failed only because this machine's venv shims still pointed at the pre-move ~/Desktop/... path — cocoindex/pip shims repaired locally; nothing in this PR touches that.)

Fixes #459
Fixes #429
Fixes #428
Fixes #374
Fixes #419

…olish (#459 #428 #429 #374 #419)

- graph progress: _graph_pass_progress emits status=failed (not done) when a
  pass body raises — kills the done→failed flicker and the spurious graph ✓
  for a failed pass (#459)
- jrag: --count and --exists are now mutually exclusive at parse time; both
  together previously fell through to the silent exists-wins precedence (#429)
- jrag: rename _require_kind's local _emit closure to _emit_kind_error so it
  stops shadowing the module-level exit-code funnel (#428)
- docs: /tmp → relative tmp/ scratch paths + Git Bash/WSL note in JRAG-CLI.md
  and MANUAL-VERIFICATION-CHECKLIST.md (#374)
- docs: document find --fuzzy (identifier loosening, vs semantic search) in
  README flag table, JRAG-CLI.md Locate, and the CLI skill/agent artifacts;
  note the --count/--exists mutex there too (#419)
- install_data: synced skills/agents copies via scripts/sync_agent_artifacts.py
Both failed on CI but not in prior master runs; neither is caused by the
diff under test — master CI simply hadn't run since 2026-09-13.

1. test_populated_rollup (all 3 OSes): the synthetic watch event carried a
   hardcoded ts=2026-09-13T09:00:00Z, but load_events drops events older
   than the 7-day window — the fixture expired on 2026-09-20. Use a
   dynamic rfc3339_now() ts instead (same for the unused _cmd_event).

2. test_bank_chat_bulk_build_matches_committed_baseline (ubuntu only): the
   sampled-edges query ran LIMIT 3 without ORDER BY, riding the storage
   scan order — not stable across platforms/LadybugDB builds, so ubuntu
   sampled a different first-3 (callee_declaring_role SERVICE vs OTHER).
   Pin the sample with ORDER BY a.id, b.id (content-keyed node ids), make
   the CALLS role compare order-tolerant, and regenerate the fixture's
   sampled_edges (also drops storage-internal _SRC/_DST/_ID offsets from
   the anchor).
@HumanBean17

Copy link
Copy Markdown
Owner Author

Both CI failures were latent test defects this PR's run tripped — master CI last ran 2026-09-13, the day both fixtures were written; not caused by the diff under test. Fixed in f531454:

  1. test_populated_rollup (all 3 OSes) — time bomb: the synthetic watch event carried a hardcoded ts=2026-09-13T09:00:00Z, but load_events drops events older than the rollup's 7-day window → the fixture expired 2026-09-20. Now uses rfc3339_now().

  2. test_bank_chat_bulk_build_matches_committed_baseline (ubuntu only) — the sampled-edges check ran LIMIT 3 without ORDER BY, riding LadybugDB's storage scan order, which is not stable across platforms — ubuntu sampled a different first-3 (callee_declaring_role SERVICE vs OTHER; the baseline's OTHER,OTHER,OTHER was itself just the generating machine's scan order). Now pins the sample with ORDER BY a.id, b.id (content-keyed ids), compares CALLS roles order-tolerantly, and the fixture's sampled_edges is regenerated accordingly (also drops storage-internal _SRC/_DST/_ID offsets from the anchor — nothing asserted them).

Full local suite after the fix: 2223 passed / 45 skipped; the only remaining local failure is bench/test_grade.py::test_judge_answer_returns_grade, which needs the glm-5.2 judge model registered in the local claude CLI (environmental; CI passed it).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment