ltcai 12.0.0 → 12.1.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 +46 -52
- package/docs/CHANGELOG.md +23 -0
- package/docs/CI_AND_RELEASE_GATES.md +13 -7
- 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 +2 -2
- 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/services/architecture_readiness.py +1 -1
- package/latticeai/services/product_readiness.py +1 -1
- package/package.json +1 -1
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/release_screen_claims.json +11 -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 +44 -44
- package/static/app/assets/{Act-Cf1L2709.js → Act-DCRUH46a.js} +2 -2
- package/static/app/assets/{AdminConsole-DPAbLTYV.js → AdminConsole-BFBj6OvN.js} +1 -1
- package/static/app/assets/{Brain-DqamGrj-.js → Brain-BXcoxIvb.js} +2 -2
- package/static/app/assets/{BrainHome-MHe2_RYs.js → BrainHome-IhcEPC3v.js} +1 -1
- package/static/app/assets/{BrainSignals-CQPPfyyH.js → BrainSignals-DrfYSNjR.js} +1 -1
- package/static/app/assets/{Capture-DGdIH_Zc.js → Capture-BsO_OAeh.js} +1 -1
- package/static/app/assets/{Chronicle-C-UlCJoJ.js → Chronicle-BUj_UH3D.js} +1 -1
- package/static/app/assets/{CommandPalette-WNT4EqUX.js → CommandPalette-B4SWOaR-.js} +1 -1
- package/static/app/assets/{DigitalBrainExplorer-CEBH5Cwc.js → DigitalBrainExplorer-S1GSsyIT.js} +1 -1
- package/static/app/assets/{Library-C6xd1dlf.js → Library-CKUR2eVb.js} +1 -1
- package/static/app/assets/{LivingBrain-BEk-0ohw.js → LivingBrain--2UoV3Ki.js} +1 -1
- package/static/app/assets/{ProductFlow-CZLm5iXh.js → ProductFlow-D7rB6Xsu.js} +1 -1
- package/static/app/assets/{ReviewCard-CEHG6evf.js → ReviewCard-UzQZ1ULT.js} +1 -1
- package/static/app/assets/{RunsListPanel-CLtEJSRW.js → RunsListPanel-CDGFQYMo.js} +1 -1
- package/static/app/assets/{System-CAxwBUXw.js → System-0OSxZrTp.js} +1 -1
- package/static/app/assets/{WorkflowGraph-Dj10RuGE.js → WorkflowGraph-BIcWZTUQ.js} +1 -1
- package/static/app/assets/{WorkflowsPanel-Kyeh_LIT.js → WorkflowsPanel-BeT5fmbk.js} +2 -2
- package/static/app/assets/{actHelpers-CtSmK9Dw.js → actHelpers-DhutJObL.js} +1 -1
- package/static/app/assets/arrow-left-BwJfcH8J.js +1 -0
- package/static/app/assets/{bot-DhUGRel2.js → bot-D8tZzKMD.js} +1 -1
- package/static/app/assets/{brain-CLkhHsHF.js → brain-DP2JPXSV.js} +1 -1
- package/static/app/assets/{button-CmaEqG1T.js → button-Tzf5D7L1.js} +1 -1
- package/static/app/assets/circle-check-D68nHcgS.js +1 -0
- package/static/app/assets/{circle-pause-l96izbxj.js → circle-pause-Druue_tZ.js} +1 -1
- package/static/app/assets/{circle-play-CrZa25_q.js → circle-play-BAht4SSW.js} +1 -1
- package/static/app/assets/{cpu-BaXudqwl.js → cpu-BPbmZRPp.js} +1 -1
- package/static/app/assets/{download-hCVFPiyc.js → download-BmxPZEwU.js} +1 -1
- package/static/app/assets/{folder-open-CHL82Yp7.js → folder-open-DokOmFQJ.js} +1 -1
- package/static/app/assets/{hard-drive-DDzET7lk.js → hard-drive-Cw6aEA2h.js} +1 -1
- package/static/app/assets/{index-D2H-wSl6.js → index-DhszK7A3.js} +3 -3
- package/static/app/assets/{input-Df1CAY_I.js → input-BCdHoZXA.js} +1 -1
- package/static/app/assets/{link-2-xNnTIX1_.js → link-2-CCModn4z.js} +1 -1
- package/static/app/assets/{permissionCopy-D3aWHco-.js → permissionCopy-BSp1jYG7.js} +1 -1
- package/static/app/assets/{primitives-BioD2slS.js → primitives-D01WcJn7.js} +1 -1
- package/static/app/assets/search-C_zAGfvO.js +1 -0
- package/static/app/assets/{share-2-FkzGf8Df.js → share-2-DMMkM8Iu.js} +1 -1
- package/static/app/assets/{shield-alert-B3dwzik4.js → shield-alert--mrCWQko.js} +1 -1
- package/static/app/assets/{sourceMeta-DQSY_tah.js → sourceMeta-nvd3Cdz3.js} +1 -1
- package/static/app/assets/{textarea-P8o6pvOP.js → textarea-DfayhQiX.js} +1 -1
- package/static/app/assets/{useFocusTrap-hswOIkXE.js → useFocusTrap-C5NsTvsI.js} +1 -1
- package/static/app/assets/{useMutation-OJLrYSRA.js → useMutation-D7IMQTeI.js} +1 -1
- package/static/app/assets/{workspace-BCuk3Ku9.js → workspace-C7xidB7c.js} +1 -1
- package/static/app/index.html +1 -1
- package/static/sw.js +1 -1
- package/static/app/assets/arrow-left-CRl5EO4D.js +0 -1
- package/static/app/assets/circle-check-CFgejkOS.js +0 -1
- package/static/app/assets/search-BzBw8YcW.js +0 -1
package/README.md
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
[](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai)
|
|
10
10
|
[](https://open-vsx.org/extension/parktaesoo/ltcai)
|
|
11
11
|
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
|
|
12
|
+
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/publish.yml)
|
|
12
13
|
[](LICENSE)
|
|
13
14
|
|
|
14
|
-

|
|
15
16
|
|
|
16
17
|
Chat, files, folders, notes, and web pages all flow into one durable knowledge
|
|
17
18
|
graph on your computer. The default is local. Cloud is optional — an
|
|
@@ -25,10 +26,10 @@ nothing leaves your machine without explicit consent.
|
|
|
25
26
|
|
|
26
27
|
| | |
|
|
27
28
|
| --- | --- |
|
|
28
|
-
| **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story, rewindable to any past moment  | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory  |
|
|
30
|
+
| **See how knowledge connects** — a real relationship graph, not a file list  | **Capture anything** — files, whole folders, notes, screenshots, web pages  |
|
|
31
|
+
| **Automate with review** — agent changes become proposals you approve first  | **Pick a model in one click** — recommended local models for your hardware  |
|
|
32
|
+
| **Watch a file become memory** — three named steps, not a pipeline diagram  | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way  |
|
|
32
33
|
|
|
33
34
|
## Why Lattice AI
|
|
34
35
|
|
|
@@ -63,57 +64,47 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
|
|
|
63
64
|
|
|
64
65
|
| | | |
|
|
65
66
|
| --- | --- | --- |
|
|
66
|
-
|  |  |  |
|
|
67
68
|
|
|
68
69
|
Screenshot index and capture notes:
|
|
69
|
-
[output/release/v12.
|
|
70
|
+
[output/release/v12.1.0/SCREENSHOT_INDEX.md](output/release/v12.1.0/SCREENSHOT_INDEX.md)
|
|
70
71
|
|
|
71
72
|
## Current Release
|
|
72
73
|
|
|
73
|
-
The current release is **12.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- **
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- **Remembering got faster and more careful.** Re-indexing an unchanged
|
|
95
|
-
folder went **33s → 0.26s**, a 991-item embedding backlog went 40
|
|
96
|
-
minutes → 15.3s, and a document's own section outline is now in the
|
|
97
|
-
graph, so an answer can name the heading it came from. Korean queries
|
|
98
|
-
strip their particles properly, and deleted files get a **「삭제된 파일
|
|
99
|
-
정리」** button instead of quietly lingering as memory.
|
|
100
|
-
- **Four honest gaps closed.** Restore takes effect without a restart,
|
|
101
|
-
`/setup/install` really installs on per-item consent, `POST /mcp` is
|
|
102
|
-
inside the OpenAPI contract, and pointer tools are declared as
|
|
103
|
-
`pip install "ltcai[pointer]"`.
|
|
74
|
+
The current release is **12.1.0 — Fast Path**:
|
|
75
|
+
|
|
76
|
+
12.0.0 opened the house. This release makes remembering the house faster:
|
|
77
|
+
folder ingest and vault-watch overlap parse/extract/embed across files,
|
|
78
|
+
one `/worker/embed` call carries the document plus its chunks, rebuild
|
|
79
|
+
hashes outside the SQLite write lock, and a Brain with 512+ vectors tries
|
|
80
|
+
`hnsw+rescore` when a worker sidecar is bound. The door is still **422
|
|
81
|
+
operations / 41 families** over a **20-route worker**. Cloud is still
|
|
82
|
+
optional and the default is still local.
|
|
83
|
+
|
|
84
|
+
- **Ingest is a pipeline, not a queue of one.** Up to four files parse and
|
|
85
|
+
embed at once. Unchanged files still skip on fingerprint and never
|
|
86
|
+
enter the pool. Writes still go through the single `GraphWriter`.
|
|
87
|
+
- **One embed round-trip per note.** The document vector and every chunk
|
|
88
|
+
share a `texts` body; extract runs beside it, not in front of it; the
|
|
89
|
+
native incremental index files those vectors instead of hashing them
|
|
90
|
+
again.
|
|
91
|
+
- **Search stays exact until it does not need to.** Env default is still
|
|
92
|
+
`brute`. At 512 vectors with a bound sidecar, search asks HNSW first
|
|
93
|
+
and falls back to the exact scan with the original `brute` block if
|
|
94
|
+
the sidecar cannot answer.
|
|
104
95
|
|
|
105
96
|
What this release does not close — small-model *content* quality, the
|
|
106
|
-
mock-only `api_key` path,
|
|
107
|
-
never deleting on its own, the ad-hoc-signed dmg — is listed in
|
|
108
|
-
[RELEASE_NOTES_v12.
|
|
97
|
+
mock-only `api_key` path, hash embeddings as the no-download fallback,
|
|
98
|
+
watch never deleting on its own, the ad-hoc-signed dmg — is listed in
|
|
99
|
+
[RELEASE_NOTES_v12.1.0.md](RELEASE_NOTES_v12.1.0.md).
|
|
109
100
|
|
|
110
|
-
Expected artifacts for 12.
|
|
101
|
+
Expected artifacts for 12.1.0 release must use exact filenames:
|
|
111
102
|
|
|
112
|
-
- `dist/ltcai-12.
|
|
113
|
-
- `dist/ltcai-12.
|
|
114
|
-
- `ltcai-12.
|
|
115
|
-
- `dist/ltcai-12.
|
|
116
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.
|
|
103
|
+
- `dist/ltcai-12.1.0-py3-none-any.whl`
|
|
104
|
+
- `dist/ltcai-12.1.0.tar.gz`
|
|
105
|
+
- `ltcai-12.1.0.tgz`
|
|
106
|
+
- `dist/ltcai-12.1.0.vsix`
|
|
107
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.1.0_aarch64.dmg`
|
|
117
108
|
|
|
118
109
|
Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
|
|
119
110
|
|
|
@@ -142,7 +133,7 @@ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
|
|
|
142
133
|
|
|
143
134
|
- External package registries are owner-published and can lag behind GitHub.
|
|
144
135
|
- SQLite is the live local Brain store. The optional PostgreSQL/pgvector
|
|
145
|
-
migration tooling is not part of the 12.
|
|
136
|
+
migration tooling is not part of the 12.1.0 worker.
|
|
146
137
|
- Docker, model downloads, cloud model calls, Brain Network, and update checks
|
|
147
138
|
require explicit user action. Cloud is optional: `cli_oauth` (`agy` /
|
|
148
139
|
`grok`) was live-checked at zero billing; the `api_key` path is
|
|
@@ -169,9 +160,11 @@ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
|
|
|
169
160
|
profile even a 0.5B model writes the requested file and reaches DONE;
|
|
170
161
|
a weak summary still fails the critic and the run ends
|
|
171
162
|
FAILED/NEEDS_REVIEW rather than claiming success.
|
|
172
|
-
- Vector search still defaults to `brute` — exact and byte-compatible
|
|
173
|
-
|
|
174
|
-
|
|
163
|
+
- Vector search env still defaults to `brute` — exact and byte-compatible
|
|
164
|
+
on a small Brain. At 512+ vectors with a bound worker sidecar it tries
|
|
165
|
+
`hnsw+rescore` first and falls back to the exact scan if the sidecar
|
|
166
|
+
cannot answer. `LATTICEAI_VECTOR_INDEX=hnsw` is still the explicit
|
|
167
|
+
opt-in.
|
|
175
168
|
- Watch never deletes on its own: a vanished file is reported, and
|
|
176
169
|
cleanup runs only through the confirmed folder-prune flow.
|
|
177
170
|
- The macOS dmg is ad-hoc signed — effectively unsigned — so first launch
|
|
@@ -181,7 +174,7 @@ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
|
|
|
181
174
|
pending-only, no Self-Model refiner, `delete_node` leaving `PART_OF`,
|
|
182
175
|
review events silent without an owner, KG-api ingest text-only, two
|
|
183
176
|
store cycles per review mutation) are listed with their reasons in
|
|
184
|
-
[RELEASE_NOTES_v12.
|
|
177
|
+
[RELEASE_NOTES_v12.1.0.md](RELEASE_NOTES_v12.1.0.md) and prioritized in
|
|
185
178
|
[docs/ROADMAP.md](docs/ROADMAP.md).
|
|
186
179
|
|
|
187
180
|
## Release History
|
|
@@ -193,6 +186,7 @@ same boundary. Earlier notes stay in the tree as `RELEASE_NOTES_v*.md` files.
|
|
|
193
186
|
|
|
194
187
|
| Version | Theme |
|
|
195
188
|
| --- | --- |
|
|
189
|
+
| 12.1.0 | Fast Path |
|
|
196
190
|
| 12.0.0 | Open House |
|
|
197
191
|
| 11.9.0 | Working Order |
|
|
198
192
|
| 11.8.0 | Travel Light |
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,29 @@ 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.1.0] - 2026-08-29 — Fast Path
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Folder ingest and vault-watch overlap up to four files (`INGEST_INFLIGHT`).
|
|
11
|
+
Stamp-skip never enters the pool.
|
|
12
|
+
- One `POST /worker/embed` per note: document text then every chunk.
|
|
13
|
+
Extract runs beside embed, not in front of it.
|
|
14
|
+
- Default brute search tries `hnsw+rescore` when the store has 512+ vectors
|
|
15
|
+
and a worker sidecar is bound; failure keeps the original `brute` index
|
|
16
|
+
block.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- `rebuild_vector_index` embeds outside the write transaction.
|
|
20
|
+
- `write_vectors_with` files the ingest-time supplied vectors so the hash
|
|
21
|
+
model does not re-derive them.
|
|
22
|
+
- Empty `ltcai[postgres]` extra alias; the live Postgres writer left in 11.6.0.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Weekly pip-audit failed on a missing markdown report when there were no
|
|
26
|
+
findings.
|
|
27
|
+
- Weekly Postgres integration job failed because
|
|
28
|
+
`tests/integration/test_postgres_migration_live.py` was gone.
|
|
29
|
+
|
|
7
30
|
## [12.0.0] - 2026-08-18 — Open House
|
|
8
31
|
|
|
9
32
|
### Added
|
|
@@ -120,13 +120,19 @@ uploaded as artifacts. Regenerate locally with `scripts/generate_sbom.py`.
|
|
|
120
120
|
|
|
121
121
|
## Postgres integration gate
|
|
122
122
|
|
|
123
|
-
`postgres-integration.yml` runs the
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
123
|
+
`postgres-integration.yml` still runs weekly + on demand, but the live
|
|
124
|
+
SQLite→Postgres writer it used to drive left in 11.6.0 with the Python
|
|
125
|
+
product write path. The suite file remains so a Monday cron is not a
|
|
126
|
+
missing-file failure; it skip-explains the retirement. SQLite is the live
|
|
127
|
+
Brain store. Restore a native pgvector door before making this job start
|
|
128
|
+
a container again.
|
|
129
|
+
|
|
130
|
+
## Dependency-audit clean run
|
|
131
|
+
|
|
132
|
+
`pip-audit --format markdown --output FILE` writes the file only when it
|
|
133
|
+
has findings. A clean run used to then fail on `cat FILE`. The workflow
|
|
134
|
+
now writes a placeholder report when the file is missing so a clean audit
|
|
135
|
+
is green.
|
|
130
136
|
|
|
131
137
|
## Visual smoke and sidecar E2E
|
|
132
138
|
|
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.1.0 — Fast Path**.
|
|
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.1.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.1.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.1.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.1.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.1.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.1.0-py3-none-any.whl`
|
|
329
|
+
- `dist/ltcai-12.1.0.tar.gz`
|
|
330
|
+
- `ltcai-12.1.0.tgz`
|
|
331
|
+
- `dist/ltcai-12.1.0.vsix`
|
|
332
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_12.1.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.1.0 — Fast Path**.
|
|
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-08-
|
|
6
|
+
As of **2026-08-29**, against the 12.1.0 — Fast Path 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.
|
|
@@ -45,7 +45,7 @@ rather than being deleted: the small-model harness (P1) and the HNSW index
|
|
|
45
45
|
| --- | --- | --- | --- | --- |
|
|
46
46
|
| **Small-model agent-run content quality** | **Half closed in 12.0.0.** The mechanical half is done: the `guided` profile stops asking for JSON, the dial is chosen by a measured probe, a run that produces nothing demotes itself downward mid-run, and a 0.5B model reached `DONE` in 3.9s with a real file. The half still open is the *writing* — a weak summary fails the critic and the run ends `FAILED` / `NEEDS_REVIEW`. The cross-model matrix is improving from 11 of 18. | L | **P1** — still the voice the product ships on 8GB, and still the reason a first run can end in a review state. | Keep measuring with the loop's own parser, not a second harness. New answers go under new fixture keys (`agent_loop` `*_extended`); do not rewrite frozen rows. The remaining lever is content, not format: better plan→content prompting and a critic that says *what* was thin, per-model hacks still forbidden. |
|
|
47
47
|
| **Real-embedding default rollout** | **Narrowed in 12.0.0, not closed.** Auto-detection now adopts a real downloaded embedding model when one is present, the hash model is labelled `fallback` rather than presented as semantic, and vector identity is filtered by `(model, dim)` so two spaces cannot mix. What is still true: on a machine that has downloaded nothing, the default remains `lattice-local-hash-v1` (blake2 bag-of-features), and "semantic" recall is then a hash of tokens. | M | **P1** — recall is the product. Hash as a labelled fallback is fine; hash as the silent default is not. | Make the first-run flow offer the embedding model the way it offers a chat model, and keep the switch honest: drain the backlog through `lattice-jobs` so a change of embedder is a reindex, and report `stale_embedder` until the queue is empty. |
|
|
48
|
-
| **Worker-side batch embed** | **
|
|
48
|
+
| **Worker-side batch embed** | **Closed in 12.1.0 on the ingest-time door**: one `/worker/embed` body is the document vector followed by every chunk, extract runs beside it, and `write_vectors_with` files those vectors. The drain planner stays the backlog path. Folder/watch overlap up to four files. What remains for a real-embed default is auto-detection on first run, not a second embedder. | M | **P1 → closed for the ingest door; the real-embed default row above is still open.** | Keep. Do not open a second embedder inside `lattice-core`. |
|
|
49
49
|
|
|
50
50
|
## P2 — real, but the product still works without them
|
|
51
51
|
|
package/docs/TRUST_MODEL.md
CHANGED
package/docs/WHY_LATTICE.md
CHANGED
package/docs/kg-schema.md
CHANGED
package/latticeai/__init__.py
CHANGED
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ const root = process.cwd();
|
|
|
6
6
|
const pkg = JSON.parse(readFileSync(path.join(root, "package.json"), "utf8"));
|
|
7
7
|
const version = pkg.version;
|
|
8
8
|
const releaseDir = `output/release/v${version}`;
|
|
9
|
-
const releaseTheme = "
|
|
9
|
+
const releaseTheme = "Fast Path";
|
|
10
10
|
const title = `${version} — ${releaseTheme}`;
|
|
11
11
|
const escapedVersion = version.replaceAll(".", "\\.");
|
|
12
12
|
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
"whole-image delta: naming where the change is makes the claim more",
|
|
21
21
|
"specific, not less."
|
|
22
22
|
],
|
|
23
|
+
"12.1.0": {
|
|
24
|
+
"_why": [
|
|
25
|
+
"Fast Path is a backend ingest/search release. Folder ingest overlaps",
|
|
26
|
+
"parse and embed, one /worker/embed body carries the document plus its",
|
|
27
|
+
"chunks, rebuild hashes outside the write lock, and a Brain with 512+",
|
|
28
|
+
"vectors tries hnsw+rescore when a worker sidecar is bound.",
|
|
29
|
+
"",
|
|
30
|
+
"No screen was redesigned. Empty claim set on purpose. Unclaimed screens",
|
|
31
|
+
"are still measured and printed; they are not gated."
|
|
32
|
+
]
|
|
33
|
+
},
|
|
23
34
|
"12.0.0": {
|
|
24
35
|
"_why": [
|
|
25
36
|
"Open House brings component and resilience updates across the frontend:",
|
package/src-tauri/Cargo.lock
CHANGED
|
@@ -1863,7 +1863,7 @@ dependencies = [
|
|
|
1863
1863
|
|
|
1864
1864
|
[[package]]
|
|
1865
1865
|
name = "lattice-agent"
|
|
1866
|
-
version = "12.
|
|
1866
|
+
version = "12.1.0"
|
|
1867
1867
|
dependencies = [
|
|
1868
1868
|
"axum",
|
|
1869
1869
|
"base64 0.22.1",
|
|
@@ -1880,7 +1880,7 @@ dependencies = [
|
|
|
1880
1880
|
|
|
1881
1881
|
[[package]]
|
|
1882
1882
|
name = "lattice-ai-desktop"
|
|
1883
|
-
version = "12.
|
|
1883
|
+
version = "12.1.0"
|
|
1884
1884
|
dependencies = [
|
|
1885
1885
|
"lattice-host",
|
|
1886
1886
|
"lattice-jobs",
|
|
@@ -1895,7 +1895,7 @@ dependencies = [
|
|
|
1895
1895
|
|
|
1896
1896
|
[[package]]
|
|
1897
1897
|
name = "lattice-auth"
|
|
1898
|
-
version = "12.
|
|
1898
|
+
version = "12.1.0"
|
|
1899
1899
|
dependencies = [
|
|
1900
1900
|
"axum",
|
|
1901
1901
|
"base64 0.22.1",
|
|
@@ -1912,7 +1912,7 @@ dependencies = [
|
|
|
1912
1912
|
|
|
1913
1913
|
[[package]]
|
|
1914
1914
|
name = "lattice-chat"
|
|
1915
|
-
version = "12.
|
|
1915
|
+
version = "12.1.0"
|
|
1916
1916
|
dependencies = [
|
|
1917
1917
|
"axum",
|
|
1918
1918
|
"bytes",
|
|
@@ -1934,7 +1934,7 @@ dependencies = [
|
|
|
1934
1934
|
|
|
1935
1935
|
[[package]]
|
|
1936
1936
|
name = "lattice-core"
|
|
1937
|
-
version = "12.
|
|
1937
|
+
version = "12.1.0"
|
|
1938
1938
|
dependencies = [
|
|
1939
1939
|
"blake2",
|
|
1940
1940
|
"bytes",
|
|
@@ -1950,7 +1950,7 @@ dependencies = [
|
|
|
1950
1950
|
|
|
1951
1951
|
[[package]]
|
|
1952
1952
|
name = "lattice-host"
|
|
1953
|
-
version = "12.
|
|
1953
|
+
version = "12.1.0"
|
|
1954
1954
|
dependencies = [
|
|
1955
1955
|
"axum",
|
|
1956
1956
|
"lattice-agent",
|
|
@@ -1971,7 +1971,7 @@ dependencies = [
|
|
|
1971
1971
|
|
|
1972
1972
|
[[package]]
|
|
1973
1973
|
name = "lattice-ingest"
|
|
1974
|
-
version = "12.
|
|
1974
|
+
version = "12.1.0"
|
|
1975
1975
|
dependencies = [
|
|
1976
1976
|
"axum",
|
|
1977
1977
|
"lattice-auth",
|
|
@@ -1986,7 +1986,7 @@ dependencies = [
|
|
|
1986
1986
|
|
|
1987
1987
|
[[package]]
|
|
1988
1988
|
name = "lattice-jobs"
|
|
1989
|
-
version = "12.
|
|
1989
|
+
version = "12.1.0"
|
|
1990
1990
|
dependencies = [
|
|
1991
1991
|
"axum",
|
|
1992
1992
|
"lattice-auth",
|
|
@@ -2001,7 +2001,7 @@ dependencies = [
|
|
|
2001
2001
|
|
|
2002
2002
|
[[package]]
|
|
2003
2003
|
name = "lattice-platform"
|
|
2004
|
-
version = "12.
|
|
2004
|
+
version = "12.1.0"
|
|
2005
2005
|
dependencies = [
|
|
2006
2006
|
"axum",
|
|
2007
2007
|
"base64 0.22.1",
|
|
@@ -2024,7 +2024,7 @@ dependencies = [
|
|
|
2024
2024
|
|
|
2025
2025
|
[[package]]
|
|
2026
2026
|
name = "lattice-retrieval"
|
|
2027
|
-
version = "12.
|
|
2027
|
+
version = "12.1.0"
|
|
2028
2028
|
dependencies = [
|
|
2029
2029
|
"axum",
|
|
2030
2030
|
"fancy-regex",
|
package/src-tauri/Cargo.toml
CHANGED