Repository navigation
v0.19.0
Changed
-
magi-core moves from
=4.0.0to=4.1.0, and nothing in the tree reads the surface 4.1.0
deprecates. The OpenAI-compatible trio seat is now built withwith_dialect, passing
Dialect::MaxTokensand the derived client timeout. The request body it sends is byte-identical
to what 4.0.0 sent, which a captured baseline in the test suite pins. A source-reading test keeps
the deprecated names out of the code for good, so the next magi-core major becomes a pin bump
and nothing else. -
consensus.majority_summaryis removed from the headless JSON output. magi-core 4.1.0
deprecated this field and replaced it withconsensus.dissent, which carries the agents whose
effective verdict differs from the emitted one, each with their ownsummaryandreasoning
strings. The seven-key contract forconsensusis now:consensus,consensus_verdict,
confidence,score,agent_count,votes,dissent. The README states the confidence
formula exactly: the emitted side's confidences summed, divided by the agent count, scaled by
(|score| + 1) / 2, clamped to[0, 1]and rounded to two decimals. -
extraction_failures[].causenow uses magi-core's serde representation (missing-markers,
unterminated,ambiguous,invalid-json,malformed-object,schema,echoed-example,
agent-identity) instead of Rust Debug format (MissingMarkers,InvalidJson, etc.), matching
the representation in all other consult output channels.malformed-objectis the new variant
introduced in magi-core 4.1.0. The set is open on the crate's side; a value not listed here is a
newer cause added to magi-core, spelled as the crate spells it. Both reports render a foreign
enum through one shared helper, so the two cannot drift apart again. -
Retry and abandonment semantics the pin brings in, now stated as the code behaves. A
529
is transient, so an Anthropic seat retries a load spike (up tomax_retries + 1attempts) inside
the budget magi-rs derives from the ceiling instead of condemning the lineage on the first
response. A failure local to one mage (External,ResponseContract, an oversized or empty
completion) that exhausts its retries comes back as itself and condemns that seat; the run goes
on with the other two.RetryAbandonedstill condemns the lineage run-wide, but only for the
wrapped classes. A seat that never answers ends typed, as the originalTimeout, after exactly
two attempts, well before the ceiling. Thefailed_agentscause that carries an outside
provider's own message passes through the same redaction as every other foreign string. -
The capability probe keeps a measured window when the digest times out. magi-core 4.1.0
runs the two probes concurrently under one shared deadline and lets each keep its own result;
the rustdoc that described the old single timeout was corrected, and the per-probe ceilings
magi-rs applies stay, sincerun_preflightruns per consult.
Security
rustlsmoved to 0.23.45 inCargo.lock(RUSTSEC-2026-0285: TLS 1.3 handshake messages
accepted across encryption level boundaries). A transitive pin, no API change.
Development
- The smoke harness counts the keys of the
consensusobject exactly (seven), so a key too many
fails as loudly as one too few. Declared assertions: 74.
Full Changelog: v0.18.1...v0.19.0