instar 1.3.935 → 1.3.936
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-claim.d.ts","sourceRoot":"","sources":["../../src/core/time-claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iCAAiC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"time-claim.d.ts","sourceRoot":"","sources":["../../src/core/time-claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iCAAiC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AA+GD,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAqChE;AAaD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,GACpC,eAAe,CAuCjB"}
|
package/dist/core/time-claim.js
CHANGED
|
@@ -38,12 +38,9 @@ import { humanizeDuration } from './SessionClock.js';
|
|
|
38
38
|
// real fabricated elapsed-time claims through on a live autonomous run: the
|
|
39
39
|
// claims extracted to NOTHING, so the comparison never ran at all.
|
|
40
40
|
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
// author with a note, it never blocks), so a false positive costs one re-read
|
|
45
|
-
// while a false negative costs the operator a fabricated time report. Tonight
|
|
46
|
-
// supplied the evidence for which way that asymmetry points.
|
|
41
|
+
// The lexical match is only a candidate. `isSessionClockSubject` below binds
|
|
42
|
+
// that candidate to its subject so "30 min in (offline-test window)" and
|
|
43
|
+
// "1 min elapsed detection latency" do not become claims about the session.
|
|
47
44
|
const HOURS = String.raw `(\d{1,3}(?:\.\d+)?)\s*h(?:ours?|rs?)?`;
|
|
48
45
|
const MINUTES = String.raw `(\d{1,2})\s*m(?:in(?:ute)?s?)?`;
|
|
49
46
|
const HM = `${HOURS}(?:\\s*${MINUTES})?|${MINUTES}`;
|
|
@@ -87,6 +84,44 @@ function isQuoted(text, index) {
|
|
|
87
84
|
}
|
|
88
85
|
return false;
|
|
89
86
|
}
|
|
87
|
+
// TIME_CLAIM is a deliberately cheap deterministic verifier, so it may use
|
|
88
|
+
// structural cues to DROP non-session measurements toward pass-through. These
|
|
89
|
+
// cues never create a positive claim: the existing anchored duration/percent
|
|
90
|
+
// grammar remains the positive floor. This is the "cheap pre-filter may only
|
|
91
|
+
// DROP obvious noise" lane of Intelligence Infers, Keywords Only Guard.
|
|
92
|
+
const SESSION_SUBJECT_RE = /\b(?:autonomous\s+)?(?:run|session|session\s+clock|time[- ]?box|runway)\b/i;
|
|
93
|
+
const OTHER_DURATION_SUBJECT_RE = /\b(?:offline[- ]?test|test(?:ing)?(?:\s+window)?|window|latency|eta|estimate|timeout|queue|build|benchmark|probe|check|outage|delay|recovery)\b/i;
|
|
94
|
+
/**
|
|
95
|
+
* Bind an anchored measurement to the thing being measured.
|
|
96
|
+
*
|
|
97
|
+
* Active clocks make an otherwise-unqualified "~7h elapsed" a legitimate
|
|
98
|
+
* session-clock candidate for backwards compatibility. We drop only when the
|
|
99
|
+
* same local clause names a competing duration subject and does not name the
|
|
100
|
+
* session more closely. This makes the negative boundary semantic without
|
|
101
|
+
* weakening bare/explicit session-clock claims.
|
|
102
|
+
*/
|
|
103
|
+
function isSessionClockSubject(text, index, matchLength) {
|
|
104
|
+
const start = Math.max(0, index - 96);
|
|
105
|
+
const end = Math.min(text.length, index + matchLength + 96);
|
|
106
|
+
const local = text.slice(start, end);
|
|
107
|
+
const matchCenter = index - start + matchLength / 2;
|
|
108
|
+
const distances = (re) => {
|
|
109
|
+
const flags = re.flags.includes('g') ? re.flags : `${re.flags}g`;
|
|
110
|
+
const scan = new RegExp(re.source, flags);
|
|
111
|
+
const out = [];
|
|
112
|
+
let m;
|
|
113
|
+
while ((m = scan.exec(local)) !== null)
|
|
114
|
+
out.push(Math.abs(m.index + m[0].length / 2 - matchCenter));
|
|
115
|
+
return out;
|
|
116
|
+
};
|
|
117
|
+
const other = distances(OTHER_DURATION_SUBJECT_RE);
|
|
118
|
+
if (other.length === 0)
|
|
119
|
+
return true;
|
|
120
|
+
const session = distances(SESSION_SUBJECT_RE);
|
|
121
|
+
if (session.length === 0)
|
|
122
|
+
return false;
|
|
123
|
+
return Math.min(...session) < Math.min(...other);
|
|
124
|
+
}
|
|
90
125
|
/** Extract every anchored time claim from `text` (bounded input expected). */
|
|
91
126
|
export function extractTimeClaims(text) {
|
|
92
127
|
const claims = [];
|
|
@@ -100,7 +135,9 @@ export function extractTimeClaims(text) {
|
|
|
100
135
|
let m;
|
|
101
136
|
while ((m = re.exec(text)) !== null && claims.length < 16) {
|
|
102
137
|
const seconds = groupsToSeconds(m);
|
|
103
|
-
if (seconds !== null
|
|
138
|
+
if (seconds !== null
|
|
139
|
+
&& !isQuoted(text, m.index)
|
|
140
|
+
&& isSessionClockSubject(text, m.index, m[0].length)) {
|
|
104
141
|
claims.push({ kind, value: seconds, text: m[0].trim().slice(0, 40) });
|
|
105
142
|
}
|
|
106
143
|
}
|
|
@@ -109,7 +146,10 @@ export function extractTimeClaims(text) {
|
|
|
109
146
|
let p;
|
|
110
147
|
while ((p = PERCENT_RE.exec(text)) !== null && claims.length < 16) {
|
|
111
148
|
const pct = Number(p[1]);
|
|
112
|
-
if (Number.isFinite(pct)
|
|
149
|
+
if (Number.isFinite(pct)
|
|
150
|
+
&& pct <= 100
|
|
151
|
+
&& !isQuoted(text, p.index)
|
|
152
|
+
&& isSessionClockSubject(text, p.index, p[0].length)) {
|
|
113
153
|
claims.push({ kind: 'percent', value: pct, text: p[0].trim().slice(0, 40) });
|
|
114
154
|
}
|
|
115
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-claim.js","sourceRoot":"","sources":["../../src/core/time-claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAyBrD,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,yEAAyE;AACzE,gBAAgB;AAChB,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,mEAAmE;AACnE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"time-claim.js","sourceRoot":"","sources":["../../src/core/time-claim.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-07-24T13:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-24T13:38:21.402Z",
|
|
5
|
+
"instarVersion": "1.3.936",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
TIME_CLAIM now verifies only durations that are actually about the active session clock. Durations describing test windows, latency, task ETAs, queues, timeouts, outages, and recovery no longer cause false advisories.
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
Progress messages can describe ordinary durations without being mistaken for claims about how long the session has been running. Real elapsed, remaining, and percentage session-clock claims are still checked.
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
- Binds an anchored duration to its local subject before clock comparison.
|
|
17
|
+
- Preserves explicit and unqualified session-clock claim verification.
|
|
18
|
+
- Adds paired positive and negative boundaries for quantitative claim classifiers.
|
|
19
|
+
|
|
20
|
+
## Evidence
|
|
21
|
+
|
|
22
|
+
The focused TIME_CLAIM unit, route, and production-init E2E suite passes 71 tests. TypeScript passes after refreshing the current lockfile dependencies.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Side-Effects Review — TIME_CLAIM subject binding
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `time-claim-subject-binding`
|
|
4
|
+
**Date:** 2026-07-24
|
|
5
|
+
**Author:** Instar-codey
|
|
6
|
+
**Second-pass reviewer:** not required
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The pure TIME_CLAIM extractor now drops anchored durations whose local clause names a competing non-session subject. The standards registry gains the class-wide subject-binding rule, and the regression suite pins both decision sides.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `extractTimeClaims` — modified signal classification — decides whether a duration is eligible for comparison with caller-supplied session clocks.
|
|
15
|
+
- Advisory disposition is unchanged. TIME_CLAIM remains the existing inform-and-ack surface.
|
|
16
|
+
|
|
17
|
+
## 1. Over-block
|
|
18
|
+
|
|
19
|
+
No new messages are held. The change only removes false-positive candidates. A clause containing both a session noun and a closer competing duration noun is treated as non-session; tests pin the intended examples.
|
|
20
|
+
|
|
21
|
+
## 2. Under-block
|
|
22
|
+
|
|
23
|
+
An unusual competing subject not represented structurally may still be interpreted as the unqualified session default. This is bounded by the existing generous contradiction tolerance and audited acknowledgment path. The new standard requires future observed subject classes to extend the paired boundary table.
|
|
24
|
+
|
|
25
|
+
## 3. Level-of-abstraction fit
|
|
26
|
+
|
|
27
|
+
Subject binding belongs beside extraction, before numerical comparison. The caller already provides typed session clocks; the extractor determines whether the candidate refers to that typed subject. No second advisory or model pipeline is introduced.
|
|
28
|
+
|
|
29
|
+
## 4. Signal vs authority compliance
|
|
30
|
+
|
|
31
|
+
Required reference: [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
32
|
+
|
|
33
|
+
This deterministic layer only drops obvious competing subjects toward pass-through. It does not create a new positive trigger or new authority. The original advisory and audited override remain unchanged.
|
|
34
|
+
|
|
35
|
+
## 4b. Judgment-point check
|
|
36
|
+
|
|
37
|
+
The implementation does not add a competing-signals authority. It narrows a pre-existing structural detector using local subject evidence and fails toward delivery when a competing subject is present.
|
|
38
|
+
|
|
39
|
+
## 5. Interactions
|
|
40
|
+
|
|
41
|
+
The numeric tolerance, clock selection, multi-clock leniency, route wiring, relay acknowledgment, and audit behavior are unchanged. The change shares no mutable state and introduces no races, retries, or feedback loops.
|
|
42
|
+
|
|
43
|
+
## 6. External surfaces
|
|
44
|
+
|
|
45
|
+
Correct messages describing non-session durations stop receiving TIME_CLAIM advisories. Actual session-clock contradictions retain the same guidance and override. There is no persistent-state or external API change and no operator action is added.
|
|
46
|
+
|
|
47
|
+
## 6b. Operator-surface quality
|
|
48
|
+
|
|
49
|
+
No dashboard or form is changed. The existing advisory becomes more selective and retains plain-language correction guidance.
|
|
50
|
+
|
|
51
|
+
## 7. Multi-machine posture
|
|
52
|
+
|
|
53
|
+
**Machine-local by design:** each outbound send is checked against the active clock supplied by the sending machine/topic route. No state is stored, no URL is generated, and no user-facing notice is emitted independently of the send.
|
|
54
|
+
|
|
55
|
+
## 8. Rollback cost
|
|
56
|
+
|
|
57
|
+
Revert the extractor and standards/test additions, then ship a patch. There is no data migration or state repair.
|
|
58
|
+
|
|
59
|
+
## Conclusion
|
|
60
|
+
|
|
61
|
+
The review closes the observed class without weakening real session-clock verification. It replaces the knowingly accepted “CI queue” false positive with a standards-backed, both-sides subject boundary. Clear to ship.
|
|
62
|
+
|
|
63
|
+
## Second-pass review
|
|
64
|
+
|
|
65
|
+
Not required: this does not change messaging authority or delivery mechanics; it only narrows a pure signal toward pass-through.
|
|
66
|
+
|
|
67
|
+
## Evidence pointers
|
|
68
|
+
|
|
69
|
+
`tests/unit/time-claim.test.ts`, `tests/unit/outbound-advisory*.test.ts`, and `tests/e2e/outbound-advisory-alive.test.ts`: 71 passed.
|
|
70
|
+
|
|
71
|
+
## Class-Closure Declaration
|
|
72
|
+
|
|
73
|
+
No agent-authored prompt, hook, config, skill, or standards-text defect is being repaired; the defect is product classifier logic. Not applicable.
|