ltcai 10.6.3 → 10.8.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 (95) hide show
  1. package/README.md +56 -59
  2. package/docs/CHANGELOG.md +68 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/LAYOUT_REBUILD_SPEC.md +810 -0
  6. package/docs/ONBOARDING.md +1 -1
  7. package/docs/OPERATIONS.md +29 -1
  8. package/docs/TRUST_MODEL.md +1 -1
  9. package/docs/WHY_LATTICE.md +1 -1
  10. package/docs/kg-schema.md +1 -1
  11. package/lattice_brain/__init__.py +1 -1
  12. package/lattice_brain/graph/retrieval_vector.py +69 -33
  13. package/lattice_brain/runtime/multi_agent.py +96 -15
  14. package/latticeai/__init__.py +1 -1
  15. package/latticeai/api/admin.py +81 -6
  16. package/latticeai/api/auth.py +37 -38
  17. package/latticeai/api/automation_intelligence.py +112 -0
  18. package/latticeai/api/browser.py +7 -6
  19. package/latticeai/api/knowledge_graph.py +133 -0
  20. package/latticeai/api/static_routes.py +35 -1
  21. package/latticeai/core/file_generation.py +141 -8
  22. package/latticeai/core/legacy_compatibility.py +1 -1
  23. package/latticeai/core/marketplace.py +1 -1
  24. package/latticeai/core/messages.py +230 -0
  25. package/latticeai/core/workspace_computer_memory.py +84 -0
  26. package/latticeai/core/workspace_indexing.py +102 -0
  27. package/latticeai/core/workspace_onboarding.py +104 -0
  28. package/latticeai/core/workspace_os.py +27 -207
  29. package/latticeai/core/workspace_os_constants.py +1 -1
  30. package/latticeai/core/workspace_relationships.py +99 -0
  31. package/latticeai/core/workspace_runs.py +111 -0
  32. package/latticeai/services/architecture_readiness.py +1 -1
  33. package/latticeai/services/product_readiness.py +1 -1
  34. package/package.json +5 -3
  35. package/scripts/capture_release_evidence.mjs +335 -1
  36. package/scripts/check_current_release_docs.mjs +1 -1
  37. package/scripts/check_release_evidence_bound.mjs +116 -0
  38. package/scripts/check_screenshot_pixel_delta.py +517 -0
  39. package/scripts/measure_brain_home_fill.mjs +141 -0
  40. package/scripts/release_screen_claims.json +37 -0
  41. package/src-tauri/Cargo.lock +1 -1
  42. package/src-tauri/Cargo.toml +1 -1
  43. package/src-tauri/tauri.conf.json +1 -1
  44. package/static/app/asset-manifest.json +37 -39
  45. package/static/app/assets/{Act-05uZSgyw.js → Act-CbQNsFgc.js} +1 -1
  46. package/static/app/assets/AdminConsole-Bs8SR8fE.js +1 -0
  47. package/static/app/assets/{Brain-jjMYTdnU.js → Brain-BZIPsZlH.js} +2 -2
  48. package/static/app/assets/BrainHome-BaH5MDce.js +2 -0
  49. package/static/app/assets/{BrainSignals-BYxDqBH3.js → BrainSignals-aDt-nSsW.js} +1 -1
  50. package/static/app/assets/Capture-DDv940Bv.js +1 -0
  51. package/static/app/assets/{CommandPalette-Cj7z-qUE.js → CommandPalette-Dq_MmPBl.js} +1 -1
  52. package/static/app/assets/Library-BkShbqmN.js +1 -0
  53. package/static/app/assets/{LivingBrain-CTokkZn1.js → LivingBrain-CXb8094H.js} +1 -1
  54. package/static/app/assets/ProductFlow-BaiqFWLO.js +1 -0
  55. package/static/app/assets/{ReviewCard-uAII_l9v.js → ReviewCard-Be7E7X18.js} +2 -2
  56. package/static/app/assets/System-DCstbTxC.js +1 -0
  57. package/static/app/assets/arrow-left-DC9Oquhs.js +1 -0
  58. package/static/app/assets/{bot-CkrHFdUl.js → bot-BR0eoeXY.js} +1 -1
  59. package/static/app/assets/brain-BmWa1wea.js +1 -0
  60. package/static/app/assets/{button-Ic6omIbs.js → button-U1nU7xX4.js} +1 -1
  61. package/static/app/assets/{circle-pause-DBaaUR08.js → circle-pause-DG5KHjDL.js} +1 -1
  62. package/static/app/assets/{circle-play-Dz0OLYN9.js → circle-play-Chhcuq90.js} +1 -1
  63. package/static/app/assets/{cpu-N8uE9ono.js → cpu-pkOSlT9h.js} +1 -1
  64. package/static/app/assets/{download-CCjhOjms.js → download-CSRwz923.js} +1 -1
  65. package/static/app/assets/{folder-open-Bld9TtHp.js → folder-open-DiMJ7W_7.js} +1 -1
  66. package/static/app/assets/{hard-drive-BMIqDSyY.js → hard-drive-iyLPAPdp.js} +1 -1
  67. package/static/app/assets/index-BZRvGOM2.css +2 -0
  68. package/static/app/assets/{index-yNtiRyw3.js → index-_ldE9TAX.js} +4 -4
  69. package/static/app/assets/{input-DW1tXtc0.js → input-e_r2hFAY.js} +1 -1
  70. package/static/app/assets/{permissionCopy-Djpwn54H.js → permissionCopy-9uOHktz3.js} +1 -1
  71. package/static/app/assets/{primitives-B6WtkLgB.js → primitives-CnEAOmg2.js} +1 -1
  72. package/static/app/assets/search-veep4n6f.js +1 -0
  73. package/static/app/assets/{share-2-DR5L1qRc.js → share-2-DLDJJKmI.js} +1 -1
  74. package/static/app/assets/{shield-alert-CVE5eXsl.js → shield-alert-BTtE-2EZ.js} +1 -1
  75. package/static/app/assets/{textarea-DdaVFgvk.js → textarea-Bbzkcgqe.js} +1 -1
  76. package/static/app/assets/{useFocusTrap-B5TyGaiB.js → useFocusTrap-DJzQd-Za.js} +1 -1
  77. package/static/app/assets/{useQuery-CiRdTQlD.js → useQuery-6R_tqHRe.js} +1 -1
  78. package/static/app/assets/utils-XDsjcrhS.js +4 -0
  79. package/static/app/assets/workspace-CwrG8LHq.js +1 -0
  80. package/static/app/index.html +4 -4
  81. package/static/sw.js +1 -1
  82. package/static/app/assets/AdminConsole-C8yz1Cs_.js +0 -1
  83. package/static/app/assets/BrainHome-D3t45_D4.js +0 -2
  84. package/static/app/assets/Capture-DKgu7fB0.js +0 -1
  85. package/static/app/assets/Library-CO76FWeO.js +0 -1
  86. package/static/app/assets/ProductFlow-Bmted2ys.js +0 -1
  87. package/static/app/assets/System-PUMzDmof.js +0 -1
  88. package/static/app/assets/activity-C_7182GG.js +0 -1
  89. package/static/app/assets/arrow-left-BQCpWR37.js +0 -1
  90. package/static/app/assets/brain-CdPX7svt.js +0 -1
  91. package/static/app/assets/index-DYUs0cWy.css +0 -2
  92. package/static/app/assets/search-CkHYuKpY.js +0 -1
  93. package/static/app/assets/users-pZqCRxdD.js +0 -1
  94. package/static/app/assets/utils-C3rXoa-U.js +0 -4
  95. package/static/app/assets/workspace-DfxKEttN.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
- ![v10.6.3 Living Brain walkthrough](output/release/v10.6.3/gifs/v10.6.3-living-brain-walkthrough.gif)
14
+ ![v10.8.0 Living Brain walkthrough](output/release/v10.8.0/gifs/v10.8.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. Any model — local MLX or cloud — can speak with that
@@ -24,10 +24,10 @@ memory. Nothing leaves your machine without explicit consent.
24
24
 
25
25
  | | |
26
26
  | --- | --- |
27
- | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v10.6.3/screenshots/04-brain-chat-home.png) | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v10.6.3/screenshots/05-memory-graph.png) |
28
- | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v10.6.3/screenshots/06-capture.png) | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v10.6.3/screenshots/12-review-center.png) |
29
- | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v10.6.3/screenshots/02-recommended-models.png) | **Stay in control** — audit, roles, retention in a separate admin surface ![Admin Console](output/release/v10.6.3/screenshots/10-admin-console.png) |
30
- | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v10.6.3/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/v10.6.3/screenshots/08-system.png) |
27
+ | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v10.8.0/screenshots/04-brain-chat-home.png) | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v10.8.0/screenshots/05-memory-graph.png) |
28
+ | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v10.8.0/screenshots/06-capture.png) | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v10.8.0/screenshots/12-review-center.png) |
29
+ | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v10.8.0/screenshots/02-recommended-models.png) | **Stay in control** — audit, roles, retention in a separate admin surface ![Admin Console](output/release/v10.8.0/screenshots/10-admin-console.png) |
30
+ | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v10.8.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/v10.8.0/screenshots/08-system.png) |
31
31
 
32
32
  ## Why Lattice AI
33
33
 
@@ -58,69 +58,63 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
58
58
 
59
59
  | | | |
60
60
  | --- | --- | --- |
61
- | ![Login](output/release/v10.6.3/screenshots/01-login.png) | ![Model install](output/release/v10.6.3/screenshots/03-install-load-progress.png) | ![Model library](output/release/v10.6.3/screenshots/07-model-library.png) |
61
+ | ![Login](output/release/v10.8.0/screenshots/01-login.png) | ![Model install](output/release/v10.8.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v10.8.0/screenshots/07-model-library.png) |
62
62
 
63
63
  Screenshot index and capture notes:
64
- [output/release/v10.6.3/SCREENSHOT_INDEX.md](output/release/v10.6.3/SCREENSHOT_INDEX.md)
64
+ [output/release/v10.8.0/SCREENSHOT_INDEX.md](output/release/v10.8.0/SCREENSHOT_INDEX.md)
65
65
 
66
66
  ## Current Release
67
67
 
68
- The current release is **10.6.3 — Loud Limits**:
69
-
70
- 10.6.1 rebuilt five screens, and the Brain home is the one it only half
71
- rebuilt: the order changed, the shape did not. A large Brain and a centred
72
- headline still ran down the middle of the screen before the box you type into,
73
- and the three suggestions still sat between that box and its own toolbar — so
74
- the alternative to typing wore the same border as typing, and the composer was
75
- separated from its own controls by an unrelated block. This release splits the
76
- screen into two surfaces. Nothing was removed; the second choice stopped
77
- sharing a card with the first.
78
-
79
- - **The greeting introduces the composer instead of headlining the screen.**
80
- The Brain and the greeting were a centred column above the input; they are a
81
- compact banner across the top of the card now — a small Brain beside the title
82
- and the memory count, on a tinted strip closed by a hairline. The Brain is
83
- still the button that opens the memory map, and the banner stacks back into a
84
- centred column on a phone.
85
- - **One card is the first move, and only the first move.** The station reads
86
- greeting → the box you type into → one row for 자료 추가 and 혼자 해도 되는 일,
87
- with nothing between the box and its own controls.
88
- - **What to try is a card of its own.** The three suggestions moved out of the
89
- station onto a second surface below it, where they read as an offer rather
90
- than a step. That card is a named `<section>`, so a screen reader announces it
91
- as a region — the label used to sit on a plain `<div>`, where the browser
92
- discards it.
93
- - **The empty state is designed rather than inherited.** A Brain with nothing to
94
- suggest yet — every Brain on its first day — shows starter pills instead of
95
- suggestion cards. That row had never been styled for this screen: it borrowed
96
- a pill height drawn for live conversations and sat noticeably taller than the
97
- cards it stands in for. Both branches read as peers now, and a pill fills the
98
- composer rather than sending a question you did not choose to ask.
99
- - **Three bugs that only moving things could find.** The Brain's halo is written
100
- as an inline `box-shadow`, so no stylesheet could shrink it — a 60px glow
101
- stayed wrapped around a 58px Brain until the blur became a CSS variable the
102
- host can set (every other screen keeps its old value through the fallback).
103
- Clipping the card would have hidden the 노트 / 웹 popover and turned the card
104
- into a scroll container that scrolls the greeting away on focus, so the banner
105
- clips its own corners instead. And the reduced-motion rule that cancels the
106
- card lift had to follow the cards to their new selector, or a reader who asked
107
- the system to hold still would have got the animation back.
108
- - **Guarded, not asserted.** Unit tests hold the split itself — station, deck
109
- and footer as three siblings, with the suggestions provably *not* inside the
110
- station. Browser tests hold what only a browser can see: the popover opens
111
- unclipped, the cards fill their card, they collapse to chips under 900px and
112
- stay visible under 760px, reduced motion is honoured, the empty-state pill row
113
- renders, and the halo is measured against the Brain it surrounds.
68
+ The current release is **10.8.0 — Within Reach**:
69
+
70
+ 10.7.0 rearranged all twelve screens. 10.8.0 is about the things that were
71
+ already there but out of reach: a button below the fold, a message in a
72
+ language you did not choose, a file a small model nearly produced.
73
+
74
+ - **The first three screens fit on the screen.** Onboarding rendered a 390px
75
+ decorative Brain above *every* step, so on a 1440×900 display the login
76
+ form, the recommended model and the install progress all began below the
77
+ fold — the first thing the product asked a new person to do was scroll. The
78
+ organism is a hero on the welcome step and a 104px mark after it; the
79
+ welcome screen itself went from 1175px of content to 770px, so its primary
80
+ button is visible without scrolling.
81
+ - **One language per screen, including the ones the server writes.** API
82
+ messages were literals at the raise site, written in whichever language the
83
+ endpoint's author was thinking in — Korean from `auth.py`, English from
84
+ `browser.py`. `latticeai/core/messages.py` is a catalog with both, resolved
85
+ from `X-Lattice-Language` (falling back to `Accept-Language`); the browser
86
+ extension, which showed English and Korean in the same popup, has one too.
87
+ `tests/unit/test_server_messages.py` fails on a message that exists in only
88
+ one language, and on a router that reverts to a hardcoded literal.
89
+ - **A small model's near-miss is no longer thrown away.** File generation
90
+ picked the *longest* rejected reply to repair, so a 900-character apology
91
+ beat a truncated-but-real HTML document; it now scores candidates by how
92
+ close they are to being a file. A byte-identical repeated reply buys one
93
+ extra attempt with a prompt that names the repetition. Prose file types
94
+ (`.md`, `.txt`) had no validation at all and would save "Sure! Here is the
95
+ document:" as the document.
96
+ - **Re-indexing costs what changed.** The incremental vector rebuild
97
+ materialised every node and chunk in memory and asked one `SELECT` per item
98
+ whether it had changed. It streams now, with a single prefetched hash map —
99
+ and a settled index performs zero embeddings, asserted rather than assumed.
100
+ - **More ground under the frontend.** Statement coverage 47.35% → 52.26%,
101
+ 424 → 504 tests, including the app shell (`App.tsx`, previously 0%), the
102
+ admin console (0%), the folder picker (2.7%) and the API client.
103
+ - **Evidence bound to this build.** `output/release/v10.8.0/` holds the twelve
104
+ capture screens, walkthrough gif/webm, and the asset-manifest / mock-server
105
+ fingerprints that lint re-checks before merge.
106
+ - **Exact artifact names only.** Publish paths list `dist/ltcai-10.8.0-*` and
107
+ `ltcai-10.8.0.tgz` — never `dist/*`.
114
108
 
115
109
  Release notes: [RELEASE.md](RELEASE.md) · Full history: [docs/CHANGELOG.md](docs/CHANGELOG.md)
116
110
 
117
- Expected artifacts for 10.6.3 release must use exact filenames:
111
+ Expected artifacts for 10.8.0 release must use exact filenames:
118
112
 
119
- - `dist/ltcai-10.6.3-py3-none-any.whl`
120
- - `dist/ltcai-10.6.3.tar.gz`
121
- - `ltcai-10.6.3.tgz`
122
- - `dist/ltcai-10.6.3.vsix`
123
- - `src-tauri/target/release/bundle/dmg/Lattice AI_10.6.3_aarch64.dmg`
113
+ - `dist/ltcai-10.8.0-py3-none-any.whl`
114
+ - `dist/ltcai-10.8.0.tar.gz`
115
+ - `ltcai-10.8.0.tgz`
116
+ - `dist/ltcai-10.8.0.vsix`
117
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_10.8.0_aarch64.dmg`
124
118
 
125
119
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
126
120
 
@@ -155,6 +149,9 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
155
149
 
156
150
  | Version | Theme |
157
151
  | --- | --- |
152
+ | 10.8.0 | Within Reach |
153
+ | 10.7.0 | Plain Surface |
154
+ | 10.6.4 | Loud Limits |
158
155
  | 10.6.3 | Loud Limits |
159
156
  | 10.6.2 | Ask First |
160
157
  | 10.6.1 | First Things |
package/docs/CHANGELOG.md CHANGED
@@ -4,6 +4,74 @@ 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
+ ## [10.8.0] - 2026-08-04
8
+
9
+ ### Fixed
10
+ - 온보딩 login/recommend/install 3개 화면에서 주 작업이 접힌 부분 아래에서
11
+ 시작하던 문제 — 히어로 브레인을 단계별 크기(`data-scale`)로 분리.
12
+ - 설치 화면이 번역 키 원문(`flow.install.stage.idle`)을 사용자에게 출력하던
13
+ 문제 — `t()`가 `defaultValue` 옵션을 읽지 않았고, 옵션 자체가 보간 값으로
14
+ 새어 들어가고 있었습니다.
15
+ - 추천 모델 화면이 셸 중앙에서 왼쪽으로 치우쳐 있던 문제(`margin-inline`).
16
+ - Brain 대화 홈의 추천 칩이 4글자를 담은 채 952px로 늘어나던 문제 —
17
+ `@media (max-height)` 블록이 `display:flex`만 재선언하고 `flex-direction`을
18
+ 다시 쓰지 않아 기본 규칙의 `column` 축을 물려받고 있었습니다.
19
+ - 브라우저 확장 팝업이 한 창 안에서 한국어와 영어를 섞어 보여주던 문제.
20
+
21
+ ### Added
22
+ - `latticeai/core/messages.py` — 서버 사이드 메시지 카탈로그(ko/en)와
23
+ 요청 기반 언어 결정(`X-Lattice-Language` → `Accept-Language`).
24
+ - `frontend/src/styles/mediaQueryOverride.test.ts` — 미디어 쿼리가 `display`를
25
+ 재선언하면서 축을 다시 쓰지 않는 부분 오버라이드 가드.
26
+ - 신규 테스트 스위트: `App.tsx`, `AdminConsole.tsx`, `lib/folderPicker.ts`,
27
+ `api/client.ts` 확장, 멀티에이전트 JSON 복구, 증분 인덱스 재빌드.
28
+
29
+ ### Changed
30
+ - 파일 생성이 실패 응답 중 "가장 긴" 것이 아니라 "가장 파일에 가까운" 것을
31
+ 복구에 넘깁니다. 동일 응답 반복 시 1회 한정 추가 시도.
32
+ - 산문 파일 타입(`.md`/`.txt`/…)에도 검증 추가 — 파일에 *대한* 답변은 파일이
33
+ 아닙니다.
34
+ - 멀티에이전트 계획 파서: 균형 스팬 스캔 + `<think>` 제거 + trailing comma 복구.
35
+ - 증분 벡터 재빌드가 스트리밍 + 단일 해시맵 조회로 전환.
36
+ - `latticeai/core/workspace_os.py` 1128 → 945줄.
37
+
38
+ ## [10.7.0] - 2026-08-04
39
+
40
+ ### Changed
41
+ - **12개 화면 전면 재구성** — `frontend/src`의 다단 격자 클래스 22 → 6
42
+ (테스트 단언 2건 제외하면 4). 각 화면이 사용자가 하러 온 일을 1순위로 놓고,
43
+ 개발자용 진단·관리 표면은 접이식 영역으로 내려갔습니다. 해시 경로 38개는
44
+ 하나도 사라지지 않았습니다(38 → 38).
45
+ - 승인함이 i18n 키 원문(`act.approval.action.파일_읽기`)을 표시하던 문제 수정 —
46
+ 조회 키를 백엔드 `action` 열거값에서 만들고, 없으면 서버가 준 라벨로 폴백합니다.
47
+ - 관리자 요약이 HTTP 200을 건강 상태로 오인하던 문제 수정 — 서버가 보고한
48
+ `status`를 우선 사용합니다.
49
+
50
+ ### Added
51
+ - `scripts/check_screenshot_pixel_delta.py` — 릴리스 캡처가 이전 버전 대비 실제로
52
+ 달라졌는지 검사. 문구만 바뀐 화면은 실패로 잡습니다.
53
+ - `scripts/check_release_evidence_bound.mjs` — 캡처가 현재 빌드에서 나온 것인지
54
+ 해시로 결속. lint 에 배선되어 있습니다.
55
+
56
+ ### Removed
57
+ - 어느 화면에서도 렌더되지 않던 문구 키 18개 (기능은 전부 다른 경로로 도달
58
+ 가능함을 확인 후 삭제). 문구 키에는 자동 게이트가 없어 수동 대조입니다.
59
+
60
+ ## [10.6.4] - 2026-08-04
61
+
62
+ ### Changed
63
+ - 패키지·문서·릴리스 증거를 **10.6.4**로 정렬 — `product_readiness` packaging /
64
+ trust-docs / ecosystem-path 게이트가 현재 버전 문자열을 찾도록 README,
65
+ CHANGELOG, RELEASE_NOTES, 커뮤니티 문서, VS Code 확장 README 동기화
66
+ - 릴리스 캡처 경로 `output/release/v10.6.4/` (12 스크린샷 + walkthrough gif/webm)
67
+ - 시각 목의 승인함은 mapped(`read` → 한글 라벨) + unmapped(`delete` 원문 키)
68
+ 두 경로를 동시에 노출 — UI i18n 회귀를 가리지 않음
69
+
70
+ ### Notes
71
+ - 스키마·마이그레이션 변경 없음. SQLite Brain 데이터 호환 유지.
72
+ - 프론트 승인 액션 키 `act.approval.action.read` / `delete` 착지는 별도 F1
73
+ 항목; 그 전까지 캡처 09는 원문 키 노출을 증거로 남길 수 있음.
74
+
7
75
  ## [10.6.3] - 2026-08-04
8
76
 
9
77
  ### Security
@@ -1,6 +1,6 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **10.6.3 — Ask First**.
3
+ Current release: **10.8.0 — Within Reach**.
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
@@ -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: **10.6.3 — Ask First**.
6
+ Current release: **10.8.0 — Within Reach**.
7
7
 
8
8
  This document is for contributors working on the local-first Digital Brain
9
9
  codebase. Product positioning and quick start stay in `README.md`; release