Skip to content

v0.11.0

Choose a tag to compare

@stawils stawils released this 13 Jun 20:30

What's New

Fixes the long-standing "Acceptance rejected: Structured acceptance report not found" failure for pi-subagents delegation through the proxy. Local models (Qwen3.5-9B) were emitting the acceptance report as bare JSON; Pi's runtime only accepts fenced code blocks, so every delegated run was rejected — even when the work was correct.

  • New proxy/acceptance.pywrap_bare_acceptance_report() detects bare acceptance-report JSON in the model's text response and wraps it in the fenced acceptance-report block Pi parses. Mirrors Pi's own field set and balanced-JSON extraction, so it only fences objects Pi will accept. Wired into both text-return paths in handler.py.
  • Acceptance prefill id-seedingSafeLlamafileClient._resolve_acceptance_prefill() now parses the contract's real criterion id from the finalization nudge and seeds it in the prefill, so the model's criteriaSatisfied id matches the contract (was copying the example's generic criterion-1 → "Required criterion X was not reported").
  • Verified end-to-end: delegation through the proxy now returns a clean ACCEPT.

Tests: 436 unit tests (+15 new: test_acceptance_wrap.py ×12, test_acceptance_prefill.py ×3).

Full Changelog

v0.10.0...v0.11.0