Stop dropping turns, over-damping repeats, and losing confinement rel… - #6
Open
ManwaOkal wants to merge 1 commit into
Open
Stop dropping turns, over-damping repeats, and losing confinement rel…#6ManwaOkal wants to merge 1 commit into
ManwaOkal wants to merge 1 commit into
Conversation
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.
The own-repeat filter in sendMessage rejected any message identical to one the speaker sent in the previous two minutes. Unlike the companion echo filter it applied no minimum length, and it was scoped to the speaker rather than the conversation, so a prisoner who answered "Yes, sir." to one guard had the same answer to a second guard rejected. The filter now keys on the audience and exempts short lines using the threshold the echo filter already used. Loops are still caught, since a loop repeats to the same partner.
notifyChatPartners schedules a reply turn for the addressed agent, but tickAgent returned immediately when a generation was already in flight, so the turn was lost. The prisoner replied on its own next tick, by which point the guard, on a two-second cadence, had sent its next message. Turns are now held and run as soon as the in-flight tick completes, with all rescheduling routed through a single helper that keeps one timer per agent.
The solitary log was written only from the escort callback, which fires only when forceMoveTo resolves true for both the guard and the prisoner. An interrupted escort leaves the record open after the prisoner has physically left, or loses an arrival outright. The log is now reconciled against prisoner position on every tick and at export. Entries opened or closed by reconciliation are flagged as inferred so the export distinguishes them from guard-reported events, and attribution is filled in if the real callback arrives afterwards.