Repository navigation
v1.16.0 — content-aware NO_PROGRESS dedupe (P2 Phase B)
Highlights
The v1.14.4 threshold bump (3 → 5) was a stop-gap. v1.16.0 ships the planned Phase B content-aware refactor:
Same call signature counts toward the no-progress threshold ONLY if no
read_fileagainst an unseen path happened between repeats. IffilesReadSetgrew between identical signatures, count resets to 1 — the model is exploring, not stuck.
Closes today's empirical regression where Gemini 3 Pro under HIGH thinking re-runs the same grep while ALSO reading new files between iterations. That IS progress; the simple counter (v1.14.4) tripped before maxIterations. Phase B distinguishes "exploring with repeated lookups" from "genuinely stuck".
Changes
signatureCountsMap type changed<string, number>→<string, { count: number; lastFilesReadSize: number }>.- Per-iter snapshot of
filesReadSet.sizetaken once after tool execution; used to decide reset-vs-increment per signature. - AA1 fix folded (3-of-3 cross-corroborated TP HIGH, grok escalated): within-iter parallel duplicates dedupe via
SetBEFORE counting. Pathological 5× same signature in one batch counts as +1, not +5. - Threshold (5) unchanged. Hard caps unchanged.
- Error message updated:
"... repeated N times without new file reads between repeats".
Tests
759 passed | 9 skipped (was 756 in v1.15.3 — +3 net new test cases). Lint + typecheck green on Node 22 + Node 24.
Compatibility
No API/schema change. Behaviour change observable only in dedupe-trip decision: agentic calls that previously bailed at NO_PROGRESS while reading new files now run to completion (or to maxIterations + rescue).
Future-proof note
read_file is the sole progress oracle because ask_agentic's tool surface is intentionally read-only. When a future PR adds workspace-mutating tools (write_file, terminal exec), the oracle MUST be expanded — guidance documented in code.
Install
npm install -g @qmediat.io/gemini-code-context-mcp@1.16.0