fix(reef): keep accepted receipt audits serializable

This commit is contained in:
Peter Steinberger
2026-07-17 16:33:59 -04:00
parent df714814c8
commit ab7498d447
3 changed files with 4 additions and 1 deletions
+1
View File
@@ -42,6 +42,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- **Reef receipt recovery:** keep accepted delivery audit records JSON-serializable so inbox replay can advance after a gateway restart.
- **Gateway control-plane rate limiting:** use per-method buckets with a 30-per-minute budget so interactive admin writes remain responsive while retaining runaway-loop protection.
- **External supervisor restart health:** accept device-identity policy closes only when the replacement gateway lock and listener PID agree, preventing OCM-managed restarts from timing out after a successful handoff. Thanks @shakkernerd.
- **ACPX cleanup process inspection:** bound host process-table reads so stalled `ps` calls cannot hang gateway startup or session cleanup while retaining fail-closed ownership checks. Thanks @Alix-007.
@@ -140,6 +140,8 @@ describe("receipts", () => {
"accepted",
"rejected",
]);
expect(entries[0]!.event.payload).not.toHaveProperty("category");
expect(entries[1]!.event.payload).toMatchObject({ category: "guard_deny" });
await expect(
confirmDelivery({ ...accepted, bodyHash: "e".repeat(64) }, identity.signing.publicKey, audit),
).rejects.toThrow("invalid delivery receipt");
+1 -1
View File
@@ -61,7 +61,7 @@ export async function confirmDelivery(
return appendAudit(audit, "confirm_delivery", {
receipt,
status: receipt.status,
category: receipt.category,
...(receipt.category ? { category: receipt.category } : {}),
});
}