Releases: click6067-ship-it/fitllm-engine
Release list
v2.15.0 — fail-closed PLE + GLM-5.3
What changed
- Fail-closed Gemma 4 PLE parsing. Partial or malformed profiles, invalid
vocab_size, and model-name-only parameter guesses can no longer certify the PLE GPU-weight deduction. - Truthful residency scope. The PLE premise is limited to the pinned llama.cpp input-layer host-placement fact. SSD/NVMe paging, swap, lazy loading, and general offload remain outside FitLLM verdicts.
- Text-only GLM-5.3 support. Adds the pinned
zai-org/GLM-5.3architecture and 351 census rows without inventing benchmark numbers.GLM-5.3-Flashdeliberately remains unknown because no such supported model identity was established. - Regenerates the census to 9,477 rows across 27 models. Existing 9,126 rows and all prior verdicts remain unchanged.
Verification
- public suite: 282/282
- private suite: 603/603; production build passed
- conformance vectors: 30/30
- release seal: 52/52; affected integration suites: 117/117
- public/private/Hugging Face engine bytes: identical SHA-256
438e1e2e107865c9292563581f5db9f3f14b6bb84ecaf5dc2e595e1a8cb04a52 - independent Astra delta review after the Fable fix: zero remaining code findings
- responsive audit: nine supported surface/locale/viewport cases passed with zero horizontal overflow; three requested Hugging Face Korean rows are explicit non-passes because that existing launch surface is English-only
- npm trusted-publishing workflow and postcondition: success for
fitllm-engine@2.15.0andfitllm@2.15.0; clean registry installs report engine 2.15.0 and byte-identical engine payloads - public source: merge
865ac37066ce2e586326e8d41377643e351ab3d2from PR #125 - private integration: merge
ed2e62a71e958e1b45832178fbcf98f61b9c8f93from fitllm-v2 PR #96
Delivery status: the production site is live from the exact private merge. Hugging Face Space/Dataset updates are staged and hash-verified but are not yet pushed because this machine currently has no Hugging Face write credential.
No SSD/NVMe decode-speed or usability claim is included in this release.
Full diff: v2.14.1...v2.15.0
v2.14.1 — gpt-oss catalog/HF evidence parity
What changed
- Aligns the gpt-oss-20b and gpt-oss-120b catalog totals with FitLLM’s existing Hugging Face safetensors evidence path: 20.9B and 116.8B logical parameters.
- Preserves the fail-closed MXFP4 behavior: when storage bit width cannot be proved and no parameter evidence is supplied, FitLLM still refuses to calculate instead of deriving a false fit from checkpoint bytes.
- Keeps active-parameter labels at 3.6B / 5.1B. No parser formula, GPU table, conformance vector, or unrelated model row changed.
- Regenerates the 9,126-row census. Exactly 702 gpt-oss rows changed numeric projections; measurement fields and verdicts are unchanged.
- No SSD/NVMe streaming or offload claim is included.
Verification
- public suite: 248/248
- conformance vectors: 30/30
- census regeneration: byte-identical 4/4
- catalog vs pinned official HF evidence parse: 0 mismatches across 4,720 conditions per model
- private release sync: 572/572 plus production build
- independent Grok review (single required review): ACCEPT, P0=0, P1=0, P2=5 non-blocking
- npm trusted-publishing workflow and postcondition: success for
fitllm-engine@2.14.1andfitllm@2.14.1, with provenance bound to this tag and source SHA - released source: exact fast-forward merge
619585f57396523d8d173179180340cbd881c324from PR #124
Tracking issue: #98 remains open until the site and Hugging Face mirrors are verified.
Full diff: v2.14.0...v2.14.1
v2.14.0 — Granite-4.2-30B (IBM) verified support
What changed
- Adds the pinned
ibm-granite/granite-4.2-30bcheckpoint (revision9e668ce1c538387ef24d3644e9b0606647762636) as catalog rowGranite-4.2-30Bin a newGranitegroup: dense 29.277B parameters (29,276,770,304, byte-exact across the HF API safetensors total, the safetensors index, and a config-dimension hand calculation), 64 layers all full attention, GQA 32/8 with head dimension 128, native 131,072-token context taken frommax_position_embeddings, Apache-2.0. The model card's 512K extension is not in the config and is not modeled. - Engine formulas,
parseHfConfiggates, the GPU table, and constants are unchanged. Existing catalog indices 0–25 and their?m=links are preserved; Granite is appended at index 26. The version bump is minor (2.13.0 → 2.14.0) for a backward-compatible catalog addition. - Adds the conformance anchor
granite42-30b-kv-128k-f16: F16 KV at 128K = 2 (K+V) × 8 kv-heads × 128 head_dim × 2 B × 64 layers × 131,072 tokens = 34,359,738,368 bytes (exactly 32 GiB). At native context the F16 KV cache alone exceeds a 24 GiB card before any weights are counted. - Regenerates the census from 8,775 to 9,126 verdicts: 351 new Granite rows; all 8,775 existing rows are byte-identical to the v2.13.0 census.
- Benchmarks stay
nullfor Granite. No speed, throughput, download, 512K, or SSD/NVMe streaming claim. - Not included in this release: a dedicated Granite page on the site does not exist yet.
Verification
- focused Granite suite: 10/10 (RED at base
20b3506: 8/10 fail; GREEN at release) - full engine suite: 236/236
- conformance vectors: 30/30 (schema v1.5.0)
- census regeneration check: 4/4 byte-identical
- GitHub PR #123 CI and post-merge master CI: success
- independent fixed-commit Grok review: ACCEPT, P0=0, P1=0, P2=2 non-blocking
- npm:
fitllm-engine@2.14.0and aliasfitllm@2.14.0published bypublish.yml(npm Trusted Publishing, SLSA provenance bound torefs/tags/v2.14.0and sourceed198e1);engine.jsSHA-2560ade94ea35668e8e13ef6cd83ea58d6e8e17ac50c877bc4f419bf7ce9ca967c5in both tarballs - released source: squash merge
ed198e18438c3b7f15aabbee62f56d2bebc5eb8dof PR #123
Tracking issue: #93.
Full diff: v2.13.0...v2.14.0
v2.13.0 — Spark-X2.5-4B and truthful hybrid-attention labels
What changed
- Adds the pinned
XHToken/Spark-X2.5-4Bcheckpoint: dense 4.112B, GQA 16/4 with 256 head dimension, 27 sliding + 9 full-attention layers, 512-token sliding window, and native 1,048,576-token context. - Allows only the publisher-proven
spark2_5attention-output gate keys. The gate is applied after attention and does not change the K/V cache shape; unknown families and unknown structural keys still fail closed. - Replaces the old hard-coded
5:1display label with a ratio derived from actuallayer_types. Spark is now truthfully shown as3:1; existing KV calculations remain count-based and unchanged. - Adds a conformance anchor for 1M-context F16 KV: 38,711,328,768 bytes (36.05 GiB), then regenerates the census from 8,424 to 8,775 verdicts while preserving every previous row byte-for-byte.
- Updates the engine, package metadata, README Action reference, vectors, and census surfaces to
2.13.0/ 29 vectors.
No speed, throughput, or SSD/NVMe streaming claim. Spark benchmark fields remain unset rather than mixing incompatible or incomplete benchmark labels.
Verification
- focused Spark suite: 10/10
- full engine suite: 217/217
- conformance vectors: 29/29
- census regeneration check: 4/4 byte-identical
- npm package dry-run:
fitllm-engine@2.13.0 - GitHub PR and post-merge CI: success
- independent fixed-commit Grok review: ACCEPT, P0=0, P1=0, P2=4 non-blocking
- released source: squash merge
c547c280e767d4474f7bb266234aa9016f126d18of PR #120; its tree is byte-identical to reviewed candidatecb46d9ef21af6ad2200115ae4428af8c83fa1f3a
Closes #103.
Full diff: v2.12.0...v2.13.0
v2.12.0 — conditional structural premises (MLA/PLE/MTP) as structuralAssumptions
What changed
- Attaches conditional structural premises to affected results as
structuralAssumptions, an array of{ id, statement }:mla-compressed-latent-cache,ple-llamacpp-non-gpu-residency,mtp-ordinary-generation. The same array is exposed by the CLI (--json,--top --json,--why, and apremise [id]:line in text mode), the composite Action output, andexplain. - Exact runtime caveat: each premise holds only under the pinned artifact/runtime path listed in the README section "Structural premises". For example, the PLE deduction applies only to the verified Gemma 4 e2b/e4b entries under the pinned llama.cpp/GGUF lazy-or-host-resident path; a runtime that loads PLE tensors onto the accelerator (vLLM, for example) invalidates that estimate. Unverified families keep their full weights GPU-resident (fail-closed), so a look-alike config cannot flip a verdict toward "fits".
- No speed claim. A premise states what the memory math assumes, not how fast the model runs. There is no runtime selector and no confidence score.
- Compatibility and shape preservation: unaffected results (plain GQA models such as
Llama-3.1-8B-Instruct) carry nostructuralAssumptionskey, so legacy JSON shapes are unchanged. Existing JSON keys,--help, exit codes, conformance vectors, and census bytes are byte-identical to v2.11.0. The README Action reference moves to@v2.12.0. - Test evidence:
npm test207/207,vectors/run.mjs28/28,census:checkbyte-identical, tests written RED before the engine sync went GREEN, and a fixed-SHA cross-provider review of candidate89a7ba3493cc8f17ae01988bad93249e4e4123a3returned ACCEPT with P0=0 and P1=0. Released source is the squash mergeae5ec23dda523ea3d7de3cbbccdb8f70faeb1607of PR #118 (byte-identical tree to the reviewed candidate). Refs #99.
Full diff: v2.11.0...v2.12.0
v2.11.0 — deterministic model and GPU name resolution
What changed
- Adds one canonical model/GPU name resolver: exact match, then unique full-token match, then a base-name tie-break; unresolved ambiguity now lists candidates and exits 2.
- Prevents short GPU queries such as
5070,4080,4070, and9070from silently selecting larger suffix variants and producing fit-biased answers. - Adds resolver regression coverage and removes an unsupported 54 GB overhead claim from the engine comment.
Full diff: v2.10.0...v2.11.0
v2.10.0 — fail-closed HF parameter evidence
What changed
- Makes Hugging Face
safetensors.parametersthe canonical logical parameter count and cross-checks it against measured shard bytes, preventing false FITS results caused by treatingmetadata.total_sizeas bytes. - Pins config, index, and shard reads to one immutable Hugging Face revision; indexed repositories now fail closed instead of falling back to unrelated root weight files.
- Adds regression coverage for parameter evidence, packed and mixed dtypes, header slack, and missing or inconsistent evidence.
Full diff: v2.9.0...v2.10.0
FitLLM Engine v2.9.0
Highlights
- Auditable --why output for model, hardware, architecture, memory inputs, assumptions, and limitations
- Composite GitHub Action for pre-download CI checks with exact exit-code propagation
- Pinned llmfit v1.1.12 architecture differential with raw-output SHA verification
Both fitllm-engine@2.9.0 and fitllm@2.9.0 were published through the protected OIDC workflow with SLSA provenance. The differential is estimator-to-estimator evidence, not a runtime accuracy claim.
v2.8.1 — Qwen 3.8, Apple M6, fail-closed live configs
What's Changed
- measurement: M5 Max 128GB oMLX — Qwen3-Coder-30B-A3B 8-bit + Qwen3.6-27B 4-bit Gated DeltaNet by @gilbert-barajas in #4
- measurement: systematic M5 Max 128GB oMLX table (6 models) by @gilbert-barajas in #5
- fix(day0-watch): HF 트렌딩 fetch 견고화 — HTML 응답 크래시 → 재시도+graceful skip by @click6067-ship-it in #23
- fix(day0-watch): fp4/fp8 양자화 미러 노이즈 필터 추가 by @click6067-ship-it in #24
- feat(models): MiniCPM5-1B (openbmb) — on-device 1B, v2.6.0 by @click6067-ship-it in #25
- feat(models): Qwen 3.8 + Laguna 2.1 — 선형 어텐션 고정 상태 모델링 (v2.7.0) by @click6067-ship-it in #85
- feat(catalog): 표시 순서를 배열 인덱스에서 분리 (MODEL_GROUP_ORDER) by @click6067-ship-it in #86
- feat(hardware): Apple M6 · M5 Ultra (v2.8.0) + census 재생성 by @click6067-ship-it in #92
New Contributors
- @gilbert-barajas made their first contribution in #4
Full Changelog: v2.1.1...v2.8.1
v2.1.1 — pre-quantized repo param fix
fix: parseHfConfig under-counted params ~2x for pre-quantized repos (MLX/AWQ/bnb) by deriving bytes from torch_dtype instead of the stored bit-width. Now reads quantization(.bits)/quantization_config(.bits) first. Reported with measurements and a suggested fix by @gilbert-barajas (#2) — thank you. Also: first measured fixture recorded (#1), README: registry listings + agent HTTP API + CC0 census (HF Dataset/Space).