@ngockhoale/ukit 2.6.2 → 2.6.3
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,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to UKit are documented here.
|
|
4
4
|
|
|
5
|
+
## 2.6.3 - 2026-09-18
|
|
6
|
+
|
|
7
|
+
- **Informational side-questions no longer self-block at the Stop gate.** A no-route
|
|
8
|
+
question ("còn task nào dang dở không", "is anything left?") carries the previous
|
|
9
|
+
prompt's `routeSummary` + completion contract forward by design — but the prompt
|
|
10
|
+
re-key also empties the effective ledger, so the gate unconditionally demanded
|
|
11
|
+
write+verification evidence that a text answer can never produce. `evaluateCompletion`
|
|
12
|
+
now releases silently when the turn is informational (routed `executionMode` or the
|
|
13
|
+
no-route branch's `routingContext.executionMode` marker). The carried contract stays
|
|
14
|
+
on disk, so real work after the question is still gated. One fix covers Claude Code
|
|
15
|
+
and omp (shared `execution-ledger.mjs`). 3 regression tests.
|
|
16
|
+
|
|
5
17
|
## 2.6.2 - 2026-09-18
|
|
6
18
|
|
|
7
19
|
Stability release — 17 confirmed hang / silent-idle / silent-hook defects fixed with
|
package/package.json
CHANGED
|
@@ -1357,6 +1357,22 @@ export function evaluateCompletion({ state = {}, ledger = {} } = {}) {
|
|
|
1357
1357
|
// (e.g. the omp bridge for a session it does not own) must not be force-notified.
|
|
1358
1358
|
return { continue: false, notify: false, missingEvidence: [] };
|
|
1359
1359
|
}
|
|
1360
|
+
// An informational turn carries no completion contract of its own. Two paths land here:
|
|
1361
|
+
// a fully-routed informational prompt (routeSummary.executionMode === 'informational',
|
|
1362
|
+
// contract null) and a no-route side-question that CARRIES the previous prompt's
|
|
1363
|
+
// routeSummary + contract forward — skill-router marks exactly this case via
|
|
1364
|
+
// routingContext.executionMode === 'informational' (skill-router.sh no-route branch).
|
|
1365
|
+
// Enforcing the carried write+verify debt against a question turn is a guaranteed
|
|
1366
|
+
// self-block: the prompt re-key empties the effective ledger (sameRequest below), so a
|
|
1367
|
+
// mid-session status question like "còn task nào dang dở không" can never produce the
|
|
1368
|
+
// evidence the old contract demands. Release silently — the carried routeSummary stays
|
|
1369
|
+
// on disk, so the previous contract still survives until a real route replaces it.
|
|
1370
|
+
if (
|
|
1371
|
+
mode === 'informational'
|
|
1372
|
+
|| state?.routingContext?.executionMode === 'informational'
|
|
1373
|
+
) {
|
|
1374
|
+
return { continue: false, notify: false, complete: true, missingEvidence: [] };
|
|
1375
|
+
}
|
|
1360
1376
|
if (evidence.length === 0) {
|
|
1361
1377
|
// A route with no completion evidence has no actionable block reason — blocking would
|
|
1362
1378
|
// loop unboundedly. Release loud instead of ending indistinguishable from a stall.
|