ltcai 11.9.0 → 12.0.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.
Files changed (127) hide show
  1. package/README.md +80 -59
  2. package/docs/CHANGELOG.md +92 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +267 -119
  5. package/docs/ENTERPRISE.md +1 -1
  6. package/docs/MULTI_AGENT_RUNTIME.md +4 -4
  7. package/docs/ONBOARDING.md +13 -3
  8. package/docs/OPERATIONS.md +13 -4
  9. package/docs/REALTIME_COLLABORATION.md +1 -1
  10. package/docs/ROADMAP.md +113 -0
  11. package/docs/TRUST_MODEL.md +16 -2
  12. package/docs/WHY_LATTICE.md +8 -2
  13. package/docs/WORKFLOW_DESIGNER.md +2 -2
  14. package/docs/kg-schema.md +51 -5
  15. package/docs/mcp-tools.md +17 -0
  16. package/lattice_brain/__init__.py +1 -1
  17. package/lattice_brain/graph/_kg_common/extraction.py +459 -105
  18. package/lattice_brain/graph/_kg_common/normalize.py +305 -0
  19. package/lattice_brain/graph/_kg_common/patterns.py +275 -0
  20. package/lattice_brain/graph/_kg_common/relations.py +12 -3
  21. package/lattice_brain/graph/_kg_common/sections.py +107 -0
  22. package/lattice_brain/graph/_kg_constants.py +7 -0
  23. package/latticeai/__init__.py +1 -1
  24. package/latticeai/api/agent_worker_seam.py +32 -0
  25. package/latticeai/api/worker_compute.py +78 -3
  26. package/latticeai/core/embedding_providers/__init__.py +16 -0
  27. package/latticeai/core/embedding_providers/autodetect.py +302 -0
  28. package/latticeai/core/embedding_providers/base.py +25 -0
  29. package/latticeai/core/embedding_providers/profiles.py +44 -0
  30. package/latticeai/core/embedding_providers/text.py +74 -8
  31. package/latticeai/core/vector_index/__init__.py +61 -0
  32. package/latticeai/core/vector_index/hnsw.py +383 -0
  33. package/latticeai/core/vector_index/sidecar.py +329 -0
  34. package/latticeai/models/router/generation.py +101 -22
  35. package/latticeai/models/router/loading.py +109 -4
  36. package/latticeai/runtime/brain_runtime.py +43 -9
  37. package/latticeai/runtime/build_phases/worker_profile.py +13 -4
  38. package/latticeai/services/architecture_readiness.py +2 -2
  39. package/latticeai/services/product_readiness.py +10 -5
  40. package/latticeai/services/search_service.py +7 -0
  41. package/latticeai/tools/__init__.py +6 -1
  42. package/latticeai/tools/documents.py +12 -0
  43. package/latticeai/tools/markup.py +152 -0
  44. package/package.json +2 -1
  45. package/scripts/check_current_release_docs.mjs +1 -1
  46. package/scripts/compose_openapi.py +2 -0
  47. package/scripts/openapi_route_families.json +7 -3
  48. package/scripts/publish_release.mjs +157 -0
  49. package/scripts/release_screen_claims.json +12 -0
  50. package/src-tauri/Cargo.lock +44 -10
  51. package/src-tauri/Cargo.toml +1 -1
  52. package/src-tauri/tauri.conf.json +1 -1
  53. package/static/app/asset-manifest.json +47 -41
  54. package/static/app/assets/Act-Cf1L2709.js +2 -0
  55. package/static/app/assets/AdminConsole-DPAbLTYV.js +1 -0
  56. package/static/app/assets/Brain-DqamGrj-.js +2 -0
  57. package/static/app/assets/BrainHome-MHe2_RYs.js +2 -0
  58. package/static/app/assets/BrainSignals-CQPPfyyH.js +1 -0
  59. package/static/app/assets/Capture-DGdIH_Zc.js +1 -0
  60. package/static/app/assets/Chronicle-C-UlCJoJ.js +1 -0
  61. package/static/app/assets/CommandPalette-WNT4EqUX.js +1 -0
  62. package/static/app/assets/DigitalBrainExplorer-CEBH5Cwc.js +321 -0
  63. package/static/app/assets/Library-C6xd1dlf.js +1 -0
  64. package/static/app/assets/LivingBrain-BEk-0ohw.js +1 -0
  65. package/static/app/assets/ProductFlow-CZLm5iXh.js +1 -0
  66. package/static/app/assets/QueryClientProvider-B3OjqSyJ.js +1 -0
  67. package/static/app/assets/ReviewCard-CEHG6evf.js +3 -0
  68. package/static/app/assets/RunsListPanel-CLtEJSRW.js +1 -0
  69. package/static/app/assets/System-CAxwBUXw.js +1 -0
  70. package/static/app/assets/WorkflowGraph-Dj10RuGE.js +1 -0
  71. package/static/app/assets/WorkflowsPanel-Kyeh_LIT.js +2 -0
  72. package/static/app/assets/actHelpers-CtSmK9Dw.js +1 -0
  73. package/static/app/assets/arrow-left-CRl5EO4D.js +1 -0
  74. package/static/app/assets/{bot-Bc3Q27YR.js → bot-DhUGRel2.js} +1 -1
  75. package/static/app/assets/brain-CLkhHsHF.js +1 -0
  76. package/static/app/assets/button-CmaEqG1T.js +1 -0
  77. package/static/app/assets/circle-check-CFgejkOS.js +1 -0
  78. package/static/app/assets/{circle-pause-BGMiV8UU.js → circle-pause-l96izbxj.js} +1 -1
  79. package/static/app/assets/{circle-play-DoanLHnd.js → circle-play-CrZa25_q.js} +1 -1
  80. package/static/app/assets/{cpu-DwzNf82m.js → cpu-BaXudqwl.js} +1 -1
  81. package/static/app/assets/{download-Ddw49yCV.js → download-hCVFPiyc.js} +1 -1
  82. package/static/app/assets/{folder-open-Brd6Kvto.js → folder-open-CHL82Yp7.js} +1 -1
  83. package/static/app/assets/{hard-drive-Bu-DTJdB.js → hard-drive-DDzET7lk.js} +1 -1
  84. package/static/app/assets/{index-CGdg_aq9.css → index-CB93CZWW.css} +1 -1
  85. package/static/app/assets/index-D2H-wSl6.js +13 -0
  86. package/static/app/assets/input-Df1CAY_I.js +1 -0
  87. package/static/app/assets/jsx-runtime-bzQ4Vb5N.js +1 -0
  88. package/static/app/assets/{link-2-DZ4OA5tJ.js → link-2-xNnTIX1_.js} +1 -1
  89. package/static/app/assets/{permissionCopy-D9TR0F8b.js → permissionCopy-D3aWHco-.js} +1 -1
  90. package/static/app/assets/primitives-BioD2slS.js +1 -0
  91. package/static/app/assets/search-BzBw8YcW.js +1 -0
  92. package/static/app/assets/{share-2-BC5FirFv.js → share-2-FkzGf8Df.js} +1 -1
  93. package/static/app/assets/{shield-alert-DUbR2W2s.js → shield-alert-B3dwzik4.js} +1 -1
  94. package/static/app/assets/sourceMeta-DQSY_tah.js +1 -0
  95. package/static/app/assets/textarea-P8o6pvOP.js +1 -0
  96. package/static/app/assets/useFocusTrap-hswOIkXE.js +1 -0
  97. package/static/app/assets/useMutation-OJLrYSRA.js +1 -0
  98. package/static/app/assets/workspace-BCuk3Ku9.js +1 -0
  99. package/static/app/index.html +4 -4
  100. package/static/sw.js +1 -1
  101. package/static/app/assets/Act-B4WT81kh.js +0 -1
  102. package/static/app/assets/AdminConsole--Wf71m-o.js +0 -1
  103. package/static/app/assets/Brain-CtYaa26c.js +0 -321
  104. package/static/app/assets/BrainHome-Be2VPJEc.js +0 -2
  105. package/static/app/assets/BrainSignals-C0__xgpG.js +0 -1
  106. package/static/app/assets/Capture-DdNi5Peb.js +0 -1
  107. package/static/app/assets/Chronicle-B3hNveeI.js +0 -1
  108. package/static/app/assets/CommandPalette-CIsnSsFL.js +0 -1
  109. package/static/app/assets/Library-Bl5XClFV.js +0 -1
  110. package/static/app/assets/LivingBrain-DjkTB_gh.js +0 -1
  111. package/static/app/assets/ProductFlow-DCUNRNHs.js +0 -1
  112. package/static/app/assets/ReviewCard-CD3yWvUB.js +0 -3
  113. package/static/app/assets/System-BJ6jQ_SL.js +0 -1
  114. package/static/app/assets/arrow-left-6_28Z0qH.js +0 -1
  115. package/static/app/assets/brain-B9BDrMTe.js +0 -1
  116. package/static/app/assets/button-D6JcpYcf.js +0 -1
  117. package/static/app/assets/circle-check-BFu9lD-3.js +0 -1
  118. package/static/app/assets/index-CWKRRsLW.js +0 -10
  119. package/static/app/assets/input-CEqsxtil.js +0 -1
  120. package/static/app/assets/primitives-DORg7Z_7.js +0 -1
  121. package/static/app/assets/search-0NQ21wXe.js +0 -1
  122. package/static/app/assets/textarea-jtQcRSXo.js +0 -1
  123. package/static/app/assets/useFocusTrap-HRemcWId.js +0 -1
  124. package/static/app/assets/useMutation-DqlFE-Bw.js +0 -1
  125. package/static/app/assets/useQuery-BizqBNGw.js +0 -1
  126. package/static/app/assets/utils-WgW4V69R.js +0 -4
  127. package/static/app/assets/workspace-DSek3jCY.js +0 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![CI Status](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
12
12
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
13
13
 
14
- ![v11.9.0 Living Brain walkthrough](output/release/v11.9.0/gifs/v11.9.0-living-brain-walkthrough.gif)
14
+ ![v12.0.0 Living Brain walkthrough](output/release/v12.0.0/gifs/v12.0.0-living-brain-walkthrough.gif)
15
15
 
16
16
  Chat, files, folders, notes, and web pages all flow into one durable knowledge
17
17
  graph on your computer. The default is local. Cloud is optional — an
@@ -25,10 +25,10 @@ nothing leaves your machine without explicit consent.
25
25
 
26
26
  | | |
27
27
  | --- | --- |
28
- | **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story, rewindable to any past moment ![Brain Chronicle](output/release/v11.9.0/screenshots/13-chronicle.png) | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v11.9.0/screenshots/04-brain-chat-home.png) |
29
- | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v11.9.0/screenshots/05-memory-graph.png) | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v11.9.0/screenshots/06-capture.png) |
30
- | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v11.9.0/screenshots/12-review-center.png) | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v11.9.0/screenshots/02-recommended-models.png) |
31
- | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v11.9.0/screenshots/11-knowledge-journey.png) | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way ![Settings](output/release/v11.9.0/screenshots/08-system.png) |
28
+ | **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story, rewindable to any past moment ![Brain Chronicle](output/release/v12.0.0/screenshots/13-chronicle.png) | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v12.0.0/screenshots/04-brain-chat-home.png) |
29
+ | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v12.0.0/screenshots/05-memory-graph.png) | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v12.0.0/screenshots/06-capture.png) |
30
+ | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v12.0.0/screenshots/12-review-center.png) | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v12.0.0/screenshots/02-recommended-models.png) |
31
+ | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v12.0.0/screenshots/11-knowledge-journey.png) | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way ![Settings](output/release/v12.0.0/screenshots/08-system.png) |
32
32
 
33
33
  ## Why Lattice AI
34
34
 
@@ -40,6 +40,10 @@ nothing leaves your machine without explicit consent.
40
40
  when captured pages extracted poorly, and when the vector index is catching up.
41
41
  - **Safe automation** — automations are consent-first drafts; edits to existing
42
42
  content always pass through a reviewable proposal with a diff.
43
+ - **Runs on the model your machine can hold** — the loop measures what a model
44
+ can actually produce and adapts: a model too small to emit a tool call is
45
+ walked through numbered choices instead, with the same permission gates,
46
+ snapshots and sanitizers as every other profile.
43
47
 
44
48
  매번 AI에게 프로젝트 맥락을 다시 설명하고 있다면, 지식이 여러 서비스에 흩어져
45
49
  있다면, 그 기억을 특정 회사가 아니라 내가 소유하고 싶다면 — Lattice AI가 그
@@ -59,49 +63,57 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
59
63
 
60
64
  | | | |
61
65
  | --- | --- | --- |
62
- | ![Login](output/release/v11.9.0/screenshots/01-login.png) | ![Model install](output/release/v11.9.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v11.9.0/screenshots/07-model-library.png) |
66
+ | ![Login](output/release/v12.0.0/screenshots/01-login.png) | ![Model install](output/release/v12.0.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v12.0.0/screenshots/07-model-library.png) |
63
67
 
64
68
  Screenshot index and capture notes:
65
- [output/release/v11.9.0/SCREENSHOT_INDEX.md](output/release/v11.9.0/SCREENSHOT_INDEX.md)
69
+ [output/release/v12.0.0/SCREENSHOT_INDEX.md](output/release/v12.0.0/SCREENSHOT_INDEX.md)
66
70
 
67
71
  ## Current Release
68
72
 
69
- The current release is **11.9.0 — Working Order**:
70
-
71
- 11.8.0 took weight off the door. This release puts the remaining Current
72
- stubs and the half-wired lanes in working order. The door is unchanged:
73
- `lattice-host` still serves **420 operations across 41 route families**,
74
- and the AI worker is still **19 routes** (`/worker/sysinfo` gained
75
- additive `capabilities` and `python_version`). Cloud is optional; the
76
- default is local; OAuth CLI (`agy` / `grok`) is supported.
77
-
78
- - **Thirteen documented-Current stubs now answer.** Model
79
- recommendations probe RAM and the worker catalog. Setup scan/auto are
80
- real probes; install is real-or-manual (brew/pip stay manual).
81
- Computer-use status reads worker capabilities. `/agent/eval` is a
82
- deterministic skill eval. `/agents/api/run` is a live single-agent
83
- pass. Automation mines `conversation_messages`. Workflow run is a
84
- per-step executor; `build`/`deploy_project` run governed scripts.
85
- - **Hybrid cloud is wired.** ReviewSink and a shape-only egress audit
86
- are bound in production. Dual credentials: `api_key` (mock-verified
87
- only) and `cli_oauth` (live OAuth E2E at zero billing). Escalation is
88
- `auto` / `manual` / `always`; `local_only` on the request always wins.
89
- - **MCP is a real JSON-RPC server** at `POST /mcp`. Chat file generation
90
- — the v9.2.0 headline deleted in the 11.6.0 port — is restored. The
91
- 8GB-tier default (gemma-4-e2b) actually runs.
92
-
93
- What this release does not close — 2B agent-run quality, the mock-only
94
- `api_key` path, restore needing a restart, brew/pip staying manual,
95
- `/mcp` outside the OpenAPI contract, the ad-hoc-signed dmg — is listed
96
- in [RELEASE_NOTES_v11.9.0.md](RELEASE_NOTES_v11.9.0.md).
97
-
98
- Expected artifacts for 11.9.0 release must use exact filenames:
99
-
100
- - `dist/ltcai-11.9.0-py3-none-any.whl`
101
- - `dist/ltcai-11.9.0.tar.gz`
102
- - `ltcai-11.9.0.tgz`
103
- - `dist/ltcai-11.9.0.vsix`
104
- - `src-tauri/target/release/bundle/dmg/Lattice AI_11.9.0_aarch64.dmg`
73
+ The current release is **12.0.0 — Open House**:
74
+
75
+ 11.9.0 made the doors answer. This release opens the house: the two
76
+ largest crates are grouped by what a file is *for*, the contributor
77
+ documentation is a real path in, and four gaps the last release wrote
78
+ down are closed. `lattice-host` serves **422 operations across 41 route
79
+ families** (`POST /mcp` and the folder-prune route are the two new ones),
80
+ and the AI worker is **20 routes** (`POST /worker/vector/query` is the
81
+ one addition). Cloud is still optional and the default is still local.
82
+
83
+ - **Complexity management first.** `lattice-agent` is six groups —
84
+ `kernel` (the loop and every decision that can refuse), `parse`,
85
+ `content`, `tools`, `surface`, `prompts` — and `lattice-platform` is
86
+ seven domains. Every move is a rename, so the goldens answer
87
+ identically; each crate carries its own `ARCHITECTURE.md`, and
88
+ `docs/DEVELOPMENT.md` and the new `docs/ROADMAP.md` are the way in.
89
+ - **Small models become agents.** A measured probe (not a size regex)
90
+ picks the profile, and the `guided` profile stops asking for JSON at
91
+ all: pick an action by number, then one argument per turn, and the
92
+ harness assembles the call. A 0.5B model finished a real file in 3.9s.
93
+ The same gates, snapshots and sanitizers run on every profile.
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]"`.
104
+
105
+ What this release does not close — small-model *content* quality, the
106
+ mock-only `api_key` path, `brute` still being the search default, watch
107
+ never deleting on its own, the ad-hoc-signed dmg — is listed in
108
+ [RELEASE_NOTES_v12.0.0.md](RELEASE_NOTES_v12.0.0.md).
109
+
110
+ Expected artifacts for 12.0.0 release must use exact filenames:
111
+
112
+ - `dist/ltcai-12.0.0-py3-none-any.whl`
113
+ - `dist/ltcai-12.0.0.tar.gz`
114
+ - `ltcai-12.0.0.tgz`
115
+ - `dist/ltcai-12.0.0.vsix`
116
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_12.0.0_aarch64.dmg`
105
117
 
106
118
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
107
119
 
@@ -120,14 +132,17 @@ and downloads, Brain Network, and update checks are opt-in.
120
132
  See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
121
133
  [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for the developer workflow
122
134
  (`npm start` / `bin/ltcai.js` is the product; `npm run dev` is the
123
- 19-route worker). Validation via `npm run lint`, `npm run test:unit`,
124
- `npm run test:visual`.
135
+ 20-route worker). Each of the two largest crates carries its own domain
136
+ map — [rust/lattice-agent/ARCHITECTURE.md](rust/lattice-agent/ARCHITECTURE.md)
137
+ and [rust/lattice-platform/ARCHITECTURE.md](rust/lattice-platform/ARCHITECTURE.md)
138
+ — and open gaps are tracked in [docs/ROADMAP.md](docs/ROADMAP.md).
139
+ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
125
140
 
126
141
  ## Known Limitations
127
142
 
128
143
  - External package registries are owner-published and can lag behind GitHub.
129
144
  - SQLite is the live local Brain store. The optional PostgreSQL/pgvector
130
- migration tooling is not part of the 11.9.0 worker.
145
+ migration tooling is not part of the 12.0.0 worker.
131
146
  - Docker, model downloads, cloud model calls, Brain Network, and update checks
132
147
  require explicit user action. Cloud is optional: `cli_oauth` (`agy` /
133
148
  `grok`) was live-checked at zero billing; the `api_key` path is
@@ -148,21 +163,26 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
148
163
  built. The observation code stays in Brain Core under unit test, and its
149
164
  module header says so.
150
165
  - The Python coverage gate is a **line floor of 90** since 11.8.0 (the
151
- 100%-lines-and-branches gate was removed). 11.9.0 measures 99.97%; the
152
- enforced floor is the smaller claim.
153
- - **2B agent-run quality is gated honestly.** gemma-4-e2b writes the
154
- requested file and can still fail the critic on the summary.
155
- - Restore in a long-lived process may serve pre-restore bytes until
156
- connections recycle — restart after restore. brew/pip setup items stay
157
- manual. `/mcp` is a real JSON-RPC server and is outside the OpenAPI
158
- contract by design.
166
+ 100%-lines-and-branches gate was removed). The enforced claim is the
167
+ floor, not whatever a given run measures.
168
+ - **Small-model *content* quality is gated honestly.** With the `guided`
169
+ profile even a 0.5B model writes the requested file and reaches DONE;
170
+ a weak summary still fails the critic and the run ends
171
+ FAILED/NEEDS_REVIEW rather than claiming success.
172
+ - Vector search still defaults to `brute` — exact and byte-compatible.
173
+ `hnsw+rescore` is real but opt-in, and falls back to the exact scan
174
+ with its reason when the sidecar cannot answer.
175
+ - Watch never deletes on its own: a vanished file is reported, and
176
+ cleanup runs only through the confirmed folder-prune flow.
159
177
  - The macOS dmg is ad-hoc signed — effectively unsigned — so first launch
160
178
  needs the usual Gatekeeper step.
161
- - Pointer-control tools still execute in the worker. Remaining honest gaps
162
- (`open_keys` pending-only, no Self-Model refiner, `PART_OF` left on
163
- delete, review events silent without an owner, KG-api ingest text-only,
164
- two store cycles per review mutation) are listed with their reasons in
165
- [RELEASE_NOTES_v11.9.0.md](RELEASE_NOTES_v11.9.0.md).
179
+ - Pointer-control tools execute in the worker and are installed with
180
+ `pip install "ltcai[pointer]"`. Remaining honest gaps (`open_keys`
181
+ pending-only, no Self-Model refiner, `delete_node` leaving `PART_OF`,
182
+ review events silent without an owner, KG-api ingest text-only, two
183
+ store cycles per review mutation) are listed with their reasons in
184
+ [RELEASE_NOTES_v12.0.0.md](RELEASE_NOTES_v12.0.0.md) and prioritized in
185
+ [docs/ROADMAP.md](docs/ROADMAP.md).
166
186
 
167
187
  ## Release History
168
188
 
@@ -173,6 +193,7 @@ same boundary. Earlier notes stay in the tree as `RELEASE_NOTES_v*.md` files.
173
193
 
174
194
  | Version | Theme |
175
195
  | --- | --- |
196
+ | 12.0.0 | Open House |
176
197
  | 11.9.0 | Working Order |
177
198
  | 11.8.0 | Travel Light |
178
199
  | 11.7.0 | Clean Sweep |
package/docs/CHANGELOG.md CHANGED
@@ -4,6 +4,98 @@ 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.0.0] - 2026-08-18 — Open House
8
+
9
+ ### Added
10
+ - 크레이트 도메인 구조. `lattice-agent` 43파일이 여섯 그룹으로
11
+ (`kernel` / `parse` / `content` / `tools` / `surface` / `prompts`),
12
+ `lattice-platform` 31개 평면 모듈이 일곱 도메인으로
13
+ (`workspaceos` / `toolsurface` / `governance` / `adminops` /
14
+ `knowledge` / `modelops` / `shell`, 100건 `git mv`). 전부 이동이며
15
+ 동작 변화는 0 — 골든과 계약 테스트가 재구조 전후로 같은 답을 낸다.
16
+ - 크레이트 로컬 지도 2종: `rust/lattice-agent/ARCHITECTURE.md`,
17
+ `rust/lattice-platform/ARCHITECTURE.md`. 각 그룹 `mod.rs`가 무엇이
18
+ 속하고 무엇이 절대 들어가면 안 되는지와 불변식을 적는다. 각
19
+ `src/lib.rs`는 호환 맵으로 끝나 기존 임포트 경로가 전부 해석된다.
20
+ - `docs/ROADMAP.md` — 우선순위(P1/P2/P3)·난이도·제안 경로가 있는 갭
21
+ 로드맵. 이번 릴리스에서 닫힌 항목은 닫힘으로 표시한다.
22
+ - GUIDED 프로파일. 번호 메뉴로 액션을 고르고 인자를 한 개씩 받아
23
+ **하네스가 액션 구조체를 조립**한다 — JSON 요구 자체가 없다. 꼬리는
24
+ 모든 모드와 같은 `perform_action`이므로 게이트 체인·루프 가드·쓰기 전
25
+ 스냅샷·`sanitize_write_content`가 동일하다. 검증은 닫힌 PASS/FAIL +
26
+ 이유 한 줄이며 같은 근거·커버리지 게이트로 심사한다.
27
+ - 측정 기반 프로파일 프로브(`kernel/probe.rs`). 로드 시 고정 질문 두
28
+ 개를 루프 자신의 파서로 채점해 standard/compact/guided를 고르고,
29
+ 모델 id + 크레이트 버전으로 캐시한다. `LATTICEAI_AGENT_PROFILE`이
30
+ 여전히 최우선, `LATTICEAI_AGENT_PROBE=0`으로 끌 수 있다.
31
+ - 미드런 자기강등(`demote_to_guided`) — 측정된 다이얼, 아직 guided가
32
+ 아님, 실행 근거 없음의 세 조건에서만, 아래로만.
33
+ - 통합 도구 카탈로그(`tools/catalog.rs`) — native + `mcp.<tool>` +
34
+ `skill.<name>`이 하나의 번호 메뉴. 런이 거버넌스하는 이름은 네이티브
35
+ 경로(더 엄격), 아닌 이름은 `POST /mcp`와 같은 거버넌스 검사를 지난다.
36
+ - `POST /worker/vector/query` — HNSW 사이드카 후보 조회. 워커 allowlist
37
+ 19 → **20**.
38
+ - `POST /api/ingestion/folder/prune` — 삭제된 파일 정리. `confirm` 없으면
39
+ dry-run, 있으면 `delete_document_tree`(양방향 엣지). SPA에 「삭제된
40
+ 파일 정리 (N)」 카드 버튼.
41
+ - 섹션 트리 — `Document ←PART_OF— Section ←PART_OF— Section`,
42
+ `Section —HAS_CHUNK→ Chunk`. 제목이 없는 문서는 섹션을 만들지 않는다.
43
+ - 파일별 ingest 핑거프린트(경로 + 크기 + mtime + 내용 sha256)를
44
+ `ingestion_provenance.metadata_json`에 저장. 두 번째 테이블 없음.
45
+ - 스토어 세대(generation) 에폭 — 복원이 인프로세스로 즉시 반영된다.
46
+ - `ltcai[pointer]` extra — 여섯 pyautogui 포인터 도구의 선언된 설치 경로.
47
+
48
+ ### Changed
49
+ - `POST /mcp`가 OpenAPI 제품 계약 **안으로** 들어왔다(단일 JSON-RPC 봉투
50
+ 오퍼레이션). 네이티브 마운트이므로 워커로 프록시되지 않는다. 문은 네이티브
51
+ **422 오퍼레이션 / 41 패밀리**(11.9.0의 420 + `/mcp` + folder prune).
52
+ - `/setup/install`이 실제로 설치한다 — 요청이 이름을 댄 항목이 **서버가
53
+ 도출한** allowlist에 있을 때만. 목록 밖 이름은 거절. 기본은 수동 유지.
54
+ - 한국어 조사 스트리핑 2단계 + 근거 게이트 + 포함관계 중복 제거.
55
+ - 추출이 `PART_OF`/`CONTRADICTS`를 실제로 생산하고, 엣지는 방향과 타입을
56
+ 갖고 쓰이며, 근거는 분류되어 저장된다.
57
+ - 임베딩 자동 감지 — 다운로드된 실모델이 있으면 채택, 해시는 폴백으로
58
+ 표기. 벡터 정체성은 `(model, dim)`으로 필터.
59
+ - 임베딩이 쓰기 트랜잭션 **앞으로** 이동(드레인 ~66 → ~1,300 items/s),
60
+ 드레인 스케줄러 적응형(백로그 991건 40분 → 15.3초).
61
+ - 무변경 재인덱스 33s → **0.26s**(낭비율 1.00 → 0.00), 첫 인덱싱 25.8s
62
+ → 7.2s. vault-watch가 바뀌지 않은 노트를 스킵.
63
+ - `LATTICEAI_VECTOR_INDEX=hnsw`가 실제 검색 경로 — 사이드카가 `k*8`
64
+ 후보(최대 200)를 주고 Rust가 브루트와 같은 코사인으로 정확 재스코어,
65
+ 이름은 `hnsw+rescore`. HNSW 사이드카는 증분 append. **기본은 여전히
66
+ `brute`**, 실패는 사유를 실은 폴백.
67
+ - `Completion::prefix`가 완성의 첫 글자를 강제(compact는
68
+ `{"thoughts": "`). 토큰 단위 JSON 문법은 검토 후 채택하지 않음.
69
+ - 프론트: ErrorBoundary가 라우트와 헤비 패널 전면에, Act/Brain 서브라우트
70
+ lazy 분할, 권한 모드 diff 프리뷰와 위험 토글 ack. 번들 104.2 / 150 KiB.
71
+
72
+ ### Fixed
73
+ - RAG 인용 지시가 에이전트 프롬프트로 새던 문제 — 도구를 불러야 할 턴에
74
+ 모델이 출처 표기를 하고 있었다.
75
+ - 모델 로딩의 이름 로스터 게이트 — Qwen AWQ 빌드가 로드 자체가 불가능
76
+ 했다.
77
+ - 베낄 수 있는 워크드 예제 — `write_file` content가 우리 예제 상수와
78
+ 글자 그대로 같으면 `COPIED_EXAMPLE`로 기록하고 쓰지 않는다
79
+ (fail-closed). 에코된 지시문 줄은 guided 답변에서 제거.
80
+ - `<|channel>` 한-파이프 제어 프레임이 본문으로 새던 문제.
81
+ - 복원 뒤 오래된 커넥션이 복원 전 바이트를 주던 문제(에폭으로 해소).
82
+
83
+ ### Known issues
84
+ - 작은 모델의 *내용 품질*은 여전히 fail-closed 게이트가 잡는다. 기계적
85
+ 실행(요청한 파일 쓰기, DONE 도달)은 guided로 안정됐고 0.5B도 3.9초에
86
+ 실파일로 완주하지만, 요약의 질은 critic에서 떨어져
87
+ FAILED/NEEDS_REVIEW로 끝날 수 있다. 매트릭스는 18개 중 11개 통과에서
88
+ 개선 중이며 최종 수치는 릴리스 시점 `MATRIX_TABLE` 기준.
89
+ - `api_key` 클라우드 경로는 모의 서버만 검증(과금 0 정책). 라이브
90
+ 검증은 `cli_oauth`.
91
+ - DMG는 ad-hoc 서명(=미서명).
92
+ - 검색 기본은 brute. `hnsw`는 opt-in.
93
+ - watch는 자동 삭제하지 않는다 — 정리는 명시적 prune으로만.
94
+ - 크레이트 재구조는 이동이지 결합 해소가 아니다. 도메인 선을 넘는 네
95
+ 결합은 `lattice-platform`의 해당 `mod.rs`에 이름과 함께 적혀 있다.
96
+ - `GraphWriter::delete_node`는 여전히 `PART_OF`를 남긴다. prune은 그것을
97
+ 쓰지 않고 `delete_document_tree`를 쓴다.
98
+
7
99
  ## [11.9.0] - 2026-08-17 — Working Order
8
100
 
9
101
  ### Added
@@ -1,6 +1,6 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **11.9.0 — Working Order**.
3
+ Current release: **12.0.0 — Open House**.
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