Commitae497c3cRecorded5 Aug 2026Repositoryapiary
Read the UNCONFIRMED string back as the agent that receives it
Message
The reason clause ended in "so the link is already unresponsive" and the next sentence began "so this message may not have been delivered", producing a stutter in the middle of the one string anybody actually sees. Every piece had been verified; the assembled sentence had not been read.
Reasons are now noun phrases and the consequence is its own sentence, with a test asserting no rendering contains ", so ".
Changed
src/apiary/tools.sgl | 21 ++++++++++++++-------
test/test-tools.sgl | 7 ++++++-
2 files changed, 20 insertions(+), 8 deletions(-)Diff
src/apiary/tools.sglmodified
@@ -916,10 +916,10 @@
916
(number->string +post-confirm-timeout+) 917
"s")) 918
((no-evidence)−919
(string-append "an earlier message has been unanswered for "−920
"longer than "+919
(string-append "an earlier message has already gone "+920
"unanswered for longer than " 921
(number->string +post-confirm-timeout+)−922
"s, so the link is already unresponsive"))+922
"s; the link is unresponsive")) 923
((link-down) 924
"the connection is down or re-establishing") 925
((link-changed)@@ -933,12 +933,19 @@
933
(case confirmed 934
((confirmed) ok-text) 935
(else+936
;; Read this back as the agent receiving it, not as the+937
;; author writing it. An earlier version ended the reason+938
;; with a "so ..." clause and then began the next sentence+939
;; with "so this message ...", which read as a stutter in+940
;; the middle of the one string anybody will actually see.+941
;; Reasons are noun phrases; the consequence is a separate+942
;; sentence. 943
(string-append 944
unconfirmed-text−938
" — UNCONFIRMED: " (unconfirmed-reason confirmed)−939
", so this message may not have been delivered. Re-send "−940
"once the bridge reports connected; nothing is holding a "−941
"copy."))))+945
" — UNCONFIRMED (" (unconfirmed-reason confirmed) ")."+946
" This message may not have been delivered."+947
" Re-send once the bridge reports connected; nothing is "+948
"holding a copy.")))) 949
950
;; Translate enclave-post-multiline's outcome symbol into a 951
;; tool-call status string. The string ships back to the agenttest/test-tools.sglmodified
@@ -656,9 +656,14 @@
656
(swapped (qualify-post-result 'link-changed "ok" "wrote"))) 657
(assert-true (string-contains? budget "did not answer within")) 658
(assert-false (string-contains? stale "did not answer within"))−659
(assert-true (string-contains? stale "already unresponsive"))+659
(assert-true (string-contains? stale "link is unresponsive")) 660
(assert-true (string-contains? down "down or re-establishing")) 661
(assert-true (string-contains? swapped "was replaced")) 662
;; whatever the reason, none of them claims delivery 663
(for-each (lambda (s) (assert-false (string-contains? s "ok")))+664
(list budget stale down swapped))+665
;; and none of them stutters: the reason is a noun phrase and+666
;; the consequence is its own sentence, so no "..., so X, so+667
;; Y ..." can reach the agent that reads this.+668
(for-each (lambda (s) (assert-false (string-contains? s ", so "))) 669
(list budget stale down swapped)))))