Skip to content

Release 0.49.0 — the SKEEP-003 architecture, complete - #1185

Merged
michalharakal merged 5 commits into
developfrom
release/0.49.0
Aug 27, 2026
Merged

michalharakal merged 5 commits into
developfrom
release/0.49.0

Conversation

@michalharakal

Copy link
Copy Markdown
Contributor

Release 0.49.0 — the deliberate jump from 0.40.1 (~100 merged PRs): the SKEEP-003 memory & storage architecture complete, from accepted proposal to shipped system. This is the release SKaiNET-transformers and the IREE conformity pipeline build on.

In this PR (release prep only — no code changes):

  • CHANGELOG — full 0.49.0 notes, led by the Breaking-changes migration map: legacy loader axes → WeightForm; @Place/@Weights/StorageSpec/old MemoryPlanner → AllocationResolver; skainet.tensor_encodings → structural skainet.tensor_layouts.
  • README — What's New in 0.49.0; BOM coordinate; contributors incl. @AjithGoveas (Iris provider, [Feature]: Add an Iris dataset provider (and a tabular RawDataset -> Dataset bridge) #1044/feat(data): add Iris dataset provider (#1044) #1101).
  • Versions — gradle.properties (VERSION_NAME=0.49.0), Antora skainet_version, tutorial coordinates; regenerated kernel-support matrix and operator reference (the latter had been stale at 0.27.0 since June).
  • Docs audit, all 62 Antora pages — every reference presenting removed API as current fixed (10 sites beyond version strings: WeightOrientation/staging/quantPolicy prose, SKEEP-002's loader snippet, the tensor_encodings seam claim, the dangling docs/design/memory prose from docs: describe the memory model as built, and fold the loose files into Antora #1106); overtaken claims updated (op outputs + carriage landed; CI's api-compatibility leg + branch protection; native FFM shipped, not "planned"; device placement resolved; ternary "in progress" → landed; eager-execution kernel matrix gains the exact-FP32 ternary and BITNET_PLANES rows); SKEEP-003 → Implemented, SKEEP-003a added to the skeep index; one leaking listing block and one wrong cross-module xref repaired; the nonexistent StableHloOptimizer(debugMode)/dumpGraphviz tutorial snippet replaced with the real HloGenerator.generate(target = …) surface.

Left deliberately (follow-ups, not blockers): how-to/java-cli-app.adoc and tutorials/kllama-getting-started.adoc are orphaned from nav — content review needed before linking them.

After merge: publish 0.49.0, then downstream: bump SKaiNET-transformers onto it, unpark the model-footprint CLI in SKaiNET-research (bump skainetVersion, drop the mavenLocal preamble), and draft the IREE-validation SKEEP against the conformity repo (#1148).

Full pr-gate green.

🤖 Generated with Claude Code

The deliberate 0.40.1 → 0.49.0 jump (~100 merged PRs): one storage
model, resolver-owned decisions, scope-recycled eager execution, and a
compile lane that carries what the runtime decides. This is the release
SKaiNET-transformers and the IREE conformity pipeline build on.

- CHANGELOG: full 0.49.0 notes with an explicit Breaking-changes
  migration map (legacy loader axes → WeightForm; dead placement
  machinery → AllocationResolver; skainet.tensor_encodings →
  skainet.tensor_layouts).
- README: What's New in 0.49.0, BOM coordinate, contributors incl.
  @AjithGoveas (Iris provider).
- Versions: gradle.properties, docs/antora.yml skainet_version,
  tutorial coordinates; kernel-support matrix and operator reference
  regenerated at 0.49.0.
- Docs audit (62 pages): every reference presenting removed API as
  current is fixed (WeightOrientation/staging/quantPolicy prose,
  SKEEP-002 snippet, tensor_encodings seam); overtaken claims updated
  (op outputs + carriage landed, CI api-compatibility leg + branch
  protection, native FFM shipped, device placement resolved, ternary
  'in progress' → landed, eager-execution kernel matrix gains the
  exact-FP32 ternary and BITNET_PLANES rows); SKEEP-003 status →
  Implemented and SKEEP-003a added to the skeep index; the dangling
  docs/design/memory prose repaired; a leaking literal block and a
  wrong cross-module xref fixed; the fake StableHloOptimizer(debugMode)
  snippet replaced with the real HloGenerator target API.

Known non-blockers, left deliberately: how-to/java-cli-app.adoc and
tutorials/kllama-getting-started.adoc are orphaned from nav (content
review needed before linking).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

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-1185 artifact to view the complete documentation locally.

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

@github-actions

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-1185 artifact to view the complete documentation locally.

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

michalharakal and others added 2 commits August 27, 2026 12:03
…path

On the JVM, SKEEP-004 activations live in MemorySegments, and the common
views->KernelDispatch path a packed ternary weight takes (#1136) cannot
read them: element access over SegmentStorage is forbidden by design, so
the first linearProject over a BitNetB158TensorData weight in a real
decode loop threw the SKEEP-004 guard.

matmulWeightTransposed on the JVM tier now bulk-copies such an activation
to the heap once per call before handing the common path its views —
decode-step activations are k floats, not weights, so the copy is noise
next to the matmul. Two producers are handled: TensorData that is itself
segment-backed (MemorySegmentBackedData), and TensorData whose view
presents a SegmentStorage. The copy deliberately constructs
DenseFloatArrayTensorData directly — this tier's dataFactory adopts float
arrays back INTO segments, which would round-trip the problem.

Found and verified running the real microsoft/bitnet-b1.58-2B-4T I2_S
GGUF end-to-end in SKaiNET-transformers: with this fix the model loads
packed and generates coherent text ("The capital of France is Paris.
Paris is known for its beautiful architecture, art, and cuisine...")
through the vendored ternary kernels — which also confirms the GROUP_128
default of the I2_S import (#1140's open caveat) against the official
BitNet.cpp file.

Refs #1136

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

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-1185 artifact to view the complete documentation locally.

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

…ivation-ternary

fix(cpu): off-heap activations reach the ternary dispatch path (#1136)
@github-actions

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-1185 artifact to view the complete documentation locally.

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

@michalharakal
michalharakal merged commit dc88de1 into develop Aug 27, 2026
24 checks passed
@michalharakal
michalharakal deleted the release/0.49.0 branch August 27, 2026 15:50
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