leerness 1.9.216 β 1.9.217
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 +41 -0
- package/README.md +3 -3
- package/bin/harness.js +92 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.217 β 2026-05-22
|
|
4
|
+
|
|
5
|
+
**π session close μλ ν΅ν© β 1.9.207/209/212 μλ νΈμΆ.**
|
|
6
|
+
|
|
7
|
+
### 1. session close μλ νΈμΆ 3μ’
(λ§κ° μ)
|
|
8
|
+
| μμ | μΆμ² | λμ |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `userRequestsAudit` | 1.9.207 | open/in-progress μμ² β missing/tracked/stale λΆλ₯ |
|
|
11
|
+
| `preWakeAudit` | 1.9.209 | sleep μ 6 μμ audit + .harness/pre-wake-report.json μλ μ μ₯ |
|
|
12
|
+
| `idempotencyAudit` | 1.9.212 | 4μμ λ©±λ±μ± κ²μ¬ (rule/task/user-requests/wakeups) |
|
|
13
|
+
|
|
14
|
+
### 2. JSON λͺ¨λ (`--json`) ν΅ν© νλ μΆκ°
|
|
15
|
+
- `userRequestsAudit: { total, open, missing, tracked, stale }`
|
|
16
|
+
- `preWakeAudit: { auditedAt, critical, warning, info, needsAttention }`
|
|
17
|
+
- `idempotencyAudit: { violations, high, medium, low, verified, overall }`
|
|
18
|
+
|
|
19
|
+
### 3. human μΆλ ₯ μλ μΉμ
|
|
20
|
+
```
|
|
21
|
+
## π session close μλ ν΅ν© λ³΄κ³ (1.9.217)
|
|
22
|
+
β λ―Έλ΅ μ¬μ©μ μμ² N건 (task-log/plan/decisions λ§€μΉ μ λ¨)
|
|
23
|
+
π¨ pre-wake-audit: critical N (λ€μ κΉ¨μ΄λ¨ μ μ κ² νμ)
|
|
24
|
+
β λ©±λ±μ± κ²μ¬ ν΅κ³Ό β verified 4 μμ
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 4. opt-out μ΅μ
|
|
28
|
+
- `--no-pre-wake` β pre-wake audit μ€ν΅
|
|
29
|
+
- μ΅μ
μΈ λ€λ₯Έ ν΅ν©μ νμ μ€ν (κ°λ²Όμ)
|
|
30
|
+
|
|
31
|
+
### 5. λμ νκ· (1.9.207~216) β λͺ¨λ μ μ§
|
|
32
|
+
|
|
33
|
+
### 6. stress-v162 β 18/18 PASS
|
|
34
|
+
- 1.9.217 (7): VERSION + JSON νλ + human μΉμ
+ μλ μ μ₯ + opt-out + νλ ꡬ쑰 + clean
|
|
35
|
+
- μ±λ₯ (2): cold_start 489ms / MCP 59 λꡬ 785ms
|
|
36
|
+
- λμ νκ· (9)
|
|
37
|
+
|
|
38
|
+
### 7. μλ release (79 λΌμ΄λ main-push streak Β· 40 λΌμ΄λ npm publish streak)
|
|
39
|
+
|
|
40
|
+
π **session close κ°ν** β λ§€ λ§κ° μ μ΄μ μμ μλ μ κ²
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
3
44
|
## 1.9.216 β 2026-05-22
|
|
4
45
|
|
|
5
46
|
**π MCP 5μ’
μΆκ° β 1.9.207~213 μΈλΆ AI λ
ΈμΆ (54 β 59 λꡬ).**
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **AI μ½λ© μμ΄μ νΈμ κ±°μ§ μλ£Β·μ€λ³΅Β·λ§κ°Β·μΆ©λμ λ§μμ£Όλ κ²μΒ·κΈ°μ΅Β·νμ
CLI νλ€μ€.**
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/leerness) [](https://www.npmjs.com/package/leerness) []() []() []() []() []() []() [-brightgreen)]() []() []() []() []() []()
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
β βββ ββββββ ββββββ ββββββββββββββββββββββββ ββββββββ β
|
|
13
13
|
β βββββββββββββββββββββββββββ ββββββ ββββββββββββββββββββββ β
|
|
14
14
|
β βββββββββββββββββββββββββββ ββββββ βββββββββββββββββββββ β
|
|
15
|
-
β v1.9.
|
|
15
|
+
β v1.9.217 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π session close μλ ν΅ν© (requests/pre-wake/idempotency) β
|
|
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.
|
|
10
|
+
const VERSION = '1.9.217';
|
|
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 μ²λ¦¬).
|
|
@@ -9465,7 +9465,98 @@ function sessionClose(root, opts = {}) {
|
|
|
9465
9465
|
};
|
|
9466
9466
|
} catch {}
|
|
9467
9467
|
} catch {}
|
|
9468
|
+
|
|
9469
|
+
// 1.9.217: session close μλ ν΅ν© β 1.9.207 + 1.9.209 + 1.9.212
|
|
9470
|
+
// λ§κ° μ λ―Έλ΅ μμ² / pre-wake audit / λ©±λ±μ± κ²μ¬ μλ μ€ν + JSON ν΅ν©
|
|
9471
|
+
try {
|
|
9472
|
+
// 1.9.207: λ―Έλ΅ μ¬μ©μ μμ² audit
|
|
9473
|
+
const reqAudit = _auditUserRequests(root);
|
|
9474
|
+
jsonResult.userRequestsAudit = {
|
|
9475
|
+
total: reqAudit.total,
|
|
9476
|
+
open: reqAudit.open,
|
|
9477
|
+
missing: reqAudit.missing ? reqAudit.missing.length : 0,
|
|
9478
|
+
tracked: reqAudit.tracked ? reqAudit.tracked.length : 0,
|
|
9479
|
+
stale: reqAudit.stale ? reqAudit.stale.length : 0
|
|
9480
|
+
};
|
|
9481
|
+
} catch {}
|
|
9482
|
+
try {
|
|
9483
|
+
// 1.9.209: pre-wake-audit μλ μ€ν + μ μ₯ (sleep μ μλ μ κ²)
|
|
9484
|
+
if (!opts.noPreWake && !has('--no-pre-wake')) {
|
|
9485
|
+
const audit = _runPreWakeAudit(root);
|
|
9486
|
+
_saveAndAppendPreWakeReport(root, audit);
|
|
9487
|
+
jsonResult.preWakeAudit = {
|
|
9488
|
+
auditedAt: audit.auditedAt,
|
|
9489
|
+
critical: audit.summary.criticalCount,
|
|
9490
|
+
warning: audit.summary.warningCount,
|
|
9491
|
+
info: audit.summary.infoCount,
|
|
9492
|
+
needsAttention: audit.summary.needsAttention
|
|
9493
|
+
};
|
|
9494
|
+
}
|
|
9495
|
+
} catch {}
|
|
9496
|
+
try {
|
|
9497
|
+
// 1.9.212: λ©±λ±μ± κ²μ¬ μλ μ€ν (rule/task/user-requests/wakeups 4μμ)
|
|
9498
|
+
const idemp = _runIdempotencyAudit(root);
|
|
9499
|
+
jsonResult.idempotencyAudit = {
|
|
9500
|
+
violations: idemp.summary.totalViolations,
|
|
9501
|
+
high: idemp.summary.highSeverity,
|
|
9502
|
+
medium: idemp.summary.mediumSeverity,
|
|
9503
|
+
low: idemp.summary.lowSeverity,
|
|
9504
|
+
verified: idemp.summary.verifiedAreas,
|
|
9505
|
+
overall: idemp.summary.overall
|
|
9506
|
+
};
|
|
9507
|
+
} catch {}
|
|
9508
|
+
|
|
9468
9509
|
process.stdout.write(JSON.stringify(jsonResult, null, 2) + '\n');
|
|
9510
|
+
} else {
|
|
9511
|
+
// 1.9.217: human μΆλ ₯ λͺ¨λμμλ ν΅ν© λ³΄κ³ λ
ΈμΆ (λ§κ° μ§μ )
|
|
9512
|
+
try {
|
|
9513
|
+
const isTty = process.stdout.isTTY;
|
|
9514
|
+
const grn = s => isTty ? `\x1b[32m${s}\x1b[0m` : s;
|
|
9515
|
+
const yel = s => isTty ? `\x1b[33m${s}\x1b[0m` : s;
|
|
9516
|
+
const red = s => isTty ? `\x1b[31m${s}\x1b[0m` : s;
|
|
9517
|
+
const dim = s => isTty ? `\x1b[2m${s}\x1b[0m` : s;
|
|
9518
|
+
|
|
9519
|
+
log('');
|
|
9520
|
+
log(`## π session close μλ ν΅ν© λ³΄κ³ (1.9.217)`);
|
|
9521
|
+
// 1.9.207
|
|
9522
|
+
try {
|
|
9523
|
+
const reqAudit = _auditUserRequests(root);
|
|
9524
|
+
const missCnt = reqAudit.missing ? reqAudit.missing.length : 0;
|
|
9525
|
+
if (missCnt > 0) {
|
|
9526
|
+
log(red(` β λ―Έλ΅ μ¬μ©μ μμ² ${missCnt}건 (task-log/plan/decisions λ§€μΉ μ λ¨)`));
|
|
9527
|
+
} else if (reqAudit.open > 0) {
|
|
9528
|
+
log(grn(` β μ¬μ©μ μμ² ${reqAudit.open}건 λͺ¨λ tracked`));
|
|
9529
|
+
} else {
|
|
9530
|
+
log(dim(` βΉ μ¬μ©μ μμ² μμ (UR λ°±λ‘κ·Έ λΉμ΄μμ)`));
|
|
9531
|
+
}
|
|
9532
|
+
} catch {}
|
|
9533
|
+
// 1.9.209
|
|
9534
|
+
try {
|
|
9535
|
+
if (!opts.noPreWake && !has('--no-pre-wake')) {
|
|
9536
|
+
const audit = _runPreWakeAudit(root);
|
|
9537
|
+
_saveAndAppendPreWakeReport(root, audit);
|
|
9538
|
+
const sum = audit.summary;
|
|
9539
|
+
if (sum.criticalCount > 0) {
|
|
9540
|
+
log(red(` π¨ pre-wake-audit: critical ${sum.criticalCount} (λ€μ κΉ¨μ΄λ¨ μ μ κ² νμ)`));
|
|
9541
|
+
} else if (sum.warningCount > 0) {
|
|
9542
|
+
log(yel(` β pre-wake-audit: warning ${sum.warningCount}`));
|
|
9543
|
+
} else {
|
|
9544
|
+
log(grn(` β pre-wake-audit: clean (sleep μμ )`));
|
|
9545
|
+
}
|
|
9546
|
+
}
|
|
9547
|
+
} catch {}
|
|
9548
|
+
// 1.9.212
|
|
9549
|
+
try {
|
|
9550
|
+
const idemp = _runIdempotencyAudit(root);
|
|
9551
|
+
const v = idemp.summary.totalViolations;
|
|
9552
|
+
if (v > 0) {
|
|
9553
|
+
log(red(` β λ©±λ±μ± μλ° ${v}건 (high: ${idemp.summary.highSeverity})`));
|
|
9554
|
+
log(dim(` β leerness idempotency audit μΌλ‘ μμΈ νμΈ`));
|
|
9555
|
+
} else {
|
|
9556
|
+
log(grn(` β λ©±λ±μ± κ²μ¬ ν΅κ³Ό β verified ${idemp.summary.verifiedAreas} μμ`));
|
|
9557
|
+
}
|
|
9558
|
+
} catch {}
|
|
9559
|
+
} catch {}
|
|
9469
9560
|
}
|
|
9470
9561
|
}
|
|
9471
9562
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.217",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|