instar 1.3.346 → 1.3.348
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/server.d.ts.map +1 -1
- package/dist/commands/server.js +121 -5
- package/dist/commands/server.js.map +1 -1
- package/dist/core/CoherenceJournal.d.ts +13 -0
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +16 -0
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/MeshRpc.d.ts +17 -0
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +5 -1
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/PeerPresencePuller.d.ts +45 -0
- package/dist/core/PeerPresencePuller.d.ts.map +1 -1
- package/dist/core/PeerPresencePuller.js +59 -0
- package/dist/core/PeerPresencePuller.js.map +1 -1
- package/dist/monitoring/RateLimitSentinel.d.ts +5 -2
- package/dist/monitoring/RateLimitSentinel.d.ts.map +1 -1
- package/dist/monitoring/RateLimitSentinel.js.map +1 -1
- package/dist/monitoring/sentinelWiring.d.ts +13 -4
- package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
- package/dist/monitoring/sentinelWiring.js +10 -8
- package/dist/monitoring/sentinelWiring.js.map +1 -1
- package/dist/redteam/ScenarioPack.d.ts +22 -5
- package/dist/redteam/ScenarioPack.d.ts.map +1 -1
- package/dist/redteam/ScenarioPack.js +19 -7
- package/dist/redteam/ScenarioPack.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.347.md +76 -0
- package/upgrades/1.3.348.md +57 -0
- package/upgrades/coherence-journal-meshwire.eli16.md +9 -0
- package/upgrades/rate-limit-resume-nudge-internal-channel.eli16.md +35 -0
- package/upgrades/side-effects/coherence-journal-meshwire.md +49 -0
- package/upgrades/side-effects/rate-limit-resume-nudge-internal-channel.md +102 -0
- package/upgrades/side-effects/resolver-verdict-honesty.md +45 -0
- package/upgrades/1.3.346.md +0 -57
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentinelWiring.d.ts","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sentinelWiring.d.ts","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -210,7 +210,8 @@ export const RATE_LIMIT_RESUME_NUDGE = 'The temporary server throttle should hav
|
|
|
210
210
|
/**
|
|
211
211
|
* Build the resume/notify functions for RateLimitSentinel. Both paths ALWAYS
|
|
212
212
|
* record an audit event and never silently return:
|
|
213
|
-
* - resumeFn:
|
|
213
|
+
* - resumeFn: ALWAYS internal inject (no `[telegram:N]` user-message prefix),
|
|
214
|
+
* topic-bound or not — the resume nudge is infrastructure, never a user turn.
|
|
214
215
|
* - notifyFn: session topic → lifeline topic → recovery-unreachable audit.
|
|
215
216
|
*/
|
|
216
217
|
export function buildRateLimitRecoveryDeps(s) {
|
|
@@ -218,16 +219,17 @@ export function buildRateLimitRecoveryDeps(s) {
|
|
|
218
219
|
resumeFn: async (sessionName) => {
|
|
219
220
|
if (!s.isSessionAlive(sessionName))
|
|
220
221
|
return false;
|
|
222
|
+
// The resume nudge ALWAYS goes through the internal recovery channel —
|
|
223
|
+
// topic-bound or not. It un-sticks the session identically to the
|
|
224
|
+
// user-message path (both converge on the same low-level inject) but
|
|
225
|
+
// carries no `[telegram:N]` prefix, so the agent can never mistake it for
|
|
226
|
+
// a message from the user and relay a contradictory "no throttle" reply.
|
|
227
|
+
// The topic (when present) is recorded for the audit trail only.
|
|
228
|
+
// (Incoherence incident 2026-06-05 — see throttle-notice-coherence spec.)
|
|
221
229
|
const topicId = s.getTopicForSession(sessionName);
|
|
222
|
-
if (topicId != null) {
|
|
223
|
-
const ok = s.injectTopicNudge(sessionName, topicId, RATE_LIMIT_RESUME_NUDGE);
|
|
224
|
-
s.recordRecovery(ok ? 'recovery-reached' : 'recovery-unreachable', sessionName, ok ? 'resume nudge injected via topic' : 'topic injectMessage returned false', ['topic']);
|
|
225
|
-
return ok;
|
|
226
|
-
}
|
|
227
|
-
// Non-topic-bound (e.g. interactive dev window): internal injection path.
|
|
228
230
|
const ok = s.injectInternalNudge(sessionName, RATE_LIMIT_RESUME_NUDGE);
|
|
229
231
|
s.recordRecovery(ok ? 'recovery-reached' : 'recovery-unreachable', sessionName, ok
|
|
230
|
-
?
|
|
232
|
+
? `resume nudge injected via internal recovery channel${topicId != null ? ` (topic ${topicId})` : ''}`
|
|
231
233
|
: 'internal injection returned false', ['internal-injection']);
|
|
232
234
|
return ok;
|
|
233
235
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentinelWiring.js","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sentinelWiring.js","sourceRoot":"","sources":["../../src/monitoring/sentinelWiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,15 +89,32 @@ export interface ResolvedExpectation {
|
|
|
89
89
|
governance: Governance;
|
|
90
90
|
/** The constraint text that governs this scenario, when governed. */
|
|
91
91
|
matchedConstraint?: string;
|
|
92
|
+
/**
|
|
93
|
+
* HOW this verdict was produced — Truthful Provenance (constitution): a
|
|
94
|
+
* verdict must carry the method that generated it so consumers never mistake
|
|
95
|
+
* a heuristic for ground truth. Phase 1 is keyword-overlap only; Phase 2's
|
|
96
|
+
* LLM-judged resolver will report `'llm-judged'`.
|
|
97
|
+
*/
|
|
98
|
+
method: 'keyword-heuristic';
|
|
92
99
|
reason: string;
|
|
93
100
|
}
|
|
94
101
|
/**
|
|
95
102
|
* Resolve whether the TARGET org's intent actually governs a scenario — the
|
|
96
|
-
* "cheering vs governing" measurement
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
103
|
+
* "cheering vs governing" measurement. Reuses the G1 IntentTestHarness: a
|
|
104
|
+
* scenario is GOVERNED when one of its constraintHints keyword-overlaps a
|
|
105
|
+
* constraint that refuses.
|
|
106
|
+
*
|
|
107
|
+
* ⚠ BRITTLENESS — STATED, NOT HIDDEN (Truthful Provenance): the underlying
|
|
108
|
+
* match is KEYWORD OVERLAP, which is conservative and produces FALSE NEGATIVES.
|
|
109
|
+
* It misses semantically-related constraints whose wording differs (live
|
|
110
|
+
* example: a constraint "never present unverified WORK as completed" does NOT
|
|
111
|
+
* keyword-match a scenario about "estimates as CONFIRMED numbers", so the
|
|
112
|
+
* scenario reads "ungoverned" though the rule plainly governs it in spirit).
|
|
113
|
+
* It is also rephrase-bypassable (CMT-1110). Therefore an `ungoverned` verdict
|
|
114
|
+
* is a CANDIDATE gap to verify SEMANTICALLY, never an asserted fact — the
|
|
115
|
+
* `reason` strings and `method` field say so explicitly so no consumer (or
|
|
116
|
+
* report, or future session) treats a keyword miss as a real intent hole. The
|
|
117
|
+
* real fix is the Phase-2 LLM-judged resolver (CMT-1126).
|
|
101
118
|
*
|
|
102
119
|
* `conflicted` is reserved for the case where a constraint matches but the
|
|
103
120
|
* tradeoff hierarchy would invert the expectation; Phase 1 detects the simple
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioPack.d.ts","sourceRoot":"","sources":["../../src/redteam/ScenarioPack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE;yEACyE;AACzE,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,uBAAuB,GACvB,iBAAiB,GACjB,MAAM,CAAC;AAEX;;yEAEyE;AACzE,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,mBAAmB,CAAC;AAExB,wDAAwD;AACxD,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,CAOlE,CAAC;AAIF,MAAM,MAAM,OAAO,GACf,kBAAkB,GAClB,SAAS,GACT,WAAW,GACX,kBAAkB,GAClB,UAAU,GACV,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAExF,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,wBAAwB,CAAC;AAI3E,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb;4DACwD;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;IACpB,mDAAmD;IACnD,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,WAAW,EAAE,WAAW,CAAC;QACzB;4EACoE;QACpE,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE,eAAe,GAAG,yBAAyB,CAAC;IAClD,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAID,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,EAAE,CAiDlF;AAID,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"ScenarioPack.d.ts","sourceRoot":"","sources":["../../src/redteam/ScenarioPack.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,11 +84,21 @@ export function lintPack(pack, transport) {
|
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
86
|
* Resolve whether the TARGET org's intent actually governs a scenario — the
|
|
87
|
-
* "cheering vs governing" measurement
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
87
|
+
* "cheering vs governing" measurement. Reuses the G1 IntentTestHarness: a
|
|
88
|
+
* scenario is GOVERNED when one of its constraintHints keyword-overlaps a
|
|
89
|
+
* constraint that refuses.
|
|
90
|
+
*
|
|
91
|
+
* ⚠ BRITTLENESS — STATED, NOT HIDDEN (Truthful Provenance): the underlying
|
|
92
|
+
* match is KEYWORD OVERLAP, which is conservative and produces FALSE NEGATIVES.
|
|
93
|
+
* It misses semantically-related constraints whose wording differs (live
|
|
94
|
+
* example: a constraint "never present unverified WORK as completed" does NOT
|
|
95
|
+
* keyword-match a scenario about "estimates as CONFIRMED numbers", so the
|
|
96
|
+
* scenario reads "ungoverned" though the rule plainly governs it in spirit).
|
|
97
|
+
* It is also rephrase-bypassable (CMT-1110). Therefore an `ungoverned` verdict
|
|
98
|
+
* is a CANDIDATE gap to verify SEMANTICALLY, never an asserted fact — the
|
|
99
|
+
* `reason` strings and `method` field say so explicitly so no consumer (or
|
|
100
|
+
* report, or future session) treats a keyword miss as a real intent hole. The
|
|
101
|
+
* real fix is the Phase-2 LLM-judged resolver (CMT-1126).
|
|
92
102
|
*
|
|
93
103
|
* `conflicted` is reserved for the case where a constraint matches but the
|
|
94
104
|
* tradeoff hierarchy would invert the expectation; Phase 1 detects the simple
|
|
@@ -102,13 +112,15 @@ export function resolveExpectation(scenario, intent) {
|
|
|
102
112
|
return {
|
|
103
113
|
governance: 'governed',
|
|
104
114
|
matchedConstraint: r.matchedConstraint,
|
|
105
|
-
|
|
115
|
+
method: 'keyword-heuristic',
|
|
116
|
+
reason: `Governed (by keyword-overlap matching): hint "${hint}" matched constraint "${r.matchedConstraint}".`,
|
|
106
117
|
};
|
|
107
118
|
}
|
|
108
119
|
}
|
|
109
120
|
return {
|
|
110
121
|
governance: 'ungoverned',
|
|
111
|
-
|
|
122
|
+
method: 'keyword-heuristic',
|
|
123
|
+
reason: 'Ungoverned by keyword-overlap matching — meaning NO constraint\'s KEYWORDS matched, which is NOT proof of a real gap: the matcher misses semantically-related constraints (and is rephrase-bypassable). Treat as a CANDIDATE gap to verify semantically (Phase-2 LLM-judge), not as fact.',
|
|
112
124
|
};
|
|
113
125
|
}
|
|
114
126
|
const REFUSAL_MARKERS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioPack.js","sourceRoot":"","sources":["../../src/redteam/ScenarioPack.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScenarioPack.js","sourceRoot":"","sources":["../../src/redteam/ScenarioPack.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-06T06:16:53.583Z",
|
|
5
|
+
"instarVersion": "1.3.348",
|
|
6
6
|
"entryCount": 199,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Honest turn-receipts — the standby (🔭) system now tells the truth about WHY a
|
|
9
|
+
turn failed instead of saying "actively working" while a session is dead.
|
|
10
|
+
|
|
11
|
+
Three incidents in two days had one symptom: a delivered message that never got
|
|
12
|
+
a reply, while the standby showed "🔭 actively working." Root: the tier-3
|
|
13
|
+
assessment classified a session "working" whenever it had a live child process
|
|
14
|
+
— but a rate-limited, policy-wedged, or context-exhausted session HAS a live
|
|
15
|
+
process (the model CLI is alive, just failing every turn). The live process
|
|
16
|
+
forced the lie. Separately, the "conversation too long" standby fired on that
|
|
17
|
+
phrase anywhere in the buffer, so a stale scrolled-past mention surfaced as
|
|
18
|
+
noise on healthy sessions.
|
|
19
|
+
|
|
20
|
+
New `StuckSignatureClassifier` (pure, tail-gated, signal-only) classifies a
|
|
21
|
+
live-but-failing session from its LIVE tmux tail — rate-limited / policy-wedge /
|
|
22
|
+
context-wedge / context-too-long — and PresenceProxy surfaces the real reason
|
|
23
|
+
instead of "working". Tail-gating (the signature must be the live tail, not a
|
|
24
|
+
scrollback mention) is the same discriminator that kills the "conversation too
|
|
25
|
+
long" noise. The classifier defers to any recovery sentinel that already owns a
|
|
26
|
+
session's recovery, so the user always hears one voice. Recovery itself is
|
|
27
|
+
unchanged — this only makes the messaging honest.
|
|
28
|
+
|
|
29
|
+
Fixes a coherence bug in rate-limit recovery where the agent appeared to **argue with itself** during an Anthropic throttle.
|
|
30
|
+
|
|
31
|
+
When the RateLimitSentinel detected a throttle it did two things: posted a user-facing "heads up — throttled, backing off" notice (intended), and — after backing off — poked the session with a "the throttle should have cleared, please continue" resume nudge to un-stick it. The bug was in the second part: that internal nudge was injected wearing a `[telegram:N]` prefix, the **exact** wire format of a real inbound user message. The agent could not distinguish its own recovery infrastructure from a message from the user, so it answered the nudge conversationally ("no throttle on my end, still rolling") and — because every `[telegram:N]` message triggers the mandatory "relay your reply to the user" rule — posted that denial into the topic, landing between the sentinel's own "still throttled" notices. To the user it read as the agent contradicting itself, and during a fleet-wide throttle (many sessions limited at once) it happened across several topics simultaneously.
|
|
32
|
+
|
|
33
|
+
The fix routes the resume nudge through the **internal recovery channel** instead of the user-message path. It un-sticks the session identically (both paths converge on the same low-level injection) but carries no `[telegram:N]` prefix, so the agent never mistakes it for the user and never relays a contradictory reply. The dead user-message injection path for the resume nudge was removed entirely so the bug cannot reappear. The "throttled / back online" notices are unchanged.
|
|
34
|
+
|
|
35
|
+
This change also ratifies a new constitutional standard — **Truthful Provenance — Speak Only as Yourself** (`docs/STANDARDS-REGISTRY.md`): every message into an agent carries an identity, and infrastructure must never wear the user's.
|
|
36
|
+
|
|
37
|
+
## What to Tell Your User
|
|
38
|
+
|
|
39
|
+
When a message of yours goes unanswered, I'll now tell you the real reason if I
|
|
40
|
+
can't reply — "I've hit the usage limit, resets 10:30pm", "my session got stuck
|
|
41
|
+
on a content-policy error, resend your last message" — instead of a misleading
|
|
42
|
+
"actively working." And the "conversation too long" messages that used to pop up
|
|
43
|
+
when nothing was wrong are gone: that only fires now when it's actually
|
|
44
|
+
happening.
|
|
45
|
+
|
|
46
|
+
If you ever saw your agent post "hit a throttle, backing off" and then, moments later in the same topic, "no throttle on my end, still rolling" — it wasn't confused or hijacked. Its rate-limit recovery was poking the session to continue, but that poke was formatted exactly like a message from you, so the agent answered it as if you'd said it. That's fixed: the recovery poke now travels an internal channel it can't mistake for you, so during a throttle you'll see a clean, coherent sequence of "throttled → still throttled → back online" instead of the agent seeming to disagree with itself. The recovery itself always worked; only the narration was incoherent, and now it isn't.
|
|
47
|
+
|
|
48
|
+
## Summary of New Capabilities
|
|
49
|
+
|
|
50
|
+
- `StuckSignatureClassifier` — tail-gated classification of a live-but-failing
|
|
51
|
+
session (rate-limited / policy-wedge / context-wedge / context-too-long) with
|
|
52
|
+
an honest user-facing message per kind. Pure + signal-only.
|
|
53
|
+
- PresenceProxy tier-3 surfaces the honest reason instead of "working", defers
|
|
54
|
+
to an owning recovery sentinel (`isStuckRecoveryActive`), and no longer fires
|
|
55
|
+
the context-too-long notice on a stale scrollback mention.
|
|
56
|
+
- CLAUDE.md "Honest standby (turn-receipts)" section so agents can explain the
|
|
57
|
+
new behavior and the noise fix.
|
|
58
|
+
|
|
59
|
+
- None — this is a behavior fix, not a new capability. No new endpoints or config. It takes effect on the next server restart after the update.
|
|
60
|
+
|
|
61
|
+
## Evidence
|
|
62
|
+
|
|
63
|
+
Grounded in the real 2026-06-04/05 incidents (rate-limit, AUP-wedge) using the
|
|
64
|
+
verbatim pane text. 30+ new unit tests both sides of every boundary
|
|
65
|
+
(honest-when-stuck AND quiet-when-fine, incl. the stale-scrollback noise case
|
|
66
|
+
and prose-mentions-a-limit false positive) + a behavioral test driving the real
|
|
67
|
+
fireTier3 with a live child process (wedge → honest, NOT "working"; deference →
|
|
68
|
+
silent) + migrator add/idempotent + server.ts wiring guard. All 119 existing
|
|
69
|
+
presence tests pass; tsc clean; preflight PASS.
|
|
70
|
+
|
|
71
|
+
Tier-1 fix; 59 tests green across the rate-limit/sentinel suites, `tsc --noEmit` clean, independent second-pass reviewer concurred (sentinel/recovery path):
|
|
72
|
+
|
|
73
|
+
- New regression in `tests/unit/rate-limit-recovery-reachability.test.ts` asserting the resume nudge is internal-only and its text never contains a `[telegram:` prefix (anti-impersonation), plus the updated topic-bound resumeFn contract.
|
|
74
|
+
- `tests/integration/rate-limit-recovery-sentinel-lifecycle.test.ts` re-pinned around the internal-only path.
|
|
75
|
+
- Root cause confirmed live in `logs/sentinel-events.jsonl` (fleet-wide throttle, ~7 sessions each logging "resume nudge injected via topic" pre-fix).
|
|
76
|
+
- Sibling sweep: the compaction-resume inject (honest provenance — fires only on a genuinely unanswered user message) is tracked for audit under the new standard at #894.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: minor -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**Coherence Journal mesh transport (P1 closing step)** — the `journal-sync`
|
|
9
|
+
MeshCommand + receive handler + own-stream advert on the `session-status`
|
|
10
|
+
response + `PeerPresencePuller` delta-drive that runs the merged
|
|
11
|
+
`JournalSyncApplier` over the existing 30s machine check-in
|
|
12
|
+
(COHERENCE-JOURNAL-SPEC §3.4 rule 5). Adverts are O(kinds) integers on the
|
|
13
|
+
heartbeat; entry deltas ride separate size-capped requests. Ships DARK
|
|
14
|
+
everywhere (gated on explicit `multiMachine.coherenceJournal.replication.enabled
|
|
15
|
+
=== true`) — merge does not change live mesh traffic; cross-machine sync is
|
|
16
|
+
a deliberate flip (the live two-machine proof).
|
|
17
|
+
|
|
18
|
+
The MTP red-team harness resolver (`src/redteam/ScenarioPack.ts`) now states its
|
|
19
|
+
governance verdicts honestly. Every `ResolvedExpectation` carries a `method`
|
|
20
|
+
field (`keyword-heuristic`), and the `reason` strings name their keyword-overlap
|
|
21
|
+
basis instead of asserting the verdict as fact — an `ungoverned` result is now
|
|
22
|
+
framed as a candidate to verify semantically, not a proven intent gap. The
|
|
23
|
+
matching logic is unchanged; only the verdict's self-description.
|
|
24
|
+
|
|
25
|
+
## What to Tell Your User
|
|
26
|
+
|
|
27
|
+
This is the wire that lets your agent's machines actually exchange their
|
|
28
|
+
diaries — but it ships switched OFF. Turning it on (so the Laptop can answer
|
|
29
|
+
"where did this conversation live on the Mini?") is a deliberate, watched
|
|
30
|
+
step, not something a code update flips silently.
|
|
31
|
+
|
|
32
|
+
Nothing user-facing changes. This is an internal correctness fix to an
|
|
33
|
+
experimental capability: the red-team harness no longer overstates a crude
|
|
34
|
+
keyword-match result as a definitive finding.
|
|
35
|
+
|
|
36
|
+
## Summary of New Capabilities
|
|
37
|
+
|
|
38
|
+
- None user-invocable yet — the transport is dark until the replication
|
|
39
|
+
switch is turned on. Internal: `journal-sync` mesh verb + advert-driven
|
|
40
|
+
delta replication.
|
|
41
|
+
|
|
42
|
+
- `ResolvedExpectation.method` field for provenance of every governance verdict.
|
|
43
|
+
- Honest verdict `reason` strings (keyword-overlap basis named; `ungoverned`
|
|
44
|
+
framed as candidate-to-verify).
|
|
45
|
+
|
|
46
|
+
## Evidence
|
|
47
|
+
|
|
48
|
+
- Integration round-trip (two in-process journal+applier pairs through a
|
|
49
|
+
real signed MeshRpc envelope; forged-sender rejection) + gated-drive unit
|
|
50
|
+
test (no-op when off, never throws). tsc + full lint chain clean.
|
|
51
|
+
|
|
52
|
+
Not a behavior change to classification — a truthfulness fix to the verdict
|
|
53
|
+
text + a provenance field, required by the Truthful Provenance standard (#896).
|
|
54
|
+
The brittleness it makes honest about was observed live: a false-negative
|
|
55
|
+
`ungoverned` verdict on the first boundary map. Verified by 26 unit tests
|
|
56
|
+
(one new, asserting method-provenance and that the as-fact phrasing is gone) and
|
|
57
|
+
a clean `tsc --noEmit`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# The diaries actually sync now (P1 closing step — mesh transport)
|
|
2
|
+
|
|
3
|
+
P1.1 made each machine keep its diaries, P1.2 made them readable, P1.3 built the engine that safely receives a peer's diary. This is the wire that connects them: machines now actually hand each other their diaries over the secure line they already use.
|
|
4
|
+
|
|
5
|
+
It's deliberately tiny and cheap. The existing once-every-30-seconds "are you alive?" check between machines now carries one extra scrap of information: a peer's "I'm at line N in each of my diaries." When a machine notices a peer is further along than the copy it holds, it asks for just the missing lines — over a separate, size-capped request, so the fast heartbeat itself never gets heavy. The receiving side runs every defense from P1.3 (a machine can only hand over its OWN diary; every line validated; restores caught; nothing trusted until durably saved).
|
|
6
|
+
|
|
7
|
+
**The safety choice that matters:** this ships DARK even on me. Merging it does NOT turn on cross-machine syncing. The transport and the drive are gated behind an explicit "replication on" switch that defaults off everywhere — so landing this code changes nothing about live mesh traffic. Turning it on between the Laptop and the Mini is a separate, deliberate, watched step (the live proof you pre-approved). This is on purpose: the mesh is load-bearing for everything, and "merge a PR" should never silently rewire it.
|
|
8
|
+
|
|
9
|
+
What the live proof will show, once both machines are on this version and I flip the switch: move conversation 13481 from the Laptop to the Mini, then ask the LAPTOP "where did 13481 live and why did it move?" — and it answers correctly from the Mini's synced diary. That's the whole initiative's promise, demonstrated end to end. After the proof, the switch can become the spec's default (live-on-dev); until then it stays off so nothing surprises us.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
user_announcement:
|
|
3
|
+
audience: user
|
|
4
|
+
maturity: stable
|
|
5
|
+
summary: "When a rate-limit clears, the agent no longer appears to argue with itself in chat."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# The agent no longer argues with itself while recovering from a rate limit
|
|
9
|
+
|
|
10
|
+
When an Anthropic throttle hit a session, you could see something incoherent in the topic: the agent would post "heads up — hit a throttle, backing off," then a moment later post "no throttle on my end, still rolling," then "still throttled, next retry in 2m." Same agent, same topic, contradicting itself — and during a fleet-wide throttle (many sessions limited at once) it happened in several topics at the same time. The recovery always worked in the end; the *narration* of it looked like the agent was fighting itself.
|
|
11
|
+
|
|
12
|
+
Here is exactly what was happening. The rate-limit sentinel does two separate things when it detects a throttle:
|
|
13
|
+
|
|
14
|
+
1. It posts a user-facing notice to your topic ("hit a throttle, backing off, you haven't been dropped") — the heads-up you asked for.
|
|
15
|
+
2. After it backs off, it pokes the session with a "the throttle should have cleared — please continue where you left off" nudge, to un-stick it.
|
|
16
|
+
|
|
17
|
+
The bug was in step 2. That internal poke was injected into the session wearing a `[telegram:N]` prefix — the **exact** format a real message from you uses. So the session literally could not tell the difference between its own recovery infrastructure and you texting it. It treated the nudge as a message from you, answered it conversationally ("got it — no throttle on my end, still rolling"), and — because every message that looks like it's from you triggers the mandatory "relay your reply back to the user" rule — posted that denial into the topic. Right next to the sentinel's own "still throttled" notices. The sentinel was correct (there really was a throttle); the agent was answering the sentinel's poke as if it were you, and denying the throttle because from its seat the turn had finished fine.
|
|
18
|
+
|
|
19
|
+
## The fix
|
|
20
|
+
|
|
21
|
+
The resume nudge now goes through the **internal recovery channel** instead of the user-message path. It still un-sticks the session exactly the same way (both paths converge on the same low-level injection), but it no longer carries a `[telegram:N]` prefix — so the agent can never mistake it for a message from you, and never relays a contradictory "no throttle" reply. The dead user-message injection path for the resume nudge was removed entirely, so the bug cannot reappear.
|
|
22
|
+
|
|
23
|
+
The heads-up notices you DID ask for ("throttled, backing off" / "still throttled, retrying" / "back online") are unchanged. With the contradictory replies gone, those notices now read as a clean, coherent sequence instead of an argument.
|
|
24
|
+
|
|
25
|
+
## What you need to decide
|
|
26
|
+
|
|
27
|
+
Nothing. This is a behavior fix with no configuration. It takes effect on the next server restart after the update lands.
|
|
28
|
+
|
|
29
|
+
## How to verify it worked
|
|
30
|
+
|
|
31
|
+
The next time a session hits a throttle, watch the topic: you'll see the sentinel's notices in order, with no "no throttle on my end" denial interleaved. The internal nudge is recorded in `logs/sentinel-events.jsonl` as "resume nudge injected via internal recovery channel" (it used to say "via topic").
|
|
32
|
+
|
|
33
|
+
## The deeper lesson
|
|
34
|
+
|
|
35
|
+
This is the first enforcement of a new constitutional standard, **Truthful Provenance — Speak Only as Yourself**: every message delivered into an agent carries an identity, and the agent acts on who it believes is speaking before it acts on the words. Infrastructure must speak as infrastructure, never wearing the user's face. Tests pin the contract — the resume nudge can never again be injected with a user-message prefix.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Side-Effects Review — Coherence Journal mesh transport (P1 closing step)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `coherence-journal-meshwire`
|
|
4
|
+
**Date:** `2026-06-05`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required as a PR-time pass — design converged (§3.4 rule 5); this is the transport that drives the already-merged, already-reviewed JournalSyncApplier`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Wires the `journal-sync` mesh transport (COHERENCE-JOURNAL-SPEC §3.4 rule 5) that drives the merged `JournalSyncApplier`: a `journal-sync` MeshCommand (read/observe RBAC class), an always-registered receive handler (serve own-stream batch / apply inbound), the own-stream advert piggybacked on the `session-status` response, and the `PeerPresencePuller` delta-drive (request + apply when a peer is ahead). The SEND/drive path is gated on `multiMachine.coherenceJournal.replication.enabled === true` (explicit true only) — ships DARK on every agent including echo; merge does not alter live mesh traffic.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
- `journal-sync` RBAC classification — ADD — read/observe class (any registered peer), same as capacity-report/session-status. No new authority: it serves/accepts replica DATA, never an actuation.
|
|
14
|
+
- Replication activation — gated on explicit `replication.enabled===true`; absent in ConfigDefaults → false everywhere. The proof flips it deliberately.
|
|
15
|
+
|
|
16
|
+
## 1. Over-block
|
|
17
|
+
Receive handler rejects forged/invalid entries via the applier's §3.4 gates (already reviewed) — counted, never silent. No new over-block surface on the live path (drive is dark).
|
|
18
|
+
|
|
19
|
+
## 2. Under-block
|
|
20
|
+
First-hop-only: a third machine's history relayed by a peer is rejected (accepted P1 limitation; transitive relay is post-P1). The receive handler being always-on is safe because the applier validates every entry and no peer SENDS unless its own replication flag is on.
|
|
21
|
+
|
|
22
|
+
## 3. Level-of-abstraction fit
|
|
23
|
+
Transport is a thin driver over the pure applier/writer; the puller carries the advert because the puller IS the existing 30s cadence (no new timer — §3.4 rule 5's grounded correction). Right seam.
|
|
24
|
+
|
|
25
|
+
## 4. Signal vs authority compliance
|
|
26
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
27
|
+
- [x] No — the transport moves signal data (replica streams). The §3.9 actuation-ban lint (merged) keeps consumers signal-only.
|
|
28
|
+
|
|
29
|
+
## 5. Interactions
|
|
30
|
+
- Heartbeat bloat: the advert is O(kinds) integers on the session-status RESPONSE; entry payloads ride SEPARATE size-capped journal-sync requests, never the heartbeat envelope (the master spec's JSON.stringify-on-hot-path root cause is avoided).
|
|
31
|
+
- Mixed-version: an old peer RBAC-default-denies journal-sync (403) or has no handler (501); the sender treats both as "peer lacks the verb" and backs off — no retry storm (gated drive only runs when replication is on anyway).
|
|
32
|
+
- Backward-compat: the journalAdvert field on session-status is optional; old callers parse permissively and ignore it (verified).
|
|
33
|
+
- guardWrite seam: replica appends go through state.guardJournalWrite (standby-safe, prefix-allowlisted) — same as the writer.
|
|
34
|
+
|
|
35
|
+
## 6. External surfaces
|
|
36
|
+
- New mesh verb on the wire ONLY when replication.enabled===true on the sender. On merge: dark everywhere → zero new mesh traffic. The receive handler accepts journal-sync if a peer ever sends, but no peer sends while dark.
|
|
37
|
+
- New replica files under state/coherence-journal/peers/ ONLY once the proof flips it on.
|
|
38
|
+
|
|
39
|
+
## 7. Rollback cost
|
|
40
|
+
Pure code revert + patch; replica files inert plain JSONL. The dark default means rollback before the proof is a no-op in practice.
|
|
41
|
+
|
|
42
|
+
## Conclusion
|
|
43
|
+
The transport lands dark by explicit gate so merge ≠ live mesh change; the live two-machine proof is a deliberate, monitored flip (pre-approved). The §3.4-rule-5 grounded transport (advert on the real 30s pull, deltas separate + capped) is implemented as specified. After a successful proof, the gate can move to the spec's live-on-dev default in a follow-up. Clear to ship dark.
|
|
44
|
+
|
|
45
|
+
## Second-pass review (if required)
|
|
46
|
+
**Reviewer:** convergence panel (§3.4 design-time) + the live two-machine proof as the closing functional verification.
|
|
47
|
+
|
|
48
|
+
## Evidence pointers
|
|
49
|
+
- tests/integration/journal-sync-roundtrip.test.ts (two in-process pairs through a real signed envelope; forged-sender rejection), tests/unit/PeerPresencePuller-journal.test.ts (gated drive; no-op when off; never throws).
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Side-Effects Review — Rate-limit resume nudge routed through internal channel (not the user-message path)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `rate-limit-resume-nudge-internal-channel`
|
|
4
|
+
**Date:** `2026-06-05`
|
|
5
|
+
**Author:** `Echo (instar-dev agent)`
|
|
6
|
+
**Second-pass reviewer:** `independent reviewer subagent`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The RateLimitSentinel's post-backoff resume nudge ("the throttle should have cleared — please continue where you left off") was injected into the throttled session via `injectTopicNudge`, which prefixes the text with `[telegram:${topicId}]` — the exact wire format of a real inbound user message. The agent therefore could not distinguish the infrastructure's own poke from a message from the user: it answered the nudge conversationally ("no throttle on my end, still rolling") and, because the `[telegram:N]` prefix triggers the mandatory "relay your reply to the user" rule, posted that denial into the topic between the sentinel's own throttle notices — appearing to contradict itself. The change routes the resume nudge through the internal recovery channel (`injectInternalNudge` → `injectInternalMessage`) for ALL sessions, topic-bound or not. The internal path converges on the same low-level `rawInject` (identical un-stick behavior) but carries no user-message prefix, so the agent never mistakes it for the user. The now-dead `injectTopicNudge` method is removed from `RateLimitRecoverySurface` and its `server.ts` wiring. Files: `src/monitoring/sentinelWiring.ts`, `src/commands/server.ts`, plus the two rate-limit recovery test files.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `buildRateLimitRecoveryDeps.resumeFn` (sentinelWiring.ts) — **modify** — was: topic-bound → `[telegram:N]`-prefixed inject; non-topic-bound → internal inject. Now: ALL sessions → internal inject; topic recorded in audit detail only.
|
|
15
|
+
- `RateLimitRecoverySurface.injectTopicNudge` (interface + server.ts wiring) — **remove** — the prefixed-inject path is deleted so the resume nudge cannot use it again.
|
|
16
|
+
- The user-facing notice path (`notifyFn` → `deliverNotice` → Telegram) — **pass-through** — unchanged; the "throttled / back online" heads-ups still post exactly as before.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Over-block
|
|
21
|
+
|
|
22
|
+
No block/allow surface — over-block not applicable. This change selects an injection channel; it neither rejects nor admits inputs.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Under-block
|
|
27
|
+
|
|
28
|
+
No block/allow surface — under-block not applicable. The recovery still fires on every detected throttle; nothing is newly suppressed. The user-facing throttle notices are unchanged.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. Level-of-abstraction fit
|
|
33
|
+
|
|
34
|
+
Correct layer. The resume nudge is infrastructure→session communication; the right primitive for that is `injectInternalMessage` (`source: 'sentinel-recovery'`), which exists precisely for "trusted internal nudge that bypasses the topic-prefix requirement" and logs the trusted bypass to the security log. The previous design borrowed the user-message primitive (`injectMessage` with a topic prefix) for InputGuard-provenance convenience, which was the wrong layer — it made an infra signal indistinguishable from user speech. The fix moves the resume to the primitive built for it. No higher-level gate is bypassed; the InputGuard provenance check the old path ran is intentionally not needed for a known-internal nudge (and `injectInternalMessage` records the bypass).
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 4. Signal vs authority compliance
|
|
39
|
+
|
|
40
|
+
**Required reference:** docs/signal-vs-authority.md
|
|
41
|
+
|
|
42
|
+
- [x] No — this change has no block/allow surface.
|
|
43
|
+
|
|
44
|
+
The change chooses a delivery channel for a recovery nudge. It holds no blocking authority and adds no brittle gate. It removes an accidental coupling (infra wearing the user's identity), which strictly reduces surface.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 5. Interactions
|
|
49
|
+
|
|
50
|
+
- **Shadowing:** None. The resume nudge and the user-facing notice are separate paths (`resumeFn` vs `notifyFn`); this change touches only `resumeFn`. The notice path is untouched.
|
|
51
|
+
- **Double-fire:** Reduced. Previously the agent burned a full conversational-reply turn answering each nudge (and relayed it). That spurious turn is eliminated — fewer LLM turns hitting the already-throttled account during a fleet-wide throttle.
|
|
52
|
+
- **Races:** No new shared state. `rawInject` resets the same idle-prompt timer it always did; the verify()/JSONL-growth recovery detection is unchanged. The internal path was already the live path for non-topic-bound sessions, so its reliability is proven in production.
|
|
53
|
+
- **Feedback loops:** This CLOSES one. The old behavior was a feedback loop — sentinel poke → agent reply → relayed to topic → contradicts sentinel notice. Removing the user-message framing breaks the loop at its source.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 6. External surfaces
|
|
58
|
+
|
|
59
|
+
- **Other agents / users (install base):** behavior change ships to every instar agent on update. It strictly improves coherence (removes self-contradiction during throttle recovery); no capability is added or removed.
|
|
60
|
+
- **Telegram:** fewer messages posted to topics during a throttle (the spurious "no throttle on my end" replies stop). The intended "throttled / back online" notices are unchanged.
|
|
61
|
+
- **Persistent state:** the audit line in `logs/sentinel-events.jsonl` / recovery records now reads "resume nudge injected via internal recovery channel (topic N)" instead of "via topic". Read-only observability; no consumer parses the prior exact string for control flow.
|
|
62
|
+
- **Timing/runtime:** none introduced. Same inject mechanism, same timers.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 7. Rollback cost
|
|
67
|
+
|
|
68
|
+
Pure code change — revert the two source edits and ship as the next patch. No persistent state, no schema, no migration, no agent-state repair. The only user-visible effect during a rollback window would be the return of the original incoherence, not a hard failure. Recovery itself never depended on the prefix (both channels converge on `rawInject`), so reverting cannot break un-sticking.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Conclusion
|
|
73
|
+
|
|
74
|
+
The review found no block/allow surface and no new authority — the change removes an accidental identity coupling (infrastructure injecting a nudge that looked like a user message) and replaces it with the purpose-built internal channel. It reduces external surface (fewer spurious Telegram messages, fewer wasted LLM turns under throttle) and closes a self-reinforcing feedback loop. The one related site found in the sibling sweep — the compaction-resume re-inject in `server.ts`, which also uses a `[telegram:N]` prefix — is left unchanged because it only fires when there is a genuinely unanswered user message, where a relayed reply is wanted; it is tracked for audit under the new Truthful Provenance standard at JKHeadley/instar#894 rather than altered here. Clear to ship. Regression coverage pins the contract (the resume nudge can never again carry a `[telegram:` prefix).
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Second-pass review (if required)
|
|
79
|
+
|
|
80
|
+
**Reviewer:** independent reviewer subagent
|
|
81
|
+
**Independent read of the artifact: CONCUR**
|
|
82
|
+
|
|
83
|
+
The reviewer independently read the diff and the SessionManager injection internals and concurred the fix is correct, minimal, and the artifact is honest:
|
|
84
|
+
|
|
85
|
+
- **Resume parity is real (the load-bearing claim).** `injectInternalNudge` → `injectInternalMessage` (SessionManager.ts:3060) and the old `injectTopicNudge` → `injectMessage` both converge on the identical `rawInject` (3080): same bracketed-paste, same framework-aware Enter (codex double-Enter), same `verifyInjection`/`recordStrandedDraftMarker`. The fix does not weaken un-sticking. The redundant `isSessionAlive` guard inside `injectInternalMessage` is harmless (resumeFn already guards it).
|
|
86
|
+
- **The relay-trigger cannot fire on the new path.** The mandatory "relay your reply" behavior keys strictly on the anchored `^\[telegram:(\d+)` prefix (InputGuard.ts:114; UserPromptSubmit hook regex). The bare nudge text carries no such prefix; the new test asserts `not.toContain('[telegram:')`, pinning the contract.
|
|
87
|
+
- **Audit/recordRecovery preserved.** Collapses to one `recordRecovery(..., ['internal-injection'])`; topic retained in the detail string, verified by the updated unit test.
|
|
88
|
+
- **No dead/broken code.** `injectTopicNudge` fully removed from interface, server.ts wiring, and both test harnesses (grep returns zero hits); typecheck clean.
|
|
89
|
+
- **The "compaction-resume is defensible to leave" judgment is correct, with a concrete reason.** That sibling inject (server.ts:6053-6055) is gated on `lastReal?.fromUser` — it fires only when the most recent real message is a genuinely unanswered user message, where a relayed reply is wanted. The RateLimitSentinel resume has no such gate, which is exactly why a user prefix there manufactured a phantom user turn. Structurally different cases.
|
|
90
|
+
- **No edge-case regression** for InputGuard provenance (the internal path auditably bypasses it via the logged `internal-recovery-injection` event), multi-line handling (nudge is single-line), or codex-vs-claude submit (shared `rawInject`).
|
|
91
|
+
|
|
92
|
+
**Reviewer nits, both resolved:**
|
|
93
|
+
1. Stale comments that still described the nudge as "topic-tagged so InputGuard accepts it" (RateLimitSentinel.ts:85 + sentinelWiring.ts:329) — **fixed** in this change so no future reader re-introduces the prefix.
|
|
94
|
+
2. The compaction-resume "leave unchanged" decision must be tracked durably, not left as prose — **filed as JKHeadley/instar#894** (audit it under the new Truthful Provenance standard).
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Evidence pointers
|
|
99
|
+
|
|
100
|
+
- Root cause confirmed live in `logs/sentinel-events.jsonl` (2026-06-06 ~04:31Z): a fleet-wide throttle drove ~7 sessions through this recovery, each logging "resume nudge injected via topic".
|
|
101
|
+
- Smoking-gun line: `src/commands/server.ts` `injectTopicNudge: (name, topicId, text) => sessionManager.injectMessage(name, \`[telegram:${topicId}] ${text}\`)` (pre-fix).
|
|
102
|
+
- Tests: `tests/unit/rate-limit-recovery-reachability.test.ts` (incl. new anti-impersonation regression) + `tests/integration/rate-limit-recovery-sentinel-lifecycle.test.ts`; 59 tests green across the rate-limit/sentinel suites.
|