Skip to content

[S1.11] M1 sample: decide the home of skainet-decode (SKaiNET core vs SKaiNET-transformers), then build the CLI + Android activity #1032

Description

@michalharakal

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    assessmentAssessment task (DARC: A)model:llmLLM model supportquestionFurther information is requestedsub-issueSub-issue of a tracking issue

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions