Repository navigation
docs(changelog): shorten 0.33.0's fragments so its release notes leave out no entry - #987
Merged
Merged
Conversation
…ts entry 844-stop-stamp.fixed and 844-stop-loses-waiting-note.fixed fixed only the waiting tune-out cancel, its loss notices and the stop stamp, none of which a release has shipped (0.32.0 cancels at once). What they describe is now one paragraph of the 291-deferral-queue breaking entry, as what this release does: the loss notice kept at a stop, the stamp, what the next boot tells the persistent subconscious, the release's cancel.by / cancel.askers, and the two traces. 844-queued-note-loss-in-release.fixed keeps only what 0.32.0 shipped: a tune-out whose release reached the resident but whose end wasn't recorded after a store fault between the two. The rest of it fixed the waiting cancel alone.
…keep what 0.32.0 shipped - 291-branch-move-resync.fixed: carrying each window across a branch move is this release's own mechanism; what a reader can see of it (the window carried, legacy mode until the next move where it can't be written down, redo entries dropped) joins the 'rebase' occasion's bullet in 291-branch-move-resync.added. - 844-release-without-reader-held-writes.fixed: a release of a tune-out on record at a reader-less connect waiting for held writes is an edge of mechanisms no release shipped; it names nothing a consumer sees. Removed. - 291-stop-during-complete-build.fixed keeps its first bullet (0.32.0 stored the round and called the turn completed); the second was a stop from a listener of the round's presentation, a mechanism new here. - 844-close-focus-or-own.fixed keeps 0.32.0's close (it closed the turn's own channel), its refusal's naming edge in one sentence. - 291-complete-while-waiting.fixed: its slug-like pointer to 0.30.0's entry now says what it means.
Release readers see no fragment names, so 'the 291-presentation-mandatory entry' and the like now name the section and the entry's lead (Breaking: every agent's context follows its own presentation index; Added: every row says who it is for; Added: AgentConfig.observes; Breaking: the chronicle ^0.6.0 dependency), and context-manager's own entries are its 0.25.0 release notes. The review8-* slugs are left for the folds of those fragments.
…sumer sees A boot tells a hold the stop accounted for from the notice the stop kept, not from the stamp. And six surfaces the folded fragments named appear nowhere else, so they come back, briefly: the stamp's branch and wakesOwed, the notices' lossNoticeId, keptAtSequence and lostAtStop, a budgeted stop leaving a hold out of its stamp, the first start on a store with no stamp (holds count as stopped cleanly, logged), the tool-result guard's staged batch read at boot, the waiting answer's warning and serverId, and a queued note going out before another cancel's release. The dropped-cancel trace lists all four reasons.
review8-tune-out-deferred-cancel.fixed, -window-start.fixed and -window-starts-unreadable.fixed fixed only the waiting cancel and the subconscious's ordinal window start, which no release shipped (v0.32.0 has no noteDropped, window-starts or deferred coordinator cancel). Their behaviours that a consumer can see go into the entries for those mechanisms (291-deferral-queue breaking, 291-subconscious-window added), as sentences handed to that entry's owner: a waiting cancel ends only its own hold; where a note left with it goes when another cancel ends the hold, and who is told of its loss; the clamped start kept. The fixed entry's last bullet described the waiting note's text before its rewrite, and is not carried. Their failure handling with no surface (a set or read that throws) is left to the code. review8-tune-out-deferred-cancel.added keeps its trace, worded shorter, and gains tune-out:note-loss-untold, which only the folded fixed entry named.
…eep 0.32.0's Folded, since v0.32.0 has none of their mechanisms (waiting cancel, foreignRounds, neverPresented, managersRefusingWork, presented-window refusals): review8-operator-close-wait (into the 291-deferral-queue breaking entry's account of the close and the retry), -foreign-rounds (into 291-resident-observes: raw while the window is the record, a derived agent or fork sent rounds as its template is), -failed-restore (into the 'rebase' bullet of 291-branch-move-resync), -preview-unreadable (into 291-removal-propagation's neverPresented) and -rollback-observed-rows, which 291-removal-propagation's no-op refusal already says. review8-operator-undo-redo keeps what 0.32.0 shipped (a redo whose checkpoint save failed threw the store's error, its entry taken off the stack), the refusal and the trace's order, and drops the undo's checkpoint-retry edge. The other operator entries fix 0.32.0 behaviour or text and stay as they are.
…ation entries Every review8-presentation fix but placement and turn-start fixed the presentation index, which no release shipped (v0.32.0 has no presentRows or windowStatusOf). What a consumer can see goes to the presentation entries: presentation:failed's messageIds (291-presentation-index), the presentation-legacy ops alert and presentation:failed's legacy flag (291-presentation-mandatory), and the held-draft notice presented at once to an idle observer or the subconscious (291-presentation-points). Boot-wakes, framing, own-order, retraction and rollback-hold are that mechanism's failure handling, with nothing to name, or already said by those entries. review8-unstamped-own-rows is said by 291-presentation-mandatory's undo bullet. Placement and turn-start stay: 0.32.0 counted a fork's render as read, and compiled a start without the writes its flush couldn't store.
…ience fixes All fixed mechanisms no release shipped (v0.32.0 has no returnedToArrivals, history leftOut, readersOf, declaredWith or audience stamp): - review8-recovery-noop-cut and -suppress-kept: one bullet of 291-removal-propagation's fixed entry, beside the no-op refusal it already gives for offline recovery's rows without a Discord id. - review8-modules-history-left-out: leftOut counted once across resumes, in 291-removal-propagation's changed entry; -window-note is said by its added entry. - review8-audience-named-readers, -modules-registry-reads-shared and -modules-registry-legacy-edges: 291-audience-stamp's added entry, the legacy edge's migration note with them, in place of that entry's pointer to this fragment. review8-modules-discord-lost-create folds into the message:lost trace's Added entry: what the Discord module does with a create lost at a release.
…p 0.32.0's Folded or left to the code, since v0.32.0 has no WriteLandedError, deferred importer or holding-window lookup: review8-writes-own-row-landed (into 291-deferral-queue's WriteLandedError account), -import-ids, -unreadable-holders and -window-row-log (failure handling with nothing to name). review8-writes-interrupted-notice keeps its first bullet, what 0.32.0 did (looked for the result in held mail by name alone), with a lead that 291-deferral-import's pointer can name; its third bullet (metadata.passedOn) goes to the new Added entry for the boot pass, and its second is that pass's failure handling. -held-mail-sync is worded shorter; -coalescer-failure-save stays as it is, since v0.32.0's render() had no delivery-failure handling to show the broken form was unshipped.
…hipped Its first bullet, a close whose release waited for held writes, fixed the waiting cancel, which no release shipped; it folds into the 291-deferral-queue breaking entry's account of the close. The rest fixes 0.32.0's close of the excepted channel (v0.32.0 framework.ts:32128-32137 answered a fixed "The focus on it ended all the same" or rejected with "The close wasn't recorded") and stays, with the answers' words kept and the explanation shortened. The pointer to 844-close-focus-or-own is written out.
…e failure
review8-channel-close-focus gave the failure answers but not the close's
ordinary answer once its focus ended, which changed since 0.32.0 ("The focus on
it ended all the same, and what the other channels held was delivered." became
"The focus on it ended, and what the other channels held was delivered, up to
its backlog cap.", framework.ts endedText), and its "otherwise" left out the
failure after the release notice was stored, which the answer tells in words of
its own. Both are text the agent reads, so both are quoted.
…boot pass entry Places the sentences the review8 commits folded into the 291 Added, Breaking and Changed entries (deferral queue: the retry, a waiting cancel ending only its own hold, where its note goes, the close's waiting answer, own rows on WriteLandedError; subconscious window, observes, audience, presentation, branch-move resync, removal propagation, deferral import), so the review8 fragments those commits deleted lose no consumer surface. Adds 291-interrupted-notice-pass.added: the boot pass that hands an interrupted agent's unread notices to the primary had no Added entry. It folds interrupted-notice-pass-held and -retried, which described only that new pass's edges (no release shipped it; 0.32.0 passed such writes from its deferred queue). The held case is left out: the held fragment itself says no hold can be in force while the boot passes notices. Corrections to the stop paragraph read against c788d07: the waiting answer's warning is given only while the run's start isn't recorded and the cancel carries the persistent subconscious's note; keptAtSequence keeps a later ask from reading as told; the sentence on a waiting note going out first moves into the fuller account after noteDropped, which says the persistent subconscious's goes before the release and a reader fork's after it. pendingRound is carried onto the presentation index, not read from it. Slug references left in 291-presentation-mandatory, -held-stored-at-once, -reads-row.breaking and -presentation-index now name entries by section and lead.
…s' own edges 291-deferral-queue.breaking: the opening paragraph says the same with fewer words, every surface kept (the two holds, deferredWrites, the context-reinit-failed and store-held-lost alerts and their data fields, WriteLandedError, WriteOutcomeUnknownError, mayBeStored, the coalesced render's recovery, 0.32.0's queue for each case). The crash sentence before store-held-long goes: the note's account already says a restart leaves the tune-out in force and cancels one whose end time passed. The Rollback bullet points to the presentation index's MANIFEST bullet rather than repeating it; Migration's quiesce paragraph is shorter. 291-subconscious-window.added: drops the window start's own failure handling (a start set while the window is the record, one whose setting failed before a move, a restart's unreadable anchor); the next bullet already says a restart sets the start in force again. 291-audience-stamp.added: the tune-out hold rule is said once, for any write that carries metadata.tuneOut; the imported writes' stamp points to the deferral import entry, which says it. 291-deferral-import.added: drops the importer's own crash and read-failure edges (a landed write skipped by id, the search failure, the malformed drop, the unreadable owed-wakes read); a write that can't be stored still stays in the record for the next boot.
… entries The five entries keep every surface they name (APIs, fields, traces and their reasons, refusal and tool text, the prompt-cache miss) and every comparison with 0.32.0, and lose what another entry already says or what is a new mechanism's own edge: - presentation-points.added: a write stored at once (the deferral-queue breaking entry says it), a write-down that throws after its record, an own row after a failed start, a gate batch's failure log line, the redo's read-mark detail beyond "cover them again". Undo and redo point to the breaking entry instead of restating it. - presentation-points.changed: a surgery's held writes (the deferral-queue breaking entry), and a listener that starts one during a release. - removal-propagation.added/.changed/.fixed: the explanation of why removals propagate, the returned rows' later edges, a repair that fails, the search of summaries alone, a plan for later work; the offline recovery bullets become one bullet with three parts. The rendered 0.33.0 section goes from 131,885 to 126,340 characters.
…ne's source once 291-resident-observes.added: the 0.32.0 view of the shared slot and the unstamped rows before the upgrade are said in the Breaking entry's residents bullet; this entry keeps one clause and points there. 291-audience-stamp.added: the batched-wake line's source goes on the sentence that already names the line, and the rule's rationale is one sentence.
The refusal names the host's hide only where a row it points to has a Discord message id, and leaves it out where none has one; the entry said only the first.
291-deferral-queue.breaking: Module authors says the same with fewer words (the held write's '' id and what can't find it, its traced release, the external-id map, ModuleMessage.held's new meaning, queryMessages' order, the held: handle for one release); Tune-out hosts' last sentence and Traces are shorter, every name kept. Drops the stop alert listener's own write (an edge of the new stop accounting) and the close answer's timing clause, keeping the waiting answer's words. 291-subconscious-window.added: drops the signature rationale, which explains the transcript's choice rather than a behaviour. 291-tune-out-reader-text.changed: the old create() refusal is quoted without its preamble.
…-input entries Every surface these entries name stays (the ReadMark API and its answers, readsRow, WritePlacement, heldFromResidents and held, heldMessageIds, the two dependency floors and create()'s refusals, the MANIFEST bound, the turn-inputs pin and setting), and so does every comparison with 0.32.0 and 0.31.0. What goes: - 291-held-stored-at-once.changed: what the deferral-queue breaking entry says of writes kept in memory and of a cancel during a surgery, the clock row the presentation points entry gives, and the dump's read where writesHeld throws. - 291-chronicle-0.6.breaking: why context-manager has no one-row path, and the version list beyond "0.5.1 and earlier" / "0.24.0 and earlier". - 291-audience-stamp.fixed: the wake-onboarding bullet, which the audience-stamp added entry says and which no release shipped; the spec bullet, a fix of own slots, goes to that entry as one sentence. - 291-reads-row.*, 291-complete-while-waiting.fixed, 291-turn-inputs-window: restatement and examples, and a re-presented row's edge before the write-down.
…plit 291-audience-stamp.added: a spec still written without ownSlot (readsSharedSlot: true, its own namespace, an agent edge) is read as the restored record is, owning its namespace's slot and observing the shared slot. The sentence comes from 291-audience-stamp.fixed's last bullet, which fixed own slots, a mechanism no release shipped.
…the index context-manager 0.24.1 and 0.24.2 have no window index either, so "0.24.0 and earlier" left two releases out; and the load on 0.24.0 keeps its reason (it has neither error).
A bare "see Added" becomes "see Added: `AgentConfig.observes`", the entry's lead.
nissa-seru
pushed a commit
to nissa-seru/agent-framework
that referenced
this pull request
Nov 7, 2026
Catches anima-research#361 up onto main at 16a16ff: anima-research#844's merge, then anima-research#987's notes, which changed only changelog.d. Three hunks in src/framework.ts conflicted: - The type region keeps both sides: RecordedTurnCheckpoint beside main's heldWritesTold, sameCheckpoint and SurgeryHeldWrite. - quiesce()'s doc takes main's text, with the budget hold's sentences added where they hold under it. A write is stored at once while quiesced now, so the old text's deferred-write queue is gone from it. - The OverBudget breaker's drain kick stays in kickOverBudgetDrain, where the hold's own compression calls it. It already carried main's two stops, for a framework that is stopping and for a surgery's hold. Its branch for an undo or a redo that moved the store under a tick goes, as main dropped that branch with syncMoveReinit. Everything else merged cleanly. The hold's tests that this merge breaks are recast in the next commit.
nissa-seru
pushed a commit
to nissa-seru/agent-framework
that referenced
this pull request
Nov 9, 2026
… [Gate: …] line for events with a message of their own The merge brings anima-research#844 (Dendrite's presentation index, readsRow) and anima-research#987 into anima-research#972. anima-research#844 deleted the deferral queue and the two marks anima-research#972 judged a batch's writes by (readsDeferredWrite, readsStoredMessage), so anima-research#972's handing could not be merged as it was: 38 conflict blocks in six files (7 textual, 13 on the write marks, 18 on the line's handing and placing). The merge is resolved as the cut, rather than catching the handing up and then deleting it. What the cut does: - An event with a message of its own in the window gets no line: an MCPL channel message or push (stored at arrival), a heartbeat tick or reminder, and a module event whose host gave the gate its one stored write (`added`). Only events with no message of their own keep a line, quoting each, written when the batch is delivered, counted over those alone. - Its wake carries what it is for as WakeProvenance.writes (WakeWrite: the write and the channel a reply is owed in), present only when every event with a message of its own was given its write; the line's own placement joins them where a line was written. The framework maps each by readsRowFor, so a mark is taken only for the agent the write was placed for, and the wake carries InferenceRequest.readsRows only when every write maps; otherwise it stays plain (a co-resident's, the trunk's). The scheduler drops it once each row is done (rowDone with that row's replyTo), as main judges a wake's one readsRow. - Gone: main's 0.27.0 handing (WakeProvenance.line, WakeLine, wakeLineText, InferenceRequest.wakeLines, EventGate's isNewestEntry, the framework's isNewestContextEntry, placeWakeLines, placedWakeLines, mergeWakeLines, wakeLineKey, gate:wake-line-omitted) and anima-research#972's own (lines, owed lines, the held buffer's split by write). isNewestIn and windowTail go with their only callers (open anima-research#690 uses isNewestIn only for "newest"). referenceLine and GateEntryRef go too. - Kept from anima-research#972: evaluate(info, after) and its threading through the channel lane (routed and deliverTo forks included), the push lane, the heartbeat and the module path; the judge's isAnswered, now one small function on covers (no answered mark: false; covered or in doubt: true), and no `unsure` parameter left on the wake's judging (rowDone is main's); upcomingWakes' and the framework's `certain` for wakes that may drop; the agent-facing descriptions of debounce and judge rules. - Why no quoted line for a recipient that doesn't hold an event: under conversation routing a debounced channel message wakes the trunk and every fork, and quoting it there would show one conversation's words in another. Those recipients now wake plain, as main's forks did, and the trunk loses main's untrue "already shown above" line. Who is woken is unchanged. Tests: test/gate-batch-in-window.test.ts pins the rule's cases, red at main past every premise and green here. Tests that pinned the handing are turned round or, where their subject is gone, removed (batched-wake-line, event-gate, event-gate-judge, presentation-points, presented-watermarks, stored-injections, audience-stamp-writers, event-gate-strict-rules, supplied-text-in-context). anima-research#972's drop tests are ported to main's marks (debounce-seen-wake, the fork case in conversation-routing). Changelog fragments rewritten for the cut.
nissa-seru
pushed a commit
to nissa-seru/agent-framework
that referenced
this pull request
Nov 9, 2026
Catches anima-research#361 up onto main at 16a16ff: anima-research#844's merge, then anima-research#987's notes, which changed only changelog.d. Three hunks in src/framework.ts conflicted: - The type region keeps both sides: RecordedTurnCheckpoint beside main's heldWritesTold, sameCheckpoint and SurgeryHeldWrite. - quiesce()'s doc takes main's text, with the budget hold's sentences added where they hold under it. A write is stored at once while quiesced now, so the old text's deferred-write queue is gone from it. - The OverBudget breaker's drain kick stays in kickOverBudgetDrain, where the hold's own compression calls it. It already carried main's two stops, for a framework that is stopping and for a surgery's hold. Its branch for an undo or a redo that moved the store under a tick goes, as main dropped that branch with syncMoveReinit. Everything else merged cleanly. The hold's tests that this merge breaks are recast in the next commit.
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.
Rewrites 0.33.0's pending changelog fragments so its GitHub release can carry the whole 0.33.0 section, where today the release notes would leave out 85 of the section's 196 entries.
The 0.33.0 release notes
main): the section is 169,829 characters from 92 fragments, overrelease-notes.mjs's limit of 120,000, so the notes leave out the section's last 85 of its 196 entries.What changed:
.fixedfragment whose every fix is to a mechanism no release has shipped (checked againstv0.32.0) now reads as what 0.33.0 does, in that mechanism's Added, Breaking or Changed entry. A fix to behaviour 0.32.0 shipped stays a Fixed entry.291-interrupted-notice-pass.added), which had none. It takes in the twointerrupted-notice-passfragments, which described only that pass's edges.changelog.d, except examples of names 0.32.0 already had (such as offline recovery's--messages), hooks the package doesn't export, and one failure log line ([thinking-binding]).Nothing outside
changelog.dchanges. Each commit's message says what it folded, moved or cut, and why.@antra-tess for awareness: these are the release notes for 0.33.0, the release that carries #844. No review is asked.
changelog.d.Credits
Ada-1017 and Hamish-2699 rewrote the fragments, and Hilda-2681 read every commit against the code. Ada-1017 wrote this description.
Details for agents
Head
7cb8c147b457, onmainatc788d078c409.Problem
At
c788d078c409, the 0.33.0 section thatrelease-changelog.mjsrenders fromchangelog.dis 169,829 characters, sorelease-notes.mjscuts it to fit its 120,000 limit and leaves out the section's last 85 of its 196 entries.Changes
21 commits, each touching only
changelog.d, take its 92 fragments to 58, as listed in the top.Tests
Docs only, so no test suite was run for it. Both counts come from running
release-changelog.mjswith the version set to 0.33.0, thenrelease-notes.mjs, over a copy ofchangelog.dandCHANGELOG.mdatc788d078c409and at7cb8c147b457, on Linux with Node v24.22.2.Which fixes fold: for each fold, the mechanism the folded fix touches was looked for by its names in
srcatv0.32.0, and the fix was folded only where that mechanism is absent there. A reader who wrote neither half checked each folding commit the same way.Names kept: each of the 304 distinct code spans in the 21 commits' removed lines was searched for, backticks included, in
changelog.dat7cb8c147b457, and 284 are there as written. Of the other 20:readsSharedSlotwithout its argument, orneverPresentedasSurgeryMarksPreview.neverPresented;{ agent: 'resident' };srcalready had atv0.32.0(--messages,kind: 'prose-drafts',system_context:<namespace>,workspace-head-move, anduser, the participant that release stored its notices under), two hooks of the tune-out coordinator thatsrc/index.tsdoesn't export (writesHeld,branchOrigin), and the log line.A name a removed line gave without backticks wasn't checked.
Not verified
The release isn't cut here, so GitHub's own rendering of the notes isn't seen.