Skip to content

Hygiene after v0.6.7: cppqualcheck reports timeouts as timeouts, #382 review notes, CONTRIBUTING map rows - #393

Merged
joyful-ii-V-I merged 2 commits into
mainfrom
lane/hygiene-067a
Oct 13, 2026
Merged

joyful-ii-V-I merged 2 commits into
mainfrom
lane/hygiene-067a

Conversation

@joyful-ii-V-I

@joyful-ii-V-I joyful-ii-V-I commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Small hygiene follow-up after v0.6.7 and #382. Docs, tests and comments only; every answer is byte-identical (31/31 argv vs main, --quality-delta gates 0).

1. test/cppqualcheck.sh: a timed-out call no longer reads as a wrong count. The repo-root arms ran each call cold under a 30 s alarm with stderr discarded, so on a slow runner (the ASan macOS leg on #382 took 28–30 s per arm) a killed call printed nothing and the arm said expected 32. Now:

  • the six repo-root calls share one temporary cache per verb (one cold parse, then warm calls; --uses and --callers read different cache tiers, so one file per verb);
  • a timeout prints FAIL TIMEOUT (rc=142) and any other non-zero exit FAIL ERROR, naming the call;
  • sanitizer builds get a 90 s alarm (the gate's existing nm detection).
    No count or assertion changed. With the alarm forced to 1 s, all six arms print TIMEOUT; before, they printed expected N.

2. #382 review notes (thanks again @LaimaWu):

  • stale references to the deleted capturePythonImportBinds in comments (src/ingest_importcap.h, src/graph.h);
  • test/pyimportprecisecheck.sh: the "vocabulary compiled in" arm now greps Python-only patterns, so it fails on a binary without them (checked on v0.6.5 and v0.6.7);
  • the refactor(#358): move Python import edges to shared captures #382 CHANGELOG entry now says the order of a file's bind records changed (no reader depends on it), plus a stray blank line;
  • queries/python/tags.scm: "the C++ side (ingest_importcap.h) imposes" instead of "C++ imposes".

3. CONTRIBUTING family map: row 1 lists Python on @import.path (#382 merged), and row 2 names Python's current bind producer.

Gates: cppqualcheck (plain and ASan: 97 PASS each), pyimportprecisecheck, qschemetripcheck, readmedriftcheck, docanchorcheck, ripwirepubliccheck, gateexitcheck, manifestcheck.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Clarified that Python import processing captures imported names and aliases, and that persisted content and extraction versions remain unchanged while bind-record ordering differs.
    • Documented that caches from the previous release continue to produce identical answers.
  • Tests
    • Strengthened checks for Python import capture patterns and previous-release cache compatibility.
    • Improved test-gate reporting for timeouts and other failed calls, including sanitizer runs.

barefootski and others added 2 commits October 13, 2026 06:52
…ll timeouts

The repo-root arms each ran a cold --no-cache parse of the whole tree under a
30 s alarm, with stderr discarded, so a call killed on a slow sanitizer runner
surfaced as a wrong count ("expected 32") rather than a timeout.

- The repo-root arms share a per-run temp dir with one cache file per verb
  (--uses reads the rich artifact, --callers the lean one): two cold parses,
  four warm reads. Fixture arms keep --no-cache. The dir is removed on exit.
- run() keeps the call's exit status and prints an explicit TIMEOUT (rc=142)
  or ERROR (rc=N) FAIL line naming the call; the gate fails on it, and a
  repo-root arm compares its count only when the call succeeded.
- The binary flavour is detected once at the top (the section 9 nm probe, now
  shared); a sanitizer binary gets a 90 s per-call alarm instead of 30 s.

No expected count or assertion changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- src/ingest_importcap.h, src/graph.h: comments named the deleted
  capturePythonImportBinds; they now name emitCapturedPythonImportBind.
  Comment-only.
- test/pyimportprecisecheck.sh: the "vocabulary is compiled in" arm grepped
  the bare capture names, which the Go tags.scm comment already carried, so it
  passed on a binary without the Python captures. It now greps the Python
  patterns themselves.
- CHANGELOG: the #382 entry states that record content and the extraction
  version are unchanged while the order of a file's bind records differs;
  drop a doubled blank line.
- queries/python/tags.scm: "C++ imposes" reads as the language; name the
  C++ side (ingest_importcap.h).
- CONTRIBUTING: family table row 1 lists Python as reading @import.path;
  row 2 names the Python bind producer that replaced the deleted one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: redhat-et/ripwire/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a7ad98fd-ef5e-4591-8223-9643ddb8cc31
📥 Commits

Reviewing files that changed from the base of the PR and between 035b0bc and 00c30a6.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • CONTRIBUTING.md
  • queries/python/tags.scm
  • src/graph.h
  • src/ingest_importcap.h
  • test/cppqualcheck.sh
  • test/pyimportprecisecheck.sh

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

📝 Walkthrough

The changes update Python import capture descriptions and checks. They also adjust cppqualcheck.sh timeouts, command failure handling, and cached repo-root checks.

Changes: Python import capture

Layer / File(s) Summary
Capture descriptions and check
queries/python/tags.scm, src/graph.h, src/ingest_importcap.h, CONTRIBUTING.md, test/pyimportprecisecheck.sh, CHANGELOG.md
Comments and documentation describe Python import captures and bind emission. The binary check requires both exact Python capture patterns. The changelog specifies unchanged record content and extraction version, changed bind-record order, and previous-release cache acceptance.

cppqualcheck gate

Layer / File(s) Summary
Timeout and failure handling
test/cppqualcheck.sh
The script selects timeouts based on binary flavour, records command failures, and fails the final gate if a call fails. Probe, edit-check, and trace invocations use the configured timeout.
Cached repo-root checks
test/cppqualcheck.sh
Repo-root checks use a shared temporary cache with one file per verb. Checks preserve command status, and cleanup removes the cache directory.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Suggested reviewers: barefootski, laimawu

Merge Risk: ⚪ Minimal · up to 00c30

This change updates documentation, comments and test-gate behavior, and does not alter product runtime behavior. No merge-blocking risk is evident.

Pre-merge checks · Passed 4
Passed Passed checks (4 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title accurately summarizes the main changes: cppqualcheck timeout reporting, review-note updates, and CONTRIBUTING map changes. It is specific and related to the changeset, although it includes s…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Warning

Some tools did not complete. Review the errors below.

🔧 ast-grep (0.45.3)
src/graph.h

ast-grep timed out on this file

Comment @coderabbitai help to get the list of available commands.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants