Repository navigation
v26.6.19
RLM reliability fixes + tuning levers
This release hardens the RLM answer engine so it can no longer return a silent empty answer, and adds two opt-in levers for hard questions.
Fixed
- Empty-answer bug. When the CodeAct loop exhausted its iteration budget without calling
final(), it returned an empty string flagged as a valid answer (no_answer=false) that callers could not detect. A blank result is now surfaced asno_answer=truewith an explanatory note, and the out-of-iterations fallback re-asks the model with no tools so a diverged run must emit text instead of nothing.
Added
- CodeAct turn logging + convergence warnings — per-turn DEBUG trace and a WARNING when the loop exhausts its budget without converging.
- Per-request
extended_reasoning(AnswerRequest.extended_reasoning, defaultfalse) — runs the engine at twice the configuredFLYCANON_RLM_MAX_ITERSfor a single hard request, without a global default bump. RAG ignores it. - Self-consistency guard (
FLYCANON_RLM_SELF_CONSISTENCY, default1= off) — when>1, the non-streaming answer path runs the engine N times in parallel and an LLM selector returns the most-grounded answer; token usage of all runs + the selector is merged.
Changed
- Scoped RLM system prompt — requires verifying every benchmark/threshold/figure against the source documents and forbids stating a value not found in them.
Build
boto3is now declared in thedevextra so the S3 object-store backend's unit tests and the pyright type-check ofstorage/s3.pyrun deterministically in CI (they previously relied on a transitive path that went away).
Python SDK
Install the wheel for this release with uv:
uv add https://github.com/firefly-operationOS/flycanon/releases/download/v26.6.19/flycanon_sdk-26.6.19-py3-none-any.whlOr pin it in your pyproject.toml:
[project]
dependencies = ["flycanon-sdk"]
[tool.uv.sources]
flycanon-sdk = { url = "https://github.com/firefly-operationOS/flycanon/releases/download/v26.6.19/flycanon_sdk-26.6.19-py3-none-any.whl" }Java SDK
<dependency>
<groupId>com.firefly</groupId>
<artifactId>flycanon-sdk</artifactId>
<version>26.6.19</version>
</dependency>Resolve from GitHub Packages -- add to your pom.xml:
<repositories>
<repository>
<id>github-firefly-operationOS</id>
<url>https://maven.pkg.github.com/firefly-operationOS/flycanon</url>
</repository>
</repositories>What's Changed
- chore: bump pyfly to v26.06.113 by @miguelgfierro in #66
- fix(rlm): eliminate empty-answer failure; add extended_reasoning + self-consistency by @miguelgfierro in #67
Full Changelog: v26.6.18...v26.6.19