Sub-issue of #1002 · Phase M1 · Milestone M1 · PRD: M1-A1, M1-A2, M1-A3, M1-A5, M1-A7 · Proposal: PRD §5.3
Branch: feature/1032-decode-sample-home
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
- Decision first: the Llama decode loop,
MultiHeadAttention, PreTransposed* weights live in SKaiNET-transformers; SKaiNET core has no transformer model. Options: (a) skainet-decode + Android activity in SKaiNET-transformers llm-apps against a SKaiNET snapshot (cross-repo issue), (b) a minimal Llama decode sample inside skainet-apps (duplicates layer code), (c) both (core synthetic-model harness + transformers end-to-end). Record the decision here and on the M1 tracker.
- Then: prefill on a fixed prompt, N decode tokens, before/after table (peak RSS during load, RSS@1000, allocations/step, rank-1 decode on Q4_K, adapters/step, TTFT, tok/s, effective bandwidth), Perfetto trace; Android: Compose activity with one text field + button (first Compose usage — new pattern).
Acceptance
M1-A1/A2/A3/A5/A7 measured and posted in the release notes table.
Depends on
#1021 (S1.2), #1024 (S1.4b), S1.7c, #1025 (S1.5b), #1030 (S1.9).
Keeps develop green by
Sample app / cross-repo; no core behaviour change.
Working rules (every slice)
- One slice = one branch
feature/1032-<slug> from develop = one PR (Closes #1032), 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).
Sub-issue of #1002 · Phase M1 · Milestone M1 · PRD: M1-A1, M1-A2, M1-A3, M1-A5, M1-A7 · Proposal: PRD §5.3
Branch:
feature/1032-decode-sample-homeDesign docs:
docs/design/memory/memory-architecture-proposal.md(proposal rev. 2, §-numbers below refer to it) anddocs/design/memory/memory-architecture-milestones-prd.md(PRD, requirement IDsMx-Fy/Mx-Ay) — both land with the SKEEP-003 docs PR; until merged they are attached to #932.Task
MultiHeadAttention,PreTransposed*weights live in SKaiNET-transformers; SKaiNET core has no transformer model. Options: (a)skainet-decode+ Android activity in SKaiNET-transformersllm-appsagainst a SKaiNET snapshot (cross-repo issue), (b) a minimal Llama decode sample insideskainet-apps(duplicates layer code), (c) both (core synthetic-model harness + transformers end-to-end). Record the decision here and on the M1 tracker.Acceptance
M1-A1/A2/A3/A5/A7 measured and posted in the release notes table.
Depends on
#1021 (S1.2), #1024 (S1.4b), S1.7c, #1025 (S1.5b), #1030 (S1.9).
Keeps develop green by
Sample app / cross-repo; no core behaviour change.
Working rules (every slice)
feature/1032-<slug>fromdevelop= one PR (Closes #1032), merged independently.developstays usable after merge: additive API or behind façade / opt-in; no default behaviour switch without golden-parity + benchmark evidence in the PR; deprecate withReplaceWith, never delete before a major (zero-consumer dead code may be removed with evidence in the PR). No new abstract members onTensorData/KernelProvider(defaults only); no data-class primary-constructor changes (secondary ctors only); BCV:apiDumpbothapi/jvmandapi/android,apiCheckclean.scripts/pr-gate.shonce 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:jvmBenchmarkand:skainet-backends:benchmarks:jvm-cpu-jmh:jmhbefore/after when a hot path changes.Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>trailer. Do not editCHANGELOG.mdin slice PRs (parallel branches conflict on it; release notes are written at release time from the merged PRs).