@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 +70 -0
- package/manifests/documentation.yaml +24 -2
- package/manifests/instructionRules.yaml +62 -0
- package/package.json +1 -1
- package/scripts/perf/audit-perf.mjs +920 -0
- package/src/cli/commands/doctor.js +23 -4
- package/src/core/diffPlan.js +8 -0
- package/src/core/ompConfigMerge.js +222 -0
- package/src/core/runInstallPipeline.js +11 -0
- package/src/core/runtimeConfig.js +11 -0
- package/src/core/unattendedDoctor.js +227 -0
- package/templates/.claude/hooks/block-dangerous.sh +76 -9
- package/templates/.claude/hooks/context-hardcap-gate.sh +26 -8
- package/templates/.claude/hooks/project-important.sh +70 -9
- package/templates/.claude/hooks/protect-files.sh +24 -7
- package/templates/.claude/hooks/sensitive-data-guard.sh +57 -5
- package/templates/.claude/settings.json +22 -117
- package/templates/.claude/ukit/runtime/hook-chain-runner.mjs +217 -10
- package/templates/.claude/ukit/runtime/hook-input.sh +119 -0
- package/templates/.omp/config.yml +32 -4
- package/templates/.omp/hooks/pre/ukit-bridge.js +12 -1
- package/templates/AGENTS.md +22 -10
- package/templates/CLAUDE.md +22 -10
- package/templates/adapter-presets/opencode/opencode.template.json +1 -1
- package/templates/instructions/core.md +22 -10
- package/templates/instructions/layout.yaml +12 -12
- package/templates/ukit/storage/config.json +2 -0
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:
|
|
409
|
-
notes: 'canonical shared core; TASK-217 shrink 210→157 lines — budget 160
|
|
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