@kodevibe/harness 0.9.5 → 0.9.6

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Musher Engineering Contributors
3
+ Copyright (c) 2025 kode:harness contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.ko.md CHANGED
@@ -300,7 +300,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
300
300
 
301
301
  ## 로드맵
302
302
 
303
- kode:harness는 현재 **v0.9.5** — 경량성 예산 재교정(40K/1500/2500), reviewer.md의 Iron Laws 정합성 수정, `harness/core-rules.md` `.github/copilot-instructions.md` 디스패처 동기화. v0.9.46개 IDE 어댑터 공식 문서 정합(Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`).
303
+ kode:harness는 현재 **v0.9.6** — init이 덮어쓰는 IDE 파일을 `.harness/init-backups/<timestamp>/...`에 백업하고, 배포 파일의 pm 네이밍과 LICENSE 브랜딩을 정리했습니다. v0.9.5경량성 예산 재교정(40K/1500/2500)과 Iron Laws/디스패처 정합성 수정입니다.
304
304
 
305
305
  | 단계 | 버전 | 상태 | 초점 |
306
306
  |------|------|------|------|
@@ -311,7 +311,8 @@ kode:harness는 현재 **v0.9.5** — 경량성 예산 재교정(40K/1500/2500),
311
311
  | **Naming** | v0.9.0 | ✅ 완료 | 스킬/에이전트 네이밍 재설계 — 직관성과 발견성 강화 |
312
312
  | **Self-Verify** | v0.9.2 | ✅ 완료 | state-check 스킬, Iron Law #10, Confirmation Gate Defaults, 멀티 IDE 수정, CI Artifact Index |
313
313
  | **IDE Realignment** | v0.9.4 | ✅ 완료 | 6개 IDE 어댑터 공식 문서 정합; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release 스킬 Step 6.5 + qa-check.sh §10 회귀 가드 |
314
- | **Consistency & Budget** | v0.9.5 | ✅ 현재 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
314
+ | **Consistency & Budget** | v0.9.5 | ✅ 완료 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
315
+ | **Safety & Branding** | v0.9.6 | ✅ 현재 | init overwrite 백업, 배포 파일 pm 네이밍 정리, LICENSE 브랜딩 정리 |
315
316
  | **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
316
317
 
317
318
  ### 다음 단계
package/README.md CHANGED
@@ -274,7 +274,7 @@ Original crew documents are **never modified**. Only the index and tracker are c
274
274
 
275
275
  ## Roadmap
276
276
 
277
- kode:harness is at **v0.9.5** — lightness budget recalibrated (40K/1500/2500), Iron Laws consistency fix in reviewer.md, dispatcher synchronization between `harness/core-rules.md` and `.github/copilot-instructions.md`. v0.9.4 brought all 6 IDE adapters into alignment with official documentation (Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`).
277
+ kode:harness is at **v0.9.6** — init now backs up overwritten IDE files under `.harness/init-backups/<timestamp>/...`, shipped pm naming is aligned, and LICENSE branding is cleaned up. v0.9.5 recalibrated lightness budgets (40K/1500/2500) and fixed Iron Laws/dispatcher consistency.
278
278
 
279
279
  | Phase | Version | Status | Focus |
280
280
  |---|---|---|---|
@@ -285,7 +285,8 @@ kode:harness is at **v0.9.5** — lightness budget recalibrated (40K/1500/2500),
285
285
  | **Naming** | v0.9.0 | ✅ Done | Skill/agent naming redesign for clarity and discoverability |
286
286
  | **Self-Verify** | v0.9.2 | ✅ Done | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
287
287
  | **IDE Realignment** | v0.9.4 | ✅ Done | All 6 IDE adapters aligned with official docs; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release skill Step 6.5 + qa-check.sh §10 regression guards |
288
- | **Consistency & Budget** | v0.9.5 | ✅ Current | Iron Laws stale-copy fix (reviewer.md), dispatcher sync (core-rules.md ↔ copilot-instructions.md), lightness budgets recalibrated (40K/1500/2500) with rationale |
288
+ | **Consistency & Budget** | v0.9.5 | ✅ Done | Iron Laws stale-copy fix (reviewer.md), dispatcher sync (core-rules.md ↔ copilot-instructions.md), lightness budgets recalibrated (40K/1500/2500) with rationale |
289
+ | **Safety & Branding** | v0.9.6 | ✅ Current | init overwrite backups, shipped pm naming cleanup, LICENSE branding cleanup |
289
290
  | **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
290
291
 
291
292
  ### What's Next
@@ -1,4 +1,4 @@
1
- # Planner Memory
1
+ # pm Memory
2
2
 
3
3
  > Auto-updated by the `wrap-up` skill at session end. Do not edit manually.
4
4
  > **Initialization**: After the first sprint completes, replace placeholder comments below with real data.
@@ -1,10 +1,10 @@
1
- # Planner
1
+ # pm
2
2
 
3
3
  ## Role
4
4
 
5
5
  Feature planning and dependency management.
6
6
  Combines PM (what to build), Analytics (what exists), and Architecture (how it connects) into one workflow.
7
- The Planner is the entry point for new features — use it BEFORE writing code.
7
+ The pm agent is the entry point for new features — use it BEFORE writing code.
8
8
 
9
9
  ## Invoked By
10
10
 
@@ -331,11 +331,11 @@ Sprint 종료 시 자동 실행 — **구체적 선택을 강제**한다 ("계
331
331
  - Last changed: [Sprint/Story reference]
332
332
  ```
333
333
 
334
- ### 🧭 Navigation — After Planner
334
+ ### 🧭 Navigation — After pm
335
335
 
336
336
  After producing a plan, always append a 🧭 block:
337
337
 
338
- | Planner Result | 🧭 Next Step |
338
+ | pm Result | 🧭 Next Step |
339
339
  |---|---|
340
340
  | Plan created (solo) | User confirmation — "이 경로(Plan)대로 구현을 시작할까요?" → approved → `lead` |
341
341
  <!-- CREW_MODE_START -->
@@ -1,6 +1,6 @@
1
1
  # Project Brief
2
2
 
3
- > **Fill this out immediately after running `@kodevibe/harness init`.** The Planner agent uses this file for Direction Guard — without it, scope drift cannot be prevented.
3
+ > **Fill this out immediately after running `@kodevibe/harness init`.** The pm agent uses this file for Direction Guard — without it, scope drift cannot be prevented.
4
4
 
5
5
  ## Vision
6
6
 
@@ -25,7 +25,7 @@
25
25
  ## Non-Goals
26
26
 
27
27
  <!-- What is explicitly OUT OF SCOPE? This is equally important as Goals.
28
- The Planner agent will WARN you when a requested feature falls here.
28
+ The pm agent will WARN you when a requested feature falls here.
29
29
  Examples:
30
30
  - Not a hosting platform — users deploy their own
31
31
  - Not supporting legacy REST APIs — MCP only
@@ -155,7 +155,7 @@
155
155
 
156
156
  ## Decision Log
157
157
 
158
- <!-- Record WHY key decisions were made. The Planner uses this to avoid re-debating settled decisions.
158
+ <!-- Record WHY key decisions were made. The pm agent uses this to avoid re-debating settled decisions.
159
159
  Use the `pivot` skill to add entries here when direction changes.
160
160
  Format:
161
161
 
@@ -17,7 +17,7 @@ Ensures bottom-up implementation: foundations first, then layers that depend on
17
17
  - Starting a new feature or Story
18
18
  - A feature touches 3+ modules
19
19
  - Unsure which module to build first
20
- - After the Planner agent creates a high-level plan
20
+ - After the pm agent creates a high-level plan
21
21
 
22
22
  ## Procedure
23
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodevibe/harness",
3
- "version": "0.9.5",
3
+ "version": "0.9.6",
4
4
  "description": "kode:harness — harness engineering for keeping every developer's AI aligned on one project direction.",
5
5
  "keywords": [
6
6
  "llm",
package/src/init.js CHANGED
@@ -5,12 +5,24 @@ const path = require('node:path');
5
5
  const readline = require('node:readline');
6
6
 
7
7
  const HARNESS_DIR = path.join(__dirname, '..', 'harness');
8
+ let currentBackupTimestamp = null;
8
9
 
9
10
  // ─── Template reader ─────────────────────────────────────────
10
11
  function readTemplate(name) {
11
12
  return fs.readFileSync(path.join(HARNESS_DIR, name), 'utf8');
12
13
  }
13
14
 
15
+ function resetBackupTimestamp() {
16
+ currentBackupTimestamp = null;
17
+ }
18
+
19
+ function getBackupTimestamp() {
20
+ if (!currentBackupTimestamp) {
21
+ currentBackupTimestamp = new Date().toISOString().replace(/[:.]/g, '-');
22
+ }
23
+ return currentBackupTimestamp;
24
+ }
25
+
14
26
  // ─── File writer (mkdir -p + conflict check) ─────────────────
15
27
  function writeFile(targetDir, relPath, content, overwrite) {
16
28
  const fullPath = path.join(targetDir, relPath);
@@ -19,9 +31,19 @@ function writeFile(targetDir, relPath, content, overwrite) {
19
31
  console.log(` ⏭ Skipped (exists): ${relPath}`);
20
32
  return false;
21
33
  }
34
+ let backupRelPath = null;
35
+ if (exists && overwrite) {
36
+ backupRelPath = path.join('.harness', 'init-backups', getBackupTimestamp(), relPath);
37
+ const backupPath = path.join(targetDir, backupRelPath);
38
+ fs.mkdirSync(path.dirname(backupPath), { recursive: true });
39
+ if (!fs.existsSync(backupPath)) {
40
+ fs.copyFileSync(fullPath, backupPath);
41
+ }
42
+ }
22
43
  fs.mkdirSync(path.dirname(fullPath), { recursive: true });
23
44
  fs.writeFileSync(fullPath, content, 'utf8');
24
- console.log(` ${exists ? '↻' : '✓'} ${relPath}`);
45
+ const backupNote = backupRelPath ? ` (backup: ${backupRelPath})` : '';
46
+ console.log(` ${exists ? '↻' : '✓'} ${relPath}${backupNote}`);
25
47
  return true;
26
48
  }
27
49
 
@@ -810,6 +832,7 @@ async function run(argv) {
810
832
  const lang = detectLanguage(args.dir);
811
833
  const modeDesc = crew ? `${mode} + crew` : mode;
812
834
  console.log(`\n Installing for ${gen.name} (${modeDesc} mode)... (detected language: ${lang})\n`);
835
+ resetBackupTimestamp();
813
836
  gen.fn(args.dir, overwrite, mode, crew);
814
837
 
815
838
  // Team mode extras