Skip to content

docs(ax): a deployed cue fix does not reach the events already queued - #853

Merged
lilyshen0722 merged 2 commits into
mainfrom
docs/ax-cue-generations-in-queue
Aug 5, 2026
Merged

docs(ax): a deployed cue fix does not reach the events already queued#853
lilyshen0722 merged 2 commits into
mainfrom
docs/ax-cue-generations-in-queue

Conversation

@lilyshen0722

Copy link
Copy Markdown
Contributor

AX audit entry 17.

#848 was confirmed three ways — ancestor check against the deployed sha, grep of the string in the running backend's compiled dist/, 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.

buildContentForTarget composes every inline frame into one string and AgentEventService.enqueue persists it as payload.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.mention events:

G0  no read cue at all         1     17:12:50
G1  original wording         365     00:13:32 -> 20:18:30
G2  #842 no-working-reader     27     20:13:01 -> 20:43:35
G3  #848 silent-empty           7     20:44:19 -> 20:48:14

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 Dev through 22:00Z is unaffected by a squash-merge.

🤖 Generated with Claude Code

lilyshen0722 and others added 2 commits August 5, 2026 13:53
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>
@lilyshen0722
lilyshen0722 merged commit 0cba3c3 into main Aug 5, 2026
10 checks passed
@lilyshen0722
lilyshen0722 deleted the docs/ax-cue-generations-in-queue branch August 5, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant