instar 1.3.1273 → 1.3.1274
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/core/JevSignalShadow.d.ts +33 -0
- package/dist/core/JevSignalShadow.d.ts.map +1 -1
- package/dist/core/JevSignalShadow.js +87 -3
- package/dist/core/JevSignalShadow.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1274.md +47 -0
- package/upgrades/side-effects/jev-shadow-disagreement-excerpts.md +79 -0
|
@@ -6,6 +6,12 @@ export interface JevSignalShadowConfig {
|
|
|
6
6
|
timeoutMs?: number;
|
|
7
7
|
/** ISO instant; the shadow is inert at or after it, and when absent. */
|
|
8
8
|
soakEndsAt?: string | null;
|
|
9
|
+
/** Retain a scrubbed, span-anchored excerpt on DISAGREEING rows only, so a
|
|
10
|
+
* disagreement can be adjudicated instead of merely counted. Default OFF:
|
|
11
|
+
* absent or false keeps the byte-identical no-text behaviour. */
|
|
12
|
+
retainDisagreementExcerpts?: boolean;
|
|
13
|
+
/** Volume bound on retained excerpts per UTC day (default EXCERPT_DAILY_CAP). */
|
|
14
|
+
maxExcerptsPerDay?: number;
|
|
9
15
|
}
|
|
10
16
|
/** The closed set of reasons a candidate was not compared. */
|
|
11
17
|
export type NotComparedReason = 'timeout' | 'http-error' | 'oversize' | 'skipped-concurrent' | 'skipped-sample' | 'model-mismatch' | 'disabled-no-key' | 'soak-expired';
|
|
@@ -19,6 +25,13 @@ export type ShadowRow = {
|
|
|
19
25
|
ms: number;
|
|
20
26
|
modelServed: string;
|
|
21
27
|
disagree: string[];
|
|
28
|
+
/** Scrubbed, span-anchored excerpt — present ONLY on disagreeing rows,
|
|
29
|
+
* and only when retention is enabled. */
|
|
30
|
+
excerpt?: string;
|
|
31
|
+
/** Count of secrets redacted inside the excerpt (never their values). */
|
|
32
|
+
excerptRedactions?: number;
|
|
33
|
+
/** Why no excerpt was retained on a disagreeing row. */
|
|
34
|
+
excerptUnavailable?: 'no-detector-span' | 'daily-cap' | 'scrub-error';
|
|
22
35
|
} | {
|
|
23
36
|
kind: 'not-compared';
|
|
24
37
|
ts: string;
|
|
@@ -38,6 +51,12 @@ export declare const SHADOW_QUESTIONS: ReadonlyArray<{
|
|
|
38
51
|
instructions: string;
|
|
39
52
|
}>;
|
|
40
53
|
export declare const POSITIVE_THRESHOLD = 0.5;
|
|
54
|
+
/** Characters of context kept either side of a detector span. */
|
|
55
|
+
export declare const EXCERPT_CONTEXT_CHARS = 60;
|
|
56
|
+
/** Hard clamp on a retained excerpt, before scrubbing. */
|
|
57
|
+
export declare const EXCERPT_MAX_CHARS = 400;
|
|
58
|
+
/** Default volume bound per UTC day. */
|
|
59
|
+
export declare const EXCERPT_DAILY_CAP = 50;
|
|
41
60
|
/** Minimum spacing between key re-reads after a miss or a 401/403 (bounds any blocking lookup). */
|
|
42
61
|
export declare const KEY_REREAD_MS: number;
|
|
43
62
|
export interface JevSignalShadowDeps {
|
|
@@ -80,6 +99,20 @@ export declare class JevSignalShadow {
|
|
|
80
99
|
lastDispatch: Promise<void>;
|
|
81
100
|
private observeInner;
|
|
82
101
|
private dispatch;
|
|
102
|
+
/** Retained-excerpt volume counter, keyed by UTC day. In-memory: it resets on
|
|
103
|
+
* restart, so it bounds VOLUME rather than acting as a secrecy guarantee —
|
|
104
|
+
* secrecy is carried by span-anchoring (never the whole message) plus the
|
|
105
|
+
* scrub, both of which hold per-excerpt regardless of this count. */
|
|
106
|
+
private excerptDay;
|
|
107
|
+
private excerptCount;
|
|
108
|
+
/**
|
|
109
|
+
* Build a scrubbed excerpt anchored to the detector spans of the DISAGREEING
|
|
110
|
+
* rules only. Where the detector fired and the model did not, the spans point
|
|
111
|
+
* at the disputed artifact. Where the model fired and the detector did NOT,
|
|
112
|
+
* there is no span to anchor to — and rather than widen the window to the
|
|
113
|
+
* message, the row honestly records `no-detector-span`.
|
|
114
|
+
*/
|
|
115
|
+
private buildExcerpt;
|
|
83
116
|
private write;
|
|
84
117
|
}
|
|
85
118
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JevSignalShadow.d.ts","sourceRoot":"","sources":["../../src/core/JevSignalShadow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JevSignalShadow.d.ts","sourceRoot":"","sources":["../../src/core/JevSignalShadow.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import fs from 'node:fs';
|
|
|
24
24
|
import path from 'node:path';
|
|
25
25
|
import crypto from 'node:crypto';
|
|
26
26
|
import { detectGateSignals } from './GateSignalDetectors.js';
|
|
27
|
+
import { scrubForStore } from './durableSecretScrub.js';
|
|
27
28
|
export const JEV_SHADOW_FEATURE = 'jev-signal-shadow';
|
|
28
29
|
const ENDPOINT = 'https://api.typesafe.ai/v1/systemone';
|
|
29
30
|
/**
|
|
@@ -42,6 +43,12 @@ export const SHADOW_QUESTIONS = [
|
|
|
42
43
|
{ rule: 'cron_or_slug', signalKind: 'cron-or-slug', instructions: 'The message shows the reader a raw cron expression or an internal machine identifier/slug instead of plain words.' },
|
|
43
44
|
];
|
|
44
45
|
export const POSITIVE_THRESHOLD = 0.5;
|
|
46
|
+
/** Characters of context kept either side of a detector span. */
|
|
47
|
+
export const EXCERPT_CONTEXT_CHARS = 60;
|
|
48
|
+
/** Hard clamp on a retained excerpt, before scrubbing. */
|
|
49
|
+
export const EXCERPT_MAX_CHARS = 400;
|
|
50
|
+
/** Default volume bound per UTC day. */
|
|
51
|
+
export const EXCERPT_DAILY_CAP = 50;
|
|
45
52
|
/** Minimum spacing between key re-reads after a miss or a 401/403 (bounds any blocking lookup). */
|
|
46
53
|
export const KEY_REREAD_MS = 10 * 60_000;
|
|
47
54
|
export class JevSignalShadow {
|
|
@@ -122,9 +129,13 @@ export class JevSignalShadow {
|
|
|
122
129
|
notCompared('skipped-concurrent');
|
|
123
130
|
return;
|
|
124
131
|
}
|
|
125
|
-
|
|
132
|
+
// Keep the FULL signals (not just kinds): their spans are what anchors a
|
|
133
|
+
// retained excerpt to the artifact in dispute, so retention can never widen
|
|
134
|
+
// beyond what the detector actually pointed at.
|
|
135
|
+
const signals = detectGateSignals(text);
|
|
136
|
+
const detectorSignals = signals.map((s) => s.kind);
|
|
126
137
|
this.inFlight = true;
|
|
127
|
-
this.lastDispatch = this.dispatch(text, cfg, { ts, sha256, bytes, detectorSignals })
|
|
138
|
+
this.lastDispatch = this.dispatch(text, cfg, { ts, sha256, bytes, detectorSignals, signals })
|
|
128
139
|
.catch(() => { })
|
|
129
140
|
.finally(() => { this.inFlight = false; });
|
|
130
141
|
}
|
|
@@ -174,7 +185,11 @@ export class JevSignalShadow {
|
|
|
174
185
|
disagree.push(q.rule);
|
|
175
186
|
}
|
|
176
187
|
outcome = disagree.length ? 'fired' : 'noop';
|
|
177
|
-
|
|
188
|
+
const { signals, ...rowBase } = base;
|
|
189
|
+
const retained = disagree.length > 0 && cfg.retainDisagreementExcerpts === true
|
|
190
|
+
? this.buildExcerpt(text, signals, disagree, cfg, base.ts)
|
|
191
|
+
: {};
|
|
192
|
+
this.write({ kind: 'compared', ...rowBase, jev, ms: (this.deps.now ?? Date.now)() - t0, modelServed, disagree, ...retained });
|
|
178
193
|
}
|
|
179
194
|
catch (err) {
|
|
180
195
|
nc(err?.name === 'AbortError' ? 'timeout' : 'http-error');
|
|
@@ -196,6 +211,75 @@ export class JevSignalShadow {
|
|
|
196
211
|
catch { /* @silent-fallback-ok — metering must never break the instrument */ }
|
|
197
212
|
}
|
|
198
213
|
}
|
|
214
|
+
/** Retained-excerpt volume counter, keyed by UTC day. In-memory: it resets on
|
|
215
|
+
* restart, so it bounds VOLUME rather than acting as a secrecy guarantee —
|
|
216
|
+
* secrecy is carried by span-anchoring (never the whole message) plus the
|
|
217
|
+
* scrub, both of which hold per-excerpt regardless of this count. */
|
|
218
|
+
excerptDay = '';
|
|
219
|
+
excerptCount = 0;
|
|
220
|
+
/**
|
|
221
|
+
* Build a scrubbed excerpt anchored to the detector spans of the DISAGREEING
|
|
222
|
+
* rules only. Where the detector fired and the model did not, the spans point
|
|
223
|
+
* at the disputed artifact. Where the model fired and the detector did NOT,
|
|
224
|
+
* there is no span to anchor to — and rather than widen the window to the
|
|
225
|
+
* message, the row honestly records `no-detector-span`.
|
|
226
|
+
*/
|
|
227
|
+
buildExcerpt(text, signals, disagree, cfg, ts) {
|
|
228
|
+
try {
|
|
229
|
+
const day = ts.slice(0, 10);
|
|
230
|
+
if (this.excerptDay !== day) {
|
|
231
|
+
this.excerptDay = day;
|
|
232
|
+
this.excerptCount = 0;
|
|
233
|
+
}
|
|
234
|
+
const cap = typeof cfg.maxExcerptsPerDay === 'number' && cfg.maxExcerptsPerDay >= 0
|
|
235
|
+
? cfg.maxExcerptsPerDay
|
|
236
|
+
: EXCERPT_DAILY_CAP;
|
|
237
|
+
if (this.excerptCount >= cap)
|
|
238
|
+
return { excerptUnavailable: 'daily-cap' };
|
|
239
|
+
const kinds = new Set(disagree
|
|
240
|
+
.map((rule) => SHADOW_QUESTIONS.find((q) => q.rule === rule)?.signalKind)
|
|
241
|
+
.filter((k) => typeof k === 'string'));
|
|
242
|
+
const spans = signals
|
|
243
|
+
.filter((sig) => kinds.has(sig.kind))
|
|
244
|
+
.flatMap((sig) => sig.spans ?? [])
|
|
245
|
+
.map((sp) => ({
|
|
246
|
+
start: Math.max(0, sp.start - EXCERPT_CONTEXT_CHARS),
|
|
247
|
+
end: Math.min(text.length, sp.end + EXCERPT_CONTEXT_CHARS),
|
|
248
|
+
}))
|
|
249
|
+
.sort((a, b) => a.start - b.start);
|
|
250
|
+
if (spans.length === 0)
|
|
251
|
+
return { excerptUnavailable: 'no-detector-span' };
|
|
252
|
+
// Merge overlaps so context is not duplicated, then clamp the total.
|
|
253
|
+
const merged = [];
|
|
254
|
+
for (const sp of spans) {
|
|
255
|
+
const last = merged[merged.length - 1];
|
|
256
|
+
if (last && sp.start <= last.end)
|
|
257
|
+
last.end = Math.max(last.end, sp.end);
|
|
258
|
+
else
|
|
259
|
+
merged.push({ ...sp });
|
|
260
|
+
}
|
|
261
|
+
let out = '';
|
|
262
|
+
for (const sp of merged) {
|
|
263
|
+
if (out.length >= EXCERPT_MAX_CHARS)
|
|
264
|
+
break;
|
|
265
|
+
const piece = text.slice(sp.start, sp.end);
|
|
266
|
+
out += (out ? ' … ' : '') + piece;
|
|
267
|
+
}
|
|
268
|
+
out = out.slice(0, EXCERPT_MAX_CHARS);
|
|
269
|
+
const scrubbed = scrubForStore(out);
|
|
270
|
+
if (scrubbed.error)
|
|
271
|
+
return { excerptUnavailable: 'scrub-error' };
|
|
272
|
+
this.excerptCount++;
|
|
273
|
+
return {
|
|
274
|
+
excerpt: scrubbed.text,
|
|
275
|
+
...(scrubbed.redactions.length > 0 ? { excerptRedactions: scrubbed.redactions.length } : {}),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// @silent-fallback-ok — retention is observability; it must never cost a comparison row.
|
|
280
|
+
return { excerptUnavailable: 'scrub-error' };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
199
283
|
write(row) {
|
|
200
284
|
try {
|
|
201
285
|
fs.mkdirSync(path.dirname(this.deps.logPath), { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JevSignalShadow.js","sourceRoot":"","sources":["../../src/core/JevSignalShadow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JevSignalShadow.js","sourceRoot":"","sources":["../../src/core/JevSignalShadow.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "c55d201d822f8706b0dc50ce21b0b8298b4ac470543cfe46d8988da03b0d34b9",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1274",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/audits/phase-b/f10-triage.md",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "021c6a9021ae41f455f64e83105194161d6c3b31c1fb1ce11591a4c04b74f0b5",
|
|
3
3
|
"registrySha256": "c55d201d822f8706b0dc50ce21b0b8298b4ac470543cfe46d8988da03b0d34b9",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1274"
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-09-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-09-24T17:28:08.837Z",
|
|
5
|
+
"instarVersion": "1.3.1274",
|
|
6
6
|
"entryCount": 203,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "c55d201d822f8706b0dc50ce21b0b8298b4ac470543cfe46d8988da03b0d34b9",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1274",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/audits/phase-b/f10-triage.md",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "021c6a9021ae41f455f64e83105194161d6c3b31c1fb1ce11591a4c04b74f0b5",
|
|
3
3
|
"registrySha256": "c55d201d822f8706b0dc50ce21b0b8298b4ac470543cfe46d8988da03b0d34b9",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1274"
|
|
5
5
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`JevSignalShadow` recorded `sha256` only, so its disagreements (49 of 350
|
|
9
|
+
compared messages on the originating agent) could be counted but never
|
|
10
|
+
settled — uninterpretable as evidence in either direction.
|
|
11
|
+
|
|
12
|
+
Adds opt-in `retainDisagreementExcerpts` (default OFF — absent is
|
|
13
|
+
byte-identical to today). When on, a COMPARED row with `disagree.length > 0`
|
|
14
|
+
carries `excerpt`: the text within `EXCERPT_CONTEXT_CHARS` (60) of the
|
|
15
|
+
detector spans for the disagreeing rules only, overlaps merged, clamped to
|
|
16
|
+
`EXCERPT_MAX_CHARS` (400), then passed through `scrubForStore`. Redaction
|
|
17
|
+
count is recorded as `excerptRedactions`; values never are.
|
|
18
|
+
|
|
19
|
+
Non-retention is explicit rather than silent, via `excerptUnavailable`:
|
|
20
|
+
- `no-detector-span` — the model fired where the detector did not, so there is
|
|
21
|
+
no anchor. The window is NOT widened to the message; those rows stay
|
|
22
|
+
unadjudicable by design.
|
|
23
|
+
- `daily-cap` — past `maxExcerptsPerDay` (default `EXCERPT_DAILY_CAP` = 50).
|
|
24
|
+
- `scrub-error` — the scrub failed; nothing is kept.
|
|
25
|
+
|
|
26
|
+
## What to Tell Your User
|
|
27
|
+
|
|
28
|
+
If the message-comparison trial is running with snippet-keeping switched on, a
|
|
29
|
+
disagreement between the cheap model and the existing checks now keeps a short,
|
|
30
|
+
secret-stripped snippet of just the disputed part — enough to tell which side
|
|
31
|
+
was right. Agreeing messages keep nothing, and snippets never leave the machine.
|
|
32
|
+
|
|
33
|
+
## Summary of New Capabilities
|
|
34
|
+
|
|
35
|
+
- `intelligence.jevSignalShadow.retainDisagreementExcerpts` (default false) and
|
|
36
|
+
`maxExcerptsPerDay` (default 50).
|
|
37
|
+
- `excerpt`, `excerptRedactions`, `excerptUnavailable` on compared rows.
|
|
38
|
+
|
|
39
|
+
## Evidence
|
|
40
|
+
|
|
41
|
+
`tests/unit/JevSignalShadow.test.ts` — seven tests: flag absent retains nothing
|
|
42
|
+
on a genuine disagreement; enabled retains a scrubbed span-anchored excerpt
|
|
43
|
+
containing the disputed artifact within the clamp; an AGREEING row never
|
|
44
|
+
carries text even with retention on; model-fired/detector-silent records
|
|
45
|
+
`no-detector-span` and does not leak the message; a secret-shaped key inside
|
|
46
|
+
the window is scrubbed and counted without its value appearing; the daily cap
|
|
47
|
+
stops retention and records `daily-cap`; the default cap is positive.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Side-Effects Review — Jev shadow: disagreement excerpts
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `jev-shadow-disagreement-excerpts`
|
|
4
|
+
**Date:** `2026-09-24`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required (Tier 1; observe-only research instrument, no decision surface, off by default)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The shadow trial recorded only `sha256` per message, so its 49 disagreements
|
|
11
|
+
could be counted but never adjudicated — uninterpretable in both directions.
|
|
12
|
+
Adds opt-in retention of a scrubbed, detector-span-anchored excerpt on
|
|
13
|
+
DISAGREEING rows only, with a per-UTC-day volume cap.
|
|
14
|
+
|
|
15
|
+
## Decision-point inventory
|
|
16
|
+
|
|
17
|
+
- *(none)* — the shadow decides nothing and gates nothing. This adds a field to
|
|
18
|
+
a research log.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Over-block
|
|
23
|
+
|
|
24
|
+
Nothing is blocked. The only "refusal" is declining to retain: an agreeing row,
|
|
25
|
+
a disabled flag, a missing detector span, an exhausted daily cap, or a scrub
|
|
26
|
+
error each yield no excerpt, and the last three say which in
|
|
27
|
+
`excerptUnavailable` rather than going silent.
|
|
28
|
+
|
|
29
|
+
## 2. Under-block
|
|
30
|
+
|
|
31
|
+
Deliberate: where the MODEL fired and the detector did not, there is no span to
|
|
32
|
+
anchor to and nothing is kept (`no-detector-span`). Those disagreements stay
|
|
33
|
+
unadjudicable. Widening the window to the message would cover them at the cost
|
|
34
|
+
of retaining full text of messages neither side located an artifact in — the
|
|
35
|
+
exposure this design exists to avoid. 12 of 52 observed disagreements are this
|
|
36
|
+
shape; the other 40 are covered.
|
|
37
|
+
|
|
38
|
+
## 3. Level-of-abstraction fit
|
|
39
|
+
|
|
40
|
+
Built at the existing dispatch chokepoint, which already holds the message, the
|
|
41
|
+
detector signals and the verdict. No new layer, no second pass over the text.
|
|
42
|
+
The detector's `spans` (already produced and already capped at 8/signal) are
|
|
43
|
+
reused rather than re-deriving positions.
|
|
44
|
+
|
|
45
|
+
## 4. Signal vs authority compliance
|
|
46
|
+
|
|
47
|
+
Signal-producer with no authority. Per `docs/signal-vs-authority.md` a brittle
|
|
48
|
+
mechanism may inform and must not block; this one only appends a field to a
|
|
49
|
+
JSONL research row. Every failure path returns "no excerpt", never an exception
|
|
50
|
+
into the message path (`observe` remains try/caught and fire-and-forget).
|
|
51
|
+
|
|
52
|
+
## 5. Interactions
|
|
53
|
+
|
|
54
|
+
- Runs strictly after `disagree` is computed; cannot change it.
|
|
55
|
+
- Does not touch the request to the provider — the body is unchanged.
|
|
56
|
+
- The daily counter is per-instance and resets on restart. It bounds VOLUME,
|
|
57
|
+
not secrecy: per-excerpt secrecy is carried by span-anchoring and the scrub,
|
|
58
|
+
which hold regardless of the count. Stated rather than implied, because a
|
|
59
|
+
reset-on-restart counter must not be read as a retention guarantee.
|
|
60
|
+
|
|
61
|
+
## 6. External surfaces
|
|
62
|
+
|
|
63
|
+
None. Excerpts are written to the existing machine-local trial log and are not
|
|
64
|
+
served over HTTP, replicated, or sent to the provider. The full message already
|
|
65
|
+
reaches the provider for comparison — unchanged by this work.
|
|
66
|
+
|
|
67
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
68
|
+
|
|
69
|
+
Machine-local BY DESIGN. The trial log is a per-machine research artifact; each
|
|
70
|
+
machine compares its own traffic and keeps its own rows. Nothing is replicated
|
|
71
|
+
or merged, so there is no cross-machine read to keep coherent and no
|
|
72
|
+
topic-transfer stranding (the log is not conversation state).
|
|
73
|
+
|
|
74
|
+
## 8. Rollback cost
|
|
75
|
+
|
|
76
|
+
Remove `retainDisagreementExcerpts` from the config block — retention stops
|
|
77
|
+
immediately (live config read, no restart). Existing rows remain valid JSONL
|
|
78
|
+
with an extra field readers may ignore. Deleting already-retained excerpts is a
|
|
79
|
+
file edit on one machine-local log.
|