llmff v1.3.0
llmff v1.3.0 hardens the execution core: failure classification, stage
wiring, and per-stage validation now live in the type system instead of
string matching and hand-maintained checklists. Every documented contract —
CLI output, exit codes, failure kinds, schemas, trace and event records — is
byte-identical to v1.2.0.
Added
- A typed failure-classification API in
llmff-core:LlmffErrorgains
StageTimeoutandHttpToolvariants plus aFailureKindenum with
failure_kind()/failure_message(), so exit codes and tracefailure_kind
values derive from types. Error message text, exit codes, and failure-kind
strings are unchanged; characterization tests freeze the full mapping. - An exhaustive internal stage-op enum drives the stage metadata catalog,
execution dispatch, and graph validation, so adding a stage without wiring
every site fails to compile instead of relying on a checklist. - Typed per-op stage specs give validation and execution one shared parse
point per stage; validation messages and failure timing are unchanged. - Release-evidence gating now verifies recorded release commits against the
actual git tags (git rev-list) instead of pinned copies, and check
scripts share one helper library. - Engine internals split into cohesive submodules (backends, inference, tool,
loop, map, stage ops) with an unchanged public library API surface of the
same twelve items. - Launch-article manifest snippets are now validated with
llmff inspect;
the v1.1 article's loop example is runnable as printed. - Compatibility with the existing Python subprocess supervisor, batch supervisor,
Node.js streaming supervisor, agent runner adoption guide, OpenTelemetry bridge,
and ecosystem readiness gates.
Boundary
This release adds no manifest surface, no stages, no backends, and no runtime
behavior. It is an internal hardening pass; llmff remains a bounded execution
runner, not an agent framework, planner, memory system, or scheduler. One
library-level note: LlmffError gained variants, which is source-breaking
only for Rust library consumers who match the enum exhaustively; the
documented CLI, schema, event, trace, and exit-code contracts are unaffected
and remain additive-only.
Install
cargo install --git https://github.com/syndicalt/llmff --tag v1.3.0 llmff
scripts/smoke-install.sh --git https://github.com/syndicalt/llmff --tag v1.3.0Release preflight
Run the release preflight gate before creating or pushing the tag:
scripts/release-preflight.sh v1.3.0