leerness 1.36.9 → 1.36.10
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 +8 -0
- package/README.md +4 -4
- package/bin/leerness.js +21 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.36.10 — 2026-07-09 — FILE_RE Windows 백슬래시 경로 지원 (마지막 선재 백로그 소진)
|
|
4
|
+
|
|
5
|
+
**verify-claim 의 주장-파일 추출이 Windows 백슬래시 경로를 잘라먹던 선재 결함(전 확장자 공통, codex 6차 core-diff 리뷰에서 지적 후 backlog).**
|
|
6
|
+
|
|
7
|
+
- 증상(충실 재현): evidence `src\thing.mjs` → `thing.mjs` 로(디렉터리 소실 → 존재 검사 false-fail), `db\migrations\001_create.sql` → `create.sql` 로(숫자 시작 세그먼트까지 소실) 추출.
|
|
8
|
+
- 수정: `FILE_RE` 구분자에 `\\` 허용 + 추출 직후 `/` 정규화(하류의 git diff 비교·렌즈 도메인 매핑은 `/` 기준이라 일관).
|
|
9
|
+
- 검증: 백슬래시/다단/혼합 6케이스 전부 정확 추출·정규화, forward-슬래시 회귀 0, 버전 문자열(`1.36.9`)·확장자 없는 경로(`C:\Users\…`) FP 0. selftest 284 (신규 행위 케이스: 백슬래시 evidence done 주장이 files-missing 없이 통과) + e2e 통과.
|
|
10
|
+
|
|
3
11
|
## 1.36.9 — 2026-07-09 — optimism [DB] FP 수정: SQL-migration 프로젝트의 정직한 done 주장 무오탐 (dogfood 백로그)
|
|
4
12
|
|
|
5
13
|
**stock-service 도그푸드에서 두 번 마주친 선재 FP 소진(깨끗한 1.36.2에서도 동일 재현 확인 — 이번 세션 회귀 아님).**
|
package/README.md
CHANGED
|
@@ -125,7 +125,7 @@ MIT
|
|
|
125
125
|
<!-- leerness:project-readme:start -->
|
|
126
126
|
## Leerness Project Harness
|
|
127
127
|
|
|
128
|
-
이 프로젝트는 Leerness v1.36.
|
|
128
|
+
이 프로젝트는 Leerness v1.36.10 하네스를 사용합니다. AI 에이전트는 작업 전 `leerness handoff`로 컨텍스트를 적재하고, 작업 후 `leerness check`/`leerness audit`/`leerness session close`를 수행해야 합니다.
|
|
129
129
|
|
|
130
130
|
### 정체성 — AI 에이전트 운영 레이어 (UR-0030)
|
|
131
131
|
|
|
@@ -179,7 +179,7 @@ leerness memory restore decision <date|title>
|
|
|
179
179
|
|
|
180
180
|
### MCP server (외부 AI 통합)
|
|
181
181
|
|
|
182
|
-
Leerness v1.36.
|
|
182
|
+
Leerness v1.36.10는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code · Cursor · Codex CLI 등 외부 AI에 **86개 도구**를 노출:
|
|
183
183
|
|
|
184
184
|
```jsonc
|
|
185
185
|
// 카테고리별
|
|
@@ -200,7 +200,7 @@ Leerness v1.36.9는 stdio JSON-RPC MCP server를 내장합니다 — Claude Code
|
|
|
200
200
|
`<<autonomous-loop-dynamic>>` 신호만 보내면 AI가:
|
|
201
201
|
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) 다음 라운드 예약.
|
|
202
202
|
|
|
203
|
-
현재 누적: **70 라운드 (1.9.40 → 1.36.
|
|
203
|
+
현재 누적: **70 라운드 (1.9.40 → 1.36.10)** · 매 라운드 GitHub release/태그 생성 · _reports/는 비공개 보존.
|
|
204
204
|
|
|
205
205
|
### 성능 가이드 (1.9.140 측정)
|
|
206
206
|
|
|
@@ -238,6 +238,6 @@ leerness release pack --close --auto-main-push
|
|
|
238
238
|
- `.harness/session-handoff.md`: 다음 세션 인수인계 (자동 작성)
|
|
239
239
|
- `.harness/lessons.md` / `decisions.md` / `rules.md`: 영구 메모리 (5 surface)
|
|
240
240
|
|
|
241
|
-
Last synced by Leerness v1.36.
|
|
241
|
+
Last synced by Leerness v1.36.10: 2026-07-10
|
|
242
242
|
<!-- leerness:project-readme:end -->
|
|
243
243
|
|
package/bin/leerness.js
CHANGED
|
@@ -33,7 +33,7 @@ const { _evidenceQuality, _parseEvidenceStats, _shellGuardAnalyze, _claimFileInG
|
|
|
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
|
const { findCorruptedStateJson: _findCorruptedStateJson } = require('../lib/state-integrity'); // 1.36.1 (클린룸 리뷰 FN): .harness/*.json 상태 무결성 (audit/health/check 공유)
|
|
35
35
|
|
|
36
|
-
const VERSION = '1.36.
|
|
36
|
+
const VERSION = '1.36.10';
|
|
37
37
|
|
|
38
38
|
// 1.9.290 (UR-0037, Codex gpt-5.5 #4 수렴): CLI 전용 부작용은 require 시 실행하지 않는다.
|
|
39
39
|
// 이전: warning listener 제거 / NODE_OPTIONS 변경 / chcp IIFE 가 top-level 즉시 실행 → require('harness') 시 호스트 프로세스 오염.
|
|
@@ -4017,6 +4017,21 @@ function _selfTestCases() {
|
|
|
4017
4017
|
return scannedOk && noFp && stillDetects;
|
|
4018
4018
|
} finally { try { fs.rmSync(dir, { recursive: true, force: true }); } catch { /* ignore */ } }
|
|
4019
4019
|
} },
|
|
4020
|
+
{ name: 'FILE_RE 백슬래시 경로 (1.36.10, 선재 백로그): Windows 경로 추출+정규화 · forward 회귀 0 · FP 0 (행위)', run: () => {
|
|
4021
|
+
const os = require('os');
|
|
4022
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'lz-bs-'));
|
|
4023
|
+
const hd = path.join(dir, '.harness'); fs.mkdirSync(hd);
|
|
4024
|
+
fs.mkdirSync(path.join(dir, 'src'));
|
|
4025
|
+
fs.writeFileSync(path.join(dir, 'src', 'thing.mjs'), 'export const x = 1;\n// real impl with enough content to not be a stub\nexport function go(){ return x + 1; }\n');
|
|
4026
|
+
try {
|
|
4027
|
+
// 백슬래시 evidence 의 done 주장 → 파일 존재 검사가 통과해야 함(이전엔 디렉터리 소실로 false-fail)
|
|
4028
|
+
fs.writeFileSync(path.join(hd, 'progress-tracker.md'),
|
|
4029
|
+
'| ID | Status | Request | Evidence | Next Action | Updated |\n|---|---|---|---|---|---|\n| T-0001 | done | 작업 | src\\thing.mjs 수정 완료 | - | 2026-07-09 |\n');
|
|
4030
|
+
const r = verifyClaimCmd(dir, 'T-0001', { collect: true });
|
|
4031
|
+
const extractedOk = r && Array.isArray(r.reasons) && !r.reasons.includes('files-missing');
|
|
4032
|
+
return extractedOk;
|
|
4033
|
+
} finally { try { fs.rmSync(dir, { recursive: true, force: true }); } catch { /* ignore */ } }
|
|
4034
|
+
} },
|
|
4020
4035
|
{ name: 'CLI 영어화 Phase 1 (1.20.2, UR-0010): _uiLang 해석(flag>env>manifest>ko) + 첫화면 _t 적용 (행위+소스)', run: () => {
|
|
4021
4036
|
const save = process.argv; const saveEnv = process.env.LEERNESS_LANG;
|
|
4022
4037
|
try {
|
|
@@ -10888,8 +10903,11 @@ function verifyClaimCmd(root, taskId, opts = {}) {
|
|
|
10888
10903
|
// 1.9.21: 설정/메타 파일 확장자 추가 — Godot export_presets.cfg 등 false negative 보완
|
|
10889
10904
|
// 1.18.2: java|php|mjs|cjs 추가 — _VC_CODE_EXT 와 정합(이전엔 .java/.php 임플 주장이 추출조차 안 돼 스텁/존재 검사를 무검사 통과).
|
|
10890
10905
|
const FILE_EXTS = 'webmanifest|dockerfile|properties|tscn|tres|godot|json5|prisma|java|jsx|tsx|yaml|html|scss|sass|less|gltf|conf|json|toml|lock|mdx|xml|css|svg|yml|cfg|ini|env|php|sql|mjs|cjs|md|js|ts|gd|cs|py|rb|go|rs|kt|sh|h';
|
|
10891
|
-
|
|
10892
|
-
|
|
10906
|
+
// 1.36.10 (선재 백로그): Windows 백슬래시 경로 지원 — 'src\\inventory.mjs' 가 'inventory.mjs' 로,
|
|
10907
|
+
// 'db\\migrations\\001_create.sql' 이 'create.sql' 로 잘려 추출돼 존재 검사가 false-fail 하던 결함.
|
|
10908
|
+
// 구분자에 \\ 허용 + 추출 후 / 로 정규화(하류의 git diff 비교·렌즈 매핑은 / 기준).
|
|
10909
|
+
const FILE_RE = new RegExp(`(?:[A-Za-z][A-Za-z0-9_-]*[\\/\\\\])?[A-Za-z][\\w./\\\\-]*\\.(?:${FILE_EXTS})\\b`, 'g');
|
|
10910
|
+
const filePatterns = (evidence.match(FILE_RE) || []).map(f => f.replace(/\\/g, '/'));
|
|
10893
10911
|
// 중복 제거 + "tests/test.js" 같은 결과를 유지 (이미 `..` 없으니 그대로)
|
|
10894
10912
|
const files = Array.from(new Set(filePatterns));
|
|
10895
10913
|
// 1.9.20: 테스트 수 파싱 확장 — 한국어 + jest/mocha/tap/vitest
|