@kal-elsam/kairo-runtime 0.12.0 → 0.13.1

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 ADDED
@@ -0,0 +1,1179 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@kal-elsam/kairo-runtime` are documented here.
4
+ Historical entries below may reference the legacy `@kal-elsam/harness` package name.
5
+
6
+ ## Unreleased
7
+
8
+ ## 0.13.1 — 2026-08-07 (Kairo Runtime)
9
+
10
+ Patch release. Docs/UX/license polish for npm adoption. Publish tag:
11
+ `kairo-runtime-v0.13.1`.
12
+
13
+ ### Changed
14
+
15
+ - Cockpit Overview: plain-language purpose + one next step; companion system
16
+ dumps moved off the first screen (Details only).
17
+ - License: `UNLICENSED` → **MIT** (root `LICENSE`; also `@kal-elsam/harness` bridge).
18
+ - npm README trimmed to a short product page; long reference moved under `docs/`.
19
+ - `kairo help` shows four day-to-day commands; `kairo help --all` lists the rest.
20
+
21
+ ## 0.13.0 — 2026-08-07 (Kairo Runtime)
22
+
23
+ Minor release. Obsidian Knowledge Hub: human knowledge surface under `Kairo/`
24
+ with consent-gated publish and Cockpit status (no auto-sync). Publish tag:
25
+ `kairo-runtime-v0.13.0`.
26
+
27
+ ### Added
28
+
29
+ - Obsidian vault adapter: absolute vault path only; access limited to `Kairo/`;
30
+ refuses escaping symlinks, `.obsidian`, attachments, and secret basenames.
31
+ - Knowledge preview from injectable Engram/Graphify *export* adapters (never
32
+ internal DBs); Markdown proposals with frontmatter + wikilinks.
33
+ - Consent-gated publisher: atomic write, backups under `.kairo-backups/`,
34
+ refuse overwrite of manual notes; dry-run / missing consent never writes.
35
+ - Knowledge views: projects / decisions / architecture / sessions / reviews
36
+ index helpers + index-note proposals (publish via consent only).
37
+ - Cockpit companion `signals.obsidian.vault` + display lines (wide/compact/
38
+ minimal). Unconfigured without absolute `obsidianVaultPath`; no write CTAs.
39
+
40
+ ### Compatibility
41
+
42
+ - Obsidian is a human UI — not a fourth authority beside Engram/Graphify/Kairo.
43
+ - No automatic vault sync; no silent writes.
44
+ - Companion overlays remain secondary to governance health/CTA.
45
+
46
+ ## 0.12.0 — 2026-08-07 (Kairo Runtime)
47
+
48
+ Minor release. Observe-and-recommend companion surfaces: Hermes activity,
49
+ local system resources + advisor, pinned agent-skills bundle, and read-only
50
+ ecosystem update checks. Publish tag: `kairo-runtime-v0.12.0`.
51
+
52
+ ### Added
53
+
54
+ - HermesProvider companion: loopback probe, session activity signal, Cockpit
55
+ overlay lines (wide/compact/minimal). Observe-only — no start/stop control.
56
+ - Local Resource Advisor: macOS system resource sampling (memory/swap/disk/
57
+ processes), deterministic recommendations, Cockpit display. No mutators.
58
+ - Pinned complementary agent-skills component under
59
+ `global-template/components/agent-skills/` (rev `d2478bf0…`).
60
+ - Ecosystem Update Advisor (check surface): `loadEcosystemUpdates`,
61
+ `kairo updates check`, companion `signals.ecosystem.updates`, Cockpit
62
+ Updates lines. Read-only — consent-gated apply deferred.
63
+
64
+ ### Compatibility
65
+
66
+ - Auto-detect only; apply/publish still requires explicit consent.
67
+ - Companion overlays remain secondary to governance health/CTA.
68
+ - No permanent daemon; no silent writes from these surfaces.
69
+
70
+ ## 0.11.0 — 2026-07-31 (Kairo Runtime)
71
+
72
+ Minor release. Cockpit visual identity: amber/ice brand palette, borderless
73
+ shell composition, responsive ASCII wordmark on Overview, and operational
74
+ panel titles with ice focus. Publish tag: `kairo-runtime-v0.11.0`.
75
+
76
+ ### Changed
77
+
78
+ - Brand theme: amber for brand chrome, ice for interactive focus — replaces
79
+ cyan/magenta nested frames.
80
+ - Borderless Cockpit shell: compact header, segmented nav, single-line footer
81
+ without nested panel borders.
82
+ - Overview product cover: static Kairo ASCII wordmark beside status on
83
+ wide/compact layouts; textual brand line on minimal.
84
+ - Shared `ViewTitle` / section labels on Governance, Activity, Orchestration,
85
+ Usage, Settings, and Alerts with ice focus affordances.
86
+ - Loading/error splash colors respect `NO_COLOR` via terminal capabilities.
87
+
88
+ ### Compatibility
89
+
90
+ - No models, keys, CLI, or public API contract changes.
91
+ - Keyboard-first, local, single-user; Ink + React retained.
92
+ - `NO_COLOR`, ASCII glyph fallbacks, and existing shell chrome contracts preserved.
93
+ - README unchanged for this slice.
94
+
95
+ ## 0.10.0 — 2026-07-31 (Kairo Runtime)
96
+
97
+ Minor release. Terminal-first Ink UX Control Plane: semantic primitives across
98
+ the six primary Cockpit surfaces, Setup, Alerts, and NO_COLOR-safe shell chrome.
99
+ Publish tag: `kairo-runtime-v0.10.0`.
100
+
101
+ ### Added
102
+
103
+ - Semantic Ink primitives (ActionList, Callout, Confirm, Details, Receipt, KeyBar,
104
+ Stepper) with clear ownership: Callout=status · section owns data · footer/KeyBar=keys.
105
+ - Six primary surfaces on the shared model: Overview, Governance, Activity,
106
+ Orchestration, Usage, Settings.
107
+ - Semantic SetupApp (Detect → Agents → Components → Preview → Confirm) with real
108
+ handoff from Overview setup CTA.
109
+ - Semantic Alerts inbox with windowed focus (compact 3 / wide 8); Enter resolve /
110
+ D dismiss unchanged.
111
+ - Semantic Settings browse → preview → confirm → receipt (`wroteFiles: false`);
112
+ confirm records intent only — does not install packages.
113
+ - Semantic Usage / Tokens: measured budget pairs, profile limits, finite run
114
+ tokenUsage fields only; never invents totals, costs, or savings.
115
+
116
+ ### Changed
117
+
118
+ - Cockpit shell chrome respects `NO_COLOR` and ASCII glyph fallbacks.
119
+ - Progressive disclosure: paths/IDs stay in Details; lists keep domain navigation
120
+ beyond visual caps with honest remainders (`… N more`).
121
+
122
+ ### Compatibility
123
+
124
+ - Keyboard-first, local, single-user; Ink + React retained.
125
+ - Bare `kairo` and explicit CLI commands unchanged.
126
+ - Web loopback / `kairo ui` deferred out of this milestone.
127
+ - IDEs / Modules / Diagnostics lists and Launch/detail remain legacy string panels
128
+ for a follow-up 0.10.x or next milestone.
129
+
130
+ ## 0.9.0 — 2026-07-30 (Kairo Runtime)
131
+
132
+ Minor release. Local AI Control Plane: task-oriented Cockpit, alerts inbox,
133
+ opt-in monitor, curated Settings. Publish tag: `kairo-runtime-v0.9.0`.
134
+
135
+ ### Added
136
+
137
+ - Responsive single-panel Cockpit (TopBar + nav strip + main panel + full-width
138
+ footer); wide / compact / minimal; SYSTEM side column retired.
139
+ - Six destinations: Overview, Governance, Activity, Orchestration, Usage, Settings.
140
+ - Action palette (`/`) for destinations and refresh.
141
+ - Alert contracts + store + Cockpit inbox (resolve / dismiss).
142
+ - `kairo monitor enable|disable|status|tick` with macOS LaunchAgent autostart;
143
+ drift / orphan / failed runs → alerts; notify only on new claims.
144
+ - Settings curated catalog (`pi-usage-widget@0.2.1`, MIT): browse → preview →
145
+ confirm shows an in-session confirmation receipt; does not persist or install
146
+ anything.
147
+
148
+ ### Compatibility
149
+
150
+ - Keyboard-first, local, single-user; Ink + React retained.
151
+ - Monitor autostart is opt-in; unsupported OS degrade without false “installed”.
152
+ - Settings confirm shows an in-session receipt only; neither persists nor installs.
153
+ - Orchestration / Usage stay summaries; Cockpit does not drive Pi orchestration.
154
+
155
+ ## 0.8.0 — 2026-07-28 (Kairo Runtime)
156
+
157
+ Minor release. Context Orchestration for Pi: durable DAG, isolated minions,
158
+ budgets, cancel cascade, recovery receipts. Publish tag: `kairo-runtime-v0.8.0`.
159
+
160
+ ### Added
161
+
162
+ - `kairo run --agent pi --strategy orchestrated` with managed minion extension.
163
+ - Ephemeral Pi minions (read-only tools, path allowlist, no nested depth > 1).
164
+ - Context budgets at 70% compact / 90% stop; task retries (max 2); cascade cancel.
165
+ - Durable orchestration state under `~/.harness/runs/<root>/orchestration/state.json`
166
+ and write-once `receipt.json` (secret-free; `recovered` on interrupt).
167
+ - Supervisor-injected `KAIRO_ORCH_*` identity; root lineage from persisted state.
168
+
169
+ ### Compatibility
170
+
171
+ - Orchestrated requires Pi + managed extension; direct strategy unchanged.
172
+ - No same-root resume; Cockpit does not drive orchestration in this release.
173
+
174
+ ## 0.7.0 — 2026-07-27 (Kairo Runtime)
175
+
176
+ Minor release. Bounded native review via explicit Codex or Pi agent, Git-scoped
177
+ snapshots, fail-closed limits, secret-free receipts, CLI, and a read-only Reviews
178
+ subview inside Cockpit Runs. Publish tag: `kairo-runtime-v0.7.0`.
179
+
180
+ ### Added
181
+
182
+ - Git snapshot contracts for working-tree / `--base` / `--commit` with fingerprints,
183
+ fail-closed limits, private-path consent, and binary exclusion.
184
+ - Atomic write-once receipts under `~/.harness/reviews/<id>/receipt.json` (no prompt,
185
+ diff, or transcript persistence).
186
+ - Bounded Codex (`exec review`) and Pi (JSON mode, ephemeral session, tools
187
+ `read,grep,find,ls`) drivers.
188
+ - CLI: `kairo review --agent codex|pi` and `kairo reviews list|show` with `--json`
189
+ and `--fail-on high|medium|low`.
190
+ - Cockpit Runs hub item **Reviews** with read-only list and receipt detail.
191
+ - Public adapter field `reviewCompatible` (true for Codex and Pi; false for Cursor,
192
+ Claude, and OpenCode until audited).
193
+
194
+ ### Compatibility
195
+
196
+ - One reviewer per run; Codex + Pi only in v1; Git required; `--agent` always explicit.
197
+ - No Intelligence routing, auto-fix, background reviews, or dual review.
198
+ - Receipts remain secret-free; Cockpit never launches reviews in this release.
199
+
200
+ ## 0.6.0 — 2026-07-21 (Kairo Runtime)
201
+
202
+ Minor release. First-class Pi managed adapter and auditable runtime while Kairo
203
+ remains the control plane. Publish tag: `kairo-runtime-v0.6.0` (leave any legacy
204
+ `v0.6.0` tag untouched).
205
+
206
+ ### Added
207
+
208
+ - Pi managed adapter at `~/.pi/agent/AGENTS.md` with opaque auth and separate
209
+ config-dir vs CLI detection. Setup/status/doctor/sync/uninstall/JSON/Control
210
+ Center now surface five agents.
211
+ - Pi in SDD managed/shared destinations: nine skills materialize once under
212
+ `~/.agents/skills` (shared with Cursor/Codex/OpenCode); teaching persona gates
213
+ through the Pi managed AGENTS.md section.
214
+ - Engram slug `pi` via official `engram setup pi`. Positive evidence requires
215
+ `settings.json` packages (`npm:gentle-engram`, `npm:pi-mcp-adapter`) and
216
+ `mcp.json` `mcpServers.engram`. Success reports `restart_required`; Pi-installed
217
+ packages remain provider-owned residue on rollback.
218
+ - Runtime: `kairo run --agent pi --task "…" [--permissions read-only] [--follow]`
219
+ launches `pi --mode json --no-session`, maps official NDJSON tool/usage/lifecycle
220
+ events without persisting full args/results/secrets, and probes `pi --help` for
221
+ `--mode` / `--no-session` compatibility.
222
+
223
+ ### Compatibility
224
+
225
+ - Custom `PI_CODING_AGENT_DIR` is out of scope: config plan/apply/uninstall fail
226
+ before writes; runtime launches remain available.
227
+ - Auth stays unknown/opaque — Kairo never reads credentials or asserts
228
+ subscription/entitlement/balance.
229
+ - Pi is not an Intelligence backend and is never auto-installed.
230
+ - Adding `pi` to existing state v4 agent arrays needs no migration.
231
+
232
+ ## 0.5.1 — 2026-07-21 (Kairo Runtime)
233
+
234
+ Patch release. Atomic JSON replacement for run coordination files so the main
235
+ process and detached supervisor never observe truncated state. Publish tag:
236
+ `kairo-runtime-v0.5.1`.
237
+
238
+ ### Fixes
239
+
240
+ - Write `state.json`, `cancel.signal.json`, and `supervisor.lock.json` via
241
+ temp + `O_EXCL` + fsync + atomic rename (cleanup temp on any failure).
242
+ - Readers only ever see the previous or next complete JSON; concurrent writers
243
+ leave parseable JSON with no residual temps.
244
+ - Preserve in-process write ordering and cancel-signal + fresh read before
245
+ terminal state so `stopRun` against a concurrent supervisor ends `CANCELLED`.
246
+
247
+ ### Compatibility
248
+
249
+ - No schema, path, event JSONL, handoff, or public API changes.
250
+ - Atomic replace only — not distributed locking or compare-and-swap.
251
+
252
+ ## 0.5.0 — 2026-07-20 (Kairo Runtime)
253
+
254
+ Minor release. Governance-first control plane: read-only scan, evidence-backed
255
+ proposals, strict context budgets, Control Center presentation, and confirmed
256
+ preview/apply/recovery. Publish tag: `kairo-runtime-v0.5.0`.
257
+
258
+ ### Added
259
+
260
+ - Control-plane snapshot + Control Center cockpit (health, coverage, CTA, notes).
261
+ - Evidence-backed `proposals[]` derived only from status, checks, diff, adapters,
262
+ and policy (no proposal without evidence; optional intelligence absence is neutral).
263
+ - Changes preview → confirm → apply → re-scan → receipt/rollback (managed assets only).
264
+ - Activity & recovery snapshot restore with safety backups.
265
+ - Operational SDD Core: `kairo components configure|verify|rollback sdd-core`
266
+ materializes nine canonical skill directories (`SKILL.md` + `references/contract.md`),
267
+ optional `--persona teaching` per managed agent (`personaAgentIds`, off by default),
268
+ real verify health (`configured|missing|drifted|conflict`), receipts under
269
+ `~/.harness/integrations/sdd-core/`, and bounded rollback that refuses incomplete
270
+ evidence and never clobbers mismatched `afterHash` destinations.
271
+ - Lifecycle auto-materialization: when `sdd-core` is selected/installed,
272
+ `install` / `setup` / `sync` / `upgrade` reuse `sdd-core.apply` with
273
+ `preservePersona` (no second consent prompt; teaching never auto-activates).
274
+ Results expose `integrations.sdd` (partial/conflicts/receipt) and aggregated
275
+ `sessionRefreshRequired`.
276
+ - SDD state v4: durable `state.sdd` with explicit `personaAgentIds`, tracked files
277
+ (relativePath + skillHash), fail-closed future `stateVersion`, and partial
278
+ receipt reconciliation (track only applied/verified-noop; rollback mutates
279
+ then reconciles even when global `ok=false`).
280
+ - Engram Operational Lifecycle: `kairo components configure|rollback engram-memory`
281
+ delegates to official `engram setup <agent>` with dry-run, consent, receipts under
282
+ `~/.harness/integrations/engram/`, and bounded rollback. Supported Engram range
283
+ `>=1.19.0 <2.0.0`; older binaries get upgrade guidance only (no silent update).
284
+ Doctor/status show binary/version and per-agent config evidence; Engram issues
285
+ degrade only `engram-memory`.
286
+ - Component Manifest v2: `schemaVersion`, `kind`, `capabilities`, `dependencies`,
287
+ `healthChecks`, with validation (IDs, versions, safe paths, duplicates, cycles)
288
+ and deterministic topological resolution.
289
+ - Public component health states (`healthy` / `degraded` / `drifted` / `missing`)
290
+ on `status`, `doctor`, components listing, and JSON (`componentHealth`).
291
+ Engram/Graphify/SDD integration warnings degrade the component without failing
292
+ global doctor when only that component is affected.
293
+ - OpenCode Go / Zen as first-class Intelligence backends via `OPENCODE_API_KEY`
294
+ (`opencode-go`, `opencode-zen`) with an explicit transport registry
295
+ (`chat_completions`, `responses`, `runtime`).
296
+ - OpenCode CLI runtime backend (`opencode`) for Anthropic/Google models without
297
+ direct HTTP transport, using `opencode run --format json` plus an analysis-only
298
+ preamble (intent signal, not a universal non-mutation guarantee).
299
+ - Safe OpenCode evidence: CLI install + `opencode auth list` providers + `/models`
300
+ probe. States distinguish `configured`, `authenticated`,
301
+ `entitlement_unverified`, and `limit_reached` without reading `auth.json` or
302
+ claiming subscription/balance from a key alone.
303
+ - Ephemeral `--backend` / `--model` overrides for `intelligence models|route|ask`
304
+ (does not persist `preferredBackend` / `preferredModel`).
305
+ - Doctor advisory check for intelligence providers (optional; never fails health).
306
+
307
+ ### Changed
308
+
309
+ - Context compiler: `stableBudgetTokens` covers AGENTS.md + stable docs as one
310
+ budget; `requestBudgetTokens` is shared across requested files; truncation
311
+ markers stay inside the limit; evidence records `excluded_budget` and usage.
312
+ - Control Center / Changes show proposals with severity, destination links, and
313
+ evidence sources (no sensitive dumps; Runs remain secondary).
314
+ - Bundled component catalog migrated to Manifest v2; workspace v1 catalogs
315
+ continue to normalize in-memory. SDD catalog assets ship full skill directories
316
+ (including `references/`) plus `personas/teaching.md`.
317
+ - SDD configure/rollback use the shared apply-confirmation policy: non-interactive
318
+ apply without `--json` requires `--yes`/`--confirm`/`--no-preflight`; `--json`
319
+ skips the prompt/consent gate. Conflicts are never overwritten.
320
+ - Default cloud routing precedence: Ollama → OpenCode Go → OpenCode Zen →
321
+ OpenRouter. Go limit failures never auto-spend Zen credits.
322
+ - Health guidance treats API-key presence as configured credentials, not proven
323
+ authentication, and recommends Ollama, OpenCode CLI, `OPENCODE_API_KEY`, and
324
+ `OPENROUTER_API_KEY`.
325
+ - Engram and Graphify remain external integrations: proposals only when config,
326
+ version, or freshness evidence exists; never claim active runtime.
327
+
328
+ ### Compatibility
329
+
330
+ - Additive snapshot/context fields only (`proposals`, budget usage,
331
+ `excluded_budget`). Existing CLI commands and state formats remain compatible.
332
+ - No autonomous writes; preview/apply still require confirmation.
333
+
334
+ ## 0.4.3 — 2026-07-13
335
+
336
+ Patch release. Fix System health crash on real profile.sources.
337
+
338
+ ### Fixes
339
+
340
+ - Format `profile.sources` from the real `{ global, project }` contract as
341
+ `global`, `project`, or `none` instead of calling `.join()` on the object.
342
+
343
+ ### Compatibility
344
+
345
+ - Runtime, commands, and persisted formats unchanged.
346
+
347
+ ## 0.4.2 — 2026-07-13
348
+
349
+ Patch release. Prefer launchable agents over missing global-state markers in Home CTA.
350
+
351
+ ### Fixes
352
+
353
+ - Home readiness/NEXT prefer New run whenever any agent is launchable, even if
354
+ `~/.harness/state.json` is absent or `diagnostics.detected` is still 0.
355
+
356
+ ### Compatibility
357
+
358
+ - Runtime, commands, and persisted formats unchanged.
359
+
360
+ ## 0.4.1 — 2026-07-13
361
+
362
+ Patch release. Prefer launchable agents over empty diagnostics.detected in Home readiness/CTA.
363
+
364
+ ### Fixes
365
+
366
+ - Home readiness and NEXT treat launchable agents as ready-to-work even when `diagnostics.detected` is still 0.
367
+
368
+ ### Compatibility
369
+
370
+ - Runtime, commands, and persisted formats unchanged.
371
+
372
+ ## 0.4.0 — 2026-07-13
373
+
374
+ Minor release. Informative Home and clearer cockpit navigation.
375
+
376
+ ### Features
377
+
378
+ - Replace Overview/Mission Control with Home that explains Kairo, derives readiness
379
+ (`Needs setup` / `Needs attention` / `Limited` / `Ready to work`), and recommends a
380
+ real next action with an Enter destination.
381
+ - Prefer **New run** when any agent is launchable; missing intelligence is an optional
382
+ limitation, not a blocker.
383
+ - Rename navigation: Home, Running now, History, Agents, New run, System health — with
384
+ contextual descriptions, status summaries, and selected ≠ currently open section.
385
+ - System health separates agents, intelligence, authentication, and configuration.
386
+ - Readable recent/active run lines; empty states explain absence and suggest next steps.
387
+ - Wide/compact/minimal preserve critical Home information; list windowing covers agents
388
+ and diagnostics; load errors offer `R Retry` while Esc remains available.
389
+
390
+ ### Compatibility
391
+
392
+ - Internal view ids, explicit commands, runtime, profiles, and run formats are unchanged.
393
+ - UI copy remains English. `NO_COLOR`, `HARNESS_ASCII=1`, and `HARNESS_INK=0` stay supported.
394
+
395
+ ### Docs
396
+
397
+ - Quick Start describes Home, renamed navigation, and layout parity.
398
+
399
+ ## 0.3.1 — 2026-07-13
400
+
401
+ Patch release. Predictable cockpit navigation focus and contextual footer hints.
402
+
403
+ ### Fixes
404
+
405
+ - Informational views (Overview, Diagnostics, Providers, Help) keep navigation focus
406
+ so ↑↓/Enter switch sections without requiring Tab.
407
+ - Esc returns deterministically: nested run detail → list → Overview → exit.
408
+ - Tab only switches regions when content is interactive (runs lists, launch).
409
+ - Footer lists only keys that work in the current context.
410
+
411
+ ### Compatibility
412
+
413
+ - Runtime, persisted formats, and explicit commands are unchanged.
414
+
415
+ ## 0.3.0 — 2026-07-13
416
+
417
+ Minor release. Full-screen responsive cockpit TUI for interactive shell and setup.
418
+
419
+ ### Features
420
+
421
+ - Idempotent alternate-screen session across onboarding → setup → cockpit, with
422
+ restore on normal exit, Ctrl+C, SIGTERM, SIGHUP, and errors.
423
+ - Deep-space cockpit shell: navigation, mission control, and system strip with
424
+ textual status labels (never color-only).
425
+ - Responsive layouts: wide (≥100×28), compact (≥72×20), minimal (60–71 or short),
426
+ live resize, truncated lists with `… more`; `<60` columns keep the explicit TTY gate.
427
+ - Region navigation: arrows within a region, Tab between regions, Enter to open,
428
+ Esc to return (exit only from Home), `R` refresh, `C` cancel, `?` help.
429
+ - Setup Ink UI shares the cockpit theme/panel language without changing setup logic.
430
+
431
+ ### Compatibility
432
+
433
+ - Bare `kairo` routing, `kairo shell`, setup flags, explicit commands, JSON, and
434
+ non-TTY flows are unchanged. `state.json`, profiles, and run formats are unchanged.
435
+ - `NO_COLOR`, limited Unicode (`HARNESS_ASCII=1`), and `HARNESS_INK=0` remain supported.
436
+ - Direct dependency: `ansi-escapes`.
437
+
438
+ ### Docs
439
+
440
+ - Quick Start and help describe the cockpit, breakpoints, and keybindings.
441
+
442
+ ## 0.2.3 — 2026-07-13
443
+
444
+ Patch release. First-run onboarding and guided returning dashboard.
445
+
446
+ ### Features
447
+
448
+ - Bare interactive `kairo` routes by `~/.harness/state.json`: missing → onboarding
449
+ (welcome → diagnosis → confirmed setup) then dashboard; present → operations dashboard.
450
+ - Dashboard shows a stable purpose line and a contextual next step (configure,
451
+ enable intelligence, launch a run, or review problems).
452
+ - Explicit commands, setup flags, and non-TTY flows keep prior behavior.
453
+
454
+ ### Docs
455
+
456
+ - Quick Start and `--help` describe first-run vs returning routing.
457
+
458
+ ## 0.2.2 — 2026-07-10
459
+
460
+ Minor release. Kairo Runtime MVP: launch, supervise, and audit agent CLI runs with
461
+ privacy-first persistence and cross-process supervision.
462
+
463
+ ### Features
464
+
465
+ - CLI: `kairo run`, `kairo runs list|show|stop` with `--no-wait`, `--model`, and opt-in transcript capture.
466
+ - Execution adapters for Cursor, Codex, and Claude Code; OpenCode inspect-only in v1.
467
+ - Persisted audit trail under `~/.harness/runs/<runId>/` (`state.json`, `events.jsonl`).
468
+ - Detached supervisor via `spawn` (no fork IPC); `starting` grace for cross-process recover.
469
+ - TUI operations dashboard with multi-step launch wizard (agent, task, model, permissions).
470
+ - Smoke script: `scripts/runtime-mvp-smoke.sh` with `SMOKE_MODEL` override.
471
+
472
+ ### Security
473
+
474
+ - Task content is not stored in audit artifacts; only `taskDigest` + `taskLength`.
475
+ - Ephemeral `handoff.json` is consumed or cleaned on cancel, fail, or recover.
476
+
477
+ ## 0.2.1 — 2026-07-10
478
+
479
+ Patch release. Fixes the orchestrator Diagnostics menu entry so it opens a
480
+ dedicated read-only view instead of silently staying on Home.
481
+
482
+ ### Fixes
483
+
484
+ - Orchestrator **Diagnostics** maps to a `DIAGNOSTICS` view with summary, intelligence
485
+ availability, agent capabilities, and recommendations.
486
+ - Home keeps the compact snapshot; `Esc` still returns to the menu from subviews.
487
+ - Menu navigation uses shared pure helpers covered by `test/orchestrator-state.test.js`.
488
+
489
+ ## 0.2.0 — 2026-07-09
490
+
491
+ Minor release. Harness Engineering intelligence layer: governed project context,
492
+ local-first backends, cloud opt-in, token budgets, and provider-neutral routing.
493
+
494
+ ### Features
495
+
496
+ - Pluggable intelligence backends: Ollama (local) and OpenRouter (`openrouter/free` candidate).
497
+ - Custom OpenAI-compatible HTTP providers via profile `customProviders` (`baseUrl` + `apiKeyEnv` only).
498
+ - Context compiler builds evidence-based `ContextPack` (stable + per-request) without dumping the repo.
499
+ - Routing prefers user overrides, then Ollama, then OpenRouter free after explicit cloud consent.
500
+ - Privacy gates: private paths excluded by default; cloud invoke requires consent + confirmation.
501
+ - Token budgets and usage telemetry (input/output/cached/model/fallback).
502
+ - CLI: `kairo intelligence status|models|context|route|ask`.
503
+ - Orchestrator shell menu includes Intelligence diagnostics.
504
+ - Profile fields: `preferredBackend`, `preferredModel`, `cloudConsent`, token budgets, `customProviders`.
505
+
506
+ ### Security
507
+
508
+ - Credentials are read only from environment variables (`OPENROUTER_API_KEY`, `OLLAMA_HOST`, named `apiKeyEnv`).
509
+ - Profiles and disk state never store API keys, tokens, or secrets.
510
+ - Without a backend or consent, Kairo remains in diagnostics/configuration mode.
511
+ - Remote custom providers cannot use `apiKeyEnv` in 0.2.0, preventing a project profile from redirecting a bearer credential to an arbitrary host.
512
+
513
+ ### Notes
514
+
515
+ - `openrouter/free` is a dynamic router candidate, not a permanently hardcoded model lock.
516
+ - Kairo owns reasoning governance; providers only supply inference.
517
+ - Agent CLI capability registry from 0.1.5 remains unchanged for setup/install/status/doctor.
518
+ - Deferred to 0.2.1 (MEDIUM): broader secret-key coverage (`accessKey`, `awsAccessKeyId`,
519
+ `passwd`); tighten link-local / metadata host classification in `customProviders` baseUrl
520
+ validation (`169.254.0.0/16`).
521
+
522
+ ## 0.1.5 — 2026-07-09
523
+
524
+ Minor release. Interactive orchestrator foundation: shell, diagnostics, capability
525
+ registry, and profile resolution without changing the safe-by-default confirmation model.
526
+
527
+ ### Features
528
+
529
+ - Bare `kairo` opens an interactive orchestrator shell on capable TTY sessions.
530
+ - `kairo orchestrator [--json]` exposes read-only capability diagnostics.
531
+ - Capability registry probes installed agent CLIs and reports availability states.
532
+ - Global and project profile resolution for coordinator routing preferences.
533
+ - Action planner with human confirmation for sensitive setup operations.
534
+
535
+ ### Fixes
536
+
537
+ - `resolveSuggestedInvocation()` accepts injectable `env` for package-manager detection;
538
+ tests no longer mutate global `process.env`.
539
+
540
+ ### Notes
541
+
542
+ - Does not yet expose model-ID discovery or full Harness Engineering governance (0.2.0).
543
+ - Kairo never stores tokens or credentials.
544
+
545
+ ## 0.1.4 — 2026-07-09
546
+
547
+ Patch release. Fixes public installer smoke for Kairo Runtime versions.
548
+
549
+ ### Fixes
550
+
551
+ - `install-script-url` resolves `0.1.x` versions to `kairo-runtime-v*` tags instead of legacy `v*`.
552
+ - Legacy `@kal-elsam/harness` tags (`0.29.x` and above) still use `v*` refs.
553
+ - `install.sh` runs `npm install -g --force` so bootstrap upgrades replace legacy global bins safely.
554
+
555
+ ## 0.1.3 — 2026-07-09
556
+
557
+ Patch release. Adds opt-in Engram and Graphify components for persistent memory and
558
+ context-graph workflows.
559
+
560
+ ### Features
561
+
562
+ - Bundled opt-in components: `engram-memory` and `graphify-context` (not enabled by default).
563
+ - Install with `kairo setup --components orchestrator,sdd-core,engram-memory,graphify-context`.
564
+ - Managed sections and contract assets under `~/.harness/components/`.
565
+ - Non-invasive doctor/status checks for Engram MCP availability and Graphify CLI/graph freshness.
566
+ - Authority order documented: user > AGENTS.md > repo docs > Engram > Graphify.
567
+
568
+ ### Notes
569
+
570
+ - Does not auto-install Engram, Graphify, MCP servers, or git hooks.
571
+ - Kairo remains the coordinator; the repository stays the source of truth.
572
+
573
+ ## 0.1.2 — 2026-07-08
574
+
575
+ Patch release. Bootstrap installer now installs the global `kairo` CLI.
576
+
577
+ ### Fixes
578
+
579
+ - `install.sh` runs `npm install -g @kal-elsam/kairo-runtime` before setup so
580
+ `kairo status` works immediately after install.
581
+ - Post-install next steps and README use `kairo` as the primary command.
582
+ - Installer smoke tests verify `kairo` from npm global bin instead of `npx`.
583
+
584
+ ## 0.1.0 — 2026-07-07
585
+
586
+ First public release of **Kairo Runtime** under `@kal-elsam/kairo-runtime`.
587
+
588
+ ### Rebrand
589
+
590
+ - Product identity: Kairo Runtime — Local Agent Operating System.
591
+ - Preferred CLI: `kairo` and `kairo-runtime`.
592
+ - Legacy CLI aliases retained: `harness`, `agentic-harness`, `sgs-harness`, `harness-sgs`.
593
+ - Legacy state paths unchanged: `~/.harness`, `HARNESS_HOME`, `harness:managed:*`.
594
+ - Command headers and setup copy use Kairo Runtime branding.
595
+ - Bridge package `@kal-elsam/harness` remains out of scope for this release.
596
+
597
+ ## 0.29.1 — 2026-07-07
598
+
599
+ Patch release. Fixes Ink setup preview hang and release provenance checks.
600
+
601
+ ### Fixes
602
+
603
+ - Ink `Plan preview` no longer stalls indefinitely on "Building preview…" when the
604
+ preview effect re-runs after setting `previewLoading`.
605
+ - `release:published` accepts `origin/main` ahead of the published tag/commit as long
606
+ as main contains the release `gitHead`.
607
+
608
+ ## 0.29.0 — 2026-07-07
609
+
610
+ Minor release. Ink setup opens with a branded splash screen before agent detection.
611
+
612
+ ### Splash screen
613
+
614
+ - New `SPLASH` step precedes agent detection in the Ink setup flow.
615
+ - Full ASCII `HARNESS` logo with tagline `Agent Engineering Platform`, subtitle
616
+ `Local Agent Operating System`, and `Press Enter to continue` hint.
617
+ - Narrow terminals automatically use a compact logo variant.
618
+ - `Enter` advances to detection; `Esc` cancels as before.
619
+ - `--simple`, non-TTY/CI, and `--yes`/`--confirm` paths are unchanged (no splash).
620
+
621
+ ## 0.28.0 — 2026-07-07
622
+
623
+ Minor release. Interactive setup uses Ink for a full terminal UI.
624
+
625
+ ### Ink setup experience
626
+
627
+ - Bare `harness` / `harness setup` in a TTY opens an Ink app: header, agent cards,
628
+ visual selectors, plan preview, confirmation, and branded success output.
629
+ - `harness setup --simple` keeps the Clack prompt flow; dumb terminals fall back
630
+ to Clack automatically.
631
+ - Brand tokens from `src/global/brand/` are reused; no duplicated style system.
632
+ - `--json`, non-TTY/CI, `--yes`, `--confirm`, `--dry-run`, and explicit flags
633
+ keep the existing textual engines unchanged.
634
+
635
+ ### Dependencies
636
+
637
+ - Added `ink` and `react` for the interactive setup renderer.
638
+
639
+ ## 0.27.0 — 2026-07-07
640
+
641
+ Minor release. Premium terminal identity for the interactive setup wizard.
642
+
643
+ ### Brand layer
644
+
645
+ - New `src/global/brand/` tokens: name, tagline, agent labels (Cursor, Codex,
646
+ OpenCode, Claude Code), and semantic colors (success, warning, danger, muted,
647
+ accent).
648
+ - New `src/global/clack/theme.js` formats splash, agent detection card, plan
649
+ preview, and result summary for the Clack wizard.
650
+
651
+ ### Setup wizard UX
652
+
653
+ - Intro: `HARNESS — Local Agent Operating System` with compact welcome splash.
654
+ - Agent detection card with human hints (`ready`, `not detected`, `managed later`).
655
+ - Plan preview grouped into Agents, Components, Managed writes, and Preserved
656
+ content — less technical noise on the happy path.
657
+ - Non-TTY, `--json`, `--yes`, and explicit flags keep the existing textual CLI.
658
+
659
+ ## 0.26.0 — 2026-07-07
660
+
661
+ Minor release. Interactive setup now uses `@clack/prompts` instead of the homemade TUI.
662
+
663
+ ### Setup wizard (Clack)
664
+
665
+ - `harness` / `harness setup` in a TTY opens a polished Clack wizard: intro branding,
666
+ agent detection, multiselect for agents/components, managed-change preview, and
667
+ explicit confirmation.
668
+ - `--json`, non-TTY/CI, `--yes`, `--confirm`, `--dry-run`, and explicit
669
+ `--agents` / `--components` flags keep the existing non-interactive flow.
670
+ - Removed the custom TUI in `src/global/tui/*` (key-reader, ANSI paint, multi-select).
671
+ - **Node.js** minimum is now `>=20.12.0` (`@clack/prompts` requirement).
672
+
673
+ ## 0.25.0 — 2026-07-07
674
+
675
+ Minor release. Bare `harness` is now the recommended interactive entrypoint.
676
+
677
+ ### Default entrypoint
678
+
679
+ - `harness` with no subcommand routes to `harness setup` (interactive TUI in a TTY).
680
+ - `harness --dry-run` previews the setup plan without writing agent configs or
681
+ `~/.harness` state.
682
+ - `harness install` remains the explicit technical path for CI, scripts, and
683
+ non-interactive configure.
684
+ - `harness --scope=workspace` still routes to workspace `init` (legacy opt-in).
685
+
686
+ ## 0.24.0 — 2026-07-07
687
+
688
+ Minor release. Interactive TUI for `harness setup`.
689
+
690
+ ### Setup TUI
691
+
692
+ - `harness setup` opens a step-by-step terminal UI in interactive terminals.
693
+ - Non-TTY, flags (`--yes`, `--confirm`, `--agents`, `--components`), and dumb
694
+ terminals keep the existing textual CLI flow.
695
+ - TUI reuses detect/plan/apply logic; preview shows managed markers, paths, and
696
+ planned changes before writes.
697
+
698
+ ## 0.23.1 — 2026-07-06
699
+
700
+ Patch release. Terminal UX polish with no write-behavior changes.
701
+
702
+ ### Terminal UX
703
+
704
+ - Dry-run output now says `Backups planned` instead of `Backups` in setup/install
705
+ plans and sync repair previews.
706
+ - `harness help` lists all current `--json` supported commands and points long
707
+ examples to README.md (less noise in the main help screen).
708
+ - New `npm run ux:smoke` script captures and validates key terminal flows:
709
+ help, setup dry-run, status (missing/ok/drift), sync dry-run, history, report,
710
+ and common error messages.
711
+
712
+ ## 0.23.0 — 2026-07-06
713
+
714
+ Minor release. Read-only diagnostics report for local support bundles.
715
+
716
+ ### Diagnostics report
717
+
718
+ - New `harness report` command combines CLI version, adapters, effective policy,
719
+ status summary, diff/drift preview, and recent history in one read-only bundle.
720
+ - `harness report --json` emits a stable envelope for CI and tooling.
721
+ - `harness report --out <file>` writes only to the explicit user path (never
722
+ `~/.harness` by default); human text or JSON depending on flags.
723
+ - `harness report --limit <n>` controls how many history events are included
724
+ (default 20).
725
+ - Corrupt `history.jsonl` lines surface as warnings without failing the report.
726
+ - No telemetry, no config writes, no full config contents — paths, states, and
727
+ managed section summaries only.
728
+
729
+ ## 0.22.0 — 2026-07-06
730
+
731
+ Minor release. History querying and last-operation UX for the audit log.
732
+
733
+ ### History querying
734
+
735
+ - `harness history` adds read-only filters: `--command`, `--action`, and `--limit`.
736
+ - New `harness history last` shows the most recent matching event (`--json` supported).
737
+ - Filters combine before `--limit` (most recent N of the filtered set).
738
+ - `history last` with no entries exits 0 and reports a clear empty state.
739
+ - All history queries are read-only; `history.jsonl` stays append-only.
740
+
741
+ ## 0.21.0 — 2026-07-06
742
+
743
+ Minor release. Local operation history / audit log for managed commands.
744
+
745
+ ### Operation history / audit log
746
+
747
+ - New append-only audit file: `~/.harness/history.jsonl` (one JSON object per line).
748
+ - New `harness history` command with `--json` and `--limit <n>`.
749
+ - Records managed operations: `setup`, `sync`, `upgrade`, `rollback --apply`,
750
+ `uninstall`, `policy set`, and `policy reset`.
751
+ - Each event captures timestamp, command, action, wrote, dryRun, policy,
752
+ consentSource, agents, components, checksBefore/checksAfter when applicable,
753
+ backupsCreated, snapshotsUsed (rollback), and cliVersion.
754
+ - `--dry-run` and upgrade preview do not write `~/.harness` or history entries;
755
+ persistent audit starts on real apply, interactive cancellation, rollback apply,
756
+ uninstall, or policy changes.
757
+ - Cancelled interactive operations log `action: cancelled`.
758
+ - Consent failures before writes do not create history entries.
759
+ - Corrupt lines in `history.jsonl` are skipped with warnings; valid events still display.
760
+
761
+ ## 0.20.0 — 2026-07-06
762
+
763
+ Minor release. Policy visibility and consent audit in control-plane output.
764
+
765
+ ### Policy visibility and consent audit
766
+
767
+ - `harness status` prints a `Policy` section and `status --json` adds a stable
768
+ `policy` field (`source`, `profile`, `applyMode`, `preflight`, agents,
769
+ components, path).
770
+ - `harness explain` includes effective policy and `~/.harness/policy.json` path.
771
+ - `setup`, `sync`, and `upgrade` preflight output shows `Consent source` and
772
+ `Policy profile` without changing 0.19.0 write behavior.
773
+ - `harness policy --json` keeps backward compatibility and adds `effective`.
774
+ - Without a policy file, output clearly reports defaults / no policy file.
775
+
776
+ ## 0.19.0 — 2026-07-06
777
+
778
+ Minor release. Local policy profiles for setup, sync, and upgrade.
779
+
780
+ ### Local policy profiles
781
+
782
+ - New `harness policy` command to view and edit operation preferences stored in
783
+ `~/.harness/policy.json` (`policy --json`, `policy set <key> <value>`,
784
+ `policy reset`).
785
+ - Supported profiles: `safe` (interactive prompt), `ci` and `fast` (apply via
786
+ policy consent with preflight, no prompt).
787
+ - Safe defaults when a policy file exists: `applyMode: prompt`, `preflight: true`,
788
+ `agents: detected`, `components: [orchestrator, sdd-core]`.
789
+ - Precedence: CLI flags override policy; policy overrides internal defaults.
790
+ - Without a policy file, 0.18.0 behavior is unchanged.
791
+ - `policy reset` removes only `policy.json`; state, adapters, and components are
792
+ preserved.
793
+
794
+ ## 0.18.0 — 2026-07-06
795
+
796
+ Minor release. Explicit apply confirmation in interactive terminals.
797
+
798
+ ### Apply confirmation policy
799
+
800
+ - Interactive terminals now show managed preflight and prompt before applying
801
+ `setup --yes`, `sync`, and `upgrade --yes`.
802
+ - Non-interactive mode requires `--yes`, `--confirm`, or `--no-preflight` before writes.
803
+ - `setup --confirm` applies with preflight and no prompt using defaults or explicit flags.
804
+ - Non-interactive `harness setup` without consent flags is rejected before writing state.
805
+ - New `--confirm` applies after preflight without an interactive prompt.
806
+ - `--json` and `--dry-run` behavior unchanged.
807
+
808
+ ## 0.17.0 — 2026-07-06
809
+
810
+ Minor release. Managed preflight summary before apply commands.
811
+
812
+ ### Preflight diff before apply
813
+
814
+ - `harness setup --yes`, `harness sync`, and `harness upgrade --yes` now print a
815
+ managed preflight summary (planned creates/updates/repairs, managed markers, and
816
+ user-owned preserved content) immediately before writing configs or state.
817
+ - New `--no-preflight` skips the extra output for CI and trusted scripts.
818
+ - `harness diff`, `--dry-run`, and `--json` behavior unchanged.
819
+
820
+ ## 0.16.0 — 2026-07-06
821
+
822
+ Minor release. Read-only managed diff preview before apply commands.
823
+
824
+ ### Managed diff preview
825
+
826
+ - New `harness diff` and `harness diff --json` preview missing/stale assets and
827
+ managed sections that `harness sync` would repair.
828
+ - Without state, recommends `harness setup --dry-run`.
829
+ - Healthy ecosystems report no managed changes; user-owned content outside markers
830
+ is reported as preserved.
831
+ - Read-only: never writes configs or `~/.harness` state.
832
+
833
+ ## 0.15.0 — 2026-07-06
834
+
835
+ Minor release. Read-only audit command for managed ecosystem changes.
836
+
837
+ ### Explain / audit managed changes
838
+
839
+ - New `harness explain` and `harness explain --json` show managed adapters, config
840
+ files, installed components, backups, managed markers, and user-owned preserved
841
+ content outside Harness markers.
842
+ - Read-only: never writes agent configs or `~/.harness` state.
843
+
844
+ ## 0.14.2 — 2026-07-06
845
+
846
+ Patch release. Ships the installer smoke fix from `e62b25a` in the npm tarball.
847
+
848
+ ### Fix
849
+
850
+ - `scripts/installer-smoke-test.sh` runs from an isolated temp workspace so `npx` does
851
+ not resolve the monorepo package when validating post-publish from the harness repo.
852
+
853
+ ## 0.14.1 — 2026-07-06
854
+
855
+ Patch release. Post-publish smoke for the one-liner installer path.
856
+
857
+ ### Installer smoke
858
+
859
+ - New `scripts/installer-smoke-test.sh` validates the real user flow:
860
+ `curl .../install.sh | sh` with isolated `HARNESS_HOME` and a temporary npm cache.
861
+ - Preview (`--version <x>`) must not write `~/.harness`.
862
+ - Apply (`--yes --agents all`) must reach `status --json` with `overall=ok` and clean
863
+ uninstall of managed sections.
864
+ - Run manually after publish: `npm run smoke:installer -- --version x.y.z`.
865
+
866
+ ## 0.14.0 — 2026-07-06
867
+
868
+ Minor release. Installer post-apply guidance and a safe `harness upgrade` command.
869
+
870
+ ### Installer status + upgrade UX
871
+
872
+ - After `install.sh --yes`, next steps now highlight `harness status`, `harness sync`,
873
+ and `npx @kal-elsam/harness@latest setup --yes`.
874
+ - New `harness upgrade --dry-run` previews convergence with the installed CLI and shows
875
+ the latest npm command without writing configs.
876
+ - `harness upgrade --yes` applies only with an explicit flag (no silent auto-update).
877
+
878
+ ## 0.13.0 — 2026-07-06
879
+
880
+ Minor release. Bootstrap installer can apply setup explicitly while keeping the
881
+ safe default preview.
882
+
883
+ ### Bootstrap apply mode
884
+
885
+ - `scripts/install.sh` default unchanged: ends with `harness setup --dry-run`.
886
+ - Explicit apply: `curl ... | sh -s -- --yes` runs `harness setup --yes`.
887
+ - Passthrough to setup: `--version`, `--agents`, `--components`,
888
+ `--no-default-components`.
889
+ - Security unchanged: no `sudo`, no shell profiles, no AI app installation — only
890
+ managed sections.
891
+
892
+ ### Recommended entry
893
+
894
+ ```bash
895
+ curl -fsSL https://raw.githubusercontent.com/Kal-elSam/harness/main/scripts/install.sh | sh
896
+ curl -fsSL https://raw.githubusercontent.com/Kal-elSam/harness/main/scripts/install.sh | sh -s -- --yes
897
+ ```
898
+
899
+ ## 0.12.1 — 2026-07-04
900
+
901
+ Patch release. Fixes registry smoke validation for the adapter matrix.
902
+
903
+ ### Fix
904
+
905
+ - `scripts/registry-smoke-test.sh` sorts expected adapter ids before comparing
906
+ managed agents, so post-publish smoke passes reliably.
907
+
908
+ ## 0.12.0 — 2026-07-04
909
+
910
+ Minor release. Adapter matrix confidence for Cursor, Codex, OpenCode, and Claude Code.
911
+
912
+ ### Adapter matrix
913
+
914
+ - `harness adapters` and `harness adapters --json` show the official supported
915
+ adapter matrix: `id`, `label`, `rootDir`, `configFile`, `detected`, `managed`,
916
+ `managedTargets`.
917
+ - Harness does not install Cursor/Codex/OpenCode/Claude; it configures managed
918
+ sections in their config files only.
919
+
920
+ ### Explicit all-agents selection
921
+
922
+ - `harness setup --agents all` and `harness install --agents all` force all four
923
+ supported adapters, even when some roots are not detected.
924
+ - Default unchanged: detected agents when present, safe fallback to all when none
925
+ are detected.
926
+
927
+ ### Registry smoke
928
+
929
+ - Creates all four agent roots and validates `adapters --json`, `status --json`,
930
+ drift repair (including OpenCode), and `uninstall`.
931
+
932
+ ## 0.11.0 — 2026-07-04
933
+
934
+ Minor release. Product-style bootstrap installer UX. npm remains the distribution
935
+ mechanism; users enter through a one-liner that runs `harness`.
936
+
937
+ ### Bootstrap installer
938
+
939
+ - Public script: `scripts/install.sh`
940
+ - One-liner:
941
+ `curl -fsSL https://raw.githubusercontent.com/Kal-elSam/harness/main/scripts/install.sh | sh`
942
+ - Detects Node/npm, prints the plan, runs `@kal-elsam/harness` via `npx` or
943
+ `npm exec`, and finishes with `harness setup --dry-run`.
944
+ - `--dry-run` prints the plan without downloading or executing the package.
945
+ - Safe by design: no `sudo`, no shell profile changes, no agent config or
946
+ `~/.harness` writes (preview only). Clear errors when Node/npm are missing.
947
+
948
+ ### Version docs
949
+
950
+ - `harness --version` and README/help document installed vs published version.
951
+ - Update path: `npx @kal-elsam/harness@latest sync`.
952
+
953
+ ### Recommended entry
954
+
955
+ ```bash
956
+ curl -fsSL https://raw.githubusercontent.com/Kal-elSam/harness/main/scripts/install.sh | sh
957
+ npx @kal-elsam/harness setup
958
+ npx @kal-elsam/harness status
959
+ ```
960
+
961
+ ## 0.10.0 — 2026-07-04
962
+
963
+ Minor release. Machine-readable control-plane output and registry smoke parity
964
+ with the recommended `setup` / `status` / `sync` flow.
965
+
966
+ ### JSON output
967
+
968
+ - `harness status --json`, `harness sync --dry-run --json`, and `harness doctor --json`
969
+ emit a stable envelope for CI, tooling, and debugging.
970
+ - Stable fields: `ok`, `overall`, `agents`, `components`, `checks`, `backups`,
971
+ `nextAction`, `cliVersion`.
972
+ - Human-readable output remains the default.
973
+ - Exit codes are unchanged: non-zero when the ecosystem is not healthy.
974
+
975
+ ### Registry smoke
976
+
977
+ - `scripts/registry-smoke-test.sh` exercises `setup --dry-run`, `setup --yes`,
978
+ `status`, drift simulation, `sync`, `status --json` (expects `overall=ok`),
979
+ and `uninstall`.
980
+
981
+ ### Docs / messaging
982
+
983
+ - Primary day-to-day repair path is `harness sync`; `update` remains a technical alias.
984
+ - Doctor and managed-section guidance point at `sync` instead of `update`.
985
+
986
+ ### Recommended flow
987
+
988
+ ```bash
989
+ harness setup
990
+ harness status
991
+ harness sync
992
+ harness status --json
993
+ ```
994
+
995
+ ## 0.9.0 — 2026-07-03
996
+
997
+ Minor release. Adds `harness sync` as the primary convergence command.
998
+
999
+ ### Sync command
1000
+
1001
+ - `harness sync` detects managed state, repairs drift/missing/stale with the same
1002
+ safe engine as `update`, and prints a status summary.
1003
+ - `harness sync --dry-run` reports planned repairs without writing.
1004
+ - No global state → recommends `harness setup` and writes nothing.
1005
+ - Already OK → writes nothing.
1006
+ - `update` remains as a technical/compatibility alias; `sync` is the day-to-day UX.
1007
+
1008
+ ### Recommended flow
1009
+
1010
+ ```bash
1011
+ harness setup
1012
+ harness status
1013
+ harness sync
1014
+ ```
1015
+
1016
+ ## 0.8.0 — 2026-07-03
1017
+
1018
+ Minor release. Product pivot to a local AI ecosystem configurator, plus portable
1019
+ workspace component pack/import.
1020
+
1021
+ ### Terminal setup & control plane
1022
+
1023
+ - `harness setup --dry-run` is the recommended entry: detects Cursor/Codex/OpenCode/Claude,
1024
+ prints the agent-global plan, writes nothing, never touches the workspace.
1025
+ - `harness setup` applies the same safe agent-global result as `harness install`.
1026
+ - `harness status` control plane: detected agents, installed components, ok/missing/stale,
1027
+ backups, and next action (`install`, `doctor`, `update`, `rollback`).
1028
+ - Non-interactive install remains: `harness install --agents … --components …`.
1029
+ - Workspace install is opt-in/legacy (`--scope=workspace`); agent-global is the primary path.
1030
+ - Mental model: Harness is the local configurator/orchestrator. npm is distribution only.
1031
+ Terminal UX prioritizes clear non-interactive modes (Pi-inspired clarity, no Pi runtime).
1032
+
1033
+ ### Advanced: component distribution
1034
+
1035
+ - `harness components pack <id> --out <file>` builds a `.tgz` with a one-component
1036
+ `catalog.json` and declared assets only.
1037
+ - `harness components import <file>` installs into `.harness/components/` of the current
1038
+ workspace without touching `~/.harness` or running package scripts.
1039
+ - Import refuses overwrites, bundled IDs, path traversal, symlinks, and undeclared assets.
1040
+ - Pack/import is an advanced capability, not the product identity.
1041
+
1042
+ ### Primary flow
1043
+
1044
+ ```bash
1045
+ harness setup --dry-run
1046
+ harness setup
1047
+ harness status
1048
+ harness install --agents cursor,codex --components orchestrator,sdd-core
1049
+ ```
1050
+
1051
+ ## 0.7.0 — 2026-07-03
1052
+
1053
+ Minor release. Adds public authoring commands for workspace components.
1054
+
1055
+ ### Component authoring CLI
1056
+
1057
+ - `harness components validate [--cwd <path>]` validates `.harness/components/catalog.json`
1058
+ with the same loader used by install/doctor.
1059
+ - `harness components init <id> --label "<label>"` scaffolds catalog entry, component directory,
1060
+ and `README.md` (`version: "0.1.0"`).
1061
+ - Does not overwrite existing IDs, rejects bundled IDs, and never writes to `~/.harness`.
1062
+
1063
+ ### Authoring flow
1064
+
1065
+ ```bash
1066
+ harness components init team-rules --label "Team Rules"
1067
+ # edit .harness/components/team-rules/README.md
1068
+ harness components validate
1069
+ harness install --components team-rules
1070
+ ```
1071
+
1072
+ ## 0.6.0 — 2026-07-03
1073
+
1074
+ Minor release. Adds opt-in workspace component sources for local custom components.
1075
+
1076
+ ### Workspace component catalog
1077
+
1078
+ - Optional workspace catalog at `.harness/components/catalog.json` with assets under
1079
+ `.harness/components/<component-id>/`.
1080
+ - `harness components` lists bundled and workspace components separately.
1081
+ - `harness install --components <ids>` resolves bundled and workspace IDs from the current cwd.
1082
+ - Workspace components use a generic managed section (label, installed assets, optional instructions).
1083
+
1084
+ ### Validation and safety
1085
+
1086
+ - Workspace IDs must be unique and cannot override bundled components.
1087
+ - Asset paths must be relative, stay inside the component directory, exist on disk, and cannot
1088
+ escape the workspace via symlinks.
1089
+ - `doctor` detects drift for installed workspace assets; `uninstall` removes copied assets and
1090
+ managed sections.
1091
+
1092
+ ## 0.5.0 — 2026-07-03 (legacy `@kal-elsam/harness` package)
1093
+
1094
+ Historical minor release under the legacy package name (not Kairo Runtime 0.5.0).
1095
+ Adds a public component catalog and inspection command.
1096
+
1097
+ ### Component catalog
1098
+
1099
+ - Bundled components are declared in `global-template/components/catalog.json`
1100
+ (id, label, version, defaults, asset files, adapter hints).
1101
+ - `component-registry.js` loads from the catalog instead of hardcoded imports.
1102
+ - Default install still ships `orchestrator` and `sdd-core`; existing state remains valid.
1103
+
1104
+ ### New command
1105
+
1106
+ - `harness components` lists bundled components, defaults, assets, and adapter hints.
1107
+
1108
+ ### Node compatibility
1109
+
1110
+ - Catalog loader uses `readFileSync` + `JSON.parse` for Node `>=18.18` compliance.
1111
+ - CI matrix includes Node 18.
1112
+
1113
+ ## 0.4.2 — 2026-07-03
1114
+
1115
+ Patch release. Release confidence tooling only; no harness CLI behavior changes.
1116
+
1117
+ ### Registry install verification
1118
+
1119
+ - Added `npm run smoke:registry` to install `@kal-elsam/harness` from the npm
1120
+ registry in an isolated temp workspace and exercise the published CLI.
1121
+ - Documented post-publish steps: `release:published` and `smoke:registry`.
1122
+
1123
+ ### Release provenance
1124
+
1125
+ - Attribution guard supports `--range` for CI/PR scans.
1126
+ - Added `npm run release:published` to verify npm `gitHead`, tags, and `origin/main`.
1127
+ - Published tarball now includes `scripts/` used by npm release/smoke commands.
1128
+ - CI and publish workflows run attribution checks; publish runs `release:check` before `npm publish`.
1129
+
1130
+ ## 0.4.1 — 2026-07-03
1131
+
1132
+ Corrective release. No functional changes from `0.4.0`.
1133
+
1134
+ - Release metadata and process hardening.
1135
+ - Documented prohibition on `Co-authored-by` / AI attribution in release commits.
1136
+ - Added `npm run release:check` to fail when `HEAD` contains attribution trailers.
1137
+
1138
+ ## 0.4.0 — 2026-07-03
1139
+
1140
+ ### Agent-global default install
1141
+
1142
+ - `harness install` defaults to `agent-global` scope: configures local agent roots
1143
+ (Cursor, Codex, OpenCode, Claude) under `~/.harness` without touching project
1144
+ files.
1145
+ - Managed marker sections in agent configs with backup-before-change safety.
1146
+ - `HARNESS_HOME` override for sandboxed installs and testing.
1147
+
1148
+ ### Adapter contract
1149
+
1150
+ - Unified adapter registry with detection, planning, and managed config targets.
1151
+ - Explicit `--agents` / `--adapters` selection; falls back to all supported
1152
+ agents when none are detected locally.
1153
+
1154
+ ### Component system
1155
+
1156
+ - Pluggable components with `orchestrator` and `sdd-core` installed by default.
1157
+ - `--components` selection and `--no-default-components` for core-only installs.
1158
+ - Component assets under `~/.harness/components/` with managed sections in agent
1159
+ configs.
1160
+
1161
+ ### Drift detection and safe sync
1162
+
1163
+ - `harness doctor` detects missing assets, stale hashes, and drifted managed
1164
+ sections; exits non-zero on failure.
1165
+ - `harness update` repairs managed drift without overwriting user-owned content
1166
+ outside harness markers.
1167
+
1168
+ ### Backup and rollback
1169
+
1170
+ - `harness backups` lists config snapshots under `~/.harness/backups/`.
1171
+ - `harness rollback --to <snapshot>` previews restores (dry-run by default).
1172
+ - `harness rollback --to <snapshot> --apply` restores backed-up configs with a
1173
+ safety snapshot before overwriting existing files.
1174
+
1175
+ ### Smoke and release hardening
1176
+
1177
+ - `npm run smoke` validates the packed tarball (not just source) end to end.
1178
+ - CI and publish workflows require smoke tests before release.
1179
+ - Publish workflow runs smoke before `npm publish` via npm Trusted Publishing.