Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions docs/tech-debt.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,3 +271,18 @@ address there.
Remove this item when Bot API exposes a plain-text projection of `rich_message` beside the
blocks, or when eve upstream resolves the addressing before the update reaches the Bridge.
Until then the workaround in a group is to reply to one of Iva's messages.

## 16. Rollup stale-cursor workaround for vercel/eve#2461

`scripts/lib/rollup-stale-cursor.ts` and the drain/ownership checks in
`scripts/memory/rollup.ts` work around an open upstream bug
([vercel/eve#2461](https://github.com/vercel/eve/issues/2461)): on a resumed
session, eve's client `result()` reads from the saved stream cursor and stops at
the first turn boundary without correlating it with the message just sent. Once
the cursor lags, the nightly report is a replay of an old turn.

The Iva-side workaround is two small layers around eve, not a second session
system: drain `stream({ follow: false })` before every send into the parked
session, and refuse a result whose `message.received` is not this Turn's prompt
(per-execution nonce, `sentNotBefore` at send time). Remove both when a released
eve correlates `result()` with the sent turn.
7 changes: 5 additions & 2 deletions scripts/coverage-policy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import test from "node:test";
import { fileURLToPath } from "node:url";

const ROOT = fileURLToPath(new URL("../", import.meta.url));
const EXPECTED_PRODUCTION_COUNT = 232;
const EXPECTED_PRODUCTION_COUNT = 233;
const EXPECTED_INVENTORY_SHA256 =
"86aabf4601bb6c5d5d5d270da189bbd2ff765c72a37b452f278c9cc23d1a1957";
"364dc2a2fc67e8fcb465c059fe01b0b7d76e3d7b880287b514ed6adee28d50a0";

// Node's native include globs filter loaded modules; they do not load untouched files.
// This test pins the exact production path inventory and a separately measured 26-path
Expand Down Expand Up @@ -116,6 +116,9 @@ const EXPECTED_INVENTORY_SHA256 =
// `scripts/lib/update-check.test.ts` reports it at 100% lines, 92.16% branches and 100%
// functions, with `scripts/check-update.ts` at 92.64% lines beside it, so the blind spot
// stays 26.
// The rollup stale-cursor workaround `scripts/lib/rollup-stale-cursor.ts` came next.
// Scoped coverage over `scripts/lib/rollup-stale-cursor.test.ts` reports it, so the
// blind spot stays 26.
const MEASURED_UNREPORTED_BY_CATEGORY = {
frameworkBoundaries: [
"agent/agent.ts",
Expand Down
Loading