Repository navigation
fix(agent): close the correctness gaps from the rc2 review - #207
Merged
Merged
Conversation
added 6 commits
October 13, 2026 10:20
`stack memory list move` skipped adding an item when the other list already had one whose name contained it, or the same item ticked, and then removed it from the old list anyway. Moving "Eier" to a list with "Bio-Eier" or a ticked "Eier" lost the open item. A move now skips the add only for the same item, open or ticked alike, and an add uses the same match to say an item is already on the list.
The agent put the name on a vault commit from a module global that each briefing overwrote. When two rooms were answered at the same time, a change could be committed as whoever spoke last in the other room. Tools now read the sender from nanobot's request context, which nanobot binds per message for as long as it handles that message.
A refused delete waited for a yes keyed by the list alone, so anyone in any room could confirm it in a later message. The agent's shell could also run `stack memory list delete --yes` and skip the question. The yes now counts only from the same person in the same conversation, and the shell refuses a list delete that carries `--yes`.
The quote of what was heard went on the first outbound message with
text. nanobot's notices carry text too ("Compressing context…"), so
when the context was compacted mid-turn the quote went on the notice,
which the status trace then dropped, and the answer came without it.
The open question had the same blind spot: a notice closed it.
An answer is now a message with text and no event, or the event that
marks a streamed answer; every notice carries an event of its own.
Answering the agent's question needed no name when typed, but a voice answer was still held to the name rule and dropped. And the question was recorded for whoever last wrote in the room, so a second person writing while the agent answered took the question over. The question gate now sits inside the voice gate, so a spoken answer passes like a typed one, and the question is for the sender of the message it answers.
The status trace ran until the agent answered. A turn that is cancelled sends no answer, and a message whose handoff failed never starts a turn, so its status loop ran on until the next message in that room. The status now stops by itself once it is full or after ten minutes, and a failed handoff stops it at once. What it showed stays.
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.
Summary
runtime/turn.py) instead of a global the briefing overwrote.