This release adds 2 notable features for engineering teams evaluating rollout.
Published 28d
Developer Productivity
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
ai-coding-assistant
archetype
ast-analysis
claude-code
claude-plugin
code-conventions
+12 more
code-review
code-style
developer-tools
javascript
linter
mcp
mcp-server
prompt-engineering
python
ruby
rails
typescript
Affected surfaces
auth
rce_ssrf
deps
breaking_upgrade
Summary
AI summarypr-review now routes deterministic security sinks and receiving-code-review grounds adjudication in engine data.
Full changelog
Added
- pr-review now routes the deterministic security sinks
lint_filealready
returns (new Step 2.6d).eval-call(error severity) andcommand-injection
drive a BLOCK;sql-string-interpolation,insecure-deserialization,
weak-hash, andinsecure-randomare FIX; the test-quality rules
(then-without-catch,skipped-test, and so on) are NIT. The convention loop
already fetched these violations and discarded them, so the review silently
missed witnessed SQL-injection, RCE, and error-swallowing findings while
hand-rolling weaker taint heuristics. They are refuter-exempt and hunk-gated. A
warning-severityeval-call(the Railsclass_evalstring idiom the engine
deliberately downgrades) caps at FIX, never escalated by rule name. - receiving-code-review now grounds its adjudication in engine data. It builds
the PR's hunk map (so a comment on an untouched line is flagged pre-existing,
not a PR defect) and runsget_callers/lint_file/get_crossfile_context
/get_duplication_candidatesto back an apply or a pushback with evidence
instead of plain judgment.
Changed
- A new direct dependency is an "Acknowledge before merge" ACK, not a BLOCK.
The old BLOCK forced a BLOCK verdict thatrecord_review_verdictthen wrote to
the durable ledger, recording every routine dependency add as a BLOCK and
corrupting the per-tier review-clean metric. The provenance gate stays as its
own non-verdict channel, matching the engine's own NIT classification of
new-dependency.
Fixed
- The caller-contract pass (Step 2.9e) is now wired into every consistency
surface. It was defined but missing from both grounding-loop exemption lists,
the severity table, the verdict rules, the integrity rule, and the output
template, so a faithful reader either hunk-gated its non-diff caller lines (and
dropped every valid finding) or sent it to the refuter, which cannot re-derive
cross-file evidence and refuted the strongest finding away. - Fan-out could not run the dependency pass. Step 2.5 was delegated per-slice
but the fan-out reviewer was never grantedscan_dependency_changes, so it
silently fell back to hand-parsing. It now runs once at whole-diff synthesis. - receiving-code-review referenced gates it never defined and called
refute_findingwith an underspecified payload. Step 6 named a "hunk/severity
gate" that did not exist; the refuter call omitted the{id, file, line, claim, evidence}shape,base_ref, and the disabled-envelope (empty verdicts list)
handling. All fixed, and the repo is resolved once in Step 3 so the grounding
tools haverepo.idbefore they run.
Tests
- New unit coverage for Step 2.6d (including the warning-severity
eval-call
cap), the contract-break wiring, and the dependency ACK. The tool-contract test
is generalized to parse every tool call in both review skills andreviewer.md
and check each name and kwarg against the live MCP registry. - Two new journey acts:
12b(deep pr-review: secret / migration / dependency-ACK
/ eval-sink BLOCK paths) and12c(receiving: ground-before-draft,
never-ledger, pre-existing gate). Both use evidence-based cross-checks that
demote a self-reported PASS when the evidence does not hold.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Chameleon
All releases →Beta — feedback welcome: [email protected]