ltcai 12.2.1 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -33
- package/docs/CHANGELOG.md +65 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +11 -11
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +1 -1
- package/docs/ROADMAP.md +1 -1
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/core/embedding_providers/autodetect.py +0 -1
- package/latticeai/core/model_compat.py +2 -2
- package/latticeai/models/model_providers.py +12 -11
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/model_capability_registry.py +79 -2
- package/latticeai/services/model_catalog.py +38 -12
- package/latticeai/services/model_engines.py +29 -15
- package/latticeai/services/model_runtime/download.py +53 -6
- package/latticeai/services/product_readiness.py +1 -1
- package/package.json +6 -8
- package/requirements.txt +3 -1
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/release_screen_claims.json +24 -0
- package/src-tauri/Cargo.lock +10 -10
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +46 -47
- package/static/app/assets/Act-inLiZfDE.js +2 -0
- package/static/app/assets/AdminConsole-iLFwSJSg.js +1 -0
- package/static/app/assets/Brain-Cb7noiNc.js +2 -0
- package/static/app/assets/BrainHome-CfiJ4tau.js +2 -0
- package/static/app/assets/BrainSignals-ShxKNNqr.js +1 -0
- package/static/app/assets/Capture-Cajj1Trf.js +1 -0
- package/static/app/assets/Chronicle-CPd8GP_O.js +1 -0
- package/static/app/assets/CommandPalette-Cb_GWoYC.js +1 -0
- package/static/app/assets/DigitalBrainExplorer-Df6KVrBz.js +321 -0
- package/static/app/assets/Library-Dk5Mefl_.js +1 -0
- package/static/app/assets/LivingBrain-u9X_XGC2.js +1 -0
- package/static/app/assets/{ProductFlow-DeBGF6qz.js → ProductFlow-CpX0BMr9.js} +1 -1
- package/static/app/assets/{QueryClientProvider-B3OjqSyJ.js → QueryClientProvider-CTiSBeU6.js} +1 -1
- package/static/app/assets/ReviewCard-C64YFHOR.js +3 -0
- package/static/app/assets/RunsListPanel-DKZEJcxF.js +1 -0
- package/static/app/assets/System-Dretrknf.js +1 -0
- package/static/app/assets/WorkflowGraph-CE6XgWjJ.js +1 -0
- package/static/app/assets/WorkflowsPanel-MKU05J7_.js +2 -0
- package/static/app/assets/actHelpers-BjMnKMCI.js +1 -0
- package/static/app/assets/arrow-left-Cbck4Ig2.js +1 -0
- package/static/app/assets/{bot-Dm3fmXAE.js → bot-Qgvc2PGU.js} +1 -1
- package/static/app/assets/{brain-C2XwdQL1.js → brain-BwGnubn8.js} +1 -1
- package/static/app/assets/{button-xXPeemQr.js → button-DEloiIsj.js} +1 -1
- package/static/app/assets/circle-check-CDygnRMn.js +1 -0
- package/static/app/assets/{circle-pause-B_lmNicW.js → circle-pause-CkkmXxA9.js} +1 -1
- package/static/app/assets/{circle-play-DSYCP0RD.js → circle-play-rnb6A1zq.js} +1 -1
- package/static/app/assets/{cpu-D7x-dtxi.js → cpu-CzcGFQQq.js} +1 -1
- package/static/app/assets/{download-BHuJr-5V.js → download-BTQigJvp.js} +1 -1
- package/static/app/assets/{folder-open-BiO31EwS.js → folder-open-CIXPPhhm.js} +1 -1
- package/static/app/assets/{hard-drive-CFEaZ-wP.js → hard-drive-CZXxdIcT.js} +1 -1
- package/static/app/assets/index-CHQbWj9a.js +13 -0
- package/static/app/assets/index-C_dThdD6.css +2 -0
- package/static/app/assets/{input-D3YrgxvO.js → input-CTZHuOXe.js} +1 -1
- package/static/app/assets/jsx-runtime-CU_pEDDh.js +1 -0
- package/static/app/assets/{link-2-3O-By3qc.js → link-2-BsG1NQUA.js} +1 -1
- package/static/app/assets/{permissionCopy-CNK2tfkz.js → permissionCopy-klyWL3ai.js} +1 -1
- package/static/app/assets/primitives-ZmN4jzq-.js +1 -0
- package/static/app/assets/search-xjKVb4Nh.js +1 -0
- package/static/app/assets/{share-2-BljIPAku.js → share-2-Cuv9rj7A.js} +1 -1
- package/static/app/assets/{shield-alert-WDP2DSTM.js → shield-alert-KKySFd03.js} +1 -1
- package/static/app/assets/{textarea-5v8vtDlK.js → textarea-CBwqgGSA.js} +1 -1
- package/static/app/assets/useFocusTrap-D93vds_Z.js +1 -0
- package/static/app/assets/{useMutation-Bi0PXQMC.js → useMutation-B9hHPD0p.js} +1 -1
- package/static/app/assets/{workspace-BsxrRYQI.js → workspace-JGzrc0D8.js} +1 -1
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/static/app/assets/Act-DC676bqE.js +0 -2
- package/static/app/assets/AdminConsole-aCxQgD2L.js +0 -1
- package/static/app/assets/Brain-Dbd0xvsc.js +0 -2
- package/static/app/assets/BrainHome-N00B-MAJ.js +0 -2
- package/static/app/assets/BrainSignals-CNA0d6xS.js +0 -1
- package/static/app/assets/Capture-BB19fo7P.js +0 -1
- package/static/app/assets/Chronicle-D8p3dqxZ.js +0 -1
- package/static/app/assets/CommandPalette-uVFYAa-6.js +0 -1
- package/static/app/assets/DigitalBrainExplorer-mH6ZSuvK.js +0 -321
- package/static/app/assets/Library-0q8Sdke7.js +0 -1
- package/static/app/assets/LivingBrain-wess-qJZ.js +0 -1
- package/static/app/assets/ReviewCard-DyTrDpy0.js +0 -3
- package/static/app/assets/RunsListPanel-CHJv2Qyw.js +0 -1
- package/static/app/assets/System-CyKGHQrW.js +0 -1
- package/static/app/assets/WorkflowGraph-B5nKCCGa.js +0 -1
- package/static/app/assets/WorkflowsPanel-C7RZNRGo.js +0 -2
- package/static/app/assets/actHelpers-6MYDH2kW.js +0 -1
- package/static/app/assets/arrow-left-DOnpwsVV.js +0 -1
- package/static/app/assets/circle-check-D44VI2ZE.js +0 -1
- package/static/app/assets/index-C8gwOf0C.css +0 -2
- package/static/app/assets/index-DCT79wzR.js +0 -13
- package/static/app/assets/jsx-runtime-bzQ4Vb5N.js +0 -1
- package/static/app/assets/primitives-B6DzQC3H.js +0 -1
- package/static/app/assets/search-BwMK0hjs.js +0 -1
- package/static/app/assets/sourceMeta-By2WIjlN.js +0 -1
- package/static/app/assets/useFocusTrap-ssiDeh6P.js +0 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/publish.yml)
|
|
13
13
|
[](LICENSE)
|
|
14
14
|
|
|
15
|
-

|
|
16
16
|
|
|
17
17
|
Lattice AI is a Digital Brain that lives on your computer. Chat, files,
|
|
18
18
|
folders, notes, and web pages all land in one knowledge graph you own.
|
|
@@ -42,19 +42,19 @@ LTCAI # then open http://127.0.0.1:4825/app
|
|
|
42
42
|
|
|
43
43
|
| | | |
|
|
44
44
|
| --- | --- | --- |
|
|
45
|
-
|  |  |  |
|
|
46
46
|
|
|
47
47
|
Screenshot index:
|
|
48
|
-
[output/release/v12.
|
|
48
|
+
[output/release/v12.4.0/SCREENSHOT_INDEX.md](output/release/v12.4.0/SCREENSHOT_INDEX.md)
|
|
49
49
|
|
|
50
50
|
## What you can do
|
|
51
51
|
|
|
52
52
|
| | |
|
|
53
53
|
| --- | --- |
|
|
54
|
-
| **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story  | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory  |
|
|
55
|
+
| **See how knowledge connects** — a real relationship graph, not a file list  | **Capture anything** — files, whole folders, notes, screenshots, web pages  |
|
|
56
|
+
| **Automate with review** — agent changes become proposals you approve first  | **Pick a model in one click** — recommended local models for your hardware  |
|
|
57
|
+
| **Watch a file become memory** — three named steps, not a pipeline diagram  | **Say how much it may do alone** — one dial in plain words  |
|
|
58
58
|
|
|
59
59
|
## Why this is yours
|
|
60
60
|
|
|
@@ -70,36 +70,41 @@ Screenshot index:
|
|
|
70
70
|
|
|
71
71
|
## Current Release
|
|
72
72
|
|
|
73
|
-
The current release is **12.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
73
|
+
The current release is **12.4.0 — Sharp Weight**:
|
|
74
|
+
|
|
75
|
+
The local and cloud model catalog adds **Qwen 3.8 27B 4-bit** and **Gemma 4 26B
|
|
76
|
+
A4B QAT / QAT-OptiQ 4-bit** builds, closes all Python (`pillow>=13,<14`) and npm
|
|
77
|
+
dependency security advisories, hardens engine URL scheme validation, and scopes
|
|
78
|
+
Tailwind CSS v4's oxide scanner to `frontend/`. The door is still **422
|
|
79
|
+
operations / 41 families** over a **20-route worker**. Cloud is still optional
|
|
80
|
+
and the default is still local.
|
|
81
|
+
|
|
82
|
+
- **Qwen 3.8 27B 4-bit local & cloud integration.** Added
|
|
83
|
+
`mlx-community/Qwen3.8-27B-4bit` (`16.1GB`, `qwen3_5`), wired GGUF/HF routes
|
|
84
|
+
(`ggml-org/Qwen3.8-27B-GGUF:Q4_K_M`, `Qwen/Qwen3.8-27B`) across all 5 local
|
|
85
|
+
engines, and added `Qwen/Qwen3.8-27B` / `qwen/qwen3.8-27b` to `together` and
|
|
86
|
+
`openrouter`.
|
|
87
|
+
- **Gemma 4 26B A4B QAT & QAT-OptiQ 4-bit builds.** Added
|
|
88
|
+
`mlx-community/gemma-4-26B-A4B-it-qat-4bit` (`15.6GB`, routed to Google's
|
|
89
|
+
official QAT GGUF `google/gemma-4-26B-A4B-it-qat-q4_0-gguf:Q4_0`) and
|
|
90
|
+
`mlx-community/gemma-4-26B-A4B-it-qat-OptiQ-4bit` (`21.9GB`, sensitivity-guided
|
|
91
|
+
mixed 4-bit/8-bit `mlx-optiq` build).
|
|
92
|
+
- **Dependency security audit closure & runtime hardening.** Upgraded `pillow`
|
|
93
|
+
to `>=13,<14`, resolved all npm lockfile advisories in root and
|
|
94
|
+
`vscode-extension`, enforced `http(s)://` scheme checks in `model_engines`,
|
|
95
|
+
and scoped `@import "tailwindcss" source("..");` in `frontend/src/styles.css`.
|
|
91
96
|
|
|
92
97
|
Release notes live in [docs/releases/](docs/releases/). This version:
|
|
93
|
-
[docs/releases/RELEASE_NOTES_v12.
|
|
98
|
+
[docs/releases/RELEASE_NOTES_v12.4.0.md](docs/releases/RELEASE_NOTES_v12.4.0.md).
|
|
94
99
|
Guide: [RELEASE.md](RELEASE.md) · History: [docs/CHANGELOG.md](docs/CHANGELOG.md).
|
|
95
100
|
|
|
96
|
-
Expected artifacts for 12.
|
|
101
|
+
Expected artifacts for 12.4.0 must use exact filenames:
|
|
97
102
|
|
|
98
|
-
- `dist/ltcai-12.
|
|
99
|
-
- `dist/ltcai-12.
|
|
100
|
-
- `ltcai-12.
|
|
101
|
-
- `dist/ltcai-12.
|
|
102
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.
|
|
103
|
+
- `dist/ltcai-12.4.0-py3-none-any.whl`
|
|
104
|
+
- `dist/ltcai-12.4.0.tar.gz`
|
|
105
|
+
- `ltcai-12.4.0.tgz`
|
|
106
|
+
- `dist/ltcai-12.4.0.vsix`
|
|
107
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.4.0_aarch64.dmg`
|
|
103
108
|
|
|
104
109
|
Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
|
|
105
110
|
|
|
@@ -170,7 +175,7 @@ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
|
|
|
170
175
|
pending-only, no Self-Model refiner, `delete_node` leaving `PART_OF`,
|
|
171
176
|
review events silent without an owner, KG-api ingest text-only, two
|
|
172
177
|
store cycles per review mutation) are listed with their reasons in
|
|
173
|
-
[docs/releases/RELEASE_NOTES_v12.
|
|
178
|
+
[docs/releases/RELEASE_NOTES_v12.4.0.md](docs/releases/RELEASE_NOTES_v12.4.0.md)
|
|
174
179
|
and prioritized in [docs/ROADMAP.md](docs/ROADMAP.md).
|
|
175
180
|
|
|
176
181
|
## Release History
|
|
@@ -182,6 +187,8 @@ same boundary. Earlier notes live in [docs/releases/](docs/releases/).
|
|
|
182
187
|
|
|
183
188
|
| Version | Theme |
|
|
184
189
|
| --- | --- |
|
|
190
|
+
| 12.4.0 | Sharp Weight |
|
|
191
|
+
| 12.3.0 | Live Wire |
|
|
185
192
|
| 12.2.1 | True Count |
|
|
186
193
|
| 12.2.0 | Small Voice |
|
|
187
194
|
| 12.1.0 | Fast Path |
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,71 @@ The top entry is either the current unreleased main-branch work or the current
|
|
|
4
4
|
release line. Older entries are historical and may describe behavior as it
|
|
5
5
|
existed at that release.
|
|
6
6
|
|
|
7
|
+
## [12.4.0] - 2026-11-11 — Sharp Weight
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Added `mlx-community/Qwen3.8-27B-4bit` (`16.1GB`, `qwen3_5`) to the local
|
|
11
|
+
model capability registry, multi-engine GGUF/HF routes
|
|
12
|
+
(`ggml-org/Qwen3.8-27B-GGUF:Q4_K_M`, `Qwen/Qwen3.8-27B`), `together` and
|
|
13
|
+
`openrouter` cloud catalogs, and Rust `CATALOG_HINTS`.
|
|
14
|
+
- Added `mlx-community/gemma-4-26B-A4B-it-qat-4bit` (`15.6GB`, routed to
|
|
15
|
+
Google's official QAT GGUF `google/gemma-4-26B-A4B-it-qat-q4_0-gguf:Q4_0` and
|
|
16
|
+
`google/gemma-4-26B-A4B-it-qat-q4_0-unquantized`) and
|
|
17
|
+
`mlx-community/gemma-4-26B-A4B-it-qat-OptiQ-4bit` (`21.9GB`, sensitivity-guided
|
|
18
|
+
mixed 4-bit/8-bit `mlx-optiq` build on Google's QAT base) to the capability
|
|
19
|
+
registry, engine routes, and Rust `CATALOG_HINTS`.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Upgraded `pillow` dependency constraint to `>=13,<14` in `pyproject.toml` and
|
|
23
|
+
`requirements.txt` (closing 39 CVEs in `pillow 12.3.0`), and synchronized
|
|
24
|
+
`reportlab>=4,<5` and `huggingface_hub>=1.0,<2` in `requirements.txt`.
|
|
25
|
+
- Updated npm dependencies and lockfiles in root and `vscode-extension`
|
|
26
|
+
(`vitest` and `@vitest/coverage-v8` `^4.1.12`, `glob` `^14.0.4`, `minimatch`
|
|
27
|
+
`^11.0.7`) so `npm audit` reports 0 vulnerabilities.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Hardened `_json_request` and `get_openai_compatible_server_models` in
|
|
31
|
+
`latticeai/services/model_engines.py` to reject non-`http(s)://` URL schemes.
|
|
32
|
+
- Fixed `admin_log_retention` in `rust/lattice-platform/src/adminops/admin/handlers.rs`
|
|
33
|
+
to read `state.auth.clock().now()` instead of real wall-clock `unix_now()`,
|
|
34
|
+
eliminating wall-clock drift against deterministic audit fixtures.
|
|
35
|
+
- Scoped `@import "tailwindcss" source("..");` in `frontend/src/styles.css` so
|
|
36
|
+
`@tailwindcss/oxide` only scans `frontend/` instead of walking `rust/target`.
|
|
37
|
+
|
|
38
|
+
## [12.3.0] - 2026-10-19 — Live Wire
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
- Full HTML structure parser in `POST /tools/inspect_html`: extracts `title`,
|
|
42
|
+
`links`, `scripts`, `stylesheets`, `images`, `forms`, and `headings`
|
|
43
|
+
(`h1`–`h6`) with `MAX_FILE_BYTES` enforcement.
|
|
44
|
+
- RFC 5987 `filename*=UTF-8''...` `Content-Disposition` attachment headers and
|
|
45
|
+
UTF-8 percent-decoding in `GET /tools/download`.
|
|
46
|
+
- Verified GGUF routing for `mlx-community/Qwen3.5-9B-MLX-4bit`
|
|
47
|
+
(`unsloth/Qwen3.5-9B-GGUF`) and `mlx-community/Qwen3.6-35B-A3B-4bit`
|
|
48
|
+
(`ggml-org/Qwen3.6-35B-A3B-GGUF`) across `ollama`, `lmstudio`, and `llamacpp`.
|
|
49
|
+
- Companion `mmproj-*.gguf` download and `--mmproj` flag in
|
|
50
|
+
`ensure_llamacpp_server`, plus `is_auxiliary_gguf` filtering (`mmproj-`,
|
|
51
|
+
`mtp-`, `dflash-`, `eagle3-`, `imatrix`) and `_shards_complete` verification
|
|
52
|
+
for `model.safetensors.index.json`.
|
|
53
|
+
- Small-model tool/MCP calling tolerances in `lattice-agent`: expanded
|
|
54
|
+
`KNOWN_ACTIONS`, stringified `arguments` recovery (trailing comma, truncation,
|
|
55
|
+
Python dict literal), OpenAI `tool_calls` array unwrapping, fenced HTML/code
|
|
56
|
+
block salvage for `write_file`/`local_write`, and `adopt_named_args` in
|
|
57
|
+
`perform_action`.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
- `_gguf_routes` now accepts per-repository `ollama_tag` (`Q4_0` for
|
|
61
|
+
`ggml-org/gemma-4-*-GGUF`, `MXFP4` for `ggml-org/gpt-oss-20b-GGUF`).
|
|
62
|
+
- Cloud and local provider defaults updated to current models (`grok-4.6`,
|
|
63
|
+
`Qwen/Qwen3.6-27B`, `qwen/qwen3.6-35b-a3b`, `x-ai/grok-4.6`,
|
|
64
|
+
`hf.co/ggml-org/gemma-4-12B-it-GGUF:Q4_0`, `google/gemma-4-12B-it`).
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
- Removed nonexistent `mlx-community/bge-m3` from `LOCAL_MLX_MODELS` while
|
|
68
|
+
retaining `bge-m3` in `OLLAMA_EMBEDDING_MODELS`.
|
|
69
|
+
- Fixed Latin-1 byte-to-char corruption on non-ASCII percent-encoded paths in
|
|
70
|
+
`/tools/download`.
|
|
71
|
+
|
|
7
72
|
## [12.2.1] - 2026-08-29 — True Count
|
|
8
73
|
|
|
9
74
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Community And Plugins
|
|
2
2
|
|
|
3
|
-
Current release: **12.
|
|
3
|
+
Current release: **12.4.0 — Sharp Weight**.
|
|
4
4
|
|
|
5
5
|
LatticeAI defines the path from a strong local-first framework (8.4.0
|
|
6
6
|
action-aware baseline, 8.5.0 registry+DI hardening, 8.6.0 capture/navigation
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Status: canonical** — current contributor guidance, kept in sync with the
|
|
4
4
|
> current release.
|
|
5
5
|
|
|
6
|
-
Current release: **12.
|
|
6
|
+
Current release: **12.4.0 — Sharp Weight**.
|
|
7
7
|
|
|
8
8
|
This document is the contributor onboarding path: how to boot the tree, where
|
|
9
9
|
a change belongs, which gates will go red, and the house rules that keep the
|
|
@@ -80,7 +80,7 @@ worker interpreter with `LTCAI_PYTHON` when both exist.
|
|
|
80
80
|
`rust/target/release/lattice-host`, then `rust/target/debug/lattice-host`. If
|
|
81
81
|
none exist it runs `cargo build -p lattice-host` (debug). A stale
|
|
82
82
|
`rust/target/release/lattice-host` wins over a current debug binary — pin or
|
|
83
|
-
rebuild (`cargo build -p lattice-host --release`) if `-V` is not 12.
|
|
83
|
+
rebuild (`cargo build -p lattice-host --release`) if `-V` is not 12.4.0.
|
|
84
84
|
|
|
85
85
|
Do not run `npm start` and `npm run dev` on the same port. The worker
|
|
86
86
|
entrypoint defaults to `LATTICEAI_PORT` or **4825**, the same port as the
|
|
@@ -237,7 +237,7 @@ in `rust/`.
|
|
|
237
237
|
Markdown) and `scripts/check_doc_status.mjs` (every relative link under the
|
|
238
238
|
root canonical docs and `docs/**`). A red line is a broken relative path —
|
|
239
239
|
fix the href or put the file where the href says. Canonical docs (this one
|
|
240
|
-
included) must carry `Current release: **12.
|
|
240
|
+
included) must carry `Current release: **12.4.0 — …**` matching
|
|
241
241
|
`package.json`; do not bump that marker here ahead of the release lane.
|
|
242
242
|
`npm run docs:check-current` is the release-set version pin
|
|
243
243
|
([`scripts/check_current_release_docs.mjs`](../scripts/check_current_release_docs.mjs)).
|
|
@@ -248,7 +248,7 @@ changelog entries that mention old versions stay.
|
|
|
248
248
|
### Release-evidence binding
|
|
249
249
|
|
|
250
250
|
`scripts/check_release_evidence_bound.mjs` (lint member 9) checks that
|
|
251
|
-
`output/release/v12.
|
|
251
|
+
`output/release/v12.4.0/SCREENSHOT_INDEX.md` still names the live
|
|
252
252
|
`static/app/asset-manifest.json` digest and the visual mock-server
|
|
253
253
|
fingerprint. It exists so a later `npm run build:assets` cannot ship
|
|
254
254
|
screenshots of an older UI, and so a mock-server edit cannot leave the
|
|
@@ -317,19 +317,19 @@ For user-facing, API, runtime, release, or packaging changes, check:
|
|
|
317
317
|
appears
|
|
318
318
|
|
|
319
319
|
The release-docs lane owns README / ARCHITECTURE / FEATURE_STATUS version
|
|
320
|
-
bumps. Do not move this file's `Current release` marker off 12.
|
|
320
|
+
bumps. Do not move this file's `Current release` marker off 12.4.0 ahead of
|
|
321
321
|
that lane.
|
|
322
322
|
|
|
323
323
|
Release/publish examples must use exact target-version filenames. Do not
|
|
324
324
|
document wildcard artifact upload commands.
|
|
325
325
|
|
|
326
|
-
For 12.
|
|
326
|
+
For 12.4.0 release work, exact artifacts are:
|
|
327
327
|
|
|
328
|
-
- `dist/ltcai-12.
|
|
329
|
-
- `dist/ltcai-12.
|
|
330
|
-
- `ltcai-12.
|
|
331
|
-
- `dist/ltcai-12.
|
|
332
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.
|
|
328
|
+
- `dist/ltcai-12.4.0-py3-none-any.whl`
|
|
329
|
+
- `dist/ltcai-12.4.0.tar.gz`
|
|
330
|
+
- `ltcai-12.4.0.tgz`
|
|
331
|
+
- `dist/ltcai-12.4.0.vsix`
|
|
332
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.4.0_aarch64.dmg`
|
|
333
333
|
|
|
334
334
|
The dmg is ad-hoc signed (effectively unsigned); `npm run release:validate`
|
|
335
335
|
checks the names and presence, not a Developer ID signature.
|
package/docs/ONBOARDING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Lattice AI Onboarding
|
|
2
2
|
|
|
3
|
-
Current release: **12.
|
|
3
|
+
Current release: **12.4.0 — Sharp Weight**.
|
|
4
4
|
|
|
5
5
|
The first-run goal is a five-minute path from "I opened the app" to "my Brain
|
|
6
6
|
has a source, a question, and proof." This page is the product contract behind
|
package/docs/OPERATIONS.md
CHANGED
package/docs/ROADMAP.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Status: reference** — point-in-time inventory, redated at v12.0.0. Not a
|
|
4
4
|
> canonical current-release document; version gates do not bind it.
|
|
5
5
|
|
|
6
|
-
As of **2026-
|
|
6
|
+
As of **2026-11-11**, against the 12.4.0 — Sharp Weight tree. The rows below
|
|
7
7
|
were gathered against 11.9.0 and re-checked when 12.0.0 shipped; what that
|
|
8
8
|
release closed is marked closed rather than deleted, so the ledger still
|
|
9
9
|
shows what was owed.
|
package/docs/TRUST_MODEL.md
CHANGED
package/docs/WHY_LATTICE.md
CHANGED
package/docs/kg-schema.md
CHANGED
package/latticeai/__init__.py
CHANGED
|
@@ -58,7 +58,6 @@ LOCAL_MLX_MODELS: Tuple[Tuple[str, int, bool], ...] = (
|
|
|
58
58
|
("mlx-community/multilingual-e5-large-mlx", 1024, True),
|
|
59
59
|
("mlx-community/snowflake-arctic-embed-l-v2.0-8bit", 1024, False),
|
|
60
60
|
("mlx-community/embeddinggemma-300m-4bit", 768, False),
|
|
61
|
-
("mlx-community/bge-m3", 1024, False),
|
|
62
61
|
)
|
|
63
62
|
|
|
64
63
|
#: Ollama model names that are embedders rather than chat models.
|
|
@@ -256,7 +256,7 @@ def _gemma4_runtime_candidates(raw_model_id: str) -> List[Dict[str, Any]]:
|
|
|
256
256
|
{
|
|
257
257
|
"engine": "ollama",
|
|
258
258
|
"runtime": "Ollama GGUF",
|
|
259
|
-
"load_id": "ollama:hf.co/ggml-org/gemma-4-12B-it-GGUF:
|
|
259
|
+
"load_id": "ollama:hf.co/ggml-org/gemma-4-12B-it-GGUF:Q4_0",
|
|
260
260
|
"available": None,
|
|
261
261
|
"role": "gguf_local_server",
|
|
262
262
|
},
|
|
@@ -354,7 +354,7 @@ def model_runtime_compatibility(model_id: str, engine: Optional[str] = None) ->
|
|
|
354
354
|
],
|
|
355
355
|
"alternatives": [
|
|
356
356
|
{"id": "mlx-community/gemma-4-26b-a4b-it-4bit", "name": "Gemma 4 26B A4B", "engine": "local_mlx"},
|
|
357
|
-
{"id": "ollama:hf.co/ggml-org/gemma-4-12B-it-GGUF:
|
|
357
|
+
{"id": "ollama:hf.co/ggml-org/gemma-4-12B-it-GGUF:Q4_0", "name": "Gemma 4 12B GGUF", "engine": "ollama"},
|
|
358
358
|
{"id": "lmstudio:ggml-org/gemma-4-12B-it-GGUF", "name": "Gemma 4 12B GGUF", "engine": "lmstudio"},
|
|
359
359
|
],
|
|
360
360
|
"action": "Runtime update needed",
|
|
@@ -27,29 +27,28 @@ OPENAI_COMPATIBLE_PROVIDERS = {
|
|
|
27
27
|
"together": {
|
|
28
28
|
"env_key": "TOGETHER_API_KEY",
|
|
29
29
|
"base_url": "https://api.together.xyz/v1",
|
|
30
|
-
"default_model": "Qwen/Qwen3-
|
|
30
|
+
"default_model": "Qwen/Qwen3.6-27B",
|
|
31
31
|
},
|
|
32
32
|
"xai": {
|
|
33
33
|
"env_key": "XAI_API_KEY",
|
|
34
34
|
"base_url": "https://api.x.ai/v1",
|
|
35
35
|
# ``grok-beta`` was xAI's 2024 preview id and has been decommissioned;
|
|
36
|
-
# a request naming it now 404s at the provider. ``grok-4.
|
|
37
|
-
# current flagship on api.x.ai and
|
|
38
|
-
|
|
39
|
-
"default_model": "grok-4.5",
|
|
36
|
+
# a request naming it now 404s at the provider. ``grok-4.6`` is the
|
|
37
|
+
# current flagship on api.x.ai and matches the Rust cloud adapter.
|
|
38
|
+
"default_model": "grok-4.6",
|
|
40
39
|
},
|
|
41
40
|
"ollama": {
|
|
42
41
|
"env_key": "OLLAMA_API_KEY",
|
|
43
42
|
"base_url_env": "OLLAMA_BASE_URL",
|
|
44
43
|
"base_url": "http://localhost:11434/v1",
|
|
45
|
-
"default_model": "hf.co/ggml-org/gemma-4-12B-it-GGUF:
|
|
44
|
+
"default_model": "hf.co/ggml-org/gemma-4-12B-it-GGUF:Q4_0",
|
|
46
45
|
"api_key_fallback": "ollama",
|
|
47
46
|
},
|
|
48
47
|
"vllm": {
|
|
49
48
|
"env_key": "VLLM_API_KEY",
|
|
50
49
|
"base_url_env": "VLLM_BASE_URL",
|
|
51
50
|
"base_url": "http://localhost:8000/v1",
|
|
52
|
-
"default_model": "
|
|
51
|
+
"default_model": "google/gemma-4-12B-it",
|
|
53
52
|
"api_key_fallback": "vllm",
|
|
54
53
|
},
|
|
55
54
|
"lmstudio": {
|
|
@@ -85,9 +84,10 @@ PROVIDER_MODEL_CATALOG = {
|
|
|
85
84
|
{"id": "anthropic/claude-opus-4.7", "name": "Claude Opus 4.7 via OpenRouter", "family": "Claude"},
|
|
86
85
|
{"id": "anthropic/claude-sonnet-4.6", "name": "Claude Sonnet 4.6 via OpenRouter", "family": "Claude"},
|
|
87
86
|
{"id": "anthropic/claude-haiku-4.5", "name": "Claude Haiku 4.5 via OpenRouter", "family": "Claude"},
|
|
88
|
-
{"id": "qwen/qwen3-
|
|
87
|
+
{"id": "qwen/qwen3.8-27b", "name": "Qwen3.8 27B via OpenRouter", "family": "Qwen"},
|
|
88
|
+
{"id": "qwen/qwen3.6-35b-a3b", "name": "Qwen3.6 35B A3B via OpenRouter", "family": "Qwen"},
|
|
89
89
|
{"id": "google/gemma-4-12b-it", "name": "Gemma 4 12B via OpenRouter", "family": "Gemma"},
|
|
90
|
-
{"id": "x-ai/grok-4.
|
|
90
|
+
{"id": "x-ai/grok-4.6", "name": "Grok 4.6 via OpenRouter", "family": "Grok"},
|
|
91
91
|
{"id": "meta-llama/llama-4-scout-17b-16e-instruct", "name": "Llama 4 Scout via OpenRouter", "family": "Llama"},
|
|
92
92
|
{"id": "google/gemini-2.5-flash", "name": "Gemini 2.5 Flash via OpenRouter", "family": "Gemini"},
|
|
93
93
|
],
|
|
@@ -95,7 +95,8 @@ PROVIDER_MODEL_CATALOG = {
|
|
|
95
95
|
{"id": "meta-llama/llama-4-scout-17b-16e-instruct", "name": "Llama 4 Scout", "family": "Llama"},
|
|
96
96
|
],
|
|
97
97
|
"together": [
|
|
98
|
-
{"id": "Qwen/Qwen3-
|
|
98
|
+
{"id": "Qwen/Qwen3.8-27B", "name": "Qwen3.8 27B", "family": "Qwen"},
|
|
99
|
+
{"id": "Qwen/Qwen3.6-27B", "name": "Qwen3.6 27B", "family": "Qwen"},
|
|
99
100
|
{"id": "google/gemma-4-12b-it", "name": "Gemma 4 12B", "family": "Gemma"},
|
|
100
101
|
{"id": "meta-llama/Llama-4-Scout-17B-16E-Instruct", "name": "Llama 4 Scout", "family": "Llama"},
|
|
101
102
|
],
|
|
@@ -105,7 +106,7 @@ PROVIDER_MODEL_CATALOG = {
|
|
|
105
106
|
# (grok-beta / grok-vision-beta) are not carried as fallbacks: a model
|
|
106
107
|
# the provider no longer serves is not compatibility, it is a 404 the
|
|
107
108
|
# user has to discover for themselves.
|
|
108
|
-
{"id": "grok-4.
|
|
109
|
+
{"id": "grok-4.6", "name": "Grok 4.6", "family": "Grok"},
|
|
109
110
|
],
|
|
110
111
|
}
|
|
111
112
|
|
|
@@ -300,7 +300,7 @@ _REGISTRY: List[ModelCapability] = [
|
|
|
300
300
|
architecture="qwen3_5",
|
|
301
301
|
download_size_gb=5.98,
|
|
302
302
|
quantization="4bit",
|
|
303
|
-
provider_hints=["local_mlx", "vllm"],
|
|
303
|
+
provider_hints=["local_mlx", "ollama", "vllm", "lmstudio", "llamacpp"],
|
|
304
304
|
download_strategy="hf_hub",
|
|
305
305
|
load_strategy="mlx_vlm",
|
|
306
306
|
hardware=HardwareProfile(
|
|
@@ -346,6 +346,32 @@ _REGISTRY: List[ModelCapability] = [
|
|
|
346
346
|
),
|
|
347
347
|
|
|
348
348
|
# ── MoE tier (32GB+ RAM) ─────────────────────────────────────────────────
|
|
349
|
+
ModelCapability(
|
|
350
|
+
id="mlx-community/gemma-4-26B-A4B-it-qat-4bit",
|
|
351
|
+
hf_repo_id="mlx-community/gemma-4-26B-A4B-it-qat-4bit",
|
|
352
|
+
name="Gemma 4 26B A4B QAT Instruct",
|
|
353
|
+
family="Gemma 4",
|
|
354
|
+
tag="local-vlm",
|
|
355
|
+
size="15.6GB",
|
|
356
|
+
architecture="gemma4",
|
|
357
|
+
download_size_gb=15.64,
|
|
358
|
+
quantization="4bit",
|
|
359
|
+
provider_hints=["local_mlx", "ollama", "vllm", "lmstudio", "llamacpp"],
|
|
360
|
+
download_strategy="hf_hub",
|
|
361
|
+
load_strategy="mlx_vlm",
|
|
362
|
+
hardware=HardwareProfile(
|
|
363
|
+
min_ram_gb=22.0, recommended_ram_gb=32.0, apple_silicon_pref=True,
|
|
364
|
+
notes="Quantization-Aware Trained (QAT) 4-bit MoE with 8-bit shared MLP and router layers; higher accuracy than standard 4-bit PTQ on 32GB+ Apple Silicon.",
|
|
365
|
+
),
|
|
366
|
+
source_country="미국", source_company="Google",
|
|
367
|
+
verification=VerificationStatus(
|
|
368
|
+
hf_exists=True, hf_last_checked="2026-11-11", has_config=True, has_tokenizer=True,
|
|
369
|
+
has_weights_hint=True, pipeline_tag="image-text-to-text", likes=9, license="apache-2.0",
|
|
370
|
+
notes="library_name=mlx, ungated, 3 safetensors shards, official Google QAT base.",
|
|
371
|
+
verified_by="hf-api-light",
|
|
372
|
+
),
|
|
373
|
+
display_priority=48,
|
|
374
|
+
),
|
|
349
375
|
ModelCapability(
|
|
350
376
|
id="mlx-community/gemma-4-26b-a4b-it-4bit",
|
|
351
377
|
hf_repo_id="mlx-community/gemma-4-26b-a4b-it-4bit",
|
|
@@ -371,6 +397,32 @@ _REGISTRY: List[ModelCapability] = [
|
|
|
371
397
|
),
|
|
372
398
|
display_priority=50,
|
|
373
399
|
),
|
|
400
|
+
ModelCapability(
|
|
401
|
+
id="mlx-community/gemma-4-26B-A4B-it-qat-OptiQ-4bit",
|
|
402
|
+
hf_repo_id="mlx-community/gemma-4-26B-A4B-it-qat-OptiQ-4bit",
|
|
403
|
+
name="Gemma 4 26B A4B QAT OptiQ Instruct",
|
|
404
|
+
family="Gemma 4",
|
|
405
|
+
tag="local-vlm",
|
|
406
|
+
size="21.9GB",
|
|
407
|
+
architecture="gemma4",
|
|
408
|
+
download_size_gb=21.89,
|
|
409
|
+
quantization="OptiQ-4bit",
|
|
410
|
+
provider_hints=["local_mlx"],
|
|
411
|
+
download_strategy="hf_hub",
|
|
412
|
+
load_strategy="mlx_vlm",
|
|
413
|
+
hardware=HardwareProfile(
|
|
414
|
+
min_ram_gb=28.0, recommended_ram_gb=48.0, apple_silicon_pref=True,
|
|
415
|
+
notes="Sensitivity-guided mixed 4-bit/8-bit OptiQ quantization built on Google's QAT Gemma 4 26B A4B base for higher reasoning and tool-calling fidelity.",
|
|
416
|
+
),
|
|
417
|
+
source_country="미국", source_company="Google",
|
|
418
|
+
verification=VerificationStatus(
|
|
419
|
+
hf_exists=True, hf_last_checked="2026-11-11", has_config=True, has_tokenizer=True,
|
|
420
|
+
has_weights_hint=True, pipeline_tag="text-generation", likes=4, license="apache-2.0",
|
|
421
|
+
notes="library_name=mlx, ungated, 5 safetensors shards, mlx-optiq sensitivity-guided mixed 4/8-bit.",
|
|
422
|
+
verified_by="hf-api-light",
|
|
423
|
+
),
|
|
424
|
+
display_priority=51,
|
|
425
|
+
),
|
|
374
426
|
ModelCapability(
|
|
375
427
|
id="mlx-community/Qwen3.6-35B-A3B-4bit",
|
|
376
428
|
hf_repo_id="mlx-community/Qwen3.6-35B-A3B-4bit",
|
|
@@ -381,7 +433,7 @@ _REGISTRY: List[ModelCapability] = [
|
|
|
381
433
|
architecture="qwen3_5_moe",
|
|
382
434
|
download_size_gb=20.43,
|
|
383
435
|
quantization="4bit",
|
|
384
|
-
provider_hints=["local_mlx", "vllm"],
|
|
436
|
+
provider_hints=["local_mlx", "ollama", "vllm", "lmstudio", "llamacpp"],
|
|
385
437
|
download_strategy="hf_hub",
|
|
386
438
|
load_strategy="mlx_vlm",
|
|
387
439
|
hardware=HardwareProfile(
|
|
@@ -398,6 +450,31 @@ _REGISTRY: List[ModelCapability] = [
|
|
|
398
450
|
),
|
|
399
451
|
|
|
400
452
|
# ── Large tier (48GB+ RAM) ───────────────────────────────────────────────
|
|
453
|
+
ModelCapability(
|
|
454
|
+
id="mlx-community/Qwen3.8-27B-4bit",
|
|
455
|
+
hf_repo_id="mlx-community/Qwen3.8-27B-4bit",
|
|
456
|
+
name="Qwen3.8 27B",
|
|
457
|
+
family="Qwen3.8",
|
|
458
|
+
tag="local-vlm",
|
|
459
|
+
size="16.1GB",
|
|
460
|
+
architecture="qwen3_5",
|
|
461
|
+
download_size_gb=16.08,
|
|
462
|
+
quantization="4bit",
|
|
463
|
+
provider_hints=["local_mlx", "ollama", "vllm", "lmstudio", "llamacpp"],
|
|
464
|
+
download_strategy="hf_hub",
|
|
465
|
+
load_strategy="mlx_vlm",
|
|
466
|
+
hardware=HardwareProfile(
|
|
467
|
+
min_ram_gb=24.0, recommended_ram_gb=48.0, apple_silicon_pref=True,
|
|
468
|
+
notes="Latest Qwen 3.8 27B dense multimodal model; higher coding, reasoning, and agentic tool accuracy than Qwen 3.6 27B at identical 16.1GB 4-bit footprint.",
|
|
469
|
+
),
|
|
470
|
+
source_country="중국", source_company="Alibaba",
|
|
471
|
+
verification=VerificationStatus(
|
|
472
|
+
hf_exists=True, hf_last_checked="2026-11-11", has_config=True, has_tokenizer=True,
|
|
473
|
+
has_weights_hint=True, pipeline_tag="image-text-to-text", likes=237, license="apache-2.0",
|
|
474
|
+
notes="library_name=mlx, ungated, 3 safetensors shards.", verified_by="hf-api-light",
|
|
475
|
+
),
|
|
476
|
+
display_priority=52,
|
|
477
|
+
),
|
|
401
478
|
ModelCapability(
|
|
402
479
|
id="mlx-community/Qwen3.6-27B-4bit",
|
|
403
480
|
hf_repo_id="mlx-community/Qwen3.6-27B-4bit",
|