release: v0.3.0#8
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release PR for citeformer v0.3.0.
When this merges, push the local
v0.3.0annotated tag to trigger the PyPI publish workflow:(Tag created locally at commit
c1b77e4; not yet pushed per the release skill default.)Summary
Bundles the OpenRouter + Anthropic revamp + Fireworks + Together + async surface work landed across PRs #6 and #7 since v0.2.0. Three new backends (10 total now), full async parallel surface end-to-end, Anthropic backend revamp (prompt caching, real
messages.stream(),cited_textpreservation),GenerationResult.usagetoken-accounting, and 6 new ADRs (012-017) documenting the work + 3 explicit deferral decisions.Suite at the bump: 644 unit tests + 4 schema integration + 8 connectivity (4 live-passed). Ruff check + format clean, mypy strict (53 src files),
sphinx-build -Wgreen.§10.3 contract bump:
GenerationResult.schema_version2 → 3 (additive —usagefield, plus three optionalCitationfields). Pre-bump v2 serialisations deserialise cleanly into v3. See ADR-012 and ADR-013 for the ceremony.What's in the box
Backends now: 10 (was 7 at v0.2.0):
OpenRouterBackend(multi-provider routing withprovider.require_parameters),FireworksBackend(native GBNF — drops citeformer'scite-idrule in unchanged for true logit-tier on a hosted API),TogetherBackend(strict json_schema on Llama / Qwen / DeepSeek).AnthropicBackend— prompt caching on by default, realmessages.stream()block-level streaming,cited_text/source_span/document_titlepreserved on everyCitation,temperatureno longer silently dropped.Async surface end-to-end (ADR-014):
Backend.agenerate/astreamwithasyncio.to_threaddefaults;Citeformer.agenerate/astreamreturning newAsyncStreamingResult; native overrides on OpenAI + Anthropic (cascading to OpenRouter / Fireworks / Together via subclass inheritance).Token usage on every call (ADR-012):
GenerationResult.usagepopulated for all five API backends; OpenRouter additionally surfaces per-call cost incost_credits.verify()againstcited_text: when Anthropic populates the cited span, NLI scores against just that span — sharper signal on long documents.Doc-pin verification caught and fixed two real OpenRouter correctness issues (deprecated
usage:{include:true}flag,cost_usdmislabel) before they shipped.Tier-honesty docs rewrite — README,
docs/index.md, architecture doc all reframed away from the stale "schema-tier vs logit-tier" split (every modern provider's strict structured-outputs is real token-level constrained sampling now). Honest distinction is where the masking runs (in-process vs provider-runtime).Changelog
See CHANGELOG.md
[0.3.0]section for the full per-feature breakdown.Test plan
make lintgreen (ruff check + format + mypy strict, 53 src files).make testgreen (644 unit + 4 schema integration; 40 deselected integration/gpu/network).make docs-buildgreen (sphinx-build -W).uv buildbuilds sdist + wheel cleanly intodist/.citeformer.__version__ == "0.3.0"after the bump.src/.[0.3.0]populated with substantive content; new empty[Unreleased]above; compare links updated.v0.3.0created locally pointing at the bump commit (push manually after merge).🤖 Generated with Claude Code