Skip to content

release: 0.52.0 — self-healing dispatch (ternary included), androidNative chain, decode-shaped FP32 - #1243

Merged
michalharakal merged 8 commits into
developfrom
release/0.52.0
Sep 1, 2026
Merged

michalharakal merged 8 commits into
developfrom
release/0.52.0

Conversation

@michalharakal

@michalharakal michalharakal commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

The release branch for 0.52.0 — now the single release: since no 0.52.0 was ever published to Maven Central (the locally-consumed artifacts were an unsigned publishToMavenLocal), the previously local release branch has been merged with develop so the release includes everything on the 0.52 line: the self-healing dispatch arc (#1220/#1221), androidNative arm32/arm64 across the downstream chain (#1239), and the ternary packs joining the self-healing SPI (#1240/#1241) — folded into the one [0.52.0] CHANGELOG section, dated 2026-09-01. Supersedes #1242.

Release-prep commits follow the established pattern (changelog entry, README highlights + BOM coordinate, antora/tutorial version bumps, release: 0.52.0, regenerated matrices), inherited from the original branch and extended with the ternary fold-in.

Downstream validation

SKaiNET-transformers#370 consumes these artifacts (repointed to 0.52.0) with zero explicit kernel installs: BitNet-2B4T decodes at full speed (6.16 tok/s, two-stage) on discovery alone, and the skainet-decode sample's kernel counters light up through KernelDispatch.defaultSink (56.21 GB/s effective bandwidth measured).

After merging — finishing the release

The Central publish is triggered by pushing the annotated tag (the 0.51.0 pattern: annotated tag, SKaiNET <version> — <headline> subject, prose digest body). Suggested, from the merged release commit:

git tag -a 0.52.0 <merge-commit> -F tag-0.52.0-msg.txt   # message drafted below
git push origin 0.52.0                                    # triggers the Central release
git push origin <merge-commit>:main                       # fast-forward main to the release point

Drafted tag message (mirrors the 0.51.0 annotation style):

SKaiNET 0.52.0 — the engine stops silently running on the scalar floor

KernelDispatch now installs itself on first use through the ServiceLoader-backed
ViewKernelPack SPI — providers, the row-major Q-series packs and the ternary/BitNet
packs (BITNET_B1_58 LUT gemv, fused BITNET_PLANES lm_head) are all discovered, so an
application that never calls an install routine no longer loses every kernel to the
~1000x decoding-reference fallback, and a fallback that does happen says so once,
loudly. Dense FP32 weights are served from any storage kind, decode-shaped matmuls
get a dedicated FP32 GEMV path, and androidNativeArm32/Arm64 build and publish across
the whole downstream chain. Validated downstream: SKaiNET-transformers decodes
BitNet-b1.58-2B-4T at full speed with zero bootstrap code, token-for-token equal to
bitnet.cpp and the HF BF16 reference.

Then merge SKaiNET-transformers#370 and #371 once the artifacts resolve on Central.

Verification: self-heal dispatch test green (ternary kernels discovered cold); matrices regenerated (generateKernelMatrix/generateOperatorDocs, no content drift); REUSE compliance left to CI. Post-release issue-closure analysis in the comment below.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YKeDSK4JF295y53Uvez954

michalharakal and others added 8 commits August 31, 2026 16:43
antora.yml's skainet_version attribute plus the android-classifier tutorial's
hardcoded coordinates. The remaining 0.51.0 mentions in docs/ are historical
('landed in 0.51.0'); the generated matrices are regenerated after the version
bump, per GITFLOW.adoc.
Version/date stamps only — no operator or kernel-registration drift in this
release. Run after the version bump, per GITFLOW.adoc, so the stamps are right.
Referenced as SKaiNET-compiler.svg; the asset is SKaiNET-compiler.png, so the
page's main diagram has not been rendering. Antora logs this as an error but
still exits 0, which is why the docs job stayed green. Pre-existing, caught while
verifying the site build for the release.
# Conflicts:
#	CHANGELOG.md
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

📖 Documentation Preview

The documentation has been built successfully for this PR.

Generated Files:

  • Operator documentation: docs/modules/operators/_generated_/
  • JSON schema output: operators.json

Artifacts:

  • Download the documentation-preview-1243 artifact to view the complete documentation locally.

This comment will be updated automatically when the PR is updated.

@michalharakal

Copy link
Copy Markdown
Contributor Author

What this release lets us close (open-issue analysis, 2026-09-01)

Closes with / right after this release (engine):

Issue State after release What remains before closing
#1166 (ternary final gate) Every technical checklist item done: reuse lint in CI, byte-identical vendor verification, artifact notices (jar+AAR), BitNet.cpp credits, CHANGELOG/third-party section, real-2B4T verification (now token-for-token vs bitnet.cpp AND the HF BF16 reference, transformers#365) Two human actions: the upstream courtesies to anjaustin/neogpu (text drafted in the issue, needs your go) and the klib-notices decision (jar+AAR carry notices; klibs have no META-INF — document the stance)
#1136 (ternary tracking) All sub-issues #1137#1141, #1150 shipped; architecture proof points held; downstream BitNet arc complete Closes when #1166 does — close-out summary ready: 51.8 GOPS ffm-lut, 15.98× memory, 6.16 tok/s discovery-only 2B4T, three-way greedy parity
#1129 (skainet-decode sample) Delivered in transformers#369 + #370: GGUF → decode → GenerationMetrics (TTFT 1131 ms, 6.48 tok/s, 56.21 GB/s effective bandwidth), weight forms resolved not configured Split the Android-activity leg into its own issue, then close
#1204 (on-device sidecar cache) The mainline it was a fallback for is fully served: AOT converter (0.51.0) + SEQUENTIAL zero-copy mmap + this release's discovery Decision-close as not-planned (its own text: "deliberately not the first thing to build"), or keep as backlog — your call
#805 (Add REUSE) Already satisfied by the ternary compliance arc, independent of this release: REUSE.toml, LICENSES/, reuse lint in CI, third-party notices Closable now

Transformers-side, once this release publishes and #370/#371 merge: #360 (maturity gate — all items done), #335 (tracking: T1/T2 + fused head + two-stage + parity all delivered), #336/#337 (implemented; re-scope comments posted), #344 (add-model guide rewritten in #368), and the bookkeeping-stale migration issues #338/#339/#340/#342/#343. #346 can either close (plan items 1–4 all executed; the guide is now the reference) or stay open as the living convention reference.

Explicitly NOT closed by this release (the big adjacent ones): #920/#910/#722 (Kotlin/Native mobile kernel gap — the ternary KN bridges exist but KN still has no ServiceLoader/self-heal and dense KN kernels remain scalar), #979 (Apple hardware validation), #976/#849 (Antora versioning), #932 (SKEEP-003 storage unification anchor), the metrics lane (#1222#1235), ground-truth/fuzzing arcs (#981#988), and the IREE arc (#1148/#447/#261).

@michalharakal
michalharakal merged commit 9f8d512 into develop Sep 1, 2026
18 checks passed
@michalharakal
michalharakal deleted the release/0.52.0 branch September 1, 2026 09:34
@michalharakal michalharakal mentioned this pull request Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant