Skip to content

v0.175.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 00:23
· 142 commits to main since this release

The range release — receipt #22's headline gap closed (cal #56b)

The first native-context field run reviewed a merged PR and watched four subsystems starve simultaneously on an empty base...HEAD union, while topic anchoring shipped docstring fragments to the graph. This release makes commit-range review first-class end-to-end and puts identifier-shape hygiene at the anchor chokepoints. Verified end-to-end on a git fixture in K293: --range persists through review-context-init into workflow.yaml and the memory_signal affects union counts exactly the range's files.

Added

  • --range=<a>..<b> first-class commit-range scope. Range mode in the file-collection choke point (collectChangedFiles: exactly the named range, no working-tree/untracked contamination) and threaded everywhere scope is consumed: state changed-files --range; review-weight assess --range; state review-context-init --range persists the range into workflow.yaml before any child CLI runs, so the memory_signal affects union (the single cached value all three dispatch generations consume), diff-symbol extraction, manifest freshness, and preflight's topic anchoring all read one consistent scope; graphify augment-impact-map --range; code-review.md scope_check (file count + diff-LOC banding vs the range) and substep-7; the auto-partitioner wires each lane's base_ref from the range start (generalizing the per-lane plumbing the field run proved by hand); /devt:review --range=… documented at the command surface.
  • Verbatim-OR-attested ARGS contract: overriding known-bad generated args is sanctioned WHEN fully attested inside graphify-impact-plan.json (args_overridden + original/override args + reason/evidence/by/timestamp — a post-hoc auditor reconstructs what the generator produced, what was sent, and why); assert-graphify-decision fails a declared override with incomplete attestation. Undeclared overrides remain violations.

Fixed

  • Topic anchors are identifier-shape gated. The graph label space includes docstring pseudo-nodes; harvesting legs leaked ~80-char prose fragments and filenames into topic.symbols, where the args contract then forced wasted MCP calls on them. isIdentifierShaped now gates the symbol filter AND final assembly (every leg, including FTS rescue): whitespace, >64 chars, and file-extension-shaped entries rejected; dotted identifiers and call() forms kept. All three field fragments die in the K293 truth table.
  • Commit-SHA shrapnel never becomes topic vocabulary: hex-shaped tokens (the tokenizer split a SHA and b9344 became a keyword that FTS-matched an unrelated service into suggested_reading) are excluded from keywords — the relevance floor at the query source. (A per-entry FTS score floor on suggested_reading remains open — the tokenizer + shape gates cut the junk-query side that produced the field's off-domain entry.)
  • review-weight empty-diff is a scope failure, not a safety verdict: "scope unresolvable" naming --range as the likely fix (was: "HEAVY recommended — nothing to prove safe" on zero evidence), with a distinct workflow echo; plus the recently-reviewed caveat (advisory-only, never auto-light) sourced from the claude-mem harvest artifact.
  • Gate K293 pins the release (range persist + affects-union + changed-files end-to-end on a two-commit git fixture; topic hygiene behavioral truth table; scope-unresolvable verdict; attestation + workflow wiring pins). Drift-guard stack 200 → 201 deep (K94–K293).