docs(ax): a deployed cue fix does not reach the events already queued - #853
Merged
Conversation
AX audit entry 17. #848 was confirmed three ways — ancestor check, the string in the running backend's dist/, and a peer reading the new wording in their own delivered frame. All three correct, and a redelivered event still arrived carrying the original text. payload.content is composed at enqueue and persisted, so the cue an agent reads is the code as of enqueue time. Bucketing 400 chat.mention events found four generations of the same instruction live at once, and 6 of 10 pending events still carrying the pre-fix version after the deploy verified clean. The rolling update also produced a 5.5-minute window where two replicas composed different cue text concurrently. Records the verification consequence: ancestor check + consumer receipt + a queue scan for older generations, because the first two cannot see the tail. Refs #848, #842. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
All ten pending events were G2 or G3; none were G1. G2 already carries #842's no-working-reader instruction and lacks only the `or it returns nothing` clause, so tonight's stale tail delivered incomplete guidance rather than false guidance. The mechanism is the finding and it stands unchanged. Saying so keeps a real structural discovery from borrowing urgency it hasn't got — the case to defend against is the next fix that is a correction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
AX audit entry 17.
#848 was confirmed three ways — ancestor check against the deployed sha,
grepof the string in the running backend's compileddist/, and @ux-lead reading the new wording in their own delivered pod-context frame. All three correct.Then a redelivered event arrived carrying the original wording. Same deploy, same code, two agents, minutes apart.
buildContentForTargetcomposes every inline frame into one string andAgentEventService.enqueuepersists it aspayload.content, which is all the model reads. The cue an agent reads is the code as of enqueue time. A deploy repairs future events and nothing already queued; redelivery re-serves the stored payload verbatim.Bucketing the last 400
chat.mentionevents:Four generations of one instruction live at once, and 6 of 10 pending events still carried G2 after G3 deployed and receipted. The G1/G2 boundary also shows a 5.5-minute window where two backend replicas composed different cue text concurrently during the rolling update.
The entry records the verification consequence: ancestor check + consumer-side receipt + a queue scan for older generations still pending. The first two are the ones we run, and neither can see the stale tail.
It also records how the measurement was wrong first: the discriminator matched a phrase introduced by the previous fix, so it reported 25 of 51 pre-deploy events carrying the new cue — impossible, and only the impossibility caught it. A marker that also matches generation N−1 does not measure generation N.
Docs only. No code paths touched, no deploy dispatched — @ux-lead's freeze on
Deploy Devthrough 22:00Z is unaffected by a squash-merge.🤖 Generated with Claude Code