leerness 1.36.148 → 1.36.160
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 +51 -0
- package/README.ko.md +4 -1
- package/README.md +9 -5
- package/bin/leerness.js +1646 -258
- package/lib/catalogs.js +1 -1
- package/lib/cursor-session-hook.js +76 -0
- package/lib/diagnostics.js +28 -14
- package/lib/git.js +5 -5
- package/lib/io.js +6 -5
- package/lib/mcp-tools.js +1 -1
- package/lib/pure-utils.js +2 -1
- package/lib/session-presence.js +16 -3
- package/lib/team.js +16 -5
- package/package.json +6 -4
- package/scripts/e2e-command-surface.js +304 -0
- package/scripts/e2e-concurrency.js +141 -0
- package/scripts/e2e-core.js +24 -0
- package/scripts/e2e.js +338 -56
- package/scripts/handoff-readonly-probe.js +403 -0
- package/scripts/lock-probe.js +108 -5
- package/scripts/platform-smoke.js +185 -0
- package/scripts/release-bump-probe.js +137 -0
- package/scripts/smoke.js +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.36.160 — 2026-08-25
|
|
4
|
+
|
|
5
|
+
- CI 전체 E2E를 Linux/Windows에서 결정화하고, 다중 AI 세션 presence와 상태 쓰기 락을 고유 토큰 owner·heartbeat 가시성·기본 fail-closed로 강화했습니다. fencing 없는 PID/host/mtime 판정으로 기존 owner를 자동 탈취하지 않습니다.
|
|
6
|
+
- Windows/Node 18의 deletion-pending 상태가 빈 `.lock`을 남기던 문제를 토큰 고유 release tombstone으로 해결했습니다. 해제 재시도는 새 경쟁자 락을 건드리지 않으며, native Promise·비표준 thenable·ABA·재시도 소진 경로와 tombstone을 상태 쓰기로 오인하지 않는 계측기 수명주기를 결정적 회귀로 검증합니다.
|
|
7
|
+
- Windows 8.3 실행 경로(`RUNNER~1`)를 안전한 provider 경로로 인식하고, 공유 `core.hooksPath` 훅이 실행 시점의 현재 worktree를 POSIX 셸의 물리 경로로 정규화한 뒤 handoff 근거를 판정하도록 수정했습니다. Linux/Windows fast CI가 이 두 플랫폼 경계를 전체 E2E 전에 검증합니다.
|
|
8
|
+
- 잠금 프로토콜 전환 뒤에는 실행 중인 1.36.159 이하 에이전트 세션을 모두 재시작해야 합니다. 비정상 종료로 남은 owner/구버전 `.lock`은 자동 삭제하지 않으므로 소유자를 확인한 뒤 수동 복구해야 합니다.
|
|
9
|
+
|
|
10
|
+
## 1.36.159 — 2026-08-24
|
|
11
|
+
|
|
12
|
+
- CI 영어 로케일 회귀 수정: selftest의 알 수 없는 플래그 검증을 ko/en 공용 계약으로 통일
|
|
13
|
+
|
|
14
|
+
## 1.36.158 — 2026-08-24
|
|
15
|
+
|
|
16
|
+
- 최종 외부 리뷰 수렴: enforce 설치 probe를 예약 난수 세션으로 격리하고 marker 락을 공유하며, 실제 handoff 동시 경합을 행동 테스트로 고정
|
|
17
|
+
|
|
18
|
+
## 1.36.157 — 2026-08-24
|
|
19
|
+
|
|
20
|
+
- 최종 외부 리뷰 수렴: 주소 있는 세션의 legacy handoff 우회를 차단하고 anonymous 예약키·case/child/길이경계·probe 복원·부분쓰기 rollback·CI handoff gate를 행동 테스트로 고정
|
|
21
|
+
|
|
22
|
+
## 1.36.156 — 2026-08-24
|
|
23
|
+
|
|
24
|
+
- 외부 Codex 재검수: Git hook 세션키 파생을 CLI와 일치시키고 synthetic install probe를 전용 handoff marker로 격리했으며, release bump를 preflight+rollback transaction으로 전환
|
|
25
|
+
|
|
26
|
+
## 1.36.155 — 2026-08-24
|
|
27
|
+
|
|
28
|
+
- enforce freshness를 handoff 전용 ignored marker로 분리해 주소 없는 세션도 정상 커밋하고 session close만으로 gate를 우회할 수 없도록 수정
|
|
29
|
+
|
|
30
|
+
## 1.36.154 — 2026-08-24
|
|
31
|
+
|
|
32
|
+
- T-0136: concurrent-safe handoff — default tracked-write 0, per-session freshness history, version-skew warning, Cursor sessionStart address bridge, and parallel/dry-run/enforce regression coverage
|
|
33
|
+
|
|
34
|
+
## 1.36.153 — 2026-08-23
|
|
35
|
+
|
|
36
|
+
- T-0122: release bump --patch를 정상 인식하고 leerness 자체 package/bin/README 버전 표면을 함께 동기화
|
|
37
|
+
|
|
38
|
+
## 1.36.152 — 2026-08-23
|
|
39
|
+
|
|
40
|
+
- T-0115: credentials·team remove·memory restore/plan RMW를 공유 락 트랜잭션으로 보강하고 지연 경쟁 회귀 6쌍을 추가
|
|
41
|
+
|
|
42
|
+
## 1.36.151 — 2026-08-23
|
|
43
|
+
|
|
44
|
+
- enforce worktree 공유 판정: 아직 없는 pre-commit의 조상 junction/symlink를 실제 위치로 해석해 형제 worktree 차단 사실을 설치 전부터 정확히 고지한다.
|
|
45
|
+
|
|
46
|
+
## 1.36.150 — 2026-08-23
|
|
47
|
+
|
|
48
|
+
- GIT_CONFIG_NOSYSTEM 보존: 설치기와 같은 셸의 git commit이 같은 hooksPath를 보도록 해 enforce 우회를 차단하고 실제 커밋 회귀 검사를 추가했다.
|
|
49
|
+
|
|
50
|
+
## 1.36.149 — 2026-08-23
|
|
51
|
+
|
|
52
|
+
- state run-id 경로 탈출 차단: legacy currentRunId와 run record run_id를 fail-closed 검증하고 두 입력 경로의 회귀 e2e를 추가했다.
|
|
53
|
+
|
|
3
54
|
## 1.36.102 — 2026-08-05 — 모르는 것을 안다고 말하지 않는다 · 준 경로에 적용한다
|
|
4
55
|
|
|
5
56
|
1.36.101 의 명령 표면 감사에서 남겨 둔 P1 두 건을 닫는다. 둘 다 **재현부터 하고** 고쳤다.
|
package/README.ko.md
CHANGED
|
@@ -69,6 +69,10 @@ leerness gate . # verify + audit + scan secrets + encoding + laz
|
|
|
69
69
|
leerness session close .
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
기본 `handoff`는 여러 AI 세션에서 동시에 실행해도 Git 추적 하네스 파일을 다시 쓰지 않고, `.harness/cache/sessions/` 아래 ignored 세션별 레코드만 갱신합니다. 구형 자동화가 `current-state.md`, `environment.json`, `last-handoff.json`, 생성 그래프 projection 갱신을 명시적으로 필요로 할 때만 `handoff --writeback`을 사용하세요.
|
|
73
|
+
|
|
74
|
+
Cursor 프로젝트에는 `leerness adapter cursor --path .`를 한 번 실행하세요. 기존 project hook을 보존하면서 로컬 `sessionStart` 브리지를 추가해 Cursor 세션 주소를 `LEERNESS_SESSION_ID`로 전달하므로 Cursor/Claude/Codex 동시 세션을 각각 추적할 수 있습니다. Cursor Cloud는 현재 `sessionStart`/`sessionEnd` hook을 실행하지 않으므로, 그 환경에서는 에이전트가 명시 세션 주소를 전달하거나 직접 `handoff`를 실행해야 합니다.
|
|
75
|
+
|
|
72
76
|
CLAUDE.md / AGENTS.md 에 `세션 시작 시 leerness handoff .`, `종료 전 leerness session close .` 지침을 추가하면 에이전트가 자동으로 호출합니다.
|
|
73
77
|
|
|
74
78
|
---
|
|
@@ -187,4 +191,3 @@ leerness mcp serve # JSON-RPC over stdio, 80+ 도구
|
|
|
187
191
|
## 라이선스
|
|
188
192
|
|
|
189
193
|
MIT
|
|
190
|
-
|
package/README.md
CHANGED
|
@@ -25,6 +25,10 @@ npx -y leerness init . --yes # adds .harness/ memory + guard files to your pro
|
|
|
25
25
|
npx leerness handoff . # everything your AI should know right now, in one call
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
`handoff` is safe to run from several AI sessions at once: by default it does not rewrite Git-tracked harness files and updates only an ignored per-session record under `.harness/cache/sessions/`. Use `handoff --writeback` only when legacy automation explicitly needs refreshed `current-state.md`, `environment.json`, `last-handoff.json`, or generated graph projections.
|
|
29
|
+
|
|
30
|
+
For Cursor, run `npx leerness adapter cursor --path .` once. It preserves existing project hooks and adds a local `sessionStart` bridge that maps Cursor's session address to `LEERNESS_SESSION_ID`, so concurrent Cursor/Claude/Codex sessions remain separately traceable. Cursor Cloud currently does not run `sessionStart`/`sessionEnd` hooks; in that environment the agent must provide an explicit session address or run `handoff` itself.
|
|
31
|
+
|
|
28
32
|
Your project now has agent-independent memory. To see the flagship feature — catching a false "done" claim:
|
|
29
33
|
|
|
30
34
|
```bash
|
|
@@ -102,7 +106,7 @@ For secrets, pair the gate with a **dedicated scanner** in the same workflow. `s
|
|
|
102
106
|
- **Verification** — `verify-claim` (evidence vs reality, stub/fake-test/inflated-count detection, `--run-tests --test-cmd` for any language; `--all` checks **every** completed claim at once for CI) · `contract verify` (spec ↔ impl) · `gate` (one-call CI gate).
|
|
103
107
|
- **Audit** — `audit` · `lazy detect` · `drift check` keep the workspace honest over time.
|
|
104
108
|
- **Security** — `scan secrets` (committed-secret detection) · `encoding check` (BOM/CP949) — also runs at `session close`.
|
|
105
|
-
- **Visualize** — `graph --html` writes a self-contained interactive ontology graph (`leerness.html`) of the whole harness (memory surfaces + skills + feature-graph) — click a node to read its content. Optional auto-refresh
|
|
109
|
+
- **Visualize** — `graph --html` writes a self-contained interactive ontology graph (`leerness.html`) of the whole harness (memory surfaces + skills + feature-graph) — click a node to read its content. Optional tracked auto-refresh: `LEERNESS_AUTO_GRAPH=1 leerness handoff . --writeback`.
|
|
106
110
|
|
|
107
111
|
Full command reference, workflows, and architecture: **[README.ko.md](./README.ko.md)** (Korean) · `leerness commands` · `leerness help`.
|
|
108
112
|
|
|
@@ -122,7 +126,7 @@ MIT
|
|
|
122
126
|
<!-- leerness:project-readme:start -->
|
|
123
127
|
## Leerness Project Harness
|
|
124
128
|
|
|
125
|
-
이 프로젝트는 Leerness v1.36.
|
|
129
|
+
이 프로젝트는 Leerness v1.36.160 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
|
|
126
130
|
|
|
127
131
|
### 정체성 — AI 에이전트 운영 레이어 (UR-0030)
|
|
128
132
|
|
|
@@ -176,7 +180,7 @@ leerness memory restore decision <date|title>
|
|
|
176
180
|
|
|
177
181
|
### MCP server (외부 AI 통합)
|
|
178
182
|
|
|
179
|
-
Leerness v1.36.
|
|
183
|
+
Leerness v1.36.160는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **89개 도구**를 노출:
|
|
180
184
|
|
|
181
185
|
```jsonc
|
|
182
186
|
// 카테고리별
|
|
@@ -197,7 +201,7 @@ Leerness v1.36.148는 stdio JSON-RPC MCP server를 내장합니다 — Claude Co
|
|
|
197
201
|
`<<autonomous-loop-dynamic>>` 신호만 보내면 AI가:
|
|
198
202
|
1) 다음 라운드 후보 선정 → 2) 코드 변경 → 3) 회귀 테스트 갱신 → 4) 전체 e2e 스위트 통과 → 5) npm publish + git tag → 6) main push → 7) session close → 8) 다음 라운드 예약.
|
|
199
203
|
|
|
200
|
-
현재 누적: **v1.9.x → 1.36.
|
|
204
|
+
현재 누적: **v1.9.x → 1.36.160 릴리스 태그 이력** (수백 라운드) · _reports/는 비공개 보존.
|
|
201
205
|
|
|
202
206
|
### 성능 가이드
|
|
203
207
|
|
|
@@ -235,5 +239,5 @@ leerness release pack --close --auto-main-push
|
|
|
235
239
|
- `.harness/session-handoff.md`: 다음 세션 인수인계 (자동 작성)
|
|
236
240
|
- `.harness/lessons.md` / `decisions.md` / `rules.md`: 영구 메모리 (5 surface)
|
|
237
241
|
|
|
238
|
-
Last synced by Leerness v1.36.
|
|
242
|
+
Last synced by Leerness v1.36.160: 2026-08-25
|
|
239
243
|
<!-- leerness:project-readme:end -->
|