Skip to content

v26.6.19

Choose a tag to compare

@miguelgfierro miguelgfierro released this 30 Jun 14:10
· 76 commits to main since this release
8590abf

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 as no_answer=true with 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, default false) — runs the engine at twice the configured FLYCANON_RLM_MAX_ITERS for a single hard request, without a global default bump. RAG ignores it.
  • Self-consistency guard (FLYCANON_RLM_SELF_CONSISTENCY, default 1 = 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

  • boto3 is now declared in the dev extra so the S3 object-store backend's unit tests and the pyright type-check of storage/s3.py run 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.whl

Or 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

Full Changelog: v26.6.18...v26.6.19