leerness 1.36.11 → 1.36.12
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 +9 -0
- package/README.md +4 -4
- package/bin/leerness.js +12 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.36.12 — 2026-07-12 — UR-0009 완결: selftest 견고화 불변식 메타가드 + .gitattributes LF 강제 커밋
|
|
4
|
+
|
|
5
|
+
**저순위 백로그 UR-0009 (1.12.0 클린룸 exact-match 실패 후속) 3파트 완결.**
|
|
6
|
+
|
|
7
|
+
- **(1) 멀티라인 needle 전수 점검: CLEAN** — 실제 개행을 포함한 백틱 needle `.includes(` 0건(라인 히트 3건은 needle 텍스트에 이스케이프 `\n` 문자가 든 단일라인 — EOL 무관 견고). 1.12.1 정규식화 이후 재발 없음을 확인하고, **불변식을 메타가드 selftest 로 상시 강제**(실개행 needle 이 다시 생기면 selftest 실패; 스캔 정규식은 charCode 조립으로 self-ref 안전).
|
|
8
|
+
- **(2) .gitattributes LF 강제 커밋** — 파일은 working tree 에 존재했으나 **미추적**이라 다른 클론엔 무효였음(git 은 untracked .gitattributes 도 읽으므로 로컬은 이미 유효 — 과거 커밋의 "CRLF will be replaced by LF" 경고가 증거). 커밋으로 모든 체크아웃에서 bin/lib LF 일관성 보장.
|
|
9
|
+
- **(3) 1.12.0 실패 메커니즘** — 정확한 역사적 재현은 불가(당시 환경 소멸)를 정직 인정. 가설(체크아웃별 EOL/포맷 분산)은 (1) 불변식 강제 + (2) LF 정규화 커밋으로 **원인-계열 자체를 구조적으로 차단** — 증상(1.12.1)과 원인계열(1.36.12) 모두 닫힘.
|
|
10
|
+
- selftest 286 + e2e 통과.
|
|
11
|
+
|
|
3
12
|
## 1.36.11 — 2026-07-09 — 17th 클린룸 리뷰 4/4 채택: deps --json 누수 + UNC 우회 + DB렌즈 prose FP + en 렌즈 i18n
|
|
4
13
|
|
|
5
14
|
**게시본 1.36.10 을 codex 가 클린룸(fresh npm install)에서 행위로만 적대 검증(이 세션 7개 신규 표면) — P1×2, P2×2 전부 명령+출력 증거로 확정, 4/4 수정.**
|
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.12 하네스를 사용합니다. 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.12는 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.11는 stdio JSON-RPC MCP server를 내장합니다 — Claude Cod
|
|
|
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.12)** · 매 라운드 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.12: 2026-07-12
|
|
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.12';
|
|
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') 시 호스트 프로세스 오염.
|
|
@@ -4052,6 +4052,17 @@ function _selfTestCases() {
|
|
|
4052
4052
|
const enLensOk = self.includes('(_en && l.questionsEn && l.questionsEn[0]) || l.questions[0]');
|
|
4053
4053
|
return depsJsonOk && uncOk && proseOk && enLensOk;
|
|
4054
4054
|
} },
|
|
4055
|
+
{ name: 'selftest 견고화 불변식 (UR-0009, 1.36.12): 실개행 멀티라인 needle includes 금지(전수 0) — 1.12.0 클린룸 exact-match 실패 재발 차단 (메타가드)', run: () => {
|
|
4056
|
+
// 1.12.0 사고: 멀티라인 exact-string includes 가드가 환경별 EOL/포맷 차이로 클린룸에서만 실패(1.12.1 정규식화로 해소).
|
|
4057
|
+
// 이 메타가드는 그 불변식을 상시 강제: 백틱 needle 안에 실제 개행이 든 .includes( 가 다시 생기면 selftest 가 실패한다.
|
|
4058
|
+
// self-ref 안전: 스캔 정규식은 backtick 을 charCode 로 조립 — 이 가드 자신은 실개행 needle 을 포함하지 않는다.
|
|
4059
|
+
const self = read(__filename);
|
|
4060
|
+
const BT = String.fromCharCode(96), NL = String.fromCharCode(10);
|
|
4061
|
+
const re = new RegExp('\\.includes\\(' + BT + '([^' + BT + ']*)' + BT + '\\)', 'g');
|
|
4062
|
+
let m, offenders = 0;
|
|
4063
|
+
while ((m = re.exec(self)) !== null) { if (m[1].includes(NL)) offenders++; }
|
|
4064
|
+
return offenders === 0;
|
|
4065
|
+
} },
|
|
4055
4066
|
{ name: 'CLI 영어화 Phase 1 (1.20.2, UR-0010): _uiLang 해석(flag>env>manifest>ko) + 첫화면 _t 적용 (행위+소스)', run: () => {
|
|
4056
4067
|
const save = process.argv; const saveEnv = process.env.LEERNESS_LANG;
|
|
4057
4068
|
try {
|