leerness 1.9.227 β†’ 1.9.228

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,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.228 β€” 2026-05-23
4
+
5
+ **πŸ“Š health --json roundHistory 톡합 (JSON 3 λͺ…λ Ή 일관성) + session-workflow.md drift 차단 + ν—€λ“œλΌμΈ label κ°±μ‹ .**
6
+
7
+ ### 1. health --json `roundHistory` ν•„λ“œ 톡합
8
+ - handoff/session close에 이어 health도 톡합 β†’ **JSON 3 λͺ…λ Ή 일관성**
9
+ - `{ roundCount, baselineVersion, nextMilestone, roundsToNextMilestone, daysActive, avgRoundsPerDay }`
10
+ - μ™ΈλΆ€ μžλ™ν™”κ°€ health 단일 호좜둜 μ§„ν–‰λ„κΉŒμ§€ 회수
11
+
12
+ ### 2. session-workflow.md drift 차단 κ°±μ‹  (1.9.220~228)
13
+ - μ‹ κ·œ μ„Ήμ…˜ 4개:
14
+ - 비정상 μ’…λ£Œ 자율 재개 (1.9.220~222)
15
+ - μ‚¬μš©μž μš”μ²­ μžλ™ μ™„λ£Œ (1.9.223~225)
16
+ - λΌμš΄λ“œ 진행도 κ°€μ‹œν™” (1.9.226~228)
17
+ - JSON 톡합 맀트릭슀 (handoff/session close 6 ν•„λ“œ)
18
+ - λ§ˆμ§€λ§‰ μ—…λ°μ΄νŠΈ 1.9.171 β†’ 1.9.228 (57 λΌμš΄λ“œ λˆ„μ  정리)
19
+
20
+ ### 3. handoff ν—€λ“œλΌμΈ label list κ°±μ‹ 
21
+ - κΈ°μ‘΄: `(1.9.81/93/113/152/162/192/197/204/207/209/215/220)` (12 버전)
22
+ - μ‹ κ·œ: `(1.9.81/93/113/152/162/192/197/204/207/209/215/220/223/226)` (**14 버전**, +1.9.223 delivered-requests, +1.9.226 round-counter)
23
+ - AIκ°€ ν—€λ“œλΌμΈ 좜처 μΆ”μ ν•˜κΈ° 쉬움 (메타 κ°€μ‹œμ„±)
24
+
25
+ ### 4. λˆ„μ  νšŒκ·€ (1.9.207~227) β€” λͺ¨λ‘ μœ μ§€
26
+
27
+ ### 5. stress-v173 β€” 15/15 PASS
28
+ - 1.9.228 (5): VERSION + health roundHistory + 3 λͺ…λ Ή 일관성 + ν—€λ“œλΌμΈ label + session-workflow.md
29
+ - μ„±λŠ₯ (2): cold_start avg 414ms / health --json 1132ms
30
+ - λˆ„μ  νšŒκ·€ (8): 1.9.207~227
31
+
32
+ ### 6. μžλ™ release (90 λΌμš΄λ“œ main-push streak Β· 51 λΌμš΄λ“œ npm publish streak)
33
+
34
+ πŸ“Š **JSON 일관성 맀트릭슀 μ™„μ„±** (handoff/session close/health 3 λͺ…λ Ή β€” `roundHistory` ν•„λ“œ 동일 ν˜•μ‹)
35
+
36
+ ---
37
+
3
38
  ## 1.9.227 β€” 2026-05-23
4
39
 
5
40
  **πŸ“Š handoff/session close --json roundHistory 톡합 (6 ν•„λ“œ μ™„μ„±) + CLAUDE/AGENTS drift 차단.**
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **AI μ½”λ”© μ—μ΄μ „νŠΈμ˜ κ±°μ§“ μ™„λ£ŒΒ·μ€‘λ³΅Β·λ§κ°Β·μΆ©λŒμ„ λ§‰μ•„μ£ΌλŠ” κ²€μˆ˜Β·κΈ°μ–΅Β·ν˜‘μ—… CLI ν•˜λ„€μŠ€.**
4
4
 
5
- [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.227-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v172-17%2F17-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-62-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-183-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-89_rounds-success)]() [![goal-matrix](https://img.shields.io/badge/λͺ©μ _맀트릭슀-100%2F100_(5μΆ•)-brightgreen)]() [![json-fields](https://img.shields.io/badge/πŸ“Š_JSON_톡합_ν•„λ“œ-6%2F6-blueviolet)]() [![perf](https://img.shields.io/badge/cold_start-400ms-success)]() [![install](https://img.shields.io/badge/npm_i_leerness-μ¦‰μ‹œ_μ‚¬μš©_κ°€λŠ₯-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
5
+ [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.228-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v173-15%2F15-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-62-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-184-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-90_rounds-success)]() [![goal-matrix](https://img.shields.io/badge/λͺ©μ _맀트릭슀-100%2F100_(5μΆ•)-brightgreen)]() [![json-3cmd](https://img.shields.io/badge/πŸ“Š_JSON_3_λͺ…λ Ή_일관성-handoff%2Bclose%2Bhealth-blueviolet)]() [![perf](https://img.shields.io/badge/cold_start-414ms-success)]() [![install](https://img.shields.io/badge/npm_i_leerness-μ¦‰μ‹œ_μ‚¬μš©_κ°€λŠ₯-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
6
6
 
7
7
  ```
8
8
  ╔══════════════════════════════════════════════════════════════╗
@@ -12,9 +12,9 @@
12
12
  β•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β• β•šβ•β•β•β•β–ˆβ–ˆβ•‘ β•‘
13
13
  β•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘ β•‘
14
14
  β•‘ β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β• β•‘
15
- β•‘ v1.9.227 AI Agent Reliability Harness + Sandbox β•‘
15
+ β•‘ v1.9.228 AI Agent Reliability Harness + Sandbox β•‘
16
16
  β•‘ verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β•‘
17
- β•‘ πŸ“Š handoff/session close --json 6 톡합 ν•„λ“œ μ™„μ„± β•‘
17
+ β•‘ πŸ“Š health --json roundHistory + 3 λͺ…λ Ή 일관성 μ™„μ„± β•‘
18
18
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
19
19
  ```
20
20
 
package/bin/harness.js CHANGED
@@ -7,7 +7,7 @@ const cp = require('child_process');
7
7
  const os = require('os'); // 1.9.178: _publishToNpm μ—μ„œ os.tmpdir() μ‚¬μš© (μ „μ—­ import)
8
8
  const readline = require('readline');
9
9
 
10
- const VERSION = '1.9.227';
10
+ const VERSION = '1.9.228';
11
11
 
12
12
  // 1.9.184: DEP0190 (child_process shell: true) deprecation warning μ–΅μ œ (μ‚¬μš©μž λͺ…μ‹œ).
13
13
  // leerness λŠ” cross-platform PATH resolution 을 μœ„ν•΄ shell: true λ₯Ό μ˜λ„μ μœΌλ‘œ μ‚¬μš© (claude.cmd / ollama.cmd λ“± Windows .cmd 처리).
@@ -6185,7 +6185,7 @@ function handoff(root) {
6185
6185
  if (parts.length) {
6186
6186
  const isTty = process.stdout && process.stdout.isTTY;
6187
6187
  const cy = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
6188
- log(cy(`πŸ“Š ν—€λ“œλΌμΈ (1.9.81/93/113/152/162/192/197/204/207/209/215/220): ${parts.join(' Β· ')}`));
6188
+ log(cy(`πŸ“Š ν—€λ“œλΌμΈ (1.9.81/93/113/152/162/192/197/204/207/209/215/220/223/226): ${parts.join(' Β· ')}`));
6189
6189
  }
6190
6190
  } catch {}
6191
6191
  }
@@ -16366,6 +16366,18 @@ function healthCmd(root) {
16366
16366
  summary: `F${fNodesHe.length}/E${edgeCount}${isolated > 0 ? `/iso${isolated}` : ''}`
16367
16367
  };
16368
16368
  } catch { out.featureGraph = { error: 'featureGraph 점검 μ‹€νŒ¨' }; }
16369
+ // 1.9.228: health --json roundHistory 톡합 (handoff/session close 와 동일 β€” JSON 3 λͺ…λ Ή 일관성 + 6 톡합 ν•„λ“œ μ™„μ„±)
16370
+ try {
16371
+ const rh = _computeRoundHistory(root);
16372
+ out.roundHistory = {
16373
+ roundCount: rh.roundCount,
16374
+ baselineVersion: rh.baselineVersion,
16375
+ nextMilestone: rh.nextMilestone,
16376
+ roundsToNextMilestone: rh.roundsToNextMilestone,
16377
+ daysActive: rh.daysActive,
16378
+ avgRoundsPerDay: rh.avgRoundsPerDay
16379
+ };
16380
+ } catch { out.roundHistory = { error: 'roundHistory 점검 μ‹€νŒ¨' }; }
16369
16381
  // 1.9.163: 5λŠ₯λ ₯ 맀트릭슀 μžλ™ 평가 (1.9.155 sub-agent 점검 β†’ μ½”λ“œ 기반 μžλ™ν™”)
16370
16382
  // 각 λŠ₯λ ₯을 μ½”λ“œ grep 으둜 κ²€μΆœ β†’ 0~100 점수. μ‚¬μš©μžκ°€ λ§€ health 호좜 μ‹œ leerness 자기 평가 확인.
16371
16383
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.227",
3
+ "version": "1.9.228",
4
4
  "description": "Leerness: λΉ„νŒŒκ΄΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, μžλ™ 버전 κ°μ§€Β·μ—…λ°μ΄νŠΈ, κ³„νš/μ§„ν–‰/ν•Έλ“œμ˜€ν”„ μžλ™ν™”, κ²ŒμœΌλ¦„Β·μ‹œν¬λ¦ΏΒ·μΈμ½”λ”© μžλ™ κ°€λ“œ, Claude Code μŠ¬λž˜μ‹œ 톡합을 κ°–μΆ˜ ν•œκ΅­μ–΄ μš°μ„  AI 개발 ν•˜λ„€μŠ€.",
5
5
  "keywords": [
6
6
  "leerness",