Repository navigation
Releases: scombat/s1d1-tantive
Release list
v0.8.1
Upgrade recommended for amd64 deployments.
- The int8 weights of the four variants are re-quantized with
reduce_range(7-bit weights; research repo, docs/28),
which fixes wrong scores on x86 CPUs without VNNI (e.g. Haswell, AVX2 only): ONNX Runtime's U8S8 kernel there adds
pairs of products into a saturated int16.smallwas the variant affected: "hi" scored 1.0 instead of 0.04, and
its tiers agreed with fp32 on 49 % of prompts instead of 90 %.checksums/pins the new Hub revisions; only
model_int8.onnxchanges in each. - New int8 guard in the
imageworkflow (tools/int8_guard.py): the small image runs underqemu-x86_64 -cpu Haswell
(no VNNI, whatever the runner has) on 44 probe prompts (tests/fixtures/int8_probe.json) and fails below 85 % tier
agreement with the fp32 scores, when a greeting scores above theTRIVIALbound, or when a score is pinned at 1.0. - The LiteLLM guide, the README and
llms.txtdescribe LiteLLM 1.106's router: the four tiersSIMPLE,MEDIUM,
COMPLEX,REASONINGandclassifier_fallback: default_model, withoutfallback_tier. - Image references move to 0.8.1 in the README, the guides, the deployment templates and the Space files.
v0.8.0
-
Opt-in sending of the captured lines to a community ingestion:
S1D1_CAPTURE_SEND=1(off by default, needs
S1D1_CAPTURE_DIR) starts a thread that posts the capture files in NDJSON batches toS1D1_CAPTURE_URL(default
https://s1d1.qoo.gy/ingest,httpsonly except localhost), with an optionalS1D1_CAPTURE_TOKEN,
S1D1_CAPTURE_BATCHandS1D1_CAPTURE_SEND_SECONDS. Only the lines captured while sending is on are sent (they
carry"send": true), never what was captured before or while it was off. At-least-once delivery with a cursor in the capture folder,
back-off on failure, no redirect followed, and the token and prompts kept out of logs,/infoand OpenTelemetry. New
counterstantive_capture_sent_total,tantive_capture_send_failed_totalandtantive_capture_send_rejected_total
and the gaugetantive_capture_send_pending_bytes;
/inforeportscapture.send(enabled,url,instance_id).S1D1_TERMS_VERSION(defaultv1) is written in
each captured line. Guide: the sending section ofdocs/capture.md. -
New
imageworkflow: pull requests that touch the Dockerfile,uv.lock,pyproject.toml,checksums/orverify.py
build the small image from the Hub weights and run thedockertests (amd64, nothing pushed or signed). -
Image references move to 0.8.0 in the README, the guides, the deployment templates and the Space files, so the templates
pull images with the capture.CITATION.cffdrops itsversionanddate-released: the citation names the repository,
the release page names the version. -
The version is read from the package metadata:
tantive.__version__comes frompyproject.tomlthrough
importlib.metadata, the only place a release sets it. -
The licence parameters are now generic:
Licensed Workiss1d1-tantivewithout a version, and theChange Dateis
four years from the date each version is first publicly distributed (the BSL 1.1 template wording). Licensor, Additional
Use Grant and Change License are unchanged. -
The
SECURITY.mdcontact test is a plain test: the contact is filled, so itsxfailmarker goes. -
Batches answer per item:
POST /v1/systemone/batch, and/classifyand/predictgiven a list, answer each valid
item as before and put{"error": {"message", "type"}}in the slot of an item the single route would refuse (blank or
too long text, shed), instead of failing the whole batch. 200 when at least one item succeeded, 503 +Retry-Afterwhen
every item was shed, 422 when every item failed otherwise; body-level errors are unchanged. Metrics anddecisionlines count the items that ran. Guide: the Batch
section ofdocs/formats.md. -
S1D1_ROOT_PATHno longer goes to uvicorn, which prepended the prefix to a path that already carried it (404 on
/api/v1/systemone): a middleware now accepts request paths with and without the prefix (/api/...and/...), for a
proxy or tunnel that forwards the prefix unchanged as for one that strips it. -
chat-completions refuses
"stream": truewith a 400 in the usual error shape instead of ignoring it: this endpoint
does not stream, a classification is one response. -
Dependabot keeps the GitHub Actions, the Docker bases and the uv lockfile up to date: weekly, on Monday, one grouped
pull request per ecosystem for the minor and patch updates, at most five open per ecosystem (.github/dependabot.yml). -
Contribution pages:
CONTRIBUTING.md(issues, the change workflow, the commit style, the licence of contributions),
CODE_OF_CONDUCT.md(Contributor Covenant 2.1), issue forms for bugs and questions with blank issues off and
vulnerabilities sent to the security advisory, and a pull request template. The README links both pages.
v0.7.0
-
Capture of the classified prompts, off by default:
S1D1_CAPTURE_DIRwrites one JSON line per decision (prompt,
tier, score, task, confidence, latency, variant) to daily files, with size rotation, sampling, a margin filter for
the doubtful cases and a retention. One writer thread behind a bounded queue, never the request;
tantive_capture_written_totalandtantive_capture_dropped_total;/inforeportscapture. The text goes to
these files and nowhere else. Guide:docs/capture.md. -
Capture mounts: the Azure template takes
captureShareName,captureStorageAccountandcaptureStorageKey(Azure
Files on/capture); the AWS template takesCaptureFileSystemId(EFS on/capture). The deploy templates keep
pulling the 0.6.0 images by default, which have no capture: setimageorImageto a 0.7.0 tag to use it. -
Checksums repinned: the Hub
variant.jsonfiles now carrysigma,max_length,score_centerandscore_scale. -
Railway removed from the deployment targets: its free tier cannot run the small variant, the button needs a
template created in a console that proved unreliable, and Render covers the free PaaS case. The 0.5.0 files stay
in the history. -
README: a "What you get" section and the Hub card's hero image;
llms.txtfor assistants;docs/sizing.mdwith
the sizing calculation written out;docs/use-cases.mdwith six ready-made configurations; a Claude Code skill
(.claude/skills/deploy-s1d1-tantive) that sizes and configures a deployment from those two pages. -
CI: the
releasejob creates the GitHub release of a tag from its CHANGELOG section, after provenance. -
AWS Lambda:
deploy/aws/template.lambda.yaml(container function, Lambda Web Adapter, provisioned concurrency
to avoid cold starts, invocation permission restricted to a source ARN). -
Terraform: one
main.tfper target underdeploy/<target>/terraform/(Azure, AWS ECS and Lambda, Cloud Run,
Heroku, Render), validated with Terraform 1.16; Hugging Face has no maintained provider. -
Build: certifi 2026.10.19 (a Trivy finding on the first v0.6.0 run).
s1d1-tantive 0.6.0
- Decision service for the s1d1 router: System One and OpenAI Decisions for LiteLLM's Auto Router, chat-completions,
vLLM-style/classifyand TEI-style/predict, on one ONNX int8 model (four variants), with warm-up, load shedding,
Prometheus metrics and OpenTelemetry. - Long-prompt policies (
head_tailby default,head,tail,chunks) with merge strategies and apiecescount in
every response. - One image per variant for amd64 and arm64, weights checked against committed checksums, built with SLSA 3 provenance
and signed keyless with cosign (identity recorded in the public Rekor log);docs/verify.mdshows how to check. - Deployment files for Azure, AWS, Google Cloud Run, Heroku, Render, Railway and Hugging Face Spaces, all running the
published image with the sameS1D1_*variables. - Documentation (README, getting started, LiteLLM, formats, configuration, verification),
SECURITY.md, gitleaks and
Trivy in CI, andtools/ghcr_cleanup.shfor maintainers. - Versions 0.1.0 to 0.5.0 were private pre-releases; their history was squashed on 2026-10-21.