Skip to content

Releases: redhat-et/ripwire

v0.3.8

Choose a tag to compare

@github-actions github-actions released this 13 Aug 04:11

--help-task — ask the tool which command answers your task

ripwire <root> --help-task="<task in words>" returns ONE recommended executable ripwire command for this repository and task — with the evidence behind the pick (intent, integer score/margin, repository facts) — or an honest abstention when the evidence is too thin to name a winner. Advice only: it never calls a model, never executes the recommendation, never touches the network, and its output is byte-deterministic.

  • Eight v1 intents: verify-claim, connect-symbols, understand-symbol, review-diff, plan-feature, reuse-one-symbol, trace-debug, locate-task. Everything else abstains rather than guesses.
  • Structured shapes outrank wording: a closed --verify claim, a pasted stack trace, resolved symbol names, or a dirty worktree decide the route before any phrase matching.
  • Recommended commands are validated against the shipped grammar — the router consults --verify's real parser, so it cannot recommend a command the verb itself would refuse.
  • Measured on a hand-written, contamination-screened, hash-sealed fixture corpus: recommendation precision 1.000, harmful-route rate 0.000, abstention specificity 1.000; coverage 0.667 disclosed separately (misses abstain, never mislead). Method and seal in docs/EVALS.md and test/taskroutefix/PROVENANCE.md.

Also in this release: docs/COMMANDS.md gains the --help-task section with recorded recommend/abstain samples; the ripwire-router skill now names the verb; flag catalog 146.

(v0.3.7 was a tag that never published — its release run was correctly refused by the version guard; this release supersedes it.)

Full Changelog: v0.3.6...v0.3.8

v0.3.6

Choose a tag to compare

@github-actions github-actions released this 12 Aug 19:46

v0.3.6

Your docs joined the graph. Markdown headings are now symbols with real spans and hierarchy: --for ranks the section that answers you (the heading is the signature, never a whole-file dump), --expand serves a section's body, --recall answers section-granular with disclosure, and links, wikilinks, and mentions become edges — including doc→code, so a design doc's section and the function it describes now know about each other.

Claims get verdicts: ripwire <dir> --verify="calls(A,B)" — a closed claim grammar (calls / uses / unused / contains / defines / reaches) answered three-valued and honestly: confirmed with the witness inline, refuted only when the evidence can claim completeness, or not-established with the limiting factor named. The index never pretends to certainty it doesn't have — a string-keyed registry call can't produce a false "unused."

Also aboard: a serialize-bounds patch for the vendored markdown scanner (silent heap corruption at deep blockquote nesting, caught by the vendored-patch convention's audit), and a fix for a rare nondeterminism in file-node dedup.

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

What's Changed

  • The final train: markdown sections, --verify, and the E1 grader by @joyful-ii-V-I in #37

Full Changelog: v0.3.5...v0.3.6

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 12 Aug 17:49

v0.3.5

--for is terminal by default. The ranked answer now carries the top results' full bodies inline — the code you were about to open, already in the response, under the same token budget, disclosed on the container (bundle="auto" bodies="N"). Whole-body-or-not-at-all: a body that doesn't fit is dropped and said so, never cut mid-definition. An explicit --token-budget stays a hard ceiling; --signatures-only restores the previous shape byte-for-byte; --detail=N gives explicit control.

One call, ranked and readable: ask the question, get the map and the code it points to.

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 12 Aug 16:56

v0.3.4

Exhaustive answers now say so: clean-scan literal --grep and --whereis results carry complete="1" — including zero hits, which upgrade from "none found" to a claimable "none exists in the index." Where the call graph genuinely cannot be total (dynamic dispatch, escaped function pointers), the floor marking stays and the claim is never made — the two are mutually exclusive by gate.

The usage meter reads whole command lines: sequenced segments (;, &&, newlines), path components, pipeline pagers, and opaque scripts are now classified correctly instead of filed as unreadable — and the A/B control arm works in exactly the configuration an experiment harness would set (it was silently stuck on treatment; the session-start primer now honors the arm too).

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 12 Aug 07:31

v0.3.3

Your constants are findable now: const-qualified module and class-static constants index case-blind — the keyword is the evidence, not the naming convention. --for=kParserVer-style lookups that used to miss now land rank-1, and --uses finds the read sites.

A dead-end grep answers the follow-up: zero hits now come with nearest-identifier suggestions and a ready --for fallback (labeled as suggestions, never as matches); real hits carry the enclosing symbol's caller count and quality flags — the grep result carries the map's context without a second call.

MCP meets you halfway: an omitted path answers about the server root (assumption disclosed); every schema error names the missing key with an example; fetch_body accepts a bare symbol name.

The nudge got specific: three same-class searches in a session now trigger one paste-ready suggestion carrying your own search terms — and the meter that measures whether any of this works can no longer be polluted by its own test fixtures.

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 12 Aug 02:39

v0.3.2

The one-call fix loop: ripwire <dir> --run-trace="cmake --build build" runs your build or test command and — on failure — serves everything the fix needs in one output: the relevant diagnostic lines, the failing frames mapped to indexed symbols innermost-first, the responsible symbol's full body, and its callers, all under one token budget. Timeouts are disclosed (--run-timeout=S), a passing command reports minimally instead of inventing a bundle, and the capture cap counts what it dropped.

MCP incremental reingest, now gated and disclosed: warm index refreshes re-parse only changed files (~200ms after an edit vs ~380ms cold on a 1,150-file tree) — and a new 7-arm gate proves every incremental result byte-identical to a cold rebuild (edit, delete, add, no-op, mtime-race, torn-read). Responses now disclose reingest counts, so a long session can see what its refresh cost.

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 12 Aug 00:36

v0.3.1

Skill routing, measured: six descriptions gained the facts blind raters proved were missing — tool-health moments (--doctor, --skipped, index staleness), the N-way --connect moment, --lego interface-implementors, and an explicit fresh-eyes↔quality-bar boundary. Accepted at 9/9 under a pre-registered sealed two-rater protocol (baseline 7/9); rows routable only by guesswork fell from 8/9 to 1/9. Three corpus labels corrected with logged provenance.

New surfaces: --rank-by=churn-decay — recency-weighted churn (half-life 90d, disclosed in the legend; the clock anchors to HEAD's commit time, so output is a pure function of the repo, proven identical across trees dated years apart) · layer(SET, NAME) predicate in --graph-query — filter by the same layer taxonomy the map prints, refusing loudly on unlayered trees · Type-3 clone grouping — gid= per row plus clone_groups=/dup_loc=/dup_pct= corpus totals (floors, counting choice disclosed).

Hardening: per-gate timeout budgets in the test harness (a timeout names its own declared budget; the long benchmark gates get honest ones) and a killed regex scan now reports KILLED instead of a wrong verdict; cache eviction gains gates for the .cache family and the never-touch-a-lock invariant, verified by mutation.

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Aug 23:31

v0.3.0

New language tier: YAML config keys (.yml/.yaml) — scalar-keyed mapping pairs at depth ≤2, anchors/aliases and block scalars handled, sequences transparent. Vendored tree-sitter-yaml v0.7.2 with two safety patches (a serialize-bounds overflow at 254 indent levels and an int16 column wrap on very long lines).

Sharper call graph: field-typed member narrowing — a call through a field whose declared type is known now resolves against that type's members (with base-class walk) instead of every same-named symbol in the corpus. On a large polyglot validation tree: ambiguous references −300, real edges +392. Unknown or dynamic receivers stay honestly ambiguous.

SARIF export: ripwire <dir> --lint --sarif emits SARIF 2.1.0 for GitHub code scanning — result count pinned equal to native findings, deterministic byte-for-byte, partial modes refused rather than half-represented.

Substitution meter: the nudge hook can now count tool choices (ripwire vs native Read/Grep/Glob, rtk-unwrapped) into a local JSONL — docs/SUBSTITUTION_METER.md covers the schema, the A/B toggle, and the disclosed limits. RIPWIRE_METER=0 opts out.

Vendored-patch convention: third_party/patches/ with a drift gate — patches to vendored grammars now survive re-vendoring, every UBSan ignorelist entry is validated against the tree, and a family audit classifies every vendored scanner's serialize posture. First tenants: the Swift raw-string truncation fix and the YAML patches above.

Quality-lens fixes: short-horizon churn now keys on (file, scope, name) — a same-named symbol in an untouched file can no longer donate churn identity; shell functions called only from file top level are no longer flagged dead; 109 stale churn acknowledgements retired.

Skills & methodology: routing corpus grown to 152 judged rows with honest re-derived floors; two negative results published in docs/EVALS.md per METHODOLOGY §5, which gains §7: audit the choice, not the trigger. (A further set of measured description fixes passed its blind-rater acceptance after this tag and lands in the next release.)

Install or update:

RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 09 Aug 23:07

What's Changed

  • Second audit pass: v0.2.0 release, Codex CLI pilot, README front page by @joyful-ii-V-I in #4
  • Front page: benefit-led hero, real output sample, agent-loop pilot in EVALS by @joyful-ii-V-I in #5
  • Front page: drop the pilot anecdote from the hero by @joyful-ii-V-I in #6
  • Skills: stop rules in every verb-menu frontmatter; front page: query-shape routing by @joyful-ii-V-I in #7
  • CI: portable perfgate byte count; v0.2.1 — Linux binaries run on RHEL 8+ by @joyful-ii-V-I in #8
  • ci: one gate was rebuilding the binary the other 360 were running by @joyful-ii-V-I in #9
  • Front page: languages on one line; body folds to a scannable summary by @joyful-ii-V-I in #10
  • Front page: the CLI is the setup, MCP is the option by @joyful-ii-V-I in #11
  • Plan: the next languages, in order by @joyful-ii-V-I in #12
  • The quality fleet: nesting profile + ev(G), JS closure attribution, five disclosure fixes, frozen recall eval by @joyful-ii-V-I in #13

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 12:37

Full Changelog: v0.2.0...v0.2.1