mirror of
https://github.com/morluto/rea.git
synced 2026-11-04 22:06:10 +00:00
* test: strengthen integration oracles and verification * test: bound lifecycle gates and strengthen workflow checks * test: verify complete paged and extracted results * test: preserve bytecode and cancellation evidence * test: strengthen retained evidence and fixture cleanup * test: require cross-projection bridge identities * test: retain fixture owners through cleanup failures * test: verify graph examples and project selectors * test: tighten provider and lifecycle regressions * test: consolidate hex coverage and bound cutter cleanup * test: bound subprocess output waits and strengthen graph checks * test: check mcp recovery and preserve cleanup owners * test: verify structured mcp argument failures * test: preserve artifact cleanup and gdb limit evidence * test: preserve evidence identities and bound provider gates * test: retain browser and comparison cleanup owners * test: bound startup and strengthen fixture oracles * test: bound lifecycle gates and verify recovered evidence * test: verify public outcomes and lifecycle ownership * test: assert precise evidence and release lifecycle gates * test: verify selected facts and bound cleanup waits * test: check retained evidence and decoded records * test: verify final reports and retain cleanup ownership * test: bound reviewed startup gates and retain cleanup * test: verify PE errors and preserve MCP cleanup * test: preserve MCP fixture cleanup ownership * test: release provider gates before late startup
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
/** Fail promptly if an operation never reaches its controlled lifecycle boundary. */
|
|
export const awaitAcknowledgement = async (
|
|
acknowledgement: Promise<void>,
|
|
operation: Promise<unknown>,
|
|
boundary: string,
|
|
timeoutMs = 2_000,
|
|
): Promise<void> => {
|
|
let deadline: ReturnType<typeof setTimeout> | undefined;
|
|
try {
|
|
const observed = await Promise.race([
|
|
acknowledgement.then(() => ({ kind: "acknowledged" }) as const),
|
|
operation.then(
|
|
(value) => ({ kind: "settled", status: "fulfilled", value }) as const,
|
|
(cause: unknown) =>
|
|
({ kind: "settled", status: "rejected", cause }) as const,
|
|
),
|
|
new Promise<{ readonly kind: "deadline" }>((resolve) => {
|
|
deadline = setTimeout(() => resolve({ kind: "deadline" }), timeoutMs);
|
|
}),
|
|
]);
|
|
if (observed.kind !== "acknowledged")
|
|
throw new Error(
|
|
`${boundary} was not acknowledged before ${observed.kind === "deadline" ? "the gate deadline" : "the triggering operation settled"}`,
|
|
{ cause: observed },
|
|
);
|
|
} finally {
|
|
if (deadline !== undefined) clearTimeout(deadline);
|
|
}
|
|
};
|