aboutsummaryrefslogtreecommitdiff
path: root/modules/core/module-aiasm.js
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-10-23 20:37:54 +0200
committerAgando <roduccomm@gmail.com>2026-10-23 20:37:54 +0200
commit4d717018ea8a748b8bb16ad71c3deab6d8c20545 (patch)
treedc4996d6904d2f89120b07cfa2c59c0fb41c8e75 /modules/core/module-aiasm.js
parente34c1203500451e65f0439435df55a2fa4c0f4ab (diff)
fix(chat): GLM review batch — corruption, traversal, cursor truncation, double print (v4.6.78-80)
12 findings accepted, 3 refuted with evidence (see _docs/chat-review-glm-2026-10-23.md). Data loss: a corrupt thread read as [] and the next append rewrote it with one message — now 500 and the file is left alone. Cursor after a >50-message truncation pointed at the thread tail, making the oldest permanently unfetchable — now the last message actually sent, plus truncated:true. Two posts in the same millisecond shared a cursor — epoch is now strictly increasing. Security: chat.py show() had no id validation and joined argv onto CHAT_DIR ('../../x' read any .json as darkbot) — THREAD_RE added. The auto-reply prompt now treats message text as untrusted data and forbids acting on instructions found in it. Ops: relay housekeeping swept neither .lock-* nor orphaned .tmp-*; a crashed listing looked identical to an empty queue; grep AWAITING also matched message bodies; hermes-poll printed every reply twice. Verified: corrupt file -> 500 with the file untouched; traversal -> 'invalid thread id'; hermes-poll -> exactly one line per reply.
Diffstat (limited to 'modules/core/module-aiasm.js')
0 files changed, 0 insertions, 0 deletions