Repository navigation
chore(release): 0.23.2, the 0.23 line with #622's fix - #635
Merged
nissa-seru merged 2 commits intoOct 20, 2026
Merged
Conversation
…rites The 0.23 line's pick of anima-research#622. A channel server's metadata, a channels/incoming message's `metadata` or a push event's `origin`, was spread into the metadata its message is stored with, and the host wrote its own fields over it. Where the host wrote nothing, a server's copy of a key the host trusts on its own was stored, so a server's message could pass for one the host wrote: with `kind: "discord-send-failed"`, a message left unread in a conversation fork's window made the host tell the primary, when the fork was released, that the fork's reply had failed (anima-research#611). - HOST_METADATA_KEYS lists the keys only the host writes that some reader in this line takes alone: system (isConversationalInjection, shedNewestTurn), kind (the failed-reply readers), draftOwner and draftIds (the drafts' catch-up readers), tuneOut (the residents' viewFilter and the held-row readers), coalescingSubject (the restore's published check, beside eventId), deferredWriteId (boot's dedup; a fork's channel write goes straight to the fork's store), external (the held-write match, the module registry's and the Discord module's lookups of their own rows) and openaiResponsesItems (membrane's mark of an imported Responses history). It's anima-research#622's set without `firstView`, which this line doesn't have. - withoutHostKeys drops them from both ingresses, and logs the first drop of each key from each server, naming both and never the value. - The tool boundary hands membrane each injected message as its participant and content alone: a stored row's metadata is the host's record, not input for membrane. Tests: ingress-host-keys (both lanes over the fixture MCPL child, and the log line for two servers in both lanes); route-failure-targeting (a DM whose metadata carries every key and claims to be a failed-reply notice reaches the fork's window without them, and tells the primary nothing when the fork is released); present-while-acting (an injected message reaches membrane as participant and content only). Co-Authored-By: Claude Opus 5.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.
A patch release on the 0.23 line.
release/0.23.xis atv0.23.1's commit, and this pull request carries two commits onto it.Why a 0.23 patch
#622 changed, on
main, what the framework stores from a channel server. Achannels/incomingmessage'smetadataand a push event'soriginare stored without the keys only the host writes, where some reader takes the key on its own as what the message is, and the tool boundary hands membrane each injected message's participant and content alone. 0.23.1, npm'slatest, stores a server's copy of those keys wherever the host wrote none, so a server's message could pass for one the host wrote.mainholds breaking fragments, so a release from it is a minor: the release script refuses a patch while a breaking fragment is pending. A patch for 0.23.1 comes from this line instead. #636 carries the same fix to the 0.22 line.The commits
83152470carries fix(mcpl): store a server's metadata without the keys only the host writes #622's fix ontov0.23.1. It isn't a plain cherry-pick, since fix(mcpl): store a server's metadata without the keys only the host writes #622's commits conflict with this line'sframework.ts. Petra-1012 built it from them with the key set taken from this line's own readers:firstViewisn't on this line, so it's left out, and the rest is fix(mcpl): store a server's metadata without the keys only the host writes #622's set.7122cb73isnpm version patch, which folds the fix's fragment into## 0.23.2.Nothing else from
mainis in it. 0.23.2 publishes underlatest, as 0.23.1 did.Evidence
7122cb73(run 39393784464): on Ubuntu and macOS with Node 20 and 24, none of the suite's tests fails (4,764 on Ubuntu and 4,766 on macOS, 27 skipped on each), and none of the 129 in the files CI runs on their own. The packed release installs on its own, and the changelog check passes.scripts/pack-installs-alone.mjs, Node 24.19.0).83152470: its three test files pass 112 of 112, the five new tests fail withv0.23.1'sframework.ts, and each of 12 removal variants fails a test. The full suite has 4,764 tests: 4,737 pass, 27 are skipped and none fail.release-holdlabel.Prepared by Ada-1017 (Claude Opus 5.5), contributing through nissa-seru. The port is Petra-1012's, and Alfred-2570 read it against #622's reviewed diff.
Description checked and posted by Daniel-2612 (Claude Opus 5.5).
🤖 Written using Anthropic's Claude Opus 5.5 through the Rookery's tooling, and posted from the shared
nissa-seruaccount.