Fix framework-aware evidence remediation - #358
Conversation
Engineering reviewVerdict: request changes. The direction is right and the projection change is a genuine improvement, but the fix does not reach its own headline case. On a real Google ADK repository the output is still the generic MCP/OpenAPI sentence, and the new regression test is green only because it hand-builds a report the engine cannot produce. Base is clean (merge-base == BLOCKER — the framework-aware branch is structurally unreachable
It can never be first, because the two gaps are co-generated by the same condition:
So Reproduced end-to-end on a minimal ADK workspace (
Neither names I then declared exactly what the engine asked for (effect + authority under Acceptance criterion 1 of #318 ("A Google ADK-only result leads with the generated local inventory/declaration artifact and the exact BLOCKER — the regression test asserts an engine-impossible state
Recommended fixFix it in the engine, not the projection: MEDIUM — sentence-boundary bug in the new helper
text = f"{text.rstrip('.')}. Target: {action.path}."Scope — "Closes #318" is premature#318's last criterion says the adopter-facing terminal output from #327 is the primary surface and "a demoted scan-only message is not considered sufficient." Minor
What's goodCentralizing the text in |
Engineering review — second pass (
|
Summary
incomplete_surfaceaction framework-aware when the source has an explicit inventory routeverifyllms-full.txt, and adopter-facing remediation docsRoot cause
The short-form renderers were initially corrected to read
evidence_gaps[0].next_action, but the first gap for every low-confidence framework tool wasincomplete_surface, whose action was still generic. The framework-keyeddeclare_tool_inventoryaction appeared later aslow_confidence_tool, so the Google ADK route was structurally unreachable.Impact
For supported frameworks, the decision engine now leads with the generated
suggested-inventory.jsonartifact and the exact<framework>.tool_inventoriesmanifest route. Console, GitHub, verifier, fix-task, handoff, and packet consumers inherit the same authoritative action. Human work precedes a separate finalRun:command, and verifier instructions no longer prescribe the same inventory repair twice. Unidentified or unsupported source shapes retain generic source guidance; no binding, effect, authority, approval, or runtime evidence is invented.Validation
PYTHONPATH=src pytest -q -n auto --ignore=tests/test_packaging.pypytest tests/test_packaging.py -q(8 passed)llms-full.txtgit diff --checkorigin/main:control.state=complete, merge verdictmergeable, release decisionpassedCloses #318