You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[S1.7a] P3: KernelKey + rank normalization + reference matmul via defaulted KernelProvider.kernelFor(key); #993/#991 through the registry; kernel sample #1027
Design docs: docs/design/memory/memory-architecture-proposal.md (proposal rev. 2, §-numbers below refer to it) and docs/design/memory/memory-architecture-milestones-prd.md (PRD, requirement IDs Mx-Fy/Mx-Ay) — both land with the SKEEP-003 docs PR; until merged they are attached to #932.
Task
sk.ainet.lang.memory.kernel.KernelKey(op, input Formats, layout classes, placement, platform caps); rank normalization once before dispatch as zero-copy views ([in]→[1,in], flatten leading batch dims); Adapter descriptors (requantize, dequantize, gather) allocating into the active Forward scope; reference matmul kernel using decoding get() (correct on any Format).
Extend the existing sk.ainet.backend.api.kernel.KernelRegistry/KernelProvider with a defaultedkernelFor(key): Kernel? (no second registry); UnsupportedKernel(key) lists nearest matches.
Registry path not yet wired into DefaultCpuOps.matmul (that is #1028 (S1.7b)); additive SPI method with default.
Working rules (every slice)
One slice = one branch feature/1027-<slug> from develop = one PR (Closes #1027), merged independently.
develop stays usable after merge: additive API or behind façade / opt-in; no default behaviour switch without golden-parity + benchmark evidence in the PR; deprecate with ReplaceWith, never delete before a major (zero-consumer dead code may be removed with evidence in the PR). No new abstract members on TensorData/KernelProvider (defaults only); no data-class primary-constructor changes (secondary ctors only); BCV: apiDump both api/jvm and api/android, apiCheck clean.
Test gate before the PR (JDK 25, scripts/pr-gate.sh once it exists): ./gradlew jvmTest linuxX64Test assemble, ./gradlew verifyNpmPins jsTest wasmJsTest wasmWasiTest, ./gradlew apiCheck, ./gradlew :skainet-test:skainet-test-java:test; storage/backend slices add :skainet-lang:skainet-lang-core:jvmBenchmark and :skainet-backends:benchmarks:jvm-cpu-jmh:jmh before/after when a hot path changes.
Commits: conventional commit subject, Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> trailer. Do not edit CHANGELOG.md in slice PRs (parallel branches conflict on it; release notes are written at release time from the merged PRs).
Activity