instar 1.3.990 → 1.3.992
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/commands/intent.d.ts.map +1 -1
- package/dist/commands/intent.js +11 -0
- package/dist/commands/intent.js.map +1 -1
- package/dist/core/IntentDriftDetector.d.ts +18 -2
- package/dist/core/IntentDriftDetector.d.ts.map +1 -1
- package/dist/core/IntentDriftDetector.js +4 -1
- package/dist/core/IntentDriftDetector.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +6 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/RecurrenceReader.d.ts +134 -0
- package/dist/core/RecurrenceReader.d.ts.map +1 -0
- package/dist/core/RecurrenceReader.js +111 -0
- package/dist/core/RecurrenceReader.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/scaffold/templates.ts +2 -0
- package/upgrades/1.3.991.md +57 -0
- package/upgrades/1.3.992.md +55 -0
- package/upgrades/side-effects/alignment-score-not-assessed.md +178 -0
- package/upgrades/side-effects/recurrence-reader.md +149 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RecurrenceReader — one reader across the stores that already notice things.
|
|
3
|
+
*
|
|
4
|
+
* THE DEFECT THIS ADDRESSES (project convergence-towards-coherence, Tier 2).
|
|
5
|
+
* Instar notices constantly and in three separate places: the attention queue,
|
|
6
|
+
* the evolution action queue, and the sentinel event log. Nothing reads across
|
|
7
|
+
* them, so the same underlying problem is noticed dozens of times and closed
|
|
8
|
+
* zero times. The measured filing-to-completion ratio is roughly 30:1.
|
|
9
|
+
*
|
|
10
|
+
* Measured on this machine, 2026-07-27 — the number that makes the case:
|
|
11
|
+
*
|
|
12
|
+
* 371 OPEN attention items → 49 distinct problems
|
|
13
|
+
* the single largest cluster ("credential rebalancer") is 177 items — 48%
|
|
14
|
+
*
|
|
15
|
+
* Reading that queue item-by-item, nobody would ever see it. The items are all
|
|
16
|
+
* individually true and individually minor; the SHAPE is the finding, and the
|
|
17
|
+
* shape is invisible without a reader that groups.
|
|
18
|
+
*
|
|
19
|
+
* WHAT THIS IS NOT. It is not a new notification channel, and it must never
|
|
20
|
+
* become one (operator directive 2026-07-26 20:08Z: synthesis must lead to
|
|
21
|
+
* ACTION through the paths that already exist — a phase advance, a blocker
|
|
22
|
+
* raised, work queued — with the loop closed and without depending on the user).
|
|
23
|
+
* This module is READ-ONLY and returns a report; driving action from it is a
|
|
24
|
+
* separate, gated concern.
|
|
25
|
+
*
|
|
26
|
+
* THE HONEST-DENOMINATOR RULE APPLIES TO THIS READER TOO. Every store it could
|
|
27
|
+
* not read is named in `coverage`, and a report with any unreadable store is
|
|
28
|
+
* NEVER `complete`. "I found no recurrence" and "I could not look" are different
|
|
29
|
+
* answers, and conflating them is the exact failure this project exists to
|
|
30
|
+
* remove — a synthesiser that silently synthesised over two of three stores
|
|
31
|
+
* would be the most expensive instance of it yet.
|
|
32
|
+
*/
|
|
33
|
+
/** A single observation from any of the noticing stores. */
|
|
34
|
+
export interface Observation {
|
|
35
|
+
/** Which store this came from. */
|
|
36
|
+
store: 'attention' | 'actions' | 'sentinel';
|
|
37
|
+
/** Stable id within that store, when it has one. */
|
|
38
|
+
id?: string;
|
|
39
|
+
/** Human title / summary — the recurrence key is derived from this. */
|
|
40
|
+
title: string;
|
|
41
|
+
/** Emitting subsystem, when known. `undefined` is itself a finding (see below). */
|
|
42
|
+
source?: string;
|
|
43
|
+
/** ISO timestamp, when known. */
|
|
44
|
+
at?: string;
|
|
45
|
+
/** Open / unresolved. Only open observations form recurrence clusters. */
|
|
46
|
+
open: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** One recurring problem, as distinct from the many times it was noticed. */
|
|
49
|
+
export interface RecurrenceCluster {
|
|
50
|
+
/** Normalized key the members share. */
|
|
51
|
+
key: string;
|
|
52
|
+
/** A readable exemplar (the first member's title, untruncated). */
|
|
53
|
+
exemplar: string;
|
|
54
|
+
/** How many times this was noticed. THE point of the whole module. */
|
|
55
|
+
count: number;
|
|
56
|
+
/** Which stores noticed it — a problem seen in more than one is stronger evidence. */
|
|
57
|
+
stores: Observation['store'][];
|
|
58
|
+
/** Sources that emitted it, when known. */
|
|
59
|
+
sources: string[];
|
|
60
|
+
/** Earliest / latest observation timestamps available. */
|
|
61
|
+
firstSeen?: string;
|
|
62
|
+
lastSeen?: string;
|
|
63
|
+
/**
|
|
64
|
+
* True when at least one member came from the ACTION queue — i.e. somebody has
|
|
65
|
+
* at some point committed to doing something about this. A high-count cluster
|
|
66
|
+
* with `tracked: false` is the sharpest signal available: noticed many times,
|
|
67
|
+
* never once turned into work.
|
|
68
|
+
*/
|
|
69
|
+
tracked: boolean;
|
|
70
|
+
}
|
|
71
|
+
/** What the reader could and could not see. Never omitted, never inferred. */
|
|
72
|
+
export interface Coverage {
|
|
73
|
+
/** Stores read successfully. */
|
|
74
|
+
read: Observation['store'][];
|
|
75
|
+
/** Stores that could NOT be read, with the reason. */
|
|
76
|
+
unreadable: {
|
|
77
|
+
store: Observation['store'];
|
|
78
|
+
reason: string;
|
|
79
|
+
}[];
|
|
80
|
+
/**
|
|
81
|
+
* `complete` only when every store was read. Any unreadable store makes this
|
|
82
|
+
* `partial`, and a partial report may never be presented as a clean bill.
|
|
83
|
+
*/
|
|
84
|
+
completeness: 'complete' | 'partial';
|
|
85
|
+
}
|
|
86
|
+
export interface RecurrenceReport {
|
|
87
|
+
generatedAt: string;
|
|
88
|
+
coverage: Coverage;
|
|
89
|
+
/** Distinct problems, densest first. */
|
|
90
|
+
clusters: RecurrenceCluster[];
|
|
91
|
+
/** Open observations considered. */
|
|
92
|
+
observationsConsidered: number;
|
|
93
|
+
/**
|
|
94
|
+
* observations ÷ clusters — the noticing-to-problem ratio. `null` when there
|
|
95
|
+
* are no clusters: no denominator, no ratio (never a flattering 1, never a
|
|
96
|
+
* damning 0).
|
|
97
|
+
*/
|
|
98
|
+
noticingRatio: number | null;
|
|
99
|
+
/**
|
|
100
|
+
* Present ONLY on a complete report. On a partial read this is absent and the
|
|
101
|
+
* caller must say "I could not look", never "nothing recurring was found".
|
|
102
|
+
*/
|
|
103
|
+
verdict?: 'no-recurrence' | 'recurrence-found';
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Derive the recurrence key from a title.
|
|
107
|
+
*
|
|
108
|
+
* Digits collapse to `N` and long hex runs to `H`, so "3 topics stranded on
|
|
109
|
+
* m_cc2ec…" and "7 topics stranded on m_91af…" are recognised as ONE problem
|
|
110
|
+
* rather than two. This is deliberately blunt: the goal is to surface shape, and
|
|
111
|
+
* an over-eager grouping that a human immediately recognises as one problem is
|
|
112
|
+
* more useful than a precise grouping that preserves the illusion of 371
|
|
113
|
+
* separate things.
|
|
114
|
+
*/
|
|
115
|
+
export declare function recurrenceKey(title: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Group open observations into recurrence clusters.
|
|
118
|
+
*
|
|
119
|
+
* Pure over its input — every store read (and every read FAILURE) is the
|
|
120
|
+
* caller's job to supply, so this function cannot silently swallow one.
|
|
121
|
+
*/
|
|
122
|
+
export declare function buildRecurrenceReport(observations: Observation[], coverage: Coverage): RecurrenceReport;
|
|
123
|
+
/**
|
|
124
|
+
* The clusters worth a human's attention, by a deterministic rule.
|
|
125
|
+
*
|
|
126
|
+
* `minCount` defaults to 2 because a thing noticed once is not yet recurrence.
|
|
127
|
+
* `untrackedOnly` narrows to the sharpest class: repeatedly noticed, never
|
|
128
|
+
* turned into work.
|
|
129
|
+
*/
|
|
130
|
+
export declare function significantClusters(report: RecurrenceReport, opts?: {
|
|
131
|
+
minCount?: number;
|
|
132
|
+
untrackedOnly?: boolean;
|
|
133
|
+
}): RecurrenceCluster[];
|
|
134
|
+
//# sourceMappingURL=RecurrenceReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecurrenceReader.d.ts","sourceRoot":"","sources":["../../src/core/RecurrenceReader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5C,oDAAoD;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,sDAAsD;IACtD,UAAU,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D;;;OAGG;IACH,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,oCAAoC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,eAAe,GAAG,kBAAkB,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,WAAW,EAAE,EAC3B,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CA0ClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxD,iBAAiB,EAAE,CAKrB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RecurrenceReader — one reader across the stores that already notice things.
|
|
3
|
+
*
|
|
4
|
+
* THE DEFECT THIS ADDRESSES (project convergence-towards-coherence, Tier 2).
|
|
5
|
+
* Instar notices constantly and in three separate places: the attention queue,
|
|
6
|
+
* the evolution action queue, and the sentinel event log. Nothing reads across
|
|
7
|
+
* them, so the same underlying problem is noticed dozens of times and closed
|
|
8
|
+
* zero times. The measured filing-to-completion ratio is roughly 30:1.
|
|
9
|
+
*
|
|
10
|
+
* Measured on this machine, 2026-07-27 — the number that makes the case:
|
|
11
|
+
*
|
|
12
|
+
* 371 OPEN attention items → 49 distinct problems
|
|
13
|
+
* the single largest cluster ("credential rebalancer") is 177 items — 48%
|
|
14
|
+
*
|
|
15
|
+
* Reading that queue item-by-item, nobody would ever see it. The items are all
|
|
16
|
+
* individually true and individually minor; the SHAPE is the finding, and the
|
|
17
|
+
* shape is invisible without a reader that groups.
|
|
18
|
+
*
|
|
19
|
+
* WHAT THIS IS NOT. It is not a new notification channel, and it must never
|
|
20
|
+
* become one (operator directive 2026-07-26 20:08Z: synthesis must lead to
|
|
21
|
+
* ACTION through the paths that already exist — a phase advance, a blocker
|
|
22
|
+
* raised, work queued — with the loop closed and without depending on the user).
|
|
23
|
+
* This module is READ-ONLY and returns a report; driving action from it is a
|
|
24
|
+
* separate, gated concern.
|
|
25
|
+
*
|
|
26
|
+
* THE HONEST-DENOMINATOR RULE APPLIES TO THIS READER TOO. Every store it could
|
|
27
|
+
* not read is named in `coverage`, and a report with any unreadable store is
|
|
28
|
+
* NEVER `complete`. "I found no recurrence" and "I could not look" are different
|
|
29
|
+
* answers, and conflating them is the exact failure this project exists to
|
|
30
|
+
* remove — a synthesiser that silently synthesised over two of three stores
|
|
31
|
+
* would be the most expensive instance of it yet.
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Derive the recurrence key from a title.
|
|
35
|
+
*
|
|
36
|
+
* Digits collapse to `N` and long hex runs to `H`, so "3 topics stranded on
|
|
37
|
+
* m_cc2ec…" and "7 topics stranded on m_91af…" are recognised as ONE problem
|
|
38
|
+
* rather than two. This is deliberately blunt: the goal is to surface shape, and
|
|
39
|
+
* an over-eager grouping that a human immediately recognises as one problem is
|
|
40
|
+
* more useful than a precise grouping that preserves the illusion of 371
|
|
41
|
+
* separate things.
|
|
42
|
+
*/
|
|
43
|
+
export function recurrenceKey(title) {
|
|
44
|
+
return (title || '')
|
|
45
|
+
.toLowerCase()
|
|
46
|
+
.replace(/[a-f0-9]{8,}/g, 'H')
|
|
47
|
+
.replace(/\d+/g, 'N')
|
|
48
|
+
.replace(/\s+/g, ' ')
|
|
49
|
+
.trim()
|
|
50
|
+
.slice(0, 80);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Group open observations into recurrence clusters.
|
|
54
|
+
*
|
|
55
|
+
* Pure over its input — every store read (and every read FAILURE) is the
|
|
56
|
+
* caller's job to supply, so this function cannot silently swallow one.
|
|
57
|
+
*/
|
|
58
|
+
export function buildRecurrenceReport(observations, coverage) {
|
|
59
|
+
const open = observations.filter((o) => o.open);
|
|
60
|
+
const byKey = new Map();
|
|
61
|
+
for (const o of open) {
|
|
62
|
+
const k = recurrenceKey(o.title);
|
|
63
|
+
if (!k)
|
|
64
|
+
continue;
|
|
65
|
+
const bucket = byKey.get(k);
|
|
66
|
+
if (bucket)
|
|
67
|
+
bucket.push(o);
|
|
68
|
+
else
|
|
69
|
+
byKey.set(k, [o]);
|
|
70
|
+
}
|
|
71
|
+
const clusters = [...byKey.entries()].map(([key, members]) => {
|
|
72
|
+
const times = members.map((m) => m.at).filter((t) => !!t).sort();
|
|
73
|
+
return {
|
|
74
|
+
key,
|
|
75
|
+
exemplar: members[0].title,
|
|
76
|
+
count: members.length,
|
|
77
|
+
stores: [...new Set(members.map((m) => m.store))],
|
|
78
|
+
sources: [...new Set(members.map((m) => m.source).filter((s) => !!s))],
|
|
79
|
+
firstSeen: times[0],
|
|
80
|
+
lastSeen: times[times.length - 1],
|
|
81
|
+
tracked: members.some((m) => m.store === 'actions'),
|
|
82
|
+
};
|
|
83
|
+
}).sort((a, b) => b.count - a.count);
|
|
84
|
+
const report = {
|
|
85
|
+
generatedAt: new Date().toISOString(),
|
|
86
|
+
coverage,
|
|
87
|
+
clusters,
|
|
88
|
+
observationsConsidered: open.length,
|
|
89
|
+
noticingRatio: clusters.length === 0 ? null : Number((open.length / clusters.length).toFixed(2)),
|
|
90
|
+
};
|
|
91
|
+
// A verdict is only meaningful over a COMPLETE read. On a partial read the
|
|
92
|
+
// field is absent entirely rather than set to a hedged value — an absent field
|
|
93
|
+
// forces the caller to handle it; a hedged value invites it to be rendered as
|
|
94
|
+
// if it were an answer.
|
|
95
|
+
if (coverage.completeness === 'complete') {
|
|
96
|
+
report.verdict = clusters.some((c) => c.count > 1) ? 'recurrence-found' : 'no-recurrence';
|
|
97
|
+
}
|
|
98
|
+
return report;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The clusters worth a human's attention, by a deterministic rule.
|
|
102
|
+
*
|
|
103
|
+
* `minCount` defaults to 2 because a thing noticed once is not yet recurrence.
|
|
104
|
+
* `untrackedOnly` narrows to the sharpest class: repeatedly noticed, never
|
|
105
|
+
* turned into work.
|
|
106
|
+
*/
|
|
107
|
+
export function significantClusters(report, opts = {}) {
|
|
108
|
+
const min = opts.minCount ?? 2;
|
|
109
|
+
return report.clusters.filter((c) => c.count >= min && (!opts.untrackedOnly || !c.tracked));
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=RecurrenceReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecurrenceReader.js","sourceRoot":"","sources":["../../src/core/RecurrenceReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CA4pDR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CA2TR"}
|
|
@@ -1573,6 +1573,8 @@ curl -X POST -H "Authorization: Bearer $AUTH" http://localhost:${port}/intent/jo
|
|
|
1573
1573
|
|
|
1574
1574
|
**Reading the stats honestly:** \`principledCount\` / \`unprincipledCount\` sit beside \`count\`. \`topPrinciples: []\` alone cannot tell you whether nobody has decided anything yet or whether many decisions were recorded and not one said why — these two counters are what separates those cases. The machine-generated dispatch path is deliberately exempt; an auto-applied dispatch has no principle to cite and is never blocked.
|
|
1575
1575
|
|
|
1576
|
+
**Alignment score — N/A means not assessed:** \`GET /intent/alignment\` returns \`grade: 'N/A'\` and \`assessable: false\` when the analysis window held no decisions. Do NOT read that as a failing grade — \`score: 0\` is a placeholder, not a measurement. Branch on \`assessable\` (or \`sampleSize > 0\`) before treating the score as a verdict, and never report an unassessed period to the user as poor alignment.
|
|
1577
|
+
|
|
1576
1578
|
### Playbook — Adaptive Context Engineering
|
|
1577
1579
|
|
|
1578
1580
|
The Playbook system gives you a living knowledge base that makes every session smarter than the last. Instead of loading the same static context every time, Playbook curates a manifest of context items — facts, lessons, patterns, safety rules — and selects exactly what's relevant for each session based on triggers, token budgets, and usefulness scores.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.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-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-27T03:37:34.934Z",
|
|
5
|
+
"instarVersion": "1.3.992",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"domain": "identity",
|
|
12
12
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
13
13
|
"installedPath": ".instar/hooks/instar/session-start.sh",
|
|
14
|
-
"contentHash": "
|
|
14
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
15
15
|
"since": "2025-01-01"
|
|
16
16
|
},
|
|
17
17
|
"hook:dangerous-command-guard": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"domain": "safety",
|
|
21
21
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
22
22
|
"installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
|
|
23
|
-
"contentHash": "
|
|
23
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
24
24
|
"since": "2025-01-01"
|
|
25
25
|
},
|
|
26
26
|
"hook:grounding-before-messaging": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"domain": "safety",
|
|
30
30
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
31
31
|
"installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
|
|
32
|
-
"contentHash": "
|
|
32
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
33
33
|
"since": "2025-01-01"
|
|
34
34
|
},
|
|
35
35
|
"hook:compaction-recovery": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"domain": "identity",
|
|
39
39
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
40
40
|
"installedPath": ".instar/hooks/instar/compaction-recovery.sh",
|
|
41
|
-
"contentHash": "
|
|
41
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
42
42
|
"since": "2025-01-01"
|
|
43
43
|
},
|
|
44
44
|
"hook:external-operation-gate": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"domain": "safety",
|
|
48
48
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
49
49
|
"installedPath": ".instar/hooks/instar/external-operation-gate.js",
|
|
50
|
-
"contentHash": "
|
|
50
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
51
51
|
"since": "2025-01-01"
|
|
52
52
|
},
|
|
53
53
|
"hook:deferral-detector": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"domain": "safety",
|
|
57
57
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
58
58
|
"installedPath": ".instar/hooks/instar/deferral-detector.js",
|
|
59
|
-
"contentHash": "
|
|
59
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
60
60
|
"since": "2025-01-01"
|
|
61
61
|
},
|
|
62
62
|
"hook:self-stop-guard": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"domain": "coherence",
|
|
66
66
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
67
67
|
"installedPath": ".instar/hooks/instar/self-stop-guard.js",
|
|
68
|
-
"contentHash": "
|
|
68
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
69
69
|
"since": "2025-01-01"
|
|
70
70
|
},
|
|
71
71
|
"hook:post-action-reflection": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"domain": "evolution",
|
|
75
75
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
76
76
|
"installedPath": ".instar/hooks/instar/post-action-reflection.js",
|
|
77
|
-
"contentHash": "
|
|
77
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
78
78
|
"since": "2025-01-01"
|
|
79
79
|
},
|
|
80
80
|
"hook:external-communication-guard": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"domain": "safety",
|
|
84
84
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
85
85
|
"installedPath": ".instar/hooks/instar/external-communication-guard.js",
|
|
86
|
-
"contentHash": "
|
|
86
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
87
87
|
"since": "2025-01-01"
|
|
88
88
|
},
|
|
89
89
|
"hook:scope-coherence-collector": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"domain": "coherence",
|
|
93
93
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
94
94
|
"installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
|
|
95
|
-
"contentHash": "
|
|
95
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
96
96
|
"since": "2025-01-01"
|
|
97
97
|
},
|
|
98
98
|
"hook:scope-coherence-checkpoint": {
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"domain": "coherence",
|
|
102
102
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
103
103
|
"installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
|
|
104
|
-
"contentHash": "
|
|
104
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
105
105
|
"since": "2025-01-01"
|
|
106
106
|
},
|
|
107
107
|
"hook:free-text-guard": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"domain": "safety",
|
|
111
111
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
112
112
|
"installedPath": ".instar/hooks/instar/free-text-guard.sh",
|
|
113
|
-
"contentHash": "
|
|
113
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
114
114
|
"since": "2025-01-01"
|
|
115
115
|
},
|
|
116
116
|
"hook:claim-intercept": {
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"domain": "coherence",
|
|
120
120
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
121
121
|
"installedPath": ".instar/hooks/instar/claim-intercept.js",
|
|
122
|
-
"contentHash": "
|
|
122
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
123
123
|
"since": "2025-01-01"
|
|
124
124
|
},
|
|
125
125
|
"hook:claim-intercept-response": {
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"domain": "coherence",
|
|
129
129
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
130
130
|
"installedPath": ".instar/hooks/instar/claim-intercept-response.js",
|
|
131
|
-
"contentHash": "
|
|
131
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
132
132
|
"since": "2025-01-01"
|
|
133
133
|
},
|
|
134
134
|
"hook:stop-gate-router": {
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"domain": "safety",
|
|
138
138
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
139
139
|
"installedPath": ".instar/hooks/instar/stop-gate-router.js",
|
|
140
|
-
"contentHash": "
|
|
140
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
141
141
|
"since": "2025-01-01"
|
|
142
142
|
},
|
|
143
143
|
"hook:auto-approve-permissions": {
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"domain": "safety",
|
|
147
147
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
148
148
|
"installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
|
|
149
|
-
"contentHash": "
|
|
149
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
150
150
|
"since": "2025-01-01"
|
|
151
151
|
},
|
|
152
152
|
"job:health-check": {
|
|
@@ -1562,7 +1562,7 @@
|
|
|
1562
1562
|
"type": "subsystem",
|
|
1563
1563
|
"domain": "updates",
|
|
1564
1564
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
1565
|
-
"contentHash": "
|
|
1565
|
+
"contentHash": "3f824e7d0a659043dfc23895748d4588eeaf072fd4aa214b987a85a7372308b1",
|
|
1566
1566
|
"since": "2025-01-01"
|
|
1567
1567
|
},
|
|
1568
1568
|
"subsystem:scheduler": {
|
|
@@ -1594,6 +1594,8 @@ curl -X POST -H "Authorization: Bearer $AUTH" http://localhost:${port}/intent/jo
|
|
|
1594
1594
|
|
|
1595
1595
|
**Reading the stats honestly:** \`principledCount\` / \`unprincipledCount\` sit beside \`count\`. \`topPrinciples: []\` alone cannot tell you whether nobody has decided anything yet or whether many decisions were recorded and not one said why — these two counters are what separates those cases. The machine-generated dispatch path is deliberately exempt; an auto-applied dispatch has no principle to cite and is never blocked.
|
|
1596
1596
|
|
|
1597
|
+
**Alignment score — N/A means not assessed:** \`GET /intent/alignment\` returns \`grade: 'N/A'\` and \`assessable: false\` when the analysis window held no decisions. Do NOT read that as a failing grade — \`score: 0\` is a placeholder, not a measurement. Branch on \`assessable\` (or \`sampleSize > 0\`) before treating the score as a verdict, and never report an unassessed period to the user as poor alignment.
|
|
1598
|
+
|
|
1597
1599
|
### Playbook — Adaptive Context Engineering
|
|
1598
1600
|
|
|
1599
1601
|
The Playbook system gives you a living knowledge base that makes every session smarter than the last. Instead of loading the same static context every time, Playbook curates a manifest of context items — facts, lessons, patterns, safety rules — and selects exactly what's relevant for each session based on triggers, token budgets, and usefulness scores.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`IntentDriftDetector.alignmentScore()` reported `score: 0, grade: 'F'` when its analysis window held
|
|
9
|
+
no decisions. The `summary` field said "alignment cannot be assessed", but `score` and `grade` are
|
|
10
|
+
what consumers read — so "no data" and "assessed, catastrophically bad" were identical on every field
|
|
11
|
+
in use.
|
|
12
|
+
|
|
13
|
+
The grade union is now `'A'|'B'|'C'|'D'|'F'|'N/A'`, and the result carries `assessable: boolean`.
|
|
14
|
+
`GET /intent/alignment` returns both. `instar intent drift` prints the reason instead of a fabricated
|
|
15
|
+
grade when nothing was assessed.
|
|
16
|
+
|
|
17
|
+
Root cause was vocabulary: with no grade meaning *no verdict*, absence had to borrow the worst real
|
|
18
|
+
grade — the same shape as a status set with no way to say "undetermined".
|
|
19
|
+
|
|
20
|
+
## What to Tell Your User
|
|
21
|
+
|
|
22
|
+
If you look at the alignment score, a flat zero with an F used to mean one of two very different
|
|
23
|
+
things: that your decisions genuinely scored badly, or that there was nothing to score. You could not
|
|
24
|
+
tell which from the number.
|
|
25
|
+
|
|
26
|
+
Now an unassessed period says so plainly, and the score carries a flag saying whether anything was
|
|
27
|
+
actually measured.
|
|
28
|
+
|
|
29
|
+
The honest scope: this changes what you are told, not how aligned anything is. It also does not
|
|
30
|
+
change the default command view, where the unassessable case was already handled well — that path
|
|
31
|
+
stops early with a helpful message and never reached the bad grade. The fabricated F is visible to
|
|
32
|
+
anything reading the score programmatically, and on the command line only if you widen the window
|
|
33
|
+
past thirty days by hand.
|
|
34
|
+
|
|
35
|
+
## Summary of New Capabilities
|
|
36
|
+
|
|
37
|
+
No new endpoint or command. An existing score gained an honest "not assessed" state and a flag
|
|
38
|
+
distinguishing a placeholder from a measurement.
|
|
39
|
+
|
|
40
|
+
## Evidence
|
|
41
|
+
|
|
42
|
+
- Restoring the fabricated `'F'`: 3 failed | 25 passed. Making `assessable` constant: 5 failed.
|
|
43
|
+
- Disabling the renderer's honest branch left all 28 module and route tests green — the wiring was
|
|
44
|
+
unguarded until a test was added that drives the real command and reads its output. With it, that
|
|
45
|
+
same change fails immediately.
|
|
46
|
+
- Restored: 42 passed across the five affected files; `tsc --noEmit` exit 0.
|
|
47
|
+
- Two existing tests asserted `grade === 'F'` on the empty case — they encoded the defect rather than
|
|
48
|
+
merely lagging it. Both updated, with the reason recorded in place.
|
|
49
|
+
|
|
50
|
+
## Known limits
|
|
51
|
+
|
|
52
|
+
The early-return window and the scoring window differ (the command's `--window`, default 14, versus a
|
|
53
|
+
fixed 30), which is what makes the command-line case reachable at all; reconciling them changes what
|
|
54
|
+
every user sees and is deliberately not bundled. `score` stays `0` on the unassessable case rather
|
|
55
|
+
than becoming `null`, to avoid a breaking type change — `assessable` is the additive signal. Nothing
|
|
56
|
+
here improves alignment or judges whether a cited principle was genuinely consulted.
|
|
57
|
+
<!-- tracked: CMT-1044 -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Instar notices problems in three separate stores — the attention queue, the evolution action queue,
|
|
9
|
+
and the sentinel log — and nothing has ever read across them. So the same problem is noticed dozens
|
|
10
|
+
of times and closed zero times (measured filing-to-completion ≈ 30:1).
|
|
11
|
+
|
|
12
|
+
`src/core/RecurrenceReader.ts` groups OPEN observations from all three into recurrence clusters,
|
|
13
|
+
carrying a `coverage` block that names every store it could NOT read. Pure module, read-only, no
|
|
14
|
+
route, no authority.
|
|
15
|
+
|
|
16
|
+
## What to Tell Your User
|
|
17
|
+
|
|
18
|
+
Nothing is required of you, and nothing visible changes yet — this ships the engine, not a surface.
|
|
19
|
+
|
|
20
|
+
What it does, in plain terms: your agent writes down the things it notices in three different places,
|
|
21
|
+
and until now nothing looked at all three together. So one recurring problem could be written down a
|
|
22
|
+
hundred times and read as a hundred separate problems. This groups them.
|
|
23
|
+
|
|
24
|
+
On a live agent it turned 2,068 unresolved items into 836 actual problems — and found 69 problems
|
|
25
|
+
that had been noticed 1,242 times between them without a single one ever being picked up. The
|
|
26
|
+
largest was one component's warnings repeating 177 times, nearly half that agent's attention queue.
|
|
27
|
+
|
|
28
|
+
If you later ask your agent "what keeps going wrong?", this is what lets it answer honestly instead
|
|
29
|
+
of reciting a list. And if it can only read some of its records, it will tell you that rather than
|
|
30
|
+
reporting a clean bill — "nothing found" and "couldn't look" stay different answers.
|
|
31
|
+
|
|
32
|
+
## Summary of New Capabilities
|
|
33
|
+
|
|
34
|
+
- Groups repeated observations across the attention queue, action queue and sentinel log into
|
|
35
|
+
distinct problems, so recurrence becomes visible instead of buried in volume.
|
|
36
|
+
- Flags problems noticed repeatedly that were **never** turned into tracked work — the sharpest
|
|
37
|
+
signal for what is actually being dropped.
|
|
38
|
+
- Refuses to issue a verdict over an incomplete read: any unreadable store is named with its reason,
|
|
39
|
+
and the verdict field is omitted entirely rather than hedged.
|
|
40
|
+
|
|
41
|
+
## Evidence
|
|
42
|
+
|
|
43
|
+
Live data, 2026-07-27: **2,068 open observations → 836 distinct problems** (ratio 2.47). **69
|
|
44
|
+
problems account for 1,242 noticings and none is tracked.** Largest clusters: 278x idle-timeout
|
|
45
|
+
detection, 238x escalation-suppressed, 177x credential rebalancer (48% of the attention queue).
|
|
46
|
+
|
|
47
|
+
Refusal, on real data with the action store made unreadable: reported the 59 clusters it could see
|
|
48
|
+
and left `verdict` **absent** rather than claiming `no-recurrence`. Unit suite 11/11; `tsc` exit 0.
|
|
49
|
+
|
|
50
|
+
## Known limits
|
|
51
|
+
|
|
52
|
+
Title-only keying will not merge the same problem worded differently; semantic matching would mean an
|
|
53
|
+
LLM and a judgment point, deliberately avoided. The blunt key can occasionally over-merge — `exemplar`
|
|
54
|
+
and `sources` are carried so a reader spots it. Read-only: it reports, it does not act. Driving
|
|
55
|
+
action through existing gated paths is the next increment, not this one.
|