instar 1.3.883 → 1.3.885
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 +6 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +12 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/threadline/ThreadLog.d.ts +2 -0
- package/dist/threadline/ThreadLog.d.ts.map +1 -1
- package/dist/threadline/ThreadLog.js +2 -0
- package/dist/threadline/ThreadLog.js.map +1 -1
- package/dist/threadline/ThreadlineReapRecovery.d.ts +4 -0
- package/dist/threadline/ThreadlineReapRecovery.d.ts.map +1 -1
- package/dist/threadline/ThreadlineReapRecovery.js +58 -4
- package/dist/threadline/ThreadlineReapRecovery.js.map +1 -1
- package/dist/threadline/ThreadlineReplyValidation.d.ts.map +1 -1
- package/dist/threadline/ThreadlineReplyValidation.js.map +1 -1
- package/dist/threadline/recordThreadMessage.d.ts.map +1 -1
- package/dist/threadline/recordThreadMessage.js +1 -0
- package/dist/threadline/recordThreadMessage.js.map +1 -1
- package/package.json +2 -2
- package/scripts/lint-migration-consumer-completeness.js +301 -0
- package/src/data/builtin-manifest.json +20 -20
- package/src/templates/scripts/telegram-reply.sh +15 -0
- package/upgrades/1.3.884.md +24 -0
- package/upgrades/1.3.885.md +25 -0
- package/upgrades/migration-consumer-completeness.eli16.md +9 -0
- package/upgrades/side-effects/migration-consumer-completeness.md +82 -0
- package/upgrades/side-effects/telegram-reply-bounded-outcome.md +76 -0
- package/upgrades/telegram-reply-bounded-outcome.eli16.md +9 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Side-Effects Review — Telegram reply bounded outcome
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `telegram-reply-bounded-outcome`
|
|
4
|
+
**Date:** `2026-07-19`
|
|
5
|
+
**Author:** `Instar Agent (instar-codey)`
|
|
6
|
+
**Second-pass reviewer:** `/root/cross_engine_completion` (independent reviewer subagent)
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
The shipped Telegram reply template bounds its final HTTP request and explicitly renders transport ambiguity. This closes `fb-9c139a25-11e` at the outcome-observability class level.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- Final relay curl — modified transport boundary — limits connection to 3 seconds and total time to 125 seconds.
|
|
15
|
+
- Curl transport-status branch — new — reports an ambiguous outcome and prevents automatic recovery classification when no HTTP status exists.
|
|
16
|
+
|
|
17
|
+
## 1. Over-block
|
|
18
|
+
|
|
19
|
+
No valid HTTP response is rejected. The overall client window is five seconds longer than the server's 120-second outbound route budget, so the server retains authority to return a structured success, timeout, or tone rejection. A transport failure exits as ambiguity rather than falsely blocking the message.
|
|
20
|
+
|
|
21
|
+
## 2. Under-block
|
|
22
|
+
|
|
23
|
+
The helper cannot prove whether the server accepted a request before a network failure. It therefore makes no delivered/not-delivered claim. The delivery id is surfaced for durable investigation, and the caller is explicitly told to verify before retrying.
|
|
24
|
+
|
|
25
|
+
## 3. Level-of-abstraction fit
|
|
26
|
+
|
|
27
|
+
The boundary belongs in the caller that owns curl lifecycle and transcript output. The server already owns semantic tone review and delivery; moving transport-process interpretation into that server would not help a caller that never receives an HTTP response.
|
|
28
|
+
|
|
29
|
+
## 4. Signal vs authority compliance
|
|
30
|
+
|
|
31
|
+
Per `docs/signal-vs-authority.md`, curl exit status is exact transport evidence, not a semantic heuristic. It has authority only to classify the HTTP outcome as unavailable. It does not claim delivery failure or authorize a retry.
|
|
32
|
+
|
|
33
|
+
## 4b. Judgment-point check
|
|
34
|
+
|
|
35
|
+
No competing-signals judgment. A nonzero curl exit with no completed HTTP response deterministically means the caller lacks an HTTP outcome; delivery remains explicitly ambiguous.
|
|
36
|
+
|
|
37
|
+
## 5. Interactions
|
|
38
|
+
|
|
39
|
+
HTTP 200, 408, 422, and recoverable status handling is unchanged. The new transport branch runs before HTTP parsing, so a synthetic `000` from a completed curl remains in the existing recovery matrix while an actual curl failure never gets blindly enqueued. The original shell did not enable errexit; the change preserves that state.
|
|
40
|
+
|
|
41
|
+
## 6. External surfaces
|
|
42
|
+
|
|
43
|
+
Agents now receive a non-empty, actionable ambiguity message after a bounded transport failure. Normal user-visible Telegram messages and tone rejection text are unchanged.
|
|
44
|
+
|
|
45
|
+
## 6b. Operator-surface quality
|
|
46
|
+
|
|
47
|
+
The output names uncertainty, prohibits blind retry, and includes the delivery id without exposing credentials or raw response internals.
|
|
48
|
+
|
|
49
|
+
## 7. Multi-machine posture
|
|
50
|
+
|
|
51
|
+
Machine-local by design: the helper calls the owning agent server resolved from the owning agent home. The reported delivery id is the same id sent to that server, so investigation remains tied to the correct machine-local ledger. No URL or replicated state is introduced.
|
|
52
|
+
|
|
53
|
+
## 8. Rollback cost
|
|
54
|
+
|
|
55
|
+
Pure template and test change. Revert and ship a patch; existing installed scripts will be refreshed by the normal template migrator. No data repair or schema migration is needed.
|
|
56
|
+
|
|
57
|
+
## Conclusion
|
|
58
|
+
|
|
59
|
+
The missing standard was outcome-bearing-call completeness: external calls must be bounded and must render success, rejection, or ambiguity. The process gap was HTTP-status coverage without transport-exit coverage. The behavioral curl-timeout test closes the class. Independent review is required because this changes an outbound messaging decision path.
|
|
60
|
+
|
|
61
|
+
## Second-pass review
|
|
62
|
+
|
|
63
|
+
**Reviewer:** `/root/cross_engine_completion`
|
|
64
|
+
**Independent read:** concur after correction. The reviewer initially found that the immediately prior shipped template SHA was absent from the safe migration allowlist, so existing agents would receive only a `.new` candidate, and that the emergency inline fallback retained an unbounded curl. Both were required corrections. The migration now recognizes the exact prior SHA and behaviorally proves in-place stock upgrade while preserving customized scripts; the fallback now has equivalent finite transport bounds and explicit non-HTTP ambiguity handling. The reviewer independently re-inspected both closures and reported no remaining over/under-block, timeout, dedup/recovery, shell, or signal-vs-authority concern.
|
|
65
|
+
|
|
66
|
+
## Evidence pointers
|
|
67
|
+
|
|
68
|
+
- `tests/unit/telegram-reply-bounded-outcome.test.ts`
|
|
69
|
+
- `tests/unit/PostUpdateMigrator-telegramReply.test.ts`
|
|
70
|
+
- `tests/unit/telegram-reply-recoverable-classification.test.ts`
|
|
71
|
+
- `tests/unit/telegram-reply-port-resolution.test.ts`
|
|
72
|
+
- Feedback `fb-9c139a25-11e`
|
|
73
|
+
|
|
74
|
+
## Class-Closure Declaration (display-only mirror)
|
|
75
|
+
|
|
76
|
+
`defectClass: claim-vs-evidence`, `closure: guard`, `guardEvidence: { enforcementType: gate, citation: src/templates/scripts/telegram-reply.sh#CURL_STATUS, howCaught: the helper makes no delivery claim without a completed HTTP result; every final request has finite bounds and every nonzero transport exit renders explicit ambiguity on stdout and stderr without authorizing retry }`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Telegram reply bounded outcome
|
|
2
|
+
|
|
3
|
+
The Telegram reply helper makes an HTTP request to the local Instar server, which may spend time reviewing the message before it sends. The final request previously had no client deadline and did not inspect the transport exit status. If the caller's tool yielded while the review was running and curl later ended without a normal HTTP response, the helper could finish without printing any useful result. The agent then could not tell whether the message was blocked, delivered, or still uncertain.
|
|
4
|
+
|
|
5
|
+
The repair treats a terminal outcome as part of delivery correctness. The final request now has a three-second connection limit and a 125-second overall limit, slightly longer than the server's 120-second outbound budget. Normal HTTP results are unchanged, including the detailed 422 tone-review explanation. If transport ends without an HTTP result, the helper prints an explicit AMBIGUOUS result to both standard output and standard error, includes the pre-minted delivery id for investigation, and tells the caller not to retry blindly. The emergency inline fallback follows the same rule.
|
|
6
|
+
|
|
7
|
+
This does not claim that an interrupted request failed. The server may have received it and may still complete the send, so automatically queueing or retrying would risk a duplicate. The behavioral regression replaces curl with a controlled timeout and proves the helper is bounded, produces non-empty output on both channels, exits without triggering a blind retry, and preserves the delivery identifier.
|
|
8
|
+
|
|
9
|
+
The CLASS review found the missing standard: every outcome-bearing external call needs a bounded transport and an explicit terminal rendering for success, rejection, and ambiguity. The process gap was that existing tests covered HTTP status classification but not a transport process that exits before producing an HTTP status—or whether the repaired template actually reaches already-installed agents. This adds both failure-mode and in-place-migration ratchets and closes feedback `fb-9c139a25-11e`.
|