instar 1.3.233 → 1.3.234
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/dist/monitoring/CommitmentSentinel.d.ts +6 -0
- package/dist/monitoring/CommitmentSentinel.d.ts.map +1 -1
- package/dist/monitoring/CommitmentSentinel.js +46 -1
- package/dist/monitoring/CommitmentSentinel.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.234.md +33 -0
- package/upgrades/commitment-bare-continuation-guard.eli16.md +26 -0
- package/upgrades/side-effects/commitment-bare-continuation-guard.md +42 -0
|
@@ -25,6 +25,12 @@ export interface CommitmentSentinelConfig {
|
|
|
25
25
|
/** Maximum messages to scan per topic per cycle. Default: 20 */
|
|
26
26
|
maxMessagesPerScan?: number;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* True when a user message is a bare approval / acknowledgement / continuation
|
|
30
|
+
* that requests nothing durable — so it must NOT seed a commitment. Pure +
|
|
31
|
+
* exported for unit tests of both sides of the boundary.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isBareContinuation(text: string): boolean;
|
|
28
34
|
export declare class CommitmentSentinel {
|
|
29
35
|
private config;
|
|
30
36
|
private scanState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommitmentSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/CommitmentSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAKhF,MAAM,WAAW,wBAAwB;IACvC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,YAAY,EAAE,oBAAoB,CAAC;IACnC,yDAAyD;IACzD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"CommitmentSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/CommitmentSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAKhF,MAAM,WAAW,wBAAwB;IACvC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,YAAY,EAAE,oBAAoB,CAAC;IACnC,yDAAyD;IACzD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA4CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBxD;AAID,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,wBAAwB;IAS5C,KAAK,IAAI,IAAI;IAcb,IAAI,IAAI,IAAI;IASZ;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA6E7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;YACW,iBAAiB;IAiE/B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -14,6 +14,46 @@
|
|
|
14
14
|
import fs from 'node:fs';
|
|
15
15
|
import path from 'node:path';
|
|
16
16
|
import { DegradationReporter } from './DegradationReporter.js';
|
|
17
|
+
// ── Over-detection guard ──────────────────────────────────────────
|
|
18
|
+
// The #1 source of false-positive commitments is a bare approval/continuation
|
|
19
|
+
// user message ("please proceed", "yes please") paired with an agent reply —
|
|
20
|
+
// the LLM then registers a "commitment" for a message that asked for nothing
|
|
21
|
+
// durable. A deterministic pre-filter drops those exchanges before the LLM ever
|
|
22
|
+
// sees them, killing the worst of the noise without weakening genuine detection.
|
|
23
|
+
const BARE_CONTINUATION_PHRASES = new Set([
|
|
24
|
+
'yes', 'yes please', 'yep', 'yeah', 'ya', 'sure', 'ok', 'okay', 'k', 'kk',
|
|
25
|
+
'proceed', 'please proceed', 'go ahead', 'go for it', 'do it', 'please do', 'please',
|
|
26
|
+
'continue', 'keep going', 'carry on', 'next', 'go', 'yes go', 'yes go ahead',
|
|
27
|
+
'sounds good', 'sounds great', 'looks good', 'lgtm', 'great', 'perfect', 'awesome',
|
|
28
|
+
'nice', 'cool', 'excellent', 'wonderful', 'amazing', 'thanks', 'thank you', 'ty', 'thx',
|
|
29
|
+
'got it', 'makes sense', 'agreed', 'approved', 'yes approved', 'ship it', 'merge it',
|
|
30
|
+
'no', 'nope', 'not now', 'stop', 'wait', 'hold on', 'done', 'cool thanks',
|
|
31
|
+
]);
|
|
32
|
+
/**
|
|
33
|
+
* True when a user message is a bare approval / acknowledgement / continuation
|
|
34
|
+
* that requests nothing durable — so it must NOT seed a commitment. Pure +
|
|
35
|
+
* exported for unit tests of both sides of the boundary.
|
|
36
|
+
*/
|
|
37
|
+
export function isBareContinuation(text) {
|
|
38
|
+
if (!text)
|
|
39
|
+
return true;
|
|
40
|
+
const norm = text
|
|
41
|
+
.toLowerCase()
|
|
42
|
+
.replace(/[^\x00-\x7F]/g, ' ') // strip emoji / non-ASCII
|
|
43
|
+
.replace(/[^a-z0-9\s]/g, ' ') // strip punctuation
|
|
44
|
+
.replace(/\s+/g, ' ')
|
|
45
|
+
.trim();
|
|
46
|
+
if (!norm)
|
|
47
|
+
return true; // emoji-only / punctuation-only
|
|
48
|
+
// EXACT-match only — deliberately precise. A heuristic that filtered by an
|
|
49
|
+
// opener word ("do…", "go…") wrongly dropped real requests ("do something",
|
|
50
|
+
// "go deploy"); the safe direction for a detection pre-filter is to drop ONLY
|
|
51
|
+
// known-bare phrases and let anything ambiguous reach the LLM (favor false-
|
|
52
|
+
// negatives on the filter). Multi-word bare variants are enumerated above.
|
|
53
|
+
if (BARE_CONTINUATION_PHRASES.has(norm))
|
|
54
|
+
return true;
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
17
57
|
// ── Implementation ────────────────────────────────────────────────
|
|
18
58
|
export class CommitmentSentinel {
|
|
19
59
|
config;
|
|
@@ -162,6 +202,11 @@ export class CommitmentSentinel {
|
|
|
162
202
|
const pairs = [];
|
|
163
203
|
for (let i = 0; i < messages.length - 1; i++) {
|
|
164
204
|
if (messages[i].fromUser && !messages[i + 1].fromUser) {
|
|
205
|
+
// Drop bare approval/continuation exchanges before the LLM sees them —
|
|
206
|
+
// the dominant false-positive source (#49). A message that asks for
|
|
207
|
+
// nothing durable cannot seed a commitment.
|
|
208
|
+
if (isBareContinuation(messages[i].text))
|
|
209
|
+
continue;
|
|
165
210
|
pairs.push({
|
|
166
211
|
user: messages[i].text,
|
|
167
212
|
agent: messages[i + 1].text,
|
|
@@ -200,7 +245,7 @@ Example response:
|
|
|
200
245
|
For behavioral commitments, include a "behavioralRule" field with a clear imperative rule.
|
|
201
246
|
For one-time-action, omit configPath.
|
|
202
247
|
|
|
203
|
-
IMPORTANT: Only return genuine commitments where the agent explicitly agreed. Do
|
|
248
|
+
IMPORTANT: Only return genuine commitments where the user asked for something durable AND the agent explicitly agreed. Do NOT flag: questions, status updates, informational responses, or bare approvals / continuations ("yes", "please proceed", "go ahead", "sounds good") — those request nothing durable and are never commitments. Return ONLY the JSON array, nothing else.`;
|
|
204
249
|
try {
|
|
205
250
|
const response = await this.config.intelligence.evaluate(prompt, {
|
|
206
251
|
model: 'fast',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommitmentSentinel.js","sourceRoot":"","sources":["../../src/monitoring/CommitmentSentinel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CommitmentSentinel.js","sourceRoot":"","sources":["../../src/monitoring/CommitmentSentinel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-04T01:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-04T01:32:42.157Z",
|
|
5
|
+
"instarVersion": "1.3.234",
|
|
6
6
|
"entryCount": 198,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Fixed CommitmentSentinel over-detection: it was registering a false-positive
|
|
9
|
+
commitment for bare approval/continuation messages ("please proceed", "yes"),
|
|
10
|
+
which flooded the commitment registry with noise (dozens of fake "violated"
|
|
11
|
+
commitments). A deterministic pre-filter now drops bare-approval exchanges before
|
|
12
|
+
the LLM detector runs, and the detection prompt is reinforced. Genuine durable
|
|
13
|
+
requests (anything with an action verb) are unaffected.
|
|
14
|
+
|
|
15
|
+
## What to Tell Your User
|
|
16
|
+
|
|
17
|
+
Your commitment list is trustworthy again. The follow-through tracker used to treat
|
|
18
|
+
almost everything you said — even a plain "yes" or "please go ahead" — as a promise
|
|
19
|
+
it had to track, which buried the real promises under noise. Now it ignores simple
|
|
20
|
+
approvals and only tracks genuine durable requests, so when you ask what is still
|
|
21
|
+
open you get a clean, honest answer.
|
|
22
|
+
|
|
23
|
+
## Summary of New Capabilities
|
|
24
|
+
|
|
25
|
+
- More accurate commitment detection (fewer false positives); no new endpoints or
|
|
26
|
+
config. Signal-only and reversible.
|
|
27
|
+
|
|
28
|
+
## Evidence
|
|
29
|
+
|
|
30
|
+
50 unit tests covering both sides of the boundary: 36 bare-approval phrasings are
|
|
31
|
+
dropped, 11 genuine durable requests (including ones that open with an approval
|
|
32
|
+
word, like "go ahead and deploy") are kept, plus emoji/empty edge cases. Full
|
|
33
|
+
typecheck clean.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# CommitmentSentinel bare-continuation guard — plain English
|
|
2
|
+
|
|
3
|
+
## The problem
|
|
4
|
+
The agent has a watcher that tries to notice when it has made a promise it should
|
|
5
|
+
follow through on ("I'll report back when X"). But it was too eager: it treated
|
|
6
|
+
almost every message you sent — even a plain "yes" or "please proceed" — as if it
|
|
7
|
+
created a promise to track. The result was a registry full of fake "commitments"
|
|
8
|
+
(36 of them showed as broken), which is exactly why it got hard to tell what was
|
|
9
|
+
actually open.
|
|
10
|
+
|
|
11
|
+
## The fix
|
|
12
|
+
Before the watcher even considers an exchange, a simple deterministic check drops
|
|
13
|
+
the ones where your message was just an approval or a "keep going" — those ask for
|
|
14
|
+
nothing durable, so they can't be a promise. Real requests are untouched: anything
|
|
15
|
+
with an action word ("deploy", "set", "restart", "turn off") still goes through, so
|
|
16
|
+
"go ahead and deploy the latest" is correctly kept.
|
|
17
|
+
|
|
18
|
+
## How safe is it?
|
|
19
|
+
Very. The watcher only *detects* promises — it never deletes or changes one. The
|
|
20
|
+
worst case is missing a promise from a one-word message with no verb (almost never),
|
|
21
|
+
which is the safe direction. Explicitly opening a commitment via the API still works
|
|
22
|
+
exactly as before. 50 tests cover both sides (drops the bare ones, keeps the real
|
|
23
|
+
requests).
|
|
24
|
+
|
|
25
|
+
## What you need to decide
|
|
26
|
+
Nothing — it just makes the commitment registry trustworthy again.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Side-Effects Review — CommitmentSentinel bare-continuation guard
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `commitment-bare-continuation-guard`
|
|
4
|
+
**Date:** `2026-06-04`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required (Tier-1: signal-only, favors false-negatives)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The CommitmentSentinel registered a false-positive "commitment" for nearly every
|
|
11
|
+
user message — including bare approvals/continuations ("please proceed", "yes") —
|
|
12
|
+
because its LLM detector ran on every user→agent exchange. A deterministic
|
|
13
|
+
pre-filter (`isBareContinuation`) now drops bare-approval exchanges before the LLM
|
|
14
|
+
sees them. Reinforced with one line in the detection prompt.
|
|
15
|
+
|
|
16
|
+
## Decision-point inventory
|
|
17
|
+
|
|
18
|
+
One pure decision: `isBareContinuation(text)` — drop the exchange (true) or keep it
|
|
19
|
+
(false). Unit-tested on both sides (50 cases).
|
|
20
|
+
|
|
21
|
+
## 1. Over-block (what legitimate commitments could it wrongly DROP?)
|
|
22
|
+
|
|
23
|
+
A genuine durable request phrased as a bare phrase under 30 chars with no
|
|
24
|
+
imperative verb. Mitigated by the verb guard: any message containing a durable
|
|
25
|
+
verb (change/set/turn/deploy/restart/report/…) is KEPT, so "go ahead and deploy",
|
|
26
|
+
"sure, set the model to opus", "ok now restart the gemini server" all pass through
|
|
27
|
+
(tested). The residual risk is a one-word durable instruction with no verb, which
|
|
28
|
+
is vanishingly rare and favors the SAFE direction (a missed detection, not a false
|
|
29
|
+
commitment) — the infrastructure `POST /commitments` path still registers explicit
|
|
30
|
+
commitments regardless.
|
|
31
|
+
|
|
32
|
+
## 2. Under-block (what false positives does it still MISS?)
|
|
33
|
+
|
|
34
|
+
Substantive-but-non-committal exchanges (a real question the agent answered) still
|
|
35
|
+
reach the LLM; the prompt reinforcement is the second line of defense there. This
|
|
36
|
+
PR targets the dominant, deterministic false-positive class (bare approvals).
|
|
37
|
+
|
|
38
|
+
## 3. Reversibility / blast radius
|
|
39
|
+
|
|
40
|
+
Signal-only. The sentinel only DETECTS unregistered commitments; dropping an
|
|
41
|
+
exchange cannot delete or alter an existing commitment. No persistent state, no
|
|
42
|
+
migration, no route change. Fully reversible by reverting the filter.
|