leerness 1.36.184 → 1.36.186

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.36.186 — 2026-09-05
4
+
5
+ - T-0174: add read-only five-scope state inspection with worktree/project isolation and honest legacy inventory; reuse workspace snapshots, skip unused npm skill discovery and bookkeeping, preserve all existing state.
6
+
7
+ ## 1.36.185 — 2026-09-04
8
+
9
+ - T-0165/T-0166/T-0167/T-0171/T-0172: adds honest provider-capacity observation, exact-file TTL leases, strict Role/Agent/Routing v2 schemas, a fail-closed legacy role-store loader, and availability-aware role fallback with revision-bound execution provenance. Compatibility fields remain explicit, high-risk reviewer independence requires concrete model identities, corrupt state is preserved without provider execution, and all new surfaces are covered by adversarial regression probes.
10
+
3
11
  ## 1.36.184 — 2026-09-01
4
12
 
5
13
  - T-0164: English-mode mode output now emits zero Hangul across stored, environment, and explicit locale paths, including pre-dispatch and stale-version diagnostics, while preserving Korean and locale-independent JSON contracts. Lock-time manifest rereads fail closed on corruption and normalize concurrent valid mode values before writing, with deterministic real-EEXIST regressions; the 39-command leakage ratchet tightens exactly from 30 to 27 lines.
package/README.ko.md CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  > **어떤 언어, 어떤 AI 에이전트로 작업하든 — "증거 없이는 끝났다고 말할 수 없게" 만드는 AI 코딩 운영 레이어.** 코드를 대신 쓰는 도구가 아니라, AI 에이전트의 **기억·인수인계·검증·감사·보안 가드**를 프로젝트에 영속화하는 CLI + MCP 서버입니다.
15
15
 
16
- [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-89-blue) · **런타임 의존성 0** · **install-script 0** · offline-first · Node ≥ 18 · MIT
16
+ [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-98-blue) · **런타임 의존성 0** · **install-script 0** · offline-first · Node ≥ 18 · MIT
17
17
 
18
18
  ---
19
19
 
@@ -25,7 +25,7 @@ AI 코딩 에이전트(Claude Code, Cursor, Codex, Aider, Goose 등)는 코드
25
25
  2. **거짓 완료를 선언합니다** — 증거(파일·테스트·로그) 없이 "완료했습니다"라고 말합니다.
26
26
  3. **표준이 없습니다** — 여러 에이전트 간 인수인계, 보안/인코딩 점검, 드리프트 관리가 제각각입니다.
27
27
 
28
- leerness는 이 문제들을 해결하는 **외부 운영 substrate**입니다. 어떤 에이전트 위에도 얹어, 프로젝트의 상태를 `.leerness/` 파일로 영속화하고 CLI · MCP 도구로 노출합니다. **leerness 자체는 LLM을 호출하거나 코드를 실행하지 않습니다.**
28
+ leerness는 이 문제들을 해결하는 **외부 운영 substrate**입니다. 어떤 에이전트 위에도 얹어, 프로젝트의 상태를 `.leerness/` 파일로 영속화하고 CLI · MCP 도구로 노출합니다. 기본 상태에서는 외부 모델을 임의 호출하지 않습니다. 다만 사용자가 `agents multi --execute`, `agents bench` 같은 실행 명령을 명시하면 opt-in 된 외부 CLI를 시작하고 실제 실행 결과를 원장에 기록할 수 있습니다.
29
29
 
30
30
  ---
31
31
 
@@ -111,10 +111,10 @@ leerness verify-claim T-0001 --require-evidence
111
111
  - **메모리**: `task` · `plan` · `decision` · `lesson` · `rule` · `feature` · `memory status/search`
112
112
  - **인수인계/세션**: `handoff` · `session close` · `pulse` · `health`
113
113
  - **검증/감사**: `check` · `gate` · `audit` · `drift check` · `lazy detect` · `scan secrets` · `encoding check` · `verify-code` · `verify-claim` · `contract verify`
114
- - **외부 에이전트**: `agents list/check/dispatch` · `provider` · `roles` · `adapter`
114
+ - **외부 에이전트**: `agents list/check/quota/resolve/fallback/availability/record/history/dispatch` · `provider` · `roles` · `adapter`
115
115
  - **운영/확장**: `release` · `migrate` · `team` · `install-safety` · `route` · `review`(페르소나)
116
116
  - **브리지(opt-in)**: `web`(playwright) · `pc`(robotjs) · `lsp`
117
- - **MCP**: `mcp serve` — stdio JSON-RPC 서버로 80+ 도구 노출 (verify-claim --all 일괄 검증 포함, 1.33.3)
117
+ - **MCP**: `mcp serve` — stdio JSON-RPC 서버로 98개 도구 노출 (verify-claim --all 일괄 검증 포함)
118
118
 
119
119
  전체 명령은 `leerness commands` 또는 `leerness --help` 로 확인하세요.
120
120
 
@@ -140,21 +140,33 @@ leerness contract verify spec.md src/api.js # 명세 함수/필드 누락 → ex
140
140
  leerness verify-claim T-0001 --require-evidence
141
141
  ```
142
142
 
143
- **다중 에이전트 조율**
143
+ **역할 우선 다중 에이전트 조율**
144
144
  ```bash
145
- leerness agents list # 설치된 외부 AI CLI 가용성
146
- leerness agents dispatch "코드 리뷰" --to codex # 실행 명령 생성(직접 실행은 사용자/메인 에이전트)
145
+ leerness roles set coder --provider codex --model gpt-model-id \
146
+ --candidate claude:claude-model-id --policy balanced
147
+ leerness roles validate --json
148
+ leerness agents resolve "API 구현" --role coder --json
149
+ leerness agents fallback provider "API 구현" --role coder \
150
+ --provider claude --model claude-model-id --approved-by owner --json
151
+ leerness agents history --json
147
152
  ```
148
153
 
154
+ 역할은 유지하고 Provider/모델만 교체합니다. 해석 결과는 설치·활성화·인증·모델 권한·쿼터·도달성·정책을 별도 축으로 공개하며, 폴백을 묵시적으로 실행하지 않습니다. 적용할 선택은 해석 당시 role-store와 availability revision에 묶입니다. 고위험 대체는 가시적인 승인자가 필요하고, 감지된 고위험 등급을 낮추려면 `--approved-by`와 `--reason`이 모두 필요하며, 고위험 검수는 구체적인 모델 ID에서 서로 다른 family를 입증할 때만 선택할 수 있습니다. `dispatch`와 `fallback`은 기본적으로 명령 준비·선택 기록만 하므로 `executed:false`입니다. 역할 없는 `agents multi --execute`와 `agents bench`는 opt-in 외부 CLI를 시작해 결과를 기록할 수 있지만, provider 기본 모델 fan-out으로 하나의 역할/모델 계약을 입증할 수 없으므로 `--role`을 거부합니다.
155
+
149
156
  **MCP (외부 AI 에이전트에 도구로 노출)**
150
157
  ```bash
151
- leerness mcp serve # JSON-RPC over stdio, 80+ 도구
158
+ leerness mcp serve # JSON-RPC over stdio, 98개 도구
152
159
  ```
153
160
 
154
161
  ---
155
162
 
156
163
  ## 아키텍처 (외부 리뷰 검증)
157
164
 
165
+ `leerness state inspect . --json`으로 현재 상태 위치와 Project / Worktree /
166
+ Common-Control / Immutable-Record / Generated-View의 제안 경로를 확인할 수 있습니다.
167
+ 읽기 전용 진단이며 데이터 이동·runtime 활성화·모델 호출은 하지 않습니다.
168
+ [진단 API](docs/state-paths-api.md)와 [단계별 구조 전환 계획](docs/state-scopes.md)을 참고하세요.
169
+
158
170
  - **런타임 의존성 0 / install-script 0** — `package.json` 의 dependencies/optional/peer 가 전부 비어 있고 postinstall 도 없습니다. 순수 Node stdlib(`fs`/`path`/`child_process`/`readline`). 공급망 공격면 최소. `leerness install-safety` 로 확인 가능.
159
171
  - **canonical JSON 단일 진실소스 + 마크다운 projection** — 메모리는 JSON 으로 저장하고 사람이 읽는 `.md` 는 파생물. 파이프(`|`)·개행·백틱·이모지·한글이 마크다운 테이블에서도 안전(셀 이스케이프 + round-trip).
160
172
  - **원자적 UTF-8 쓰기** — temp + rename 으로 부분쓰기 손상 방지, BOM 자동 strip.
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  > **The AI-coding operations layer that makes "done" require evidence — for any language, any AI agent.**
13
13
  > leerness does not write code. It gives your AI agent persistent memory, verified completion, and clean handoffs — stored inside your repo as plain files, exposed via CLI + MCP.
14
14
 
15
- [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-89-blue) · **0 runtime deps** · **0 install scripts** · offline-first · Node ≥ 18 · MIT
15
+ [![npm](https://img.shields.io/npm/v/leerness)](https://www.npmjs.com/package/leerness) · ![MCP tools](https://img.shields.io/badge/MCP--tools-98-blue) · **0 runtime deps** · **0 install scripts** · offline-first · Node ≥ 18 · MIT
16
16
 
17
17
  **🇰🇷 한국어 전문: [README.ko.md](./README.ko.md)**
18
18
 
@@ -55,7 +55,7 @@ You never have to type a command yourself. Paste this into Claude Code, Cursor,
55
55
 
56
56
  The agent installs and operates it for you — `leerness init` also writes the instructions into CLAUDE.md / AGENTS.md so future sessions pick them up automatically.
57
57
 
58
- Prefer pure natural language? leerness ships an **MCP server with 80+ tools** (`leerness mcp serve`). Connect it once to Claude Desktop / Claude Code and just ask: *"what was I working on?"*, *"did the AI actually finish T-0001?"*
58
+ Prefer pure natural language? leerness ships an **MCP server with 98 tools** (`leerness mcp serve`). Connect it once to Claude Desktop / Claude Code and just ask: *"what was I working on?"*, *"did the AI actually finish T-0001?"*
59
59
 
60
60
  ---
61
61
 
@@ -73,8 +73,31 @@ Built-in harnesses remember what the AI **said**. leerness verifies what the AI
73
73
 
74
74
  ---
75
75
 
76
+ ## Role-first model routing and fallback
77
+
78
+ Roles remain stable while providers and models are replaceable execution resources. Configure a role with a primary executor, ordered candidates, and a fallback policy, then resolve the current task against separate installation, opt-in, authentication, entitlement, quota, reachability, and policy signals:
79
+
80
+ ```bash
81
+ leerness roles set coder --provider codex --model gpt-model-id \
82
+ --candidate claude:claude-model-id --policy balanced
83
+ leerness roles validate --json
84
+ leerness agents resolve "implement the API" --role coder --json
85
+ leerness agents fallback provider "implement the API" --role coder \
86
+ --provider claude --model claude-model-id --approved-by owner --json
87
+ leerness agents history --json
88
+ ```
89
+
90
+ Resolution never silently executes a fallback. Each applied choice is bound to the role-store and availability revisions it inspected. High-risk substitutions require a visible approver, lowering detected high risk requires both `--approved-by` and `--reason`, and high-risk review is selectable only when different families can be inferred from concrete model IDs. `dispatch` and `fallback` normally prepare or record a choice with `executed:false`. Role-free `agents multi --execute` and `agents bench` can spawn opted-in external CLIs and record their outcomes; both reject `--role` because provider-default fan-out cannot prove one role/model contract.
91
+
92
+ ---
93
+
76
94
  ## Make it enforced, not optional
77
95
 
96
+ Before changing a multi-agent project's storage, inspect its actual workspace and proposed
97
+ Git-private/common scopes with `leerness state inspect . --json`. It is read-only: no data
98
+ migration, runtime activation, or provider calls. See [the state inspection API](docs/state-paths-api.md)
99
+ and [the staged architecture plan](docs/state-scopes.md).
100
+
78
101
  By default leerness is **cooperative**: your AI agent runs the commands because CLAUDE.md / AGENTS.md tell it to. A determined agent could skip them. To turn the guideline into a guardrail:
79
102
 
80
103
  ```bash
@@ -138,7 +161,7 @@ MIT
138
161
  <!-- leerness:project-readme:start -->
139
162
  ## Leerness Project Harness
140
163
 
141
- 이 프로젝트는 Leerness v1.36.184 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
164
+ 이 프로젝트는 Leerness v1.36.186 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
142
165
 
143
166
  ### 정체성 — AI 에이전트 운영 레이어 (UR-0030)
144
167
 
@@ -192,7 +215,7 @@ leerness memory restore decision <date|title>
192
215
 
193
216
  ### MCP server (외부 AI 통합)
194
217
 
195
- Leerness v1.36.184는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **89개 도구**를 노출:
218
+ Leerness v1.36.186는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **98개 도구**를 노출:
196
219
 
197
220
  ```jsonc
198
221
  // 카테고리별
@@ -205,7 +228,7 @@ Leerness v1.36.184는 stdio JSON-RPC MCP server를 내장합니다 — Claude Co
205
228
  // • Workflow: session_close / agents_list / task_export / env_check / usage_stats / reuse_map / whats_new
206
229
 
207
230
  // MCP server 실행: leerness mcp serve
208
- // tools/list 응답: 89 도구
231
+ // tools/list 응답: 98 도구
209
232
  ```
210
233
 
211
234
  ### Autonomous mode (자율 모드)
@@ -213,7 +236,7 @@ Leerness v1.36.184는 stdio JSON-RPC MCP server를 내장합니다 — Claude Co
213
236
  `<<autonomous-loop-dynamic>>` 신호만 보내면 AI가:
214
237
  1) 다음 라운드 후보 선정 → 2) 코드 변경 → 3) 회귀 테스트 갱신 → 4) 전체 e2e 스위트 통과 → 5) npm publish + git tag → 6) main push → 7) session close → 8) 다음 라운드 예약.
215
238
 
216
- 현재 누적: **v1.9.x → 1.36.184 릴리스 태그 이력** (수백 라운드) · _reports/는 비공개 보존.
239
+ 현재 누적: **v1.9.x → 1.36.186 릴리스 태그 이력** (수백 라운드) · _reports/는 비공개 보존.
217
240
 
218
241
  ### 성능 가이드
219
242
 
@@ -251,5 +274,5 @@ leerness release pack --close --auto-main-push
251
274
  - `.leerness/session-handoff.md`: 다음 세션 인수인계 (자동 작성)
252
275
  - `.leerness/lessons.md` / `decisions.md` / `rules.md`: 영구 메모리 (5 surface)
253
276
 
254
- Last synced by Leerness v1.36.184: 2026-09-01
277
+ Last synced by Leerness v1.36.186: 2026-09-05
255
278
  <!-- leerness:project-readme:end -->