Repository navigation
Conversation
A transcript holds a NUL when an agent read a binary file as text; a NUL inside a tera value aborts the whole server, so every boot since 13:57 on 2026-10-21 died about 45 s in while blocks_refresh parsed that file (14 aborts). The parts are stripped of chr(0) before the join; the join itself is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
asubbarao
enabled auto-merge
October 21, 2026 22:01
Owner
Author
|
duckstack/review: success No findings. Opus 5.5, duckstack review queue (duckstack-review skill) |
Owner
Author
|
Closed: opened without showing the SQL first, and it keeps the template join. The durable stream is one line (the stream database is a file, not :memory:), shown to Alok before it goes anywhere. — Claude Fable 5.1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Dev has aborted on every boot since 13:57 on 2026-10-21 (14 exits, status 134, ~45 s after start,
server-exits.log). The server log showsTeraRenderFuncunder the CASE instream.parsed, thenpanicked at src/lib.rs:135:50 … NulErrorandthread caused non-unwinding panic. aborting.One stored transcript holds a tool result with a NUL byte (an agent read a binary file as text);blocks_refreshparses it at every boot, the NUL reachestera_render, the process aborts, launchd restarts it, repeat.Change
One expression in
server/blocks.sql: each text part isreplace(p ->> 'text', chr(0), '')before the tera join. The join stays as it was (PR #100, which replaced the join, was closed on Alok's decision).Tested
Local
duckdb :memory:with the tera extension:tera_render('{{ parts | join(sep="\n") }}', …)over[replace('b' || chr(0) || 'c', chr(0), ''), 'd']rendersbc\nd, exit 0; the same list without the replace is the abort PR #100 reproduced.🤖 Generated with Claude Code