fixes/C3.1: draft sync with characters XML cannot carry #4

Merged
asxpi merged 3 commits from ai-runs-2026-11-07 into main 2026-11-08 02:07:31 +00:00
Member

C3.1 from interop#1: a draft holding a character XML cannot carry is never synced, and its publish escapes as a bgerror.

  • fixes/C3.1/ holds the playbook, the issue and PR text for libtacky, and the patch. The fix is on the local branch fix/C3.1-draft-xml-text (040cb864, on v1.2.1). It publishes the draft text cleaned with XmlText and catches a failed publish.
  • tools/ai/scenarios/repro-C3.1.py runs on prosody, with slixmpp as the account's other device and ai1b as an observer:
    • v1.2.1 fails: runs/20261108-002815-… (nothing published, bgerror)
    • the fix passes: runs/20261108-003017-… (both drafts arrive cleaned)
  • The playbook lists the same unguarded-write pattern in other modules as follow-ups: presence status, OMEMO device label, bookmarks, tags, vCard and others.
  • The reports are regenerated.
C3.1 from [interop#1](https://dev.another.im/another-im/interop/issues/1): a draft holding a character XML cannot carry is never synced, and its publish escapes as a `bgerror`. - `fixes/C3.1/` holds the playbook, the issue and PR text for libtacky, and the patch. The fix is on the local branch `fix/C3.1-draft-xml-text` (`040cb864`, on v1.2.1). It publishes the draft text cleaned with `XmlText` and catches a failed publish. - `tools/ai/scenarios/repro-C3.1.py` runs on prosody, with slixmpp as the account's other device and ai1b as an observer: - v1.2.1 fails: `runs/20261108-002815-…` (nothing published, `bgerror`) - the fix passes: `runs/20261108-003017-…` (both drafts arrive cleaned) - The playbook lists the same unguarded-write pattern in other modules as follow-ups: presence status, OMEMO device label, bookmarks, tags, vCard and others. - The reports are regenerated.
A draft holding U+0001 never left the device: chatsync's PublishDraft
wrote it uncleaned and the writer refused it, escaping as a bgerror.
repro-C3.1.py sets two such drafts (tokenless and as a request), then a
second tackyd-json session on the same store reads the drafts node;
ai1a's other device (slixmpp) watches and restores the node and ai1b
observes. v1.2.1 fails (no publish, bgerror), fix-C3.1 (libtacky
fix/C3.1-draft-xml-text 040cb864) passes. Both runs pass check.

AI-RESULTS.md is not regenerated here: report would also pick up
another agent's uncommitted XEP-0384 run.

Assisted-by: Claude:opus-5-5
AI-RESULTS: regenerate with the C3.1 runs
All checks were successful
/ check (pull_request) Successful in 14m29s
2d66c2215c
The C3.1 commit added two runs but left the reports as they were.

Assisted-by: Claude:opus-5-5
Merge main into ai-runs-2026-11-07 for the fast PR check
All checks were successful
/ check (pull_request) Successful in 4m23s
fa57cf89c2
Assisted-by: Claude:opus-5-5
asxpi merged commit 51e4170ec3 into main 2026-11-08 02:07:31 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
another-im/interop!4
No description provided.