{
  "schema_version": 1,
  "asset_policy": "image_preinstalled",
  "target": "spacemit-k3-32g-minicpm-chat-qwen-summary",
  "model_set_version": "2026.08.01-minicpm-chat-qwen-summary",
  "description": "Mixed K3 model combination: MiniCPM5-1B Q4_K_M is the hot llm-chat model and Qwen3-30B-A3B Q4_0 is the deferred llm-summary model; retrieval, OCR, ASR, TTS, and compact VLM match the MiniCPM profile.",
  "runtime_memory_policy": {
    "default_hot_models": [
      "embedding-int8",
      "llm-chat"
    ],
    "feature_cold_models": [
      "reranker-int8",
      "llm-summary",
      "ocr-det",
      "ocr-rec",
      "vad-x100",
      "asr-sherpa-x100",
      "asr-whisper",
      "tts-default",
      "vlm"
    ],
    "stress_only_models": [],
    "default_cold_models": [],
    "soft_min_available_gb": 6.0,
    "hard_min_available_gb": 2.0,
    "trim_after_feature_task": true
  },
  "packages": [
    {
      "package": "k3-scheduler-model-ocr-ppocrv5-mobile",
      "title": "PP-OCRv5 mobile OCR assets",
      "role": "document_ocr",
      "runtime_tier": "hot_path",
      "default_install": true,
      "depends": [
        "spacemit-onnxruntime"
      ],
      "scheduler_models": [
        "ocr-det",
        "ocr-rec"
      ],
      "description": "PPOCR detection and recognition ONNX files used by document upload and OCR stress flows. K3 defaults run the scheduler OCR workers through the SpacemiT ONNX Runtime EP.",
      "assets": [
        {
          "type": "file",
          "source_candidates": [
            "vision/ppocr/PP-OCRv5_mobile_det.onnx",
            "spacemit-ai/vision/ppocr/PP-OCRv5_mobile_det.onnx"
          ],
          "target": "/root/models/spacemit-ai/vision/ppocr/PP-OCRv5_mobile_det.onnx"
        },
        {
          "type": "file",
          "source_candidates": [
            "vision/ppocr/PP-OCRv5_mobile_rec.onnx",
            "spacemit-ai/vision/ppocr/PP-OCRv5_mobile_rec.onnx"
          ],
          "target": "/root/models/spacemit-ai/vision/ppocr/PP-OCRv5_mobile_rec.onnx"
        },
        {
          "type": "file",
          "optional": false,
          "source_candidates": [
            "vision/ppocr/ppocrv5_dict.txt",
            "spacemit-ai/vision/ppocr/ppocrv5_dict.txt"
          ],
          "target": "/root/models/spacemit-ai/vision/ppocr/ppocrv5_dict.txt",
          "validation": {
            "kind": "ppocrv5_dictionary",
            "encoding": "utf-8",
            "line_count": 18383,
            "recognition_classes": 18385
          }
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/vision/ppocr/PP-OCRv5_mobile_det.onnx",
        "/root/models/spacemit-ai/vision/ppocr/PP-OCRv5_mobile_rec.onnx",
        "/root/models/spacemit-ai/vision/ppocr/ppocrv5_dict.txt"
      ]
    },
    {
      "package": "k3-scheduler-model-sherpa-x100-audio",
      "title": "rv-sherpa-onnx X100 VAD and streaming ASR assets",
      "role": "realtime_audio_frontend",
      "runtime_tier": "feature_cold",
      "default_install": true,
      "depends": [
        "rv-sherpa-onnx-runtime"
      ],
      "scheduler_models": [
        "vad-x100",
        "asr-sherpa-x100"
      ],
      "composite_models": [
        {
          "name": "asr-diarization",
          "components": [
            "vad-x100",
            "asr-sherpa-x100"
          ],
          "strategy": "vad_segmented_streaming_asr",
          "output_schema": "meeting_segments.v1",
          "quality_scope": "VAD-driven speech segmentation plus streaming ASR transcript segments. Speaker identity clustering requires a future speaker embedding package."
        }
      ],
      "description": "K3 sherpa audio frontend profile validated on 2026-07-18. X100 VAD and streaming ASR are the production-relevant low-latency audio path. The asr-diarization capability is delivered as a VAD+ASR composite, not as a standalone segmentation.onnx artifact.",
      "assets": [
        {
          "type": "file",
          "source_candidates": [
            "silero-vad/onnx/model.onnx"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/vad-silero/model.onnx"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/tokens.txt"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/bpe.model"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/bpe.model"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/bpe.vocab"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/bpe.vocab"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.int8.onnx"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/encoder-epoch-99-avg-1.int8.onnx"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.int8.onnx"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/decoder-epoch-99-avg-1.int8.onnx"
        },
        {
          "type": "file",
          "source_candidates": [
            "sherpa-onnx/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.int8.onnx"
          ],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/joiner-epoch-99-avg-1.int8.onnx"
        }
      ],
      "expected_paths": [
        "/opt/rv-sherpa-onnx/models/candidates/current/vad-silero/model.onnx",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/tokens.txt",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/bpe.model",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/bpe.vocab",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/encoder-epoch-99-avg-1.int8.onnx",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/decoder-epoch-99-avg-1.int8.onnx",
        "/opt/rv-sherpa-onnx/models/candidates/current/asr-streaming-zipformer/joiner-epoch-99-avg-1.int8.onnx"
      ],
      "bench_evidence": {
        "source": "k3-rv-sherpa-audio-e2e-20260718",
        "host": "192.168.100.140",
        "provider": "x100",
        "vad_p95_decision_ms": 0.718378,
        "asr_p95_first_stable_ms": 382.791704,
        "asr_streaming_rtf": 0.306315,
        "quality_scope": "functional_and_latency; authoritative ASR transcript corpus still required"
      }
    },
    {
      "package": "k3-scheduler-model-asr-qwen3-0p6b",
      "title": "Qwen3-ASR 0.6B frontend assets",
      "role": "meeting_asr",
      "runtime_tier": "feature_cold",
      "default_install": true,
      "depends": [
        "spacemit-onnxruntime"
      ],
      "scheduler_models": [
        "asr-whisper"
      ],
      "description": "Qwen3-ASR 0.6B package used for meeting-audio frontend pressure. The current scheduler worker uses the encoder frontend ONNX stage.",
      "assets": [
        {
          "type": "tar_gz",
          "source_candidates": [
            "vlm/qwen3-asr-0.6B.tar.gz",
            "asr/qwen3-asr-0.6B-dynq-q40.tar.gz"
          ],
          "target_dir": "/root/models/spacemit-ai/vlm"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/vlm/qwen3-asr-0.6B/Qwen3-ASR-0.6B-encoder-frontend.dynq.onnx"
      ]
    },
    {
      "package": "k3-scheduler-model-tts-matcha-zh-baker",
      "title": "Sherpa Matcha Chinese product TTS assets",
      "role": "speech_synthesis",
      "runtime_tier": "feature_cold",
      "default_install": true,
      "depends": [
        "rv-sherpa-onnx-runtime"
      ],
      "scheduler_models": [
        "tts-default"
      ],
      "description": "Official sherpa-onnx Matcha Chinese acoustic model, Vocos 22 kHz vocoder, lexicon, dictionary, tokens, and normalization FSTs used by the K3 C++ audio proxy.",
      "assets": [
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/model-steps-3.onnx"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/acoustic_model.onnx"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/vocos-22khz-univ.onnx"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/vocoder.onnx"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/lexicon.txt"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/lexicon.txt"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/tokens.txt"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/tokens.txt"
        },
        {
          "type": "directory",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/dict"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/dict"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/phone.fst"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/phone.fst"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/date.fst"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/date.fst"
        },
        {
          "type": "file",
          "source_candidates": ["sherpa-onnx/tts/matcha-icefall-zh-baker/number.fst"],
          "target": "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/number.fst"
        }
      ],
      "expected_paths": [
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/acoustic_model.onnx",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/vocoder.onnx",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/lexicon.txt",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/tokens.txt",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/dict",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/phone.fst",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/date.fst",
        "/opt/rv-sherpa-onnx/models/candidates/current/tts-matcha/number.fst"
      ],
      "source_evidence": {
        "acoustic_archive_url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/matcha-icefall-zh-baker.tar.bz2",
        "acoustic_archive_sha256": "20de2ec034b55562609d6362771c934905dfe11d0f41ec103d593427ad9a7efb",
        "vocoder_url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/vocoder-models/vocos-22khz-univ.onnx",
        "vocoder_sha256": "0574a135aa1db2de6e181050db2ec528496cacd4a4701fc5d7faf9f9804c0081",
        "validation_scope": "source integrity and host-side asset contract; K3 product audio E2E remains pending while the device is offline"
      }
    },
    {
      "package": "k3-scheduler-model-tts-ort-contract",
      "title": "ORT token_ids_v1 TTS generation contract",
      "role": "speech_synthesis_ort_contract",
      "runtime_tier": "feature_cold",
      "default_install": false,
      "depends": [
        "spacemit-onnxruntime"
      ],
      "scheduler_models": [],
      "description": "Synthetic token_ids_v1 ONNX fixture retained for host contract tests. It is not a product TTS model and is excluded from the default image profile.",
      "assets": [
        {
          "type": "base64_file",
          "source_candidates": [
            "tests/fixtures/tts/synthetic-token-ids-v1.onnx.b64"
          ],
          "target": "/root/models/spacemit-ai/tts/synthetic-token-ids-v1.onnx",
          "sha256": "dc22dcc1ee22a8a203fcd27f701f6ff7e985fa3352c465d204ca324ad84f24f6"
        },
        {
          "type": "file",
          "source_candidates": [
            "tests/fixtures/tts/tokens.json"
          ],
          "target": "/root/models/spacemit-ai/tts/tokens.json"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/tts/synthetic-token-ids-v1.onnx",
        "/root/models/spacemit-ai/tts/tokens.json"
      ],
      "bench_evidence": {
        "source": "tests/tts_ort_worker_fixture.py",
        "provider": "ort_cpu",
        "schema": "speech_audio.v1",
        "generation_contract": true,
        "sample_rate_hz": 8000,
        "duration_ms": 100,
        "quality_scope": "scheduler/ORT TTS contract only; final voice model selection remains bench-owned"
      }
    },
    {
      "package": "k3-scheduler-model-kb-bge-small-zh-rerank",
      "title": "BGE Chinese embedding and reranker assets",
      "role": "knowledge_retrieval",
      "runtime_tier": "hot_path",
      "default_install": true,
      "depends": [
        "llama.cpp-tools-spacemit"
      ],
      "scheduler_models": [
        "embedding-int8",
        "reranker-int8"
      ],
      "description": "BGE Chinese embedding and BGE reranker GGUF files served through llama.cpp-tools-spacemit.",
      "assets": [
        {
          "type": "file",
          "source_candidates": [
            "embed/Bge-Small-Zh-V1.5-Q4_K_M.gguf",
            "spacemit-ai/embed/Bge-Small-Zh-V1.5-Q4_K_M.gguf"
          ],
          "target": "/root/models/spacemit-ai/embed/Bge-Small-Zh-V1.5-Q4_K_M.gguf"
        },
        {
          "type": "file",
          "source_candidates": [
            "rerank/Bge-Reranker-V2-M3-Q4_0.gguf",
            "spacemit-ai/rerank/Bge-Reranker-V2-M3-Q4_0.gguf"
          ],
          "target": "/root/models/spacemit-ai/rerank/Bge-Reranker-V2-M3-Q4_0.gguf"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/embed/Bge-Small-Zh-V1.5-Q4_K_M.gguf",
        "/root/models/spacemit-ai/rerank/Bge-Reranker-V2-M3-Q4_0.gguf"
      ]
    },
    {
      "package": "k3-scheduler-model-vlm-qwen35-2b",
      "title": "Qwen3.5-2B compact VLM assets",
      "role": "compact_vlm",
      "runtime_tier": "hot_asset_with_feature_cold_worker",
      "default_install": true,
      "depends": [
        "llama.cpp-tools-spacemit"
      ],
      "scheduler_models": [
        "vlm"
      ],
      "description": "Qwen3.5-2B SMT VLM package kept in the MiniCPM K3 combo for document visual extraction; MiniCPM replaces only text LLM roles in this profile.",
      "assets": [
        {
          "type": "tar_gz",
          "source_candidates": [
            "vlm/Qwen3.5-2B.tar.gz"
          ],
          "target_dir": "/root/models/spacemit-ai/vlm"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/vlm/Qwen3.5-2B/qwen3_5_2b-text-q41.gguf"
      ]
    },
    {
      "package": "k3-scheduler-model-llm-minicpm-chat",
      "title": "MiniCPM5-1B K3 chat LLM asset",
      "role": "minicpm_chat_llm",
      "runtime_tier": "hot_path_chat",
      "default_install": true,
      "depends": [
        "llama.cpp-tools-spacemit"
      ],
      "scheduler_models": [
        "llm-chat"
      ],
      "description": "MiniCPM5-1B Q4_K_M handles hot RAG answer/chat in the mixed K3 profile. Summary is served by the separate Qwen3-30B-A3B package.",
      "assets": [
        {
          "type": "file",
          "source_candidates": [
            "/root/local-ai-bench/minicpm-probe/models/llm/MiniCPM5-1B/MiniCPM5-1B-Q4_K_M.gguf",
            "llm/MiniCPM5-1B/MiniCPM5-1B-Q4_K_M.gguf"
          ],
          "target": "/root/models/spacemit-ai/llm/MiniCPM5-1B/MiniCPM5-1B-Q4_K_M.gguf"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/llm/MiniCPM5-1B/MiniCPM5-1B-Q4_K_M.gguf"
      ],
      "bench_evidence": {
        "source": "vlm-llm-benchmark/docs/minicpm-k3-rag-replacement.zh.md",
        "model_root": "/root/local-ai-bench/minicpm-probe/models/llm",
        "install_root": "/root/models/spacemit-ai/llm",
        "host_verified": "192.168.100.233",
        "MiniCPM5-1B-Q4_K_M": {
          "role": "rag_answer_chat",
          "prompt_eval_tok_s": 330.645,
          "generation_tok_s": 35.682
        },
        "retrieval_policy": "keep_bge_embedding_and_reranker_until_minicpm_retrieval_artifacts_are_converted"
      }
    },
    {
      "package": "k3-scheduler-model-llm-qwen3-30b-a3b",
      "title": "Qwen3-30B-A3B heavy LLM asset",
      "role": "heavy_summary_llm",
      "runtime_tier": "feature_cold_summary",
      "default_install": true,
      "depends": [
        "llama.cpp-tools-spacemit"
      ],
      "split_deb": true,
      "split_chunk_bytes": 6000000000,
      "scheduler_models": [
        "llm-summary"
      ],
      "description": "Qwen3-30B-A3B Q4_0 asset used as llm-summary in the mixed K3 profile while MiniCPM5-1B remains the hot chat/RAG answer model.",
      "assets": [
        {
          "type": "file",
          "source_candidates": [
            "llm/Qwen3-30B-A3B-Q4_0.gguf",
            "spacemit-ai/llm/Qwen3-30B-A3B-Q4_0.gguf"
          ],
          "target": "/root/models/spacemit-ai/llm/Qwen3-30B-A3B-Q4_0.gguf"
        }
      ],
      "expected_paths": [
        "/root/models/spacemit-ai/llm/Qwen3-30B-A3B-Q4_0.gguf"
      ]
    }
  ],
  "meta_packages": [
    {
      "package": "k3-scheduler-models-kb-default",
      "title": "Default K3 MiniCPM chat plus Qwen summary model set",
      "include": [
        "k3-scheduler-model-ocr-ppocrv5-mobile",
        "k3-scheduler-model-sherpa-x100-audio",
        "k3-scheduler-model-asr-qwen3-0p6b",
        "k3-scheduler-model-tts-matcha-zh-baker",
        "k3-scheduler-model-kb-bge-small-zh-rerank",
        "k3-scheduler-model-vlm-qwen35-2b",
        "k3-scheduler-model-llm-minicpm-chat",
        "k3-scheduler-model-llm-qwen3-30b-a3b"
      ],
      "description": "Installs OCR, ASR frontend, TTS generation contract, BGE retrieval, compact VLM, MiniCPM chat, and Qwen3-30B summary assets for the mixed K3 combo."
    },
    {
      "package": "k3-scheduler-models-full-stress",
      "title": "Full K3 mixed MiniCPM/Qwen scheduler stress model set",
      "include": [
        "k3-scheduler-model-ocr-ppocrv5-mobile",
        "k3-scheduler-model-sherpa-x100-audio",
        "k3-scheduler-model-asr-qwen3-0p6b",
        "k3-scheduler-model-tts-matcha-zh-baker",
        "k3-scheduler-model-tts-ort-contract",
        "k3-scheduler-model-kb-bge-small-zh-rerank",
        "k3-scheduler-model-vlm-qwen35-2b",
        "k3-scheduler-model-llm-minicpm-chat",
        "k3-scheduler-model-llm-qwen3-30b-a3b"
      ],
      "description": "Installs the mixed knowledge-base model assets plus optional sherpa X100 audio frontend."
    }
  ]
}
