leerness 1.12.0 → 1.12.1
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 +17 -0
- package/README.md +4 -4
- package/bin/leerness.js +4 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.12.1 — 2026-06-08 — 🩹 [Stable hotfix] 클린룸 selftest false-alarm 수정 (UR-0008)
|
|
4
|
+
|
|
5
|
+
**1.12.0 직후 발견된 사용자-노출 결함 핫픽스 — npm 배포(예외).**
|
|
6
|
+
|
|
7
|
+
### 문제 (게시본 클린룸 검증으로 발견)
|
|
8
|
+
`npm i leerness@1.12.0` 후 `leerness selftest` 실행 시 **"1/206 실패 — 설치 손상 의심"** false-alarm. 패키지는 정상 동작(모든 명령 기능 OK)이나, 무결성 게이트인 selftest 가 거짓 경보 → 정직성이 핵심인 도구의 신뢰 훼손.
|
|
9
|
+
|
|
10
|
+
### 원인 + 수정
|
|
11
|
+
- UR-0151 selftest 케이스가 소스 자기검증에 **멀티라인 exact-string `includes("…\n …")`**(줄바꿈+정확 4공백)를 사용 → 공백/줄바꿈/환경에 취약(repo 통과, 클린룸 실패).
|
|
12
|
+
- → **공백 유연 정규식 `\s+`** 으로 견고화. 로컬 tarball 클린룸 설치 후 **selftest 206/206 통과** 검증(게시 전).
|
|
13
|
+
|
|
14
|
+
### 배포 정책 예외 (R-0011)
|
|
15
|
+
- R-0011(patch 는 npm 미배포)의 **예외 — 직전 게시 minor(1.12.0)의 사용자-노출 결함 안정성 핫픽스**라 npm 배포. dist-tag `stable` 유지.
|
|
16
|
+
|
|
17
|
+
### 검증 (회귀 0)
|
|
18
|
+
- selftest 206(repo) + **206(클린룸 tarball)** · E2E 365/365.
|
|
19
|
+
|
|
3
20
|
## 1.12.0 — 2026-06-08 — 🛡️ [안정화/Stable] 핵심가치(증거-우선 완료) 복원 + 용어집 안정 minor
|
|
4
21
|
|
|
5
22
|
**🛡️ 안정화(Stable) minor. 헤드라인 = verify-claim 기본 모드가 허위완료를 차단하도록 복원(동작 변경).** 14번째 멀티에이전트 버그헌트 성과(1.11.1~1.11.4)를 검증·통합해 npm 공개. R-0011 정책의 3번째 minor.
|
package/README.md
CHANGED
|
@@ -168,7 +168,7 @@ MIT
|
|
|
168
168
|
<!-- leerness:project-readme:start -->
|
|
169
169
|
## Leerness Project Harness
|
|
170
170
|
|
|
171
|
-
이 프로젝트는 Leerness v1.12.
|
|
171
|
+
이 프로젝트는 Leerness v1.12.1 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
|
|
172
172
|
|
|
173
173
|
### 정체성 — AI 에이전트 운영 레이어 (UR-0030)
|
|
174
174
|
|
|
@@ -222,7 +222,7 @@ leerness memory restore decision <date|title>
|
|
|
222
222
|
|
|
223
223
|
### MCP server (외부 AI 통합)
|
|
224
224
|
|
|
225
|
-
Leerness v1.12.
|
|
225
|
+
Leerness v1.12.1는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **85개 도구**를 노출:
|
|
226
226
|
|
|
227
227
|
```jsonc
|
|
228
228
|
// 카테고리별
|
|
@@ -243,7 +243,7 @@ Leerness v1.12.0는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code
|
|
|
243
243
|
`<<autonomous-loop-dynamic>>` 신호만 보내면 AI가:
|
|
244
244
|
1) 다음 라운드 후보 선정 → 2) 코드 변경 → 3) stress-v* 신규 작성 + 누적 회귀 → 4) e2e 219/219 → 5) npm pack + git tag + GitHub release → 6) main 자동 push (1.9.140+) → 7) session close → 8) 다음 라운드 예약.
|
|
245
245
|
|
|
246
|
-
현재 누적: **70 라운드 (1.9.40 → 1.12.
|
|
246
|
+
현재 누적: **70 라운드 (1.9.40 → 1.12.1)** · 매 라운드 GitHub release/태그 생성 · _reports/는 비공개 보존.
|
|
247
247
|
|
|
248
248
|
### 성능 가이드 (1.9.140 측정)
|
|
249
249
|
|
|
@@ -281,6 +281,6 @@ leerness release pack --close --auto-main-push
|
|
|
281
281
|
- `.harness/session-handoff.md`: 다음 세션 인수인계 (자동 작성)
|
|
282
282
|
- `.harness/lessons.md` / `decisions.md` / `rules.md`: 영구 메모리 (5 surface)
|
|
283
283
|
|
|
284
|
-
Last synced by Leerness v1.12.
|
|
284
|
+
Last synced by Leerness v1.12.1: 2026-06-08
|
|
285
285
|
<!-- leerness:project-readme:end -->
|
|
286
286
|
|
package/bin/leerness.js
CHANGED
|
@@ -32,7 +32,7 @@ const { _evidenceQuality, _parseEvidenceStats, _shellGuardAnalyze, _claimFileInG
|
|
|
32
32
|
// 1.9.295 (UR-0025 4단계): 정적 데이터 카탈로그 모듈 분리 (비파괴, require-based).
|
|
33
33
|
const { CAPABILITY_SURFACE, POWERFUL_COMMANDS, ADAPTERS, REUSE_CATEGORIES, REUSE_CHECKLIST, _DEFAULT_PLATFORM_CONSTRAINTS, _DEFAULT_DOMAIN_CATALOG, _TOOL_CATALOG, _LSP_LANG_PATTERNS, OPTIMISM_PATTERNS, BUILT_IN_PERSONAS, STRINGS, BUILTIN_CATALOG, ROADMAP_STATUS_LABEL, ROADMAP_STATUS_COLOR, SECRET_PATTERNS, MERGE_OVERWRITE_FILES, MINIMAL_SKIP_KEYS, REQUIRED_WORKSPACE_FILES, KEYWORD_STOPWORDS, SKILL_CATALOG_PRESETS } = require('../lib/catalogs'); // 1.9.344/368/369 (UR-0025): catalog 분리 · 1.11.4 (UR-0007): _TOOL_CATALOG
|
|
34
34
|
|
|
35
|
-
const VERSION = '1.12.
|
|
35
|
+
const VERSION = '1.12.1';
|
|
36
36
|
|
|
37
37
|
// 1.9.290 (UR-0037, Codex gpt-5.5 #4 수렴): CLI 전용 부작용은 require 시 실행하지 않는다.
|
|
38
38
|
// 이전: warning listener 제거 / NODE_OPTIONS 변경 / chcp IIFE 가 top-level 즉시 실행 → require('harness') 시 호스트 프로세스 오염.
|
|
@@ -3362,9 +3362,10 @@ function _selfTestCases() {
|
|
|
3362
3362
|
} },
|
|
3363
3363
|
{ name: 'UR-0151: decision/lesson/rule add positional path 지원(_taskPositionalPath 재사용, cwd 오염 차단) (1.9.445)', run: () => {
|
|
3364
3364
|
const src = read(__filename);
|
|
3365
|
+
// 1.12.1 (UR-0008): 멀티라인 exact-string includes 는 공백/줄바꿈/환경에 취약(클린룸 selftest false-alarm) → 공백 유연 정규식(\s+)으로 견고화.
|
|
3365
3366
|
const rule = src.includes("ruleAdd(arg('--path', null) || _taskPositionalPath(args, 2) || process.cwd(), _parseAddTitle(args, 2))");
|
|
3366
|
-
const lesson =
|
|
3367
|
-
const decision =
|
|
3367
|
+
const lesson = /if \(cmd === 'lesson'\) \{\s+const root = absRoot\(arg\('--path', null\) \|\| _taskPositionalPath\(args, 2\) \|\| process\.cwd\(\)\)/.test(src);
|
|
3368
|
+
const decision = /if \(cmd === 'decision'\) \{\s+const root = absRoot\(arg\('--path', null\) \|\| _taskPositionalPath\(args, 2\) \|\| process\.cwd\(\)\)/.test(src);
|
|
3368
3369
|
// rule add 의 --trigger 값은 경로 아님(path-like 아님) + 값-플래그 제외
|
|
3369
3370
|
const m = require('../lib/pure-utils');
|
|
3370
3371
|
const trig = m._taskPositionalPath(['rule', 'add', '룰', '--trigger', 'every-update', '/p'], 2) === '/p'
|