@ngockhoale/ukit 2.6.11 → 2.7.0

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
@@ -2,6 +2,76 @@
2
2
 
3
3
  All notable changes to UKit are documented here.
4
4
 
5
+ ## 2.7.0 - 2026-09-20
6
+
7
+ OMP fully autonomous / unattended mode — cycle C35 (TASK-008..014).
8
+
9
+ - Product knob: `orchestration.permissionMode: "unattended"` declared in
10
+ `.ukit/storage/config.json` (template + validation; `interactive`/`safe-auto`
11
+ reserved for later cycles).
12
+ - omp approval surface: `templates/.omp/config.yml` pins
13
+ `tools.approvalMode: yolo` + all ten `tools.approval.*: allow` — the C34
14
+ key-omission decision is superseded now that unattended is a declared
15
+ product mode (interactive global configs can no longer downgrade shipped
16
+ installs to prompting).
17
+ - Migration: `mergeOmpConfig` + diffPlan wiring — installed `.omp/config.yml`
18
+ upgrades preserve user `modelRoles`/keys/`bash.patterns`, strip legacy
19
+ `prompt` policies, stay idempotent, and never clobber unparseable files.
20
+ - `ukit doctor`: new unattended section verifies `permissionMode`, the
21
+ rendered approval map, zero residual `prompt` policies, and the deny set.
22
+ - Unattended completion loop: `## Unattended Completion Loop` guidance in
23
+ core.md (rendered to CLAUDE.md/AGENTS.md) — turns end only on completion
24
+ evidence, a real external blocker, or a deny; denies route to the next
25
+ safer alternative instead of a question.
26
+ - `block-dangerous.sh`: name-allowlisted `rm` targets now require realpath
27
+ containment inside the project root (symlink-out / `..` traversal closed;
28
+ fail closed without realpath).
29
+ - Residuals recorded in `docs/AI_REPORT/AI_FREEZE_AUDIT.md` §8: eval stays
30
+ `allow` ("dangerously autonomous, user-chosen" — eval-sandbox roadmap
31
+ note); opencode `bash."*": "ask"` flip deferred pending deny-set
32
+ expansion.
33
+
34
+ ## 2.6.11 - 2026-09-20
35
+
36
+ Self-improvement roadmap phases 2–4 — cycle C32 (TASK-227..232).
37
+
38
+ - Feedback capture: `src/diagnostics/feedbackEvents.js` + shared
39
+ `ledgerFiles.js` ledger helper record labeled wrong-route /
40
+ manual-correction events; new `ukit feedback` CLI.
41
+ - Telemetry emitters: `skillIds` in route-audit entries
42
+ (`route-task.mjs`); retriever lane stats appended to
43
+ `.ukit/storage/cache/retriever-lanes.jsonl` (`retriever.js`).
44
+ - Metrics surfaces: `skillAccuracy.js` + `laneStats.js` collectors;
45
+ `ukit metrics` gains `feedback`, `skills`, `retriever-lanes`, and
46
+ `learning` sections (lazy-import, degrade to `n/a`).
47
+ - Memory promotion lanes: `ukit memory learn` mines failure-patterns into
48
+ pending `ukit memory propose` candidates (`src/learning/patternProposals.js`);
49
+ `ukit memory promote` writes approved project_rule/procedure records to
50
+ MEMORY.md `## ukit-learned`; `ukit memory episode` writes a session-episode
51
+ record (`--session`/`UKIT_SESSION_ID`/latest-ledger resolution) plus
52
+ SessionEnd hook `session-episode.sh`.
53
+ - Tuning loop: `learning.*` config namespace (validated in runtimeConfig,
54
+ template parity) + `src/learning/tuning.js` advisory lane-weight/threshold
55
+ suggestions.
56
+ - Verification: per-task suites green on rerun; `.claude`↔`templates/.claude`
57
+ parity diff-clean. 6/6 tasks approved, 0 fix rounds.
58
+
59
+ ## 2.6.10 - 2026-09-20
60
+
61
+ Self-improvement roadmap phase 1 — cycle C31 (HK-401, SI-101..103).
62
+
63
+ - Hook contract fix: centralized `ukit_emit_permission_decision` in
64
+ hook-input.sh (keyed on `UKIT_HOOK_CHAIN_RUNNER`); bypassPermissions probe
65
+ replaced with locked fallback deny + exit 0 — dead `ask` path closed.
66
+ - Router v2-memory lane: `listMemoryItems` reads memory records.json;
67
+ `record` branch added to buildMemorySegments.
68
+ - Outcome join: `routeOutcomes.js` joins route-audit × exec-ledger on
69
+ requestKey; new `ukit metrics` command surfaces route accuracy.
70
+ - Failure mining: `failurePatterns.js` mines exec-ledger into
71
+ failure-patterns.json (advisory, never-throws).
72
+ - Self-improvement surface audit + roadmap spec:
73
+ `docs/research/2026-09-20_self-improvement-surface-audit.md`.
74
+
5
75
  ## 2.6.9 - 2026-09-19
6
76
 
7
77
  Code Intelligence scale release — cycle C30 (CI-301..305, TASK-218..222).
@@ -319,6 +319,17 @@ entries:
319
319
  validation: [manual]
320
320
  archive_policy: never
321
321
  notes: handoff run cursor index; declared in context_layers.intents.handoff (DOC-201)
322
+ - id: docs-ai-report
323
+ path: docs/AI_REPORT/
324
+ class: runtime
325
+ audience: [agent, maintainer]
326
+ owner: runtime
327
+ source_of_truth: docs/AI_REPORT/
328
+ merge_strategy: none
329
+ load_policy: task-routed
330
+ validation: [manual]
331
+ archive_policy: never
332
+ notes: dir entry — covers all files beneath (handoff lane reports, perf findings)
322
333
  - id: docs-archive
323
334
  path: docs/archive/
324
335
  class: archive
@@ -405,8 +416,8 @@ entries:
405
416
  load_policy: task-routed
406
417
  validation: [manual]
407
418
  archive_policy: never
408
- budget: { max_lines: 160, enforcement: warning }
409
- notes: 'canonical shared core; TASK-217 shrink 210→157 lines — budget 160 kept per SPEC §14 (now obeyed, warning-only)'
419
+ budget: { max_lines: 172, enforcement: warning }
420
+ notes: 'canonical shared core; TASK-217 shrink 210→157 lines, TASK-004 Stall & Wait Reporting block →165 lines — budget raised 160→172 keeping ~4% headroom (warning-only)'
410
421
  - id: tpl-omp-rules
411
422
  path: templates/.omp/RULES.md
412
423
  class: generated
@@ -531,6 +542,17 @@ entries:
531
542
  validation: [manual]
532
543
  archive_policy: never
533
544
  notes: dir sourceTemplate docs/AI_HANDOFF → dir path ending '/'
545
+ - id: docs-ukit-internals
546
+ path: docs/UKIT_INTERNALS.md
547
+ class: canonical
548
+ audience: [agent, maintainer]
549
+ owner: product
550
+ source_of_truth: docs/UKIT_INTERNALS.md
551
+ merge_strategy: none
552
+ load_policy: task-routed
553
+ validation: [manual]
554
+ archive_policy: never
555
+ notes: installed copy of templates/docs/UKIT_INTERNALS.md (merge_strategy overwrite_with_backup on install); internal-orchestration detail extracted from core.md (DOC-104)
534
556
  - id: tpl-docs-ukit-internals
535
557
  path: templates/docs/UKIT_INTERNALS.md
536
558
  class: canonical
@@ -87,6 +87,68 @@ rules:
87
87
  `WAITING ON YOU:` line and schedule a one-shot wakeup when available.
88
88
  marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
89
89
  anchor: 'WAITING ON YOU'
90
+ - id: STALL-01
91
+ title: Announce waits, verbatim errors, never blame UKit
92
+ kind: critical
93
+ statement: >-
94
+ Long waits must be announced as they happen, any API/tool error surfaced
95
+ verbatim in the same turn, and network/API named as the suspect on long
96
+ stalls — never blaming UKit.
97
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
98
+ anchor: 'never blame UKit'
99
+ - id: STALL-02
100
+ title: Stall rules extend every-stop-says-why
101
+ kind: supporting
102
+ statement: >-
103
+ The stall/wait reporting rules extend the existing every-stop-names-its-
104
+ reason contract (EXEC-04); they do not replace it.
105
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
106
+ - id: STALL-03
107
+ title: One-tool-call workaround is conditional only
108
+ kind: critical
109
+ statement: >-
110
+ Falling back to one tool call per assistant message is a conditional
111
+ workaround that fires only when malformed/concatenated tool-input errors
112
+ are observed or the harness version is known-affected — healthy hosts
113
+ keep using legitimate parallel calls.
114
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
115
+ anchor: 'one tool call per assistant message'
116
+ - id: UNATTENDED-01
117
+ title: Unattended mode runs the completion loop without a human
118
+ kind: critical
119
+ statement: >-
120
+ Under orchestration.permissionMode: unattended there is no human in the
121
+ loop — the loop is UNDERSTAND → PLAN → IMPLEMENT → VERIFY → FIX →
122
+ REVERIFY → COMPLETE, and a turn ends only on COMPLETE evidence, a real
123
+ external blocker, or a deny decision.
124
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
125
+ anchor: 'no human in the loop'
126
+ - id: UNATTENDED-02
127
+ title: Bounded attempts and recovery strategies in unattended mode
128
+ kind: supporting
129
+ statement: >-
130
+ maxAttemptsPerFailure: 5 per failing verification and
131
+ maxRecoveryStrategies: 3 distinct fix strategies before reassessing —
132
+ do not loop one strategy.
133
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
134
+ - id: UNATTENDED-03
135
+ title: BLOCKED only on true external blockers
136
+ kind: critical
137
+ statement: >-
138
+ Test failures, lint errors, review findings, and ambiguity are NOT
139
+ blockers — they feed FIX; BLOCKED is reserved for missing credentials,
140
+ dead services, and unreachable network/API.
141
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
142
+ anchor: 'NOT blockers'
143
+ - id: UNATTENDED-04
144
+ title: A deny becomes the next safer alternative, never a question
145
+ kind: critical
146
+ statement: >-
147
+ A deny (hook/gate/permission) never becomes a question — pick the next
148
+ safer alternative that satisfies the intent and record the substitution;
149
+ never emit "do you want me to…".
150
+ marker_in: [templates/CLAUDE.md, templates/AGENTS.md, CLAUDE.md, AGENTS.md]
151
+ anchor: 'next safer alternative'
90
152
  - id: LONG-01
91
153
  title: LAND one thing, DEFER the rest, DELEGATE broad work
92
154
  kind: supporting
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngockhoale/ukit",
3
- "version": "2.6.11",
3
+ "version": "2.7.0",
4
4
  "description": "Install/update an index-first AI workspace for Claude Code, OpenAI Codex, OpenCode, and omp (Oh My Pi).",
5
5
  "license": "MIT",
6
6
  "type": "module",