Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v43-walletFactory heap is large and still growing #10706

Open
warner opened this issue Dec 16, 2024 · 9 comments
Open

v43-walletFactory heap is large and still growing #10706

warner opened this issue Dec 16, 2024 · 9 comments
Assignees
Labels
bug Something isn't working performance Performance related issues wallet

Comments

@warner
Copy link
Member

warner commented Dec 16, 2024

While looking at perf metrics of the mainnet chain, I noticed that v43-walletFactory has a very large XS heap (and thus also has a very large XS heap snapshot), and is still growing.

Here is a graph of the v43 XS heap snapshot size versus deliveryNum (which is not the same as time, but monotonically increases with time):

v43-walletFactory heap snapshot size (1)

The piecewise-linear regions are separated by upgrade events. The last time we upgraded v43-walletFactory was in upgrade-17, which both made functional improvements to the walletFactory, and (supposedly) fixed the passStyleOf problem that caused heap growth for every non-retired Presence that traversed the marshalling code (mostly from #8400 and #8401 , which should be flattened by upgrade-18 and eventually drained by slowly deleting the old price-feed vats sometime after upgrade-19) . That upgrade event happened at about deliveryNum/snapPos 21M, and forms the start of the right-most linear segment in that graph.

We don't know why this vat is still growing: either the passStyleOf fix didn't take, or something else is going on. And I have even less ideas about why it might appear to be growing faster than before. Note that the X-axis is deliveries, not time, so I can only say with confidence that our bytes-per-delivery rate is higher. I'm not entirely sure that the bytes-per-time is higher: maybe we're doing fewer deliveries per second, but have more growth per delivery. To get a bytes-per-time slope from my data, we need to use the slogs to extract the blockTime of each sample. (I'll see if I can at least find the endpoints of each sawtooth).

#10493 is about restarting this vat, which would reset the state back down to the bottom of a sawtooth, which would buy us some time to figure out the real problem. And the upgrade-18 fixes that retire QuotePayment objects (and break the Zoe cycles) may help, whether or not the passStyleOf fix is working.

But we need to figure out the root cause. One step would be to take a v43 heap snapshot and use the Moddable tools to dump its contents. I'm going to guess that the CHUNKS section is fairly small (strings and Array backing stores), and the SLOTS section is very large (objects and their properties). With a heap that large, random sampling of the SLOTS section would mostly return the things that we have too much of: if we see more than three samples showing the same kind of object, that's the problem right there, and the second step will be to figure out where it's coming from, and why it's being retained.

@warner warner added bug Something isn't working wallet performance Performance related issues labels Dec 16, 2024
@warner
Copy link
Member Author

warner commented Dec 16, 2024

I made a new graph where date is the x-axis, which shows that the bytes-per-second is in fact higher now:

v43-walletFactory heap size

(this graph doesn't include all the same datapoints as above: I manually extracted a handful of samples, and only went as far back as april-2024 and the end of the upgrade-13 era, but I think it still accurately reflects the growth rate-vs-time for the last eight months)

@warner
Copy link
Member Author

warner commented Dec 17, 2024

That growth rate is about 9.5MB/day

@warner
Copy link
Member Author

warner commented Dec 20, 2024

Here's some information I got by dumping a recent v43-walletFactory heap snapshot. The procedure:

  • node packages/SwingSet/misc-tools/extract-xs-snapshot.js ~/.agoric/data/agoric v43 : creates v43-${snapPos}-${hash}.xss
  • build the xsnap binary (cd packages/xsnap/xsnap-native/xsnap/makefiles/lin && MODDABLE=/PATH/TO/agoric-sdk/packages/xsnap/moddable GOAL=debug CC=cc VERBOSE=1 make -f xsnap.mk, then copy/symlink packages/xsnap/moddable/build/bin/lin/release/xsnap into your $PATH)
  • xsnap -d *.xss |gzip >dump.gz (a 700MB heap yields a text dump of maybe 1.5GB, but it compresses very well)
  • write up a section-splitting tool:
import sys, re, gzip

# Use 'xsnap -d SNAPSHOT.xss' to dump an XS heap snapshot into a text file,
# then feed that text file into my stdin, along with a prefix. I will create
# ten files with names like "prefix-XS_M.gz" and "prefix-HEAP.gz", each with
# one section of the snapshot dump. This makes it easier to search for specific
# e.g. slots by their index number.

sections = [
    "XS_M",
    "VERS",
    "SIGN",
    "CREA", # sizes and creation parameters
    "BLOC", # the chunks table
    "HEAP", # the slots table
    "STAC",
    "KEYS", # maps ID_nnn to the property-key name
    "NAME", # helps map property-named keys, somehow
    "SYMB", # helps map symbol-named keys
    ]

prefix = sys.argv[1]
fn = None
count = 0

for line in sys.stdin:
    if sections and line.startswith(sections[0]):
        if fn:
            print(" finished %s (%d lines)" % (section, count))
            fn.close()
            count = 0
        section = sections.pop(0)
        fn = gzip.open("%s-%s.gz" % (prefix, section), "w")
        fn.write(line.encode("utf-8"))
    else:
        fn.write(line.encode("utf-8"))
    count += 1
  • gzcat dump.gz | python3 split-xs-snapshot-dump.py PREFIX : creates PREFIX-HEAP.gz, etc
  • the interesting files are -HEAP (the slots table), -KEYS (the property-name table), and -BLOC (the chunks table, which includes literal strings)

I used wc -l to count the number of slots, then picked one at random, under the theory that 1: the majority of the snapshot is the junk that we're worried about, so 2: any random slot has a very high probability of being junk. I found that most of the entries follow a four-slot pattern. Here are two consecutive instances of that pattern, so we can see their relationship:

        [10273116] [10273117] ________           instance = { .garbage = [        ], .prototype = [00017650] }
        [10273117] [        ] _______I           weakRef = { .target = [        ], .link = [        ] }
        [10273118] [10273119] ________           string = <91888680>
        [10273119] [10273122] ________           reference = [10273120]
        [10273120] [10273121] ________           instance = { .garbage = [        ], .prototype = [00017650] }
        [10273121] [        ] _______I           weakRef = { .target = [        ], .link = [        ] }
        [10273122] [10273123] ________           string = <91888712>
        [10273123] [10273126] ________           reference = [10273124]

The string = can be looked up in the -BLOC table, in this case 91888680 is p+26051869, and 91888712 is p+26051870.

In XS speak, this is probably part of a Map whose keys are locally-allocated promise vref strings (aka "VPID"s), and whose values are WeakRefs whose targets are empty. I'm guessing that means the targets have been garbage collected, but the WeakRef itself is still reachable. That would mean any call to .deref() would return undefined.

I count 3,776,863 -BLOC strings of the form p+NNN, which means we've got nearly four million string literals in memory. These alone account for over 38MB of heap space, just to store the VPIDs.

These are almost certainly entries of the liveslots slotToVal table, which maps vrefs to a WeakRef for each Promise, Presence, Representative, Remotable, or DeviceNode in the vat. There is a companion FinalizationRegistry with which we track all the object-like things (Presence/Representative/Remotable, but not Promises or device nodes).

The idea is that liveslots needs to know when userspace drops the Presence/etc, so it can decrement refcounts and maybe inform the kernel that we're dropping the vref. The WeakRef lets us translate vrefs to objects (e.g. when deserializing the arguments of an inbound dispatch.deliver), but doesn't hold the object strongly, so we can still sense it being dropped by userspace. Engine-level GC might cause the WeakRef to become empty some time before the finalizer callback is run, so there is code to probe the WeakRef and re-populate it with a new Presence if necessary.

For objects, the expected sequence is:

  • userspace drops the Presence, moving it from REACHABLE to UNREACHABLE (using the terminology documented in liveslots.js)
  • later, engine-level GC happens and the engine notices the lack of references to the Presence. The finalizer is enqueued, and the WeakRef is emptied. We call this state COLLECTED (but not FINALIZED).
  • still later, the finalizer callback is run, moving it to FINALIZED
    • for liveslots this is finalizeDroppedObject(), which probes the WeakRef (to guard against objects being re-introduced while in COLLECTED, but the finalizer callback not being cancelled). If it finds the WeakRef is still empty, it deletes the slotToVal Map entry (thus releasing the WeakRef itself), and adds the vref to possiblyDeadSet for refcount examination the next time BOYD is called

Note that we have modified XS to not empty out the WeakRefs or call finalizers during "organic" GC (the kind triggered when the engine exhausts the free-slot table, and does GC first in the hopes of avoiding malloc()). Those consequences are only triggered during a "forced" GC, such as when we call BOYD.

We also put Promises in these WeakRefs, for consistency in our convertSlotToVal() calls (which would otherwise need to examine the vref type to know whether to do slotToVal.get(vref).deref() or just slotToVal.get(vref)). We don't use the FinalizationRegistry for promises: we keep them alive until they are resolved, and then we delete them from the table whether they're still reference or not. (Unlike Presences/etc, we don't provide === -type equality checking for Promises).

My current hypothesis is that these are entries for promises that have been resolved, and dropped by both userspace and liveslots, and collected in a BOYD delivery. But the code in unregisterUnreferencedVPID(), which is supposed to delete the entries from slotToVal, is not deleting them.

I see a check for vrm.getReachablePromiseRefCount(p) === 0 guarding that unregistration: that means we're trying to not delete the entry if a virtual object is referencing a Promise. (Note that it could not be a durable object, because Promises are not durable, and cannot be held by durable objects). However, I don't see any code in removeReachableVref() which would react to this refcount hitting zero by calling unregisterUnreferencedVPID(). I'm wondering if we're missing a cleanup handler on one of the two paths to (settled+unreferenced):

  • promise becomes unreferenced first, then becomes settled: correctly removed from slotToVal
  • promise becomes settled first, then unreferenced (by vdata): left in slotToVal

We don't use virtual objects very much (we mostly use durable), so we should look for code in v43-walletFactory which creates non-durable BigMapStores or the like.

The fix is likely to be code in removeReachableVref() which reacts to the refcount=0 case by calling unregisterUnreferencedVPID(), except maybe it should only do that if the promise is resolved.

@warner
Copy link
Member Author

warner commented Dec 20, 2024

v43-walletFactory has no instances of any merely-virtual Kinds (virtual-object vrefs like o+vNN: all are like o+dNN). Nor does it have any merely-virtual collections (the collection KindIDs are all 6, 7, or 8, which correspond to scalarDurableMapStore, scalarDurableWeakMapStore, and scalarDurableSetStore, without any occurrences of the IDs for scalarMapStore or scalarSetStore, etc). So I'm not sure how a vdata refcount could be elevated, to bypass the slotToVal.delete() clause.

@warner
Copy link
Member Author

warner commented Dec 20, 2024

I sorted the p+NN strings and found the highest one: this should correspond to the most-recently-allocated one in my sample (which I grabbed maybe 6 hours ago). I then grepped the slogfile for my follower for places where it was referenced. Here's the list:

{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":163,"replay":false,"ksc":["vatstoreGet","v43","vc.4.sp+28581604"],"vsc":["vatstoreGet","vc.4.sp+28581604"],"time":1734673268.65444,"monotime":252577.83414744903}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":164,"replay":false,"ksc":["vatstoreGet","v43","vc.4.sp+28581604"],"vsc":["vatstoreGet","vc.4.sp+28581604"],"time":1734673268.654753,"monotime":252577.83446071504}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":167,"replay":false,"ksc":["vatstoreSet","v43","vc.4.sp+28581604","{\"body\":\"#[[\\\"$0.Alleged: VowInternalsKit watchNextStep\\\"]]\",\"slots\":[\"o+d31/1618680:2\"]}"],"vsc":["vatstoreSet","vc.4.sp+28581604","{\"body\":\"#[[\\\"$0.Alleged: VowInternalsKit watchNextStep\\\"]]\",\"slots\":[\"o+d31/1618680:2\"]}"],"time":1734673268.655422,"monotime":252577.835129429}
{"type":"clist","crankNum":281108968,"mode":"export","vatID":"v43","kobj":"kp68948040","vobj":"p+28581604","time":1734673268.656129,"monotime":252577.835836601}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":170,"replay":false,"ksc":["subscribe","v43","kp68948040"],"vsc":["subscribe","p+28581604"],"time":1734673268.656162,"monotime":252577.835869398}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":171,"replay":false,"ksc":["vatstoreGet","v43","vc.11975.sp+28581604"],"vsc":["vatstoreGet","vc.11975.sp+28581604"],"time":1734673268.656431,"monotime":252577.836138006}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":172,"replay":false,"ksc":["vatstoreSet","v43","vc.11975.sp+28581604","{\"body\":\"#\\\"&0\\\"\",\"slots\":[\"p+28581604\"]}"],"vsc":["vatstoreSet","vc.11975.sp+28581604","{\"body\":\"#\\\"&0\\\"\",\"slots\":[\"p+28581604\"]}"],"time":1734673268.861068,"monotime":252578.04077633301}
{"type":"clist","crankNum":281108968,"mode":"drop","vatID":"v43","kobj":"kp68948040","vobj":"p+28581604","time":1734673268.862098,"monotime":252578.041805832}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":175,"replay":false,"ksc":["resolve","v43",[["kp68948040",false,{"body":"#[\"#undefined\",1,{}]","slots":[]}]]],"vsc":["resolve",[["p+28581604",false,{"body":"#[\"#undefined\",1,{}]","slots":[]}]]],"time":1734673268.862172,"monotime":252578.041879294}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":176,"replay":false,"ksc":["vatstoreGet","v43","vc.4.sp+28581604"],"vsc":["vatstoreGet","vc.4.sp+28581604"],"time":1734673268.862821,"monotime":252578.042528082}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":177,"replay":false,"ksc":["vatstoreGet","v43","vc.4.sp+28581604"],"vsc":["vatstoreGet","vc.4.sp+28581604"],"time":1734673268.863224,"monotime":252578.042931784}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":180,"replay":false,"ksc":["vatstoreDelete","v43","vc.4.sp+28581604"],"vsc":["vatstoreDelete","vc.4.sp+28581604"],"time":1734673268.863842,"monotime":252578.04354932503}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":183,"replay":false,"ksc":["vatstoreGet","v43","vc.11975.sp+28581604"],"vsc":["vatstoreGet","vc.11975.sp+28581604"],"time":1734673268.864432,"monotime":252578.04413940702}
{"type":"syscall-result","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":183,"replay":false,"ksr":["ok","{\"body\":\"#\\\"&0\\\"\",\"slots\":[\"p+28581604\"]}"],"vsr":["ok","{\"body\":\"#\\\"&0\\\"\",\"slots\":[\"p+28581604\"]}"],"time":1734673268.864455,"monotime":252578.04416215201}
{"type":"syscall","crankNum":281108968,"vatID":"v43","deliveryNum":27151630,"syscallNum":184,"replay":false,"ksc":["vatstoreDelete","v43","vc.11975.sp+28581604"],"vsc":["vatstoreDelete","vc.11975.sp+28581604"],"time":1734673268.864665,"monotime":252578.044372354}

It looks like the vpid appeared as the key of vc.4 (as a string, not a serialized Promise), which must be the watchedPromises table. The value is marked as VowInternalsKit watchNextStep. Then the kernel subscribes to the promise, which suggests this is an internally-created Promise (not the result of an outbound message, not something which appeared in the arguments of an inbound method, but a local new Promise() that was given to watchPromise without first being serialized or sent off-vat).

The vat also uses this VPID as a string key of vc.11975, with a body that looks like a curious marshalling of the same promise (using &0 instead of $0). I'm not sure what this is. The collection is labelled as promiseRegistrations. I don't see any vrefs for the collection, though, so my tools don't know what it's KindID is (and whether it's durable or merely-virtual: the presence of a Promise in its .slots suggests it's merely-virtual). That might mean the collection is only held ephemerally.

Then, later in the same delivery, the vat does a syscall.resolve() of this promise, to [ undefined, 1, {} ]. The kernel doesn't care, but once the vat mentions a new vpid to the kernel (thus becoming the decider), the vat is responsible for telling the kernel about its resolution. The vat isn't notified by the kernel because the vat was the one who resolved it.

The vat then deletes both the watchedPromises table entry and the promiseRegistrations entry.

@mhofman I'm guessing this is Vows code, watching the Promise somehow. Who is doing the serialization?

@warner
Copy link
Member Author

warner commented Dec 20, 2024

Oh, this isn't Vows, it's just liveslot's watchedPromises.js. For each incarnation, that code creates a merely-virtual table named promiseRegistrations:

  /**
   * virtual Store (not durable) mapping vpid to Promise objects, to
   * maintain the slotToVal registration until resolution. Without
   * this, slotToVal would forget local Promises that aren't exported.
   *
   * @type {MapStore<string, Promise<unknown>>}
   */
  let promiseRegistrations;
...
    promiseRegistrations = makeScalarBigMapStore('promiseRegistrations');

Every time userspace calls watchPromise(), the Promise gets stashed in the value side of that table. This causes addReachableVref to increment a refcount that exists only in RAM:

  /**
   * Map of all Remotables which are reachable by our virtualized data, e.g.
   * `makeScalarWeakMapStore().set(key, remotable)` or `virtualObject.state.foo =
   * remotable`. The serialization process stores the Remotable's vref to disk,
   * but doesn't actually retain the Remotable. To correctly unserialize that
   * offline data later, we must ensure the Remotable remains alive. This Map
   * keeps a strong reference to the Remotable along with its (virtual) refcount.
   */
  /** @type {Map<object, number>} Remotable->refcount */
  const remotableRefCounts = new Map();
...
  function addReachableVref(vref) {
...
    } else if (type === 'promise') {
      // need to track promises too, maybe in remotableRefCounts
      const p = requiredValForSlot(vref);
      const oldRefCount = remotableRefCounts.get(p) || 0;
      remotableRefCounts.set(p, oldRefCount + 1);
    }

The promise has (at least) two .then handlers. One is in watchedPromises.js, where pseudoThen adds a callback that will do promiseRegistrations.delete(vpid), which will decrement that refcount. The other is in liveslots.js (probably followForKernel, called by maybeExportPromise, called when a promise is watched). The followForKernel handler calls unregisterUnreferencedVPID(), which is supposed to do the slotToVal.delete(), but will refrain from that if the refcount is non-zero.

So it comes down to a race between two callbacks on the same promise. If the pseudoThen fires first, the refcount will be zero and unregisterUnreferencedVPID() will delete the slotToVal entry. If the followForKernel one fires first, the refcount will still be nonzero, and we never check it again. That will result in the slotToVal entry sticking around until a vat upgrade, with a barren WeakRef and the VPID string in RAM.

I think that explains the growth. It doesn't explain the increased rate of growth that we've seen in recent incarnations. We reload the watchedPromise table from durable storage at startVat, but we can't reach the old merely-virtual promiseRegistrations table, so I don't see how that would make things worse. (Although now I'm not sure we're gaining anything by having it be virtual, rather than just ephemeral: both cases would keep the Promises alive, we have to spend the RAM on promises in both cases, and the virtual table just leaves junk in the vatstore after an upgrade which we don't have enough mark+sweep GC to delete).

@warner
Copy link
Member Author

warner commented Dec 20, 2024

An easy mitigation might be to change watchPromise to swap the order of the thens. Instead of the current:

        // Ensure that this vat's promises are rejected at termination.
        if (maybeExportPromise(vpid)) {
          syscall.subscribe(vpid);
        }

        promiseRegistrations.init(vpid, p);
        pseudoThen(p, vpid);

we do:

        promiseRegistrations.init(vpid, p);
        pseudoThen(p, vpid);
        // Ensure that this vat's promises are rejected at termination.
        if (maybeExportPromise(vpid)) {
          syscall.subscribe(vpid);
        }

If that's enough to get the engine to call the pseudoThen callback first, then we'll decrement the refcount before the maybeExportPromise callback checks it, and we'll delete the entries.

I'd also want to seriously consider changing promiseRegistrations to be a simple Map.

The deeper fix would be to change removeReachableVref to notice the rc=0 case and check if it needs to be removed from slotToVal. It's one of those "if A or B is true, make C true, but when both A and B are false, make C false" situations, where you need a common if (!A && !B) check which must be invoked on both the A just became false and the B just became false pathways. We have the check on one path, but not the other. I'm not optimistic that this can be shoehorned into removeReachableVref easily.

@mhofman
Copy link
Member

mhofman commented Dec 20, 2024

FYI the increase in slopes are from 13->14 & 16->17, which respectively corresponds to the introduction of watchPromise and vow support (a bunch of watch and when. These would create a lot of watch registrations for locally decided promises.

@warner
Copy link
Member Author

warner commented Dec 20, 2024

I'll track the workaround efforts in #10756, and the underlying two-pillars bug in #10757.

warner added a commit that referenced this issue Dec 20, 2024
Liveslots has a bug (#10757) which leaks slotToVal entries when a
tracked Promise is still being held in virtual data (e.g. a
merely-virtual MapStore) at the time it becomes settled. This is
triggered by `watchPromise` because of the order in which we attach
two handlers: one which notices the resolution and is inhibited from
deleting the slotToVal entry, and a second which removes the Promise
from the (virtual) `promiseRegistrations` collection (thus enabling
the deletion). For any watched Promise that is resolved, we leave a
`slotToVal` entry (with an empty WeakRef) in RAM until the end of the
incarnation.

This PR does not fix the underlying bug, but it rearranges the handler
order to avoid triggering it.

The attached unit test fails with the original handler
order (`slotToVal.size` grows), and passes with the swapped
order (`slotToVal.size` remains constant).

closes #10756
refs #10706
warner added a commit that referenced this issue Dec 20, 2024
Liveslots has a bug (#10757) which leaks slotToVal entries when a
tracked Promise is still being held in virtual data (e.g. a
merely-virtual MapStore) at the time it becomes settled. This is
triggered by `watchPromise` because of the order in which we attach
two handlers: one which notices the resolution and is inhibited from
deleting the slotToVal entry, and a second which removes the Promise
from the (virtual) `promiseRegistrations` collection (thus enabling
the deletion). For any watched Promise that is resolved, we leave a
`slotToVal` entry (with an empty WeakRef) in RAM until the end of the
incarnation.

This PR does not fix the underlying bug, but it rearranges the handler
order to avoid triggering it.

closes #10756
refs #10706
mergify bot added a commit that referenced this issue Dec 21, 2024
)

Liveslots has a bug (#10757) which leaks slotToVal entries when a tracked Promise is still being held in virtual data (e.g. a merely-virtual MapStore) at the time it becomes settled. This is triggered by `watchPromise` because of the order in which we attach two handlers: one which notices the resolution and is inhibited from deleting the slotToVal entry, and a second which removes the Promise from the (virtual) `promiseRegistrations` collection (thus enabling the deletion). For any watched Promise that is resolved, we leave a `slotToVal` entry (with an empty WeakRef) in RAM until the end of the incarnation.

This PR does not fix the underlying bug, but it rearranges the handler order to avoid triggering it.

The attached unit test fails with the original handler order (`slotToVal.size` grows), and passes with the swapped order (`slotToVal.size` remains constant).

closes #10756
refs #10706
mujahidkay added a commit that referenced this issue Dec 24, 2024
## Description

Created as per instructions in MAINTAINERS.md. Includes an additional
step to update yarn.lock for multichain-testing,
a3p-integration/proposals/s:stake-bld and
a3p-integration/proposals/z:acceptance

## Changes

 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - [email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]
 - @agoric/[email protected]

## Packages that have NEWS.md updates

```diff
--- a/golang/cosmos/CHANGELOG.md
+++ b/golang/cosmos/CHANGELOG.md
@@ -3,6 +3,32 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.35.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **cosmos:** Support arbitrary core eval builder arguments ([#10767](#10767)) ([a944f4c](a944f4c)), closes [#10752](#10752) [#10752](#10752)
+* **cosmos:** use `x/vbank` ConsensusVersion to upgrade monitoring ([0e367d3](0e367d3))
+* migrate upgrade of v7-board from  upgrade 19 to upgrade 18 ([#10761](#10761)) ([837776e](837776e)), closes [#10760](#10760)
+* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394)
+* **vbank:** new param `allowed_monitoring_accounts` ([5ac4c52](5ac4c52))
+* **vtransfer:** extract base address from parameterized address ([3d44b53](3d44b53))
+* **vtransfer:** port some `address-hooks.js` functions to Go ([159098b](159098b))
+* **x/swingset:** Add parameters for controlling vat cleanup budget ([02c8138](02c8138)), closes [#8928](#8928)
+* **x/swingset:** Define default vat cleanup budget as { default: 5, kv: 50 } ([d86ee6d](d86ee6d))
+* **x/swingset:** Read beansPerUnit in each message handler and pass down to helpers ([55b9b49](55b9b49))
+* **x/swingset:** Require a non-empty vat cleanup budget to include `default` ([28c4d8b](28c4d8b))
+
+
+### Bug Fixes
+
+* **agd:** upgrade all orchestration vats to new liveslots ([59fa82c](59fa82c))
+* **cosmos:** return an error if version is unsupported ([d17e55b](d17e55b))
+* **x/swingset:** Let migration see incomplete Params structs ([315cdd5](315cdd5))
+
+
+
 ## [0.35.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/cosmos
--- a/packages/ERTP/CHANGELOG.md
+++ b/packages/ERTP/CHANGELOG.md
@@ -3,6 +3,16 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.16.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **ertp:** remove unneeded ertp type imports ([#10467](#10467)) ([e96ff82](e96ff82)), closes [#10456](#10456)
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+
+
+
 ### [0.16.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/SwingSet/CHANGELOG.md
+++ b/packages/SwingSet/CHANGELOG.md
@@ -3,6 +3,21 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.33.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+
+
+### Bug Fixes
+
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+* **SwingSet:** Introduce a termination-dedicated "VatUndertaker" analog to "VatKeeper" ([b786414](b786414))
+
+
+
 ## [0.33.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/agoric-cli/CHANGELOG.md
+++ b/packages/agoric-cli/CHANGELOG.md
@@ -3,6 +3,37 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.22.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.22.0-u18.6) (2024-12-24)
+
+
+### ⚠ BREAKING CHANGES
+
+* remove agoricNames from VstorageKit
+
+### Features
+
+* **agoric-cli:** Add `agoric wallet send` gas limit options ([21a03f8](21a03f8))
+* **agoric-cli:** Block `agoric wallet send` on tx inclusion ([0389a21](0389a21))
+* client-utils package ([50af71f](50af71f))
+* export cli lib ([0d2d4aa](0d2d4aa))
+* fetchEnvNetworkConfig ([9bdba57](9bdba57))
+* makeWalletUtils wo/spawn ([bc10509](bc10509))
+* makeWalletUtils wo/spawn ([20083ae](20083ae))
+* VstorageKit ([71486d7](71486d7))
+
+
+### Bug Fixes
+
+* **agoric-cli:** use readPublished consistently in agops oracle ([e8f6de2](e8f6de2))
+* proposeParamChange options ([202ba1e](202ba1e))
+
+
+### Miscellaneous Chores
+
+* remove agoricNames from VstorageKit ([1c69d39](1c69d39))
+
+
+
 ## [0.22.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.22.0-u18.5) (2024-12-17)
 
 **Note:** Version bump only for package agoric
--- a/packages/boot/CHANGELOG.md
+++ b/packages/boot/CHANGELOG.md
@@ -3,6 +3,27 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.2.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee))
+* consistent publishTxnRecord (record) ([dbf3934](dbf3934))
+* **fast-usdc:** publish feeConfig to vstorage ([08b2e13](08b2e13))
+* **fast-usdc:** support risk assessment arg ([ff6737a](ff6737a))
+* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1))
+* **fast-usdc:** write status updates to vstorage ([#10552](#10552)) ([419df4e](419df4e))
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+* publish OBSERVED with first evidence ([7e62d8f](7e62d8f))
+* readPublished in SwingsetTestKit ([0b383c9](0b383c9))
+* record instances that will be replaced so we can manage them ([c883c39](c883c39))
+* send-anywhere inits chainHub ([2fa2f75](2fa2f75))
+* **types:** TransactionRecord ([ccb9e28](ccb9e28))
+* vstorage status --> txns ([aebb4d7](aebb4d7))
+
+
+
 ## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/boot
--- a/packages/builders/CHANGELOG.md
+++ b/packages/builders/CHANGELOG.md
@@ -3,6 +3,41 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.2.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* `ForwardOpts` accepts `intermediateRecipient` ([eb975f1](eb975f1))
+* `ForwardOptsShape` ([50b1717](50b1717))
+* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee))
+* advancer with fees ([087f3a8](087f3a8))
+* assetInfo as array of entries ([51e7a9c](51e7a9c))
+* **builders:** --noNoble option for init-fast-usdc ([508a3e0](508a3e0))
+* **builders:** fast-usdc builder w/CLI config ([9f45a05](9f45a05))
+* **builders:** fast-usdc oracleSet option for MAINNET, ... ([3bf01a2](3bf01a2))
+* **builders:** fast-usdc policy update builder ([8ded3d8](8ded3d8))
+* chain-capabilities.js constants ([52ff70a](52ff70a))
+* export `DenomDetailShape` ([2dfddb3](2dfddb3))
+* export `OrchestrationPowersShape` ([34b61ea](34b61ea))
+* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1))
+* fusdc assetInfo and chainInfo by netname ([afb4f34](afb4f34))
+* parameterize fusdc with chainInfo and assetInfo ([e5a8b64](e5a8b64))
+* record instances that will be replaced so we can manage them ([c883c39](c883c39))
+* register interchain bank assets proposal ([0e20707](0e20707))
+* registerChainsAndAssets ([e72782d](e72782d))
+* save the outgoing EC Charter instance and kit ([c2c9be3](c2c9be3))
+* send-anywhere inits chainHub ([2fa2f75](2fa2f75))
+* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394)
+
+
+### Bug Fixes
+
+* **agd:** upgrade all orchestration vats to new liveslots ([59fa82c](59fa82c))
+* **orchestration:** denomAmounts must be non-negative ([#10458](#10458)) ([40e0e4e](40e0e4e))
+
+
+
 ## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/builders
--- a/packages/casting/CHANGELOG.md
+++ b/packages/casting/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.4.3-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* makeTendermintRpcClient ([129516a](129516a))
+
+
+
 ### [0.4.3-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/casting
--- a/packages/client-utils/CHANGELOG.md
+++ b/packages/client-utils/CHANGELOG.md
@@ -1 +1,41 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+## 0.2.0-u18.0 (2024-12-24)
+
+
+### ⚠ BREAKING CHANGES
+
+* remove agoricNames from VstorageKit
+
+### Features
+
+* client-utils package ([50af71f](50af71f))
+* export makeStargateClient ([186d268](186d268))
+* fetchEnvNetworkConfig ([9bdba57](9bdba57))
+* getCurrentWalletRecord ([2740748](2740748))
+* makeWalletUtils wo/spawn ([20083ae](20083ae))
+* ocap makeStargateClient ([c8f7407](c8f7407))
+* one marshaller per WalletUtils ([b141ce6](b141ce6))
+* **sync-tools:** add method to wait until offer exited ([c9370f2](c9370f2))
+* **types:** TypedPublished ([88939bf](88939bf))
+* vstorage without instance binding ([2c4e2e3](2c4e2e3))
+* VstorageKit ([71486d7](71486d7))
+* VstorageKit readPublished ([e48c53c](e48c53c))
+
+
+### Bug Fixes
+
+* **client-utils:** only call `fetch` as a function, not a method ([#10671](#10671)) ([fbae24c](fbae24c)), closes [/github.com/endojs/endo/issues/31#issuecomment-1255624116](https://github.com/Agoric//github.com/endojs/endo/issues/31/issues/issuecomment-1255624116)
+* **client-utils:** Retry at least every other interval ([fd9394b](fd9394b))
+
+
+### Miscellaneous Chores
+
+* remove agoricNames from VstorageKit ([1c69d39](1c69d39))
+
+
+
 # Change Log
--- a/packages/cosmic-proto/CHANGELOG.md
+++ b/packages/cosmic-proto/CHANGELOG.md
@@ -3,6 +3,21 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.5.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **vats:** first cut of Address Hooks in JS ([dbad30b](dbad30b))
+
+
+### Bug Fixes
+
+* **address-hooks:** throw if the version is unsupported ([e3c2665](e3c2665))
+* **address-hooks:** use `harden` (or `freeze`) ([80fee60](80fee60))
+
+
+
 ## [0.5.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/cosmic-proto
--- a/packages/cosmic-swingset/CHANGELOG.md
+++ b/packages/cosmic-swingset/CHANGELOG.md
@@ -3,6 +3,25 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.42.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **cosmic-swingset:** Add support for testing blocks of a mock chain ([48b6405](48b6405))
+* **cosmic-swingset:** Allow `launch` to accept an already-open swingStore ([c65e5b1](c65e5b1))
+* **cosmic-swingset:** Update parseParams to read and validate vat cleanup budget data ([80bcca0](80bcca0)), closes [#8928](#8928)
+* **cosmic-swingset:** Use vat cleanup budget values to allow slow cleanup ([508ea8e](508ea8e)), closes [#8928](#8928)
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+* **x/swingset:** Define default vat cleanup budget as { default: 5, kv: 50 } ([d86ee6d](d86ee6d))
+
+
+### Bug Fixes
+
+* **cosmic-swingset:** expect chain --halt-height exit status > 1 ([c025cb7](c025cb7))
+
+
+
 ## [0.42.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 
--- a/packages/fast-usdc/CHANGELOG.md
+++ b/packages/fast-usdc/CHANGELOG.md
@@ -3,6 +3,128 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## 0.2.0-u18.0 (2024-12-24)
+
+
+### Features
+
+* error on conflicting evidence ([cd2a40c](cd2a40c))
+* **fast-usdc:** add FastLP/ufastlp to vbank ([ae1963e](ae1963e))
+* **fast-usdc:** detect transfer completion in cli ([2828444](2828444))
+* **fast-usdc:** support risk assessment arg ([ff6737a](ff6737a))
+* operator majority logic ([bc28201](bc28201))
+* record fee split in transaction ([8846972](8846972))
+
+## 0.35.0-u18.4 (2024-12-17)
+
+
+### ⚠ BREAKING CHANGES
+
+* remove agoricNames from VstorageKit
+
+### Features
+
+* consistent publishTxnRecord (record) ([dbf3934](dbf3934))
+* deleteCompletedTxs ([f0078ee](f0078ee))
+* **fast-usdc:** cli for lp deposit and withdraw ([4c0c372](4c0c372))
+* **fast-usdc:** limited operation before connecting to noble ([eb82ae3](eb82ae3))
+* include 'sender' in CctpTxEvidence ([f99e7b8](f99e7b8))
+* publish CctpTxEvidence ([2916c8f](2916c8f))
+* publish OBSERVED with first evidence ([7e62d8f](7e62d8f))
+* simplify seenTxs key ([fd05a7e](fd05a7e))
+* **types:** TransactionRecord ([ccb9e28](ccb9e28))
+* vstorage status --> txns ([aebb4d7](aebb4d7))
+
+
+### Bug Fixes
+
+* do not stringify logs ([d04c5ea](d04c5ea))
+* vstorage fastUsdc path ([1f47164](1f47164))
+
+
+### Miscellaneous Chores
+
+* remove agoricNames from VstorageKit ([1c69d39](1c69d39))
+
+## 0.35.0-u18.3 (2024-12-09)
+
+
+### ⚠ BREAKING CHANGES
+
+* `getAsset` and `getDenomInfo` require `srcChainName` param
+
+### Features
+
+* `getAsset` and `getDenomInfo` require `srcChainName` param ([fc802ad](fc802ad))
+* assetInfo as array of entries ([51e7a9c](51e7a9c))
+* **fast-usdc:** core-eval to update feed policy ([db283e1](db283e1))
+* **fast-usdc:** operator attest cli command ([448aa3a](448aa3a))
+* **fast-usdc:** publish feeConfig to vstorage ([08b2e13](08b2e13))
+* **fast-usdc:** settler disburses or forwards funds ([17b0423](17b0423))
+* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1))
+* **fast-usdc:** write status updates to vstorage ([#10552](#10552)) ([419df4e](419df4e))
+* operator accept cmd ([ae2cf1e](ae2cf1e))
+* parameterize fusdc with chainInfo and assetInfo ([e5a8b64](e5a8b64))
+* scaffold operator commands ([36375fd](36375fd))
+
+
+### Bug Fixes
+
+* `brandKey` not part of `DenomDetail` ([9a65478](9a65478))
+
+## 0.35.0-u18.2 (2024-11-21)
+
+
+### Features
+
+* `Advancer` uses `borrower` facet ([35eb7ad](35eb7ad))
+* integrate `Advancer` with contract ([c5d67af](c5d67af))
+* liquidity pool borrower and repayer facets ([3117eef](3117eef))
+
+## 0.35.0-u18.1 (2024-11-19)
+
+
+### Features
+
+* `Advancer` exo behaviors ([4cd2f3f](4cd2f3f)), closes [#10390](#10390)
+* `CctpTxEvidenceShape`, `PendingTxShape` typeGuards ([5a7b3d2](5a7b3d2))
+* `getQueryParams` takes shape parameter ([99707ef](99707ef))
+* `StatusManager` scaffold ([980463f](980463f))
+* `StatusManager` tracks `seenTxs` ([f3d1e36](f3d1e36))
+* `TxStatus` const for `StatusManager` states ([1376020](1376020))
+* advancer with fees ([087f3a8](087f3a8))
+* defineInertInvitation ([f756412](f756412))
+* **fast-usdc:** .start.js core-eval w/oracle invitations ([7b6820a](7b6820a))
+* **fast-usdc:** add cli config and args for deposit and withdraw ([#10487](#10487)) ([fb2d05c](fb2d05c))
+* **fast-usdc:** deposit, withdraw liquidity in exchange for shares ([5ae543d](5ae543d))
+* **fast-usdc:** implement config cli command ([d121e1d](d121e1d))
+* **fast-usdc:** implement transfer cli command ([504818f](504818f))
+* **fast-usdc:** stub config cli command ([81e14b2](81e14b2))
+* **fast-usdc:** stub transfer cli command ([1b64d82](1b64d82))
+* feed access controls ([8f4a66d](8f4a66d))
+* makeTestPushInvitation handles evidence ([7e99cfa](7e99cfa))
+* minimal `addressTools` for query param parsing ([6f97e13](6f97e13))
+* operators evidence flows through feed ([2161a6f](2161a6f))
+* publish when all oracle operators agree ([d06ae2b](d06ae2b))
+* TransactionFeedKit ([8eb7dee](8eb7dee))
+* uniform configuration with LegibleCapData ([968903a](968903a))
+
+
+### Bug Fixes
+
+* **fast-usdc:** ensure cli non-zero exit code on failure ([6c0e77b](6c0e77b))
+* **fast-usdc:** fix url encoding ([d46cefd](d46cefd))
+* **fast-usdc:** use correct address format in cli ([d225974](d225974))
+
+## 0.35.0-u18.0 (2024-10-31)
+
+
+### Features
+
+* add CLI for fast-usdc package ([92bc5b1](92bc5b1))
+
+
+
 ### [0.1.1-u18.5](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.1.1-u18.5) (2024-12-17)
 
 **Note:** Version bump only for package fast-usdc
--- a/packages/governance/CHANGELOG.md
+++ b/packages/governance/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.10.4-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+
+
+
 ### [0.10.4-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/inter-protocol/CHANGELOG.md
+++ b/packages/inter-protocol/CHANGELOG.md
@@ -3,6 +3,23 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.17.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* add an accessor for the vaultDirector's parameters ([32f1398](32f1398))
+* record instances that will be replaced so we can manage them ([c883c39](c883c39))
+* save the outgoing EC Charter instance and kit ([c2c9be3](c2c9be3))
+
+
+### Bug Fixes
+
+* makeReserveTerms ([27ce0b0](27ce0b0))
+* remove addInstance call from add-auction.js ([d16781f](d16781f))
+
+
+
 ## [0.17.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/inter-protocol
--- a/packages/internal/CHANGELOG.md
+++ b/packages/internal/CHANGELOG.md
@@ -3,6 +3,21 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.4.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* consistent publishTxnRecord (record) ([dbf3934](dbf3934))
+* defaultSerializer util ([19d5e03](19d5e03))
+* getValues for sequence nodes ([b5698ce](b5698ce))
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+* pureDataMarshaller ([6df7f1f](6df7f1f))
+* showValue option for documentStorageSchema ([07d12d4](07d12d4))
+* storage-test-utils report missing data ([02c111b](02c111b))
+
+
+
 ## [0.4.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/orchestration/CHANGELOG.md
+++ b/packages/orchestration/CHANGELOG.md
@@ -3,6 +3,48 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### ⚠ BREAKING CHANGES
+
+* `getAsset` and `getDenomInfo` require `srcChainName` param
+
+### Features
+
+* `assetOn` `DenomDetail` helper ([05fe515](05fe515))
+* `chainHub.makeTransferRoute` ([0215b6f](0215b6f))
+* `ForwardOpts` accepts `intermediateRecipient` ([eb975f1](eb975f1))
+* `ForwardOptsShape` ([50b1717](50b1717))
+* `getAsset` and `getDenomInfo` require `srcChainName` param ([fc802ad](fc802ad))
+* `withOrchestration` returns `baggage` ([e4a6c6d](e4a6c6d))
+* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee))
+* assetInfo as array of entries ([51e7a9c](51e7a9c))
+* chain-capabilities.js constants ([52ff70a](52ff70a))
+* **chainHub:** `getChainInfoByAddress` helper ([d6c487c](d6c487c))
+* **cosmos-orch-account:** expose `.executeEncodedTx` ([9d10be1](9d10be1))
+* CosmosChainInfo includes `pfmEnabled?: boolean` ([e1c35da](e1c35da))
+* export `DenomDetailShape` ([2dfddb3](2dfddb3))
+* export `OrchestrationPowersShape` ([34b61ea](34b61ea))
+* **local-orchestration-account:** support multi-hop pfm transfers ([c35fac7](c35fac7))
+* registerChainsAndAssets ([e72782d](e72782d))
+* send-anywhere inits chainHub ([2fa2f75](2fa2f75))
+
+
+### Bug Fixes
+
+* `brandKey` not part of `DenomDetail` ([9a65478](9a65478))
+* `convertChainInfo` connection sorting ([8ba4699](8ba4699))
+* do not stringify logs ([d04c5ea](d04c5ea))
+* **orchestration:** denomAmounts must be non-negative ([#10458](#10458)) ([40e0e4e](40e0e4e))
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+* **orchestration:** harden result of reverseConnInfo ([5c1219c](5c1219c))
+* subscribeToTransfers atomically ([7b77993](7b77993))
+* use `asVow` in case `owned()` throws ([e67e86b](e67e86b))
+* yarn codegen script ([9eea3fd](9eea3fd))
+
+
+
 ## [0.2.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/orchestration
--- a/packages/solo/CHANGELOG.md
+++ b/packages/solo/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.11.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+
+
+
 ## [0.11.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/solo
--- a/packages/swing-store/CHANGELOG.md
+++ b/packages/swing-store/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.10.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **cosmic-swingset:** Allow `launch` to accept an already-open swingStore ([c65e5b1](c65e5b1))
+
+
+
 ## [0.10.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/swingset-liveslots/CHANGELOG.md
+++ b/packages/swingset-liveslots/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.10.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **liveslots:** avoid slotToVal memory leak for watched promises ([874196c](874196c)), closes [#10757](#10757) [#10756](#10756) [#10706](#10706)
+
+
+
 ### [0.10.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/telemetry/CHANGELOG.md
+++ b/packages/telemetry/CHANGELOG.md
@@ -3,6 +3,18 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.6.3-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **telemetry:** add missing slog type ([1aec8d0](1aec8d0))
+* **telemetry:** Empty context persisted when remaining beans are negative after run finish ([#10635](#10635)) ([ad4e83e](ad4e83e))
+* **telemetry:** event name typo ([9e19321](9e19321))
+* **telemetry:** timer-poll run.id ([#10672](#10672)) ([3b478fb](3b478fb)), closes [#10357](#10357) [#10357](#10357)
+
+
+
 ### [0.6.3-u18.3](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-13)
 
 
--- a/packages/time/CHANGELOG.md
+++ b/packages/time/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.3.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+
+
+
 ### [0.3.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/vats/CHANGELOG.md
+++ b/packages/vats/CHANGELOG.md
@@ -3,6 +3,22 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.16.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **cosmic-swingset:** Add support for testing blocks of a mock chain ([48b6405](48b6405))
+* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394)
+
+
+### Bug Fixes
+
+* **ERTP,vats:** fix 9407 AmountPatternShape ([#9863](#9863)) ([59b1a9f](59b1a9f)), closes [#9410](#9410) [#9407](#9407) [#9410](#9410) [#9407](#9407) [#9410](#9410) [#9407](#9407) [#9410](#9410)
+* **vaultFactory:** fix proposal description ([bc1f87a](bc1f87a))
+
+
+
 ## [0.16.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/vats
--- a/packages/wallet/CHANGELOG.md
+++ b/packages/wallet/CHANGELOG.md
@@ -3,6 +3,23 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.19.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+## 0.35.0-u18.4 (2024-12-17)
+
+## 0.35.0-u18.3 (2024-12-09)
+
+## 0.35.0-u18.2 (2024-11-21)
+
+## 0.35.0-u18.1 (2024-11-19)
+
+
+### Features
+
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+
+
+
 ## [0.19.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
--- a/packages/wallet/api/CHANGELOG.md
+++ b/packages/wallet/api/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+## [0.15.0-u18.5](https://github.com/Agoric/agoric/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Features
+
+* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0))
+
+
+
 ## [0.15.0-u18.4](https://github.com/Agoric/agoric/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17)
 
 **Note:** Version bump only for package @agoric/wallet-backend
--- a/packages/zoe/CHANGELOG.md
+++ b/packages/zoe/CHANGELOG.md
@@ -3,6 +3,15 @@
 All notable changes to this project will be documented in this file.
 See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
 
+### [0.26.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24)
+
+
+### Bug Fixes
+
+* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456)
+
+
+
 ### [0.26.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31)
 
 
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working performance Performance related issues wallet
Projects
None yet
Development

No branches or pull requests

3 participants