@dsh-enhanced/assistant-evaluation 0.1.65 → 0.1.66
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/README.md +54 -1
- package/lib/attention-owner-questions.d.ts +85 -0
- package/lib/attention-owner-questions.d.ts.map +1 -0
- package/lib/attention-owner-questions.js +142 -0
- package/lib/attention-owner-questions.js.map +1 -0
- package/lib/attention-tuning.d.ts +431 -0
- package/lib/attention-tuning.d.ts.map +1 -0
- package/lib/attention-tuning.js +892 -0
- package/lib/attention-tuning.js.map +1 -0
- package/lib/benchmark/cli.d.ts.map +1 -1
- package/lib/benchmark/cli.js +11 -6
- package/lib/benchmark/cli.js.map +1 -1
- package/lib/benchmark/corpus.d.ts +13 -2
- package/lib/benchmark/corpus.d.ts.map +1 -1
- package/lib/benchmark/corpus.js +19 -9
- package/lib/benchmark/corpus.js.map +1 -1
- package/lib/benchmark/families-corpus.d.ts +11 -0
- package/lib/benchmark/families-corpus.d.ts.map +1 -0
- package/lib/benchmark/families-corpus.js +133 -0
- package/lib/benchmark/families-corpus.js.map +1 -0
- package/lib/benchmark/holdout-isolation.d.ts +27 -0
- package/lib/benchmark/holdout-isolation.d.ts.map +1 -0
- package/lib/benchmark/holdout-isolation.js +66 -0
- package/lib/benchmark/holdout-isolation.js.map +1 -0
- package/lib/benchmark/holdout.d.ts.map +1 -1
- package/lib/benchmark/holdout.js +3 -0
- package/lib/benchmark/holdout.js.map +1 -1
- package/lib/benchmark/index.d.ts +3 -0
- package/lib/benchmark/index.d.ts.map +1 -1
- package/lib/benchmark/index.js +2 -0
- package/lib/benchmark/index.js.map +1 -1
- package/lib/benchmark/native-skills.d.ts +12 -14
- package/lib/benchmark/native-skills.d.ts.map +1 -1
- package/lib/benchmark/native.d.ts +15 -2
- package/lib/benchmark/native.d.ts.map +1 -1
- package/lib/benchmark/native.js +67 -14
- package/lib/benchmark/native.js.map +1 -1
- package/lib/benchmark/report.d.ts.map +1 -1
- package/lib/benchmark/report.js +98 -8
- package/lib/benchmark/report.js.map +1 -1
- package/lib/benchmark/runner.d.ts.map +1 -1
- package/lib/benchmark/runner.js +5 -0
- package/lib/benchmark/runner.js.map +1 -1
- package/lib/benchmark/types.d.ts +64 -7
- package/lib/benchmark/types.d.ts.map +1 -1
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/intake-attention-agreement.d.ts +63 -0
- package/lib/intake-attention-agreement.d.ts.map +1 -0
- package/lib/intake-attention-agreement.js +146 -0
- package/lib/intake-attention-agreement.js.map +1 -0
- package/lib/notification-outcomes.d.ts +56 -0
- package/lib/notification-outcomes.d.ts.map +1 -0
- package/lib/notification-outcomes.js +348 -0
- package/lib/notification-outcomes.js.map +1 -0
- package/lib/service.d.ts +244 -2
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +830 -5
- package/lib/service.js.map +1 -1
- package/lib/sqlite.d.ts +8 -2
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +406 -17
- package/lib/sqlite.js.map +1 -1
- package/lib/store.d.ts +13 -2
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +120 -24
- package/lib/store.js.map +1 -1
- package/lib/types.d.ts +247 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +11 -0
- package/lib/types.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/work-item-owner-proof.d.ts +4 -0
- package/lib/work-item-owner-proof.d.ts.map +1 -0
- package/lib/work-item-owner-proof.js +53 -0
- package/lib/work-item-owner-proof.js.map +1 -0
- package/package.json +30 -30
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { EvaluationScope, NotificationOutcome } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* WP22 slice 2: bounded, tighten-only attention tuning with exact-version
|
|
5
|
+
* cohort rollback. A cohort is one notification `(lane, sourceId)` inside one
|
|
6
|
+
* Evaluation scope. Versions are immutable and bound to their exact parent.
|
|
7
|
+
*
|
|
8
|
+
* WP22 slice 3 (explicit opt-in): a loosening request is sealed against a
|
|
9
|
+
* hash-partitioned holdout the proposer never reads, replayed independently
|
|
10
|
+
* on a later tick, and adopted only inside an owner one-time grant; outside
|
|
11
|
+
* it a structured owner question is recorded instead. Without the opt-in,
|
|
12
|
+
* loosening is rejected exactly as in slice 2.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ATTENTION_TUNING_PROTOCOL: "assistant-evaluation/attention-tuning/v1";
|
|
15
|
+
export interface AttentionCohort {
|
|
16
|
+
readonly lane: string;
|
|
17
|
+
readonly sourceId: string;
|
|
18
|
+
}
|
|
19
|
+
/** Overlay deltas on a consumer's own profile. Every field only ever makes notifications rarer. */
|
|
20
|
+
export interface AttentionTuningParameters {
|
|
21
|
+
/** Added to the profile's interruption cost (lowers utility). */
|
|
22
|
+
readonly interruptionCostDelta: number;
|
|
23
|
+
/** Added to the profile's minimum utility threshold. */
|
|
24
|
+
readonly minimumUtilityDelta: number;
|
|
25
|
+
/** Minutes added on both sides of an existing quiet window. */
|
|
26
|
+
readonly quietExtensionMinutes: number;
|
|
27
|
+
/** Disables the noisy rule for this cohort entirely. */
|
|
28
|
+
readonly muted: boolean;
|
|
29
|
+
}
|
|
30
|
+
export type AttentionTuningNumericParameter = 'interruptionCostDelta' | 'minimumUtilityDelta' | 'quietExtensionMinutes';
|
|
31
|
+
export type AttentionTuningParameter = AttentionTuningNumericParameter | 'muted';
|
|
32
|
+
/** Fixed code constants; neither configuration nor a request can widen them. */
|
|
33
|
+
export declare const attentionTuningBounds: Readonly<Record<AttentionTuningNumericParameter, Readonly<{
|
|
34
|
+
min: number;
|
|
35
|
+
max: number;
|
|
36
|
+
step: number;
|
|
37
|
+
}>>>;
|
|
38
|
+
/** Fixed single-step order: cheapest reversible lever first, mute last. */
|
|
39
|
+
export declare const attentionTuningOrder: readonly AttentionTuningParameter[];
|
|
40
|
+
export declare const defaultAttentionTuningParameters: AttentionTuningParameters;
|
|
41
|
+
export interface AttentionCohortStats {
|
|
42
|
+
readonly fromNotifiedAt: number;
|
|
43
|
+
readonly toNotifiedAt: number;
|
|
44
|
+
readonly total: number;
|
|
45
|
+
readonly accepted: number;
|
|
46
|
+
readonly reacted: number;
|
|
47
|
+
readonly rejected: number;
|
|
48
|
+
readonly expiredUnhandled: number;
|
|
49
|
+
/** accepted + reacted + rejected + expired-unhandled; pending/delivered/failed are undecided. */
|
|
50
|
+
readonly decided: number;
|
|
51
|
+
/** rejected + expired-unhandled. */
|
|
52
|
+
readonly negative: number;
|
|
53
|
+
}
|
|
54
|
+
export interface AttentionTuningPolicy {
|
|
55
|
+
readonly minSample: number;
|
|
56
|
+
readonly negativeRatePpm: number;
|
|
57
|
+
readonly muteRatePpm: number;
|
|
58
|
+
readonly regressionMarginPpm: number;
|
|
59
|
+
}
|
|
60
|
+
export interface AttentionTuningChange {
|
|
61
|
+
readonly parameter: AttentionTuningParameter;
|
|
62
|
+
readonly from: number | boolean;
|
|
63
|
+
readonly to: number | boolean;
|
|
64
|
+
}
|
|
65
|
+
export type AttentionTuningProposal = Readonly<{
|
|
66
|
+
kind: 'tighten';
|
|
67
|
+
change: AttentionTuningChange;
|
|
68
|
+
parameters: AttentionTuningParameters;
|
|
69
|
+
}> | Readonly<{
|
|
70
|
+
kind: 'no-op';
|
|
71
|
+
reason: 'insufficient-sample' | 'below-threshold' | 'at-bound';
|
|
72
|
+
}>;
|
|
73
|
+
export type AttentionTuningRequestRejection = 'loosening-requires-holdout' | 'out-of-bounds' | 'no-change' | 'not-single-step' | 'auto-adoption-disabled' | 'observation-in-progress'
|
|
74
|
+
/** Slice 3 loosening (opt-in only): more than one parameter moved, or not on the grid. */
|
|
75
|
+
| 'not-single-parameter' | 'proposal-pending' | 'owner-question-pending';
|
|
76
|
+
/** Why a sealed loosening proposal was not adopted by the independent replay. */
|
|
77
|
+
export type AttentionLooseningRejection = 'proposal-unverifiable' | 'stale-parent' | 'holdout-drifted' | 'insufficient-basis' | 'era-unverifiable' | 'holdout-failed';
|
|
78
|
+
export interface AttentionTuningVersion {
|
|
79
|
+
readonly protocol: typeof ATTENTION_TUNING_PROTOCOL;
|
|
80
|
+
readonly scopeKey: string;
|
|
81
|
+
readonly cohort: AttentionCohort;
|
|
82
|
+
readonly version: number;
|
|
83
|
+
readonly parentVersion: number;
|
|
84
|
+
readonly parentDigest: string | null;
|
|
85
|
+
readonly parameters: AttentionTuningParameters;
|
|
86
|
+
readonly basis: Readonly<{
|
|
87
|
+
stats: AttentionCohortStats;
|
|
88
|
+
scopeWatermark: number;
|
|
89
|
+
}>;
|
|
90
|
+
readonly change: AttentionTuningChange;
|
|
91
|
+
readonly origin: 'auto' | 'request';
|
|
92
|
+
readonly digest: string;
|
|
93
|
+
readonly createdAt: number;
|
|
94
|
+
}
|
|
95
|
+
export interface AttentionTuningCurrent {
|
|
96
|
+
readonly scopeKey: string;
|
|
97
|
+
readonly cohort: AttentionCohort;
|
|
98
|
+
/** 0 is the built-in default (no overlay). */
|
|
99
|
+
readonly version: number;
|
|
100
|
+
readonly digest: string | null;
|
|
101
|
+
readonly parameters: AttentionTuningParameters;
|
|
102
|
+
/** `parent-fallback`/`default` mean the active version was unreadable or failed digest verification. */
|
|
103
|
+
readonly source: 'active' | 'parent-fallback' | 'default';
|
|
104
|
+
}
|
|
105
|
+
export interface AttentionTuningEvent {
|
|
106
|
+
readonly sequence: number;
|
|
107
|
+
readonly kind: 'adopted' | 'rolled-back' | 'settled' | 'request-rejected';
|
|
108
|
+
readonly fromVersion: number;
|
|
109
|
+
readonly toVersion: number;
|
|
110
|
+
readonly reason: string;
|
|
111
|
+
readonly detail: Readonly<Record<string, unknown>>;
|
|
112
|
+
readonly occurredAt: number;
|
|
113
|
+
}
|
|
114
|
+
export interface AttentionTuningStatus {
|
|
115
|
+
readonly current: AttentionTuningCurrent;
|
|
116
|
+
readonly state: 'idle' | 'observing';
|
|
117
|
+
readonly observeFrom?: number;
|
|
118
|
+
readonly observeUntil?: number;
|
|
119
|
+
readonly versions: readonly AttentionTuningVersion[];
|
|
120
|
+
readonly events: readonly AttentionTuningEvent[];
|
|
121
|
+
}
|
|
122
|
+
export type AttentionTuningTickAction = Readonly<{
|
|
123
|
+
action: 'adopted';
|
|
124
|
+
version: number;
|
|
125
|
+
change: AttentionTuningChange;
|
|
126
|
+
}> | Readonly<{
|
|
127
|
+
action: 'rolled-back';
|
|
128
|
+
fromVersion: number;
|
|
129
|
+
toVersion: number;
|
|
130
|
+
}> | Readonly<{
|
|
131
|
+
action: 'settled';
|
|
132
|
+
version: number;
|
|
133
|
+
}> | Readonly<{
|
|
134
|
+
action: 'observing';
|
|
135
|
+
version: number;
|
|
136
|
+
}> | Readonly<{
|
|
137
|
+
action: 'no-op';
|
|
138
|
+
reason: 'insufficient-sample' | 'below-threshold' | 'at-bound';
|
|
139
|
+
}> | Readonly<{
|
|
140
|
+
action: 'loosening-adopted';
|
|
141
|
+
version: number;
|
|
142
|
+
change: AttentionTuningChange;
|
|
143
|
+
proposalId: string;
|
|
144
|
+
grantId: string;
|
|
145
|
+
}> | Readonly<{
|
|
146
|
+
action: 'loosening-rejected';
|
|
147
|
+
reason: AttentionLooseningRejection;
|
|
148
|
+
proposalId: string;
|
|
149
|
+
}> | Readonly<{
|
|
150
|
+
action: 'owner-question';
|
|
151
|
+
questionId: string;
|
|
152
|
+
proposalId: string;
|
|
153
|
+
exceeded: readonly AttentionGrantExceeded[];
|
|
154
|
+
}>;
|
|
155
|
+
export interface AttentionHoldoutSeal {
|
|
156
|
+
readonly protocol: typeof ATTENTION_HOLDOUT_PROTOCOL;
|
|
157
|
+
readonly modulus: number;
|
|
158
|
+
readonly count: number;
|
|
159
|
+
readonly digest: string;
|
|
160
|
+
}
|
|
161
|
+
export type AttentionTuningRequestResult = Readonly<{
|
|
162
|
+
status: 'adopted';
|
|
163
|
+
version: number;
|
|
164
|
+
change: AttentionTuningChange;
|
|
165
|
+
}> | Readonly<{
|
|
166
|
+
status: 'proposed';
|
|
167
|
+
proposalId: string;
|
|
168
|
+
holdout: AttentionHoldoutSeal;
|
|
169
|
+
}> | Readonly<{
|
|
170
|
+
status: 'rejected';
|
|
171
|
+
reason: AttentionTuningRequestRejection;
|
|
172
|
+
}>;
|
|
173
|
+
/** Sealed loosening proposal. It names holdout membership by digest only; holdout outcomes are never read to build it. */
|
|
174
|
+
export interface AttentionLooseningProposal {
|
|
175
|
+
readonly protocol: typeof ATTENTION_LOOSENING_PROTOCOL;
|
|
176
|
+
readonly scopeKey: string;
|
|
177
|
+
readonly cohort: AttentionCohort;
|
|
178
|
+
/** 1-based position among this cohort's proposals, so identical retries stay distinct. */
|
|
179
|
+
readonly ordinal: number;
|
|
180
|
+
readonly parentVersion: number;
|
|
181
|
+
readonly parentDigest: string | null;
|
|
182
|
+
readonly parent: AttentionTuningParameters;
|
|
183
|
+
readonly candidate: AttentionTuningParameters;
|
|
184
|
+
readonly change: AttentionTuningChange;
|
|
185
|
+
readonly steps: number;
|
|
186
|
+
readonly window: Readonly<{
|
|
187
|
+
fromNotifiedAt: number;
|
|
188
|
+
toNotifiedAt: number;
|
|
189
|
+
}>;
|
|
190
|
+
readonly holdout: AttentionHoldoutSeal;
|
|
191
|
+
/** Training-partition outcome summary; becomes the adopted version's regression basis. */
|
|
192
|
+
readonly basis: Readonly<{
|
|
193
|
+
stats: AttentionCohortStats;
|
|
194
|
+
scopeWatermark: number;
|
|
195
|
+
}>;
|
|
196
|
+
readonly createdAt: number;
|
|
197
|
+
}
|
|
198
|
+
export interface AttentionLooseningDecision {
|
|
199
|
+
readonly decision: 'adopted' | 'rejected' | 'owner-question';
|
|
200
|
+
readonly reason: string;
|
|
201
|
+
readonly grantId: string | null;
|
|
202
|
+
readonly version: number | null;
|
|
203
|
+
readonly replay: AttentionReplaySummary | null;
|
|
204
|
+
readonly decidedAt: number;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Structured owner question. The body is immutable and keeps `delivery:
|
|
208
|
+
* 'not-sent'` as recorded; the optional slice-4 delivery state lives in the
|
|
209
|
+
* separate `attention-owner-questions` ledger.
|
|
210
|
+
*/
|
|
211
|
+
export interface AttentionOwnerQuestion {
|
|
212
|
+
readonly protocol: typeof ATTENTION_OWNER_QUESTION_PROTOCOL;
|
|
213
|
+
readonly kind: 'attention-loosening-authorization';
|
|
214
|
+
readonly scopeKey: string;
|
|
215
|
+
readonly cohort: AttentionCohort;
|
|
216
|
+
readonly proposalId: string;
|
|
217
|
+
readonly parentVersion: number;
|
|
218
|
+
readonly parentDigest: string | null;
|
|
219
|
+
readonly parent: AttentionTuningParameters;
|
|
220
|
+
readonly candidate: AttentionTuningParameters;
|
|
221
|
+
readonly change: AttentionTuningChange;
|
|
222
|
+
readonly steps: number;
|
|
223
|
+
readonly replay: AttentionReplaySummary;
|
|
224
|
+
readonly exceeded: readonly AttentionGrantExceeded[];
|
|
225
|
+
/** Latest grant row asked under (even if unverifiable); a different grant closes the question. */
|
|
226
|
+
readonly grantId: string | null;
|
|
227
|
+
readonly choices: readonly ['authorize-once', 'decline'];
|
|
228
|
+
readonly delivery: 'not-sent';
|
|
229
|
+
readonly createdAt: number;
|
|
230
|
+
}
|
|
231
|
+
export type AttentionLooseningGrantResult = Readonly<{
|
|
232
|
+
status: 'granted';
|
|
233
|
+
grantId: string;
|
|
234
|
+
digest: string;
|
|
235
|
+
}> | Readonly<{
|
|
236
|
+
status: 'rejected';
|
|
237
|
+
reason: 'loosening-disabled' | 'grant-conflict' | 'grant-expired';
|
|
238
|
+
}>;
|
|
239
|
+
export interface AttentionLooseningStatus {
|
|
240
|
+
readonly grant: Readonly<{
|
|
241
|
+
grant: AttentionLooseningGrant;
|
|
242
|
+
digest: string;
|
|
243
|
+
createdAt: number;
|
|
244
|
+
used: number;
|
|
245
|
+
remaining: number;
|
|
246
|
+
}> | null;
|
|
247
|
+
readonly proposals: readonly Readonly<{
|
|
248
|
+
proposalId: string;
|
|
249
|
+
proposal: AttentionLooseningProposal;
|
|
250
|
+
decision: AttentionLooseningDecision | null;
|
|
251
|
+
}>[];
|
|
252
|
+
readonly questions: readonly Readonly<{
|
|
253
|
+
questionId: string;
|
|
254
|
+
question: AttentionOwnerQuestion;
|
|
255
|
+
}>[];
|
|
256
|
+
}
|
|
257
|
+
/** Present only when the slice-3 opt-in is on; absent options keep slice-2 behaviour byte for byte. */
|
|
258
|
+
export interface AttentionLooseningOptions {
|
|
259
|
+
readonly replayWindowMs: number;
|
|
260
|
+
}
|
|
261
|
+
export declare function normalizeAttentionCohort(input: unknown): AttentionCohort;
|
|
262
|
+
/** Strict shape check only; bounds and step alignment are judged separately so a request can be recorded. */
|
|
263
|
+
export declare function normalizeAttentionTuningParameters(input: unknown): AttentionTuningParameters;
|
|
264
|
+
/** Clamp every numeric field into its fixed bound (snapped down to the step grid). */
|
|
265
|
+
export declare function clampAttentionTuning(input: AttentionTuningParameters): AttentionTuningParameters;
|
|
266
|
+
export declare function withinAttentionTuningBounds(input: AttentionTuningParameters): boolean;
|
|
267
|
+
/** True when any field would make notifications more frequent than `current`. */
|
|
268
|
+
export declare function isAttentionLoosening(current: AttentionTuningParameters, next: AttentionTuningParameters): boolean;
|
|
269
|
+
/**
|
|
270
|
+
* Pure tighten-only tuner. With at least `minSample` decided notifications and
|
|
271
|
+
* a negative (rejected + expired-unhandled) rate at or above the threshold, it
|
|
272
|
+
* proposes exactly one step on the first non-maxed parameter in fixed order;
|
|
273
|
+
* mute additionally requires `muteRatePpm`. Never proposes loosening.
|
|
274
|
+
*/
|
|
275
|
+
export declare function proposeAttentionTuning(currentInput: AttentionTuningParameters, stats: AttentionCohortStats, policy: AttentionTuningPolicy): AttentionTuningProposal;
|
|
276
|
+
/**
|
|
277
|
+
* Regression test for an observing version: the post-adoption negative rate
|
|
278
|
+
* must exceed the basis (parent-era) rate by more than the margin. Cross
|
|
279
|
+
* multiplication keeps it exact; acceptances only lower the rate, so positive
|
|
280
|
+
* evidence can never satisfy it.
|
|
281
|
+
*/
|
|
282
|
+
export declare function attentionRegressed(basis: AttentionCohortStats, post: AttentionCohortStats, policy: AttentionTuningPolicy): boolean;
|
|
283
|
+
/**
|
|
284
|
+
* WP22 slice 3: sealed holdout partition. Membership is a pure function of the
|
|
285
|
+
* notification id under a fixed protocol salt and modulus, so it is
|
|
286
|
+
* reproducible by any auditor and never chosen by the proposer.
|
|
287
|
+
*/
|
|
288
|
+
export declare const ATTENTION_HOLDOUT_PROTOCOL: "assistant-evaluation/attention-holdout/v1";
|
|
289
|
+
export declare const attentionHoldoutModulus = 4;
|
|
290
|
+
export declare const ATTENTION_LOOSENING_PROTOCOL: "assistant-evaluation/attention-loosening/v1";
|
|
291
|
+
export declare const ATTENTION_LOOSENING_GRANT_PROTOCOL: "assistant-evaluation/attention-loosening-grant/v1";
|
|
292
|
+
export declare const ATTENTION_OWNER_QUESTION_PROTOCOL: "assistant-evaluation/attention-owner-question/v1";
|
|
293
|
+
export declare function attentionHoldoutMember(notificationId: string): boolean;
|
|
294
|
+
/** True when `a` suppresses at least everything `b` suppresses (every field at least as tight). */
|
|
295
|
+
export declare function attentionTighterOrEqual(a: AttentionTuningParameters, b: AttentionTuningParameters): boolean;
|
|
296
|
+
export interface AttentionLooseningChange extends AttentionTuningChange {
|
|
297
|
+
/** Grid steps moved toward the default; unmute counts as one. */
|
|
298
|
+
readonly steps: number;
|
|
299
|
+
}
|
|
300
|
+
/** One parameter moved toward the default by whole grid steps, or an unmute; anything else is undefined. */
|
|
301
|
+
export declare function attentionLooseningChange(current: AttentionTuningParameters, next: AttentionTuningParameters): AttentionLooseningChange | undefined;
|
|
302
|
+
export interface AttentionReplayRecord {
|
|
303
|
+
/** Parameters that were active when the notification was sent. */
|
|
304
|
+
readonly era: AttentionTuningParameters;
|
|
305
|
+
readonly outcome: NotificationOutcome;
|
|
306
|
+
}
|
|
307
|
+
export interface AttentionReplayTally {
|
|
308
|
+
readonly decided: number;
|
|
309
|
+
readonly positive: number;
|
|
310
|
+
readonly negative: number;
|
|
311
|
+
}
|
|
312
|
+
export type AttentionReplayFailure = 'insufficient-holdout' | 'extra-interruptions' | 'candidate-negative-rate' | 'no-net-benefit';
|
|
313
|
+
export interface AttentionReplaySummary {
|
|
314
|
+
readonly protocol: typeof ATTENTION_LOOSENING_PROTOCOL;
|
|
315
|
+
/** Sent under an era at least as tight as the parent: both parent and candidate send them. */
|
|
316
|
+
readonly shared: AttentionReplayTally;
|
|
317
|
+
/** Sent under an era the candidate admits but the parent may suppress: the loosening's extra traffic. */
|
|
318
|
+
readonly discriminating: AttentionReplayTally;
|
|
319
|
+
/** Sent under an era looser than the candidate; neither verdict is attributable, reported only. */
|
|
320
|
+
readonly unattributable: AttentionReplayTally;
|
|
321
|
+
/** False positives are delivered-and-rejected/ignored; misses are owner-accepted notifications suppressed. */
|
|
322
|
+
readonly parent: Readonly<{
|
|
323
|
+
falsePositives: number;
|
|
324
|
+
misses: number;
|
|
325
|
+
}>;
|
|
326
|
+
readonly candidate: Readonly<{
|
|
327
|
+
falsePositives: number;
|
|
328
|
+
misses: number;
|
|
329
|
+
}>;
|
|
330
|
+
readonly thresholds: Readonly<{
|
|
331
|
+
minSample: number;
|
|
332
|
+
maxDiscriminatingNegativeRatePpm: number;
|
|
333
|
+
maxCandidateNegativeRatePpm: number;
|
|
334
|
+
}>;
|
|
335
|
+
readonly verdict: 'pass' | 'fail';
|
|
336
|
+
readonly reason?: AttentionReplayFailure;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Deterministic counterfactual replay of a loosening on holdout records.
|
|
340
|
+
* Notifications carry no per-message utility, so each is attributed by the
|
|
341
|
+
* era it was sent under: an era at least as tight as a configuration proves
|
|
342
|
+
* that configuration would also have sent it. Passing requires enough
|
|
343
|
+
* discriminating evidence, an extra-interruption rate below the tuning
|
|
344
|
+
* threshold minus the regression margin, a candidate-wide negative rate below
|
|
345
|
+
* the tightening threshold (so it would not be immediately re-tightened), and
|
|
346
|
+
* more owner-valued notifications recovered than extra interruptions added.
|
|
347
|
+
*/
|
|
348
|
+
export declare function replayAttentionLoosening(records: readonly AttentionReplayRecord[], parent: AttentionTuningParameters, candidate: AttentionTuningParameters, policy: AttentionTuningPolicy): AttentionReplaySummary;
|
|
349
|
+
/** Owner one-time pre-authorization for automatic loosening of one cohort. */
|
|
350
|
+
export interface AttentionLooseningGrant {
|
|
351
|
+
readonly grantId: string;
|
|
352
|
+
/** Loosest parameters a candidate may reach. */
|
|
353
|
+
readonly lowerBound: AttentionTuningParameters;
|
|
354
|
+
/** Tightest parameters a loosening may start from. */
|
|
355
|
+
readonly upperBound: AttentionTuningParameters;
|
|
356
|
+
readonly maxStepsPerAdoption: number;
|
|
357
|
+
readonly maxAdoptions: number;
|
|
358
|
+
readonly expiresAt: number;
|
|
359
|
+
}
|
|
360
|
+
export type AttentionGrantExceeded = 'no-grant' | 'grant-unverifiable' | 'grant-expired' | 'grant-exhausted' | 'outside-bounds' | 'step-too-large';
|
|
361
|
+
export declare function normalizeAttentionLooseningGrant(input: unknown): AttentionLooseningGrant;
|
|
362
|
+
/** Every way a holdout-accepted loosening falls outside the active grant; empty means adoptable. */
|
|
363
|
+
export declare function attentionGrantExceeded(grant: AttentionLooseningGrant | undefined, used: number, parent: AttentionTuningParameters, candidate: AttentionTuningParameters, steps: number, now: number): readonly AttentionGrantExceeded[];
|
|
364
|
+
/**
|
|
365
|
+
* Durable ledger over the same Evaluation database as the notification canon.
|
|
366
|
+
* All decisions recompute inside BEGIN IMMEDIATE so concurrent ticks or a
|
|
367
|
+
* restart mid-observation converge on one head.
|
|
368
|
+
*/
|
|
369
|
+
export declare class AttentionTuningLedger {
|
|
370
|
+
#private;
|
|
371
|
+
constructor(database: DatabaseSync, now: () => number);
|
|
372
|
+
/**
|
|
373
|
+
* Current-head outcome counts for one cohort, notified in [from, to).
|
|
374
|
+
* `training` excludes the sealed holdout partition; every proposer uses it
|
|
375
|
+
* once the slice-3 opt-in is on, so no proposal is fitted to holdout data.
|
|
376
|
+
*/
|
|
377
|
+
stats(scopeKey: string, cohort: AttentionCohort, fromNotifiedAt: number, toNotifiedAt: number, partition?: 'all' | 'training'): AttentionCohortStats;
|
|
378
|
+
/** Scopes that have at least one notification in the cohort, plus scopes with a tuning head. */
|
|
379
|
+
scopes(cohort: AttentionCohort): readonly EvaluationScope[];
|
|
380
|
+
/**
|
|
381
|
+
* Active parameters for a consumer. A version that cannot be read or fails
|
|
382
|
+
* digest verification falls back along its recorded parent chain, then to
|
|
383
|
+
* the built-in default; a consumer never sees an unverified overlay.
|
|
384
|
+
*/
|
|
385
|
+
current(scopeInput: EvaluationScope, cohortInput: AttentionCohort): AttentionTuningCurrent;
|
|
386
|
+
status(scopeInput: EvaluationScope, cohortInput: AttentionCohort, eventLimit?: number): AttentionTuningStatus;
|
|
387
|
+
/**
|
|
388
|
+
* One deterministic step for one cohort: monitor an observing version
|
|
389
|
+
* (rollback to its exact parent on regression, settle at window end), or
|
|
390
|
+
* when idle propose and adopt a single bounded tightening step.
|
|
391
|
+
*/
|
|
392
|
+
tick(scopeInput: EvaluationScope, cohortInput: AttentionCohort, policy: AttentionTuningPolicy, options: Readonly<{
|
|
393
|
+
observationMs: number;
|
|
394
|
+
evaluationWindowMs: number;
|
|
395
|
+
loosening?: AttentionLooseningOptions;
|
|
396
|
+
}>): AttentionTuningTickAction;
|
|
397
|
+
/**
|
|
398
|
+
* Explicit parameter request. Any loosening field is rejected with
|
|
399
|
+
* `loosening-requires-holdout` and recorded; so is every other rejection.
|
|
400
|
+
* A single in-bounds tightening step is adopted with an observation window.
|
|
401
|
+
*/
|
|
402
|
+
request(scopeInput: EvaluationScope, cohortInput: AttentionCohort, parametersInput: unknown, options: Readonly<{
|
|
403
|
+
enabled: boolean;
|
|
404
|
+
observationMs: number;
|
|
405
|
+
evaluationWindowMs: number;
|
|
406
|
+
loosening?: AttentionLooseningOptions;
|
|
407
|
+
}>): AttentionTuningRequestResult;
|
|
408
|
+
/**
|
|
409
|
+
* WP22 slice 4: the latest owner question of a cohort, verified against its
|
|
410
|
+
* content id, and whether it is still open (same rule as `#openQuestion`).
|
|
411
|
+
* Older questions are always closed. A row whose body no longer hashes to
|
|
412
|
+
* its id is reported as `unverifiable` and must never be delivered.
|
|
413
|
+
*/
|
|
414
|
+
latestOwnerQuestion(scopeInput: EvaluationScope, cohortInput: AttentionCohort): Readonly<{
|
|
415
|
+
questionId: string;
|
|
416
|
+
question: AttentionOwnerQuestion;
|
|
417
|
+
open: boolean;
|
|
418
|
+
}> | 'unverifiable' | undefined;
|
|
419
|
+
/**
|
|
420
|
+
* Record an owner one-time pre-authorization. Grants are immutable; the
|
|
421
|
+
* latest one is active and its quota is never refunded. Re-sending the same
|
|
422
|
+
* grant is idempotent; reusing an id with different content is rejected.
|
|
423
|
+
*/
|
|
424
|
+
grant(scopeInput: EvaluationScope, cohortInput: AttentionCohort, grantInput: unknown): AttentionLooseningGrantResult;
|
|
425
|
+
looseningStatus(scopeInput: EvaluationScope, cohortInput: AttentionCohort, limit?: number): AttentionLooseningStatus;
|
|
426
|
+
counts(): Readonly<{
|
|
427
|
+
versions: number;
|
|
428
|
+
events: number;
|
|
429
|
+
}>;
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=attention-tuning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention-tuning.d.ts","sourceRoot":"","sources":["../src/attention-tuning.ts"],"names":[],"mappings":"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"}
|