earendil-works/pi · error · SessionError
storage
storage
Error message
Lane ${row.lane} points at missing entry ${row.leaf_id} What it means
Error "Lane ${row.lane} points at missing entry ${row.leaf_id}" thrown in earendil-works/pi.
Source
Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts:38
sql`INSERT INTO lanes (session_id, lane, leaf_id, open_operation_id)
VALUES (${sessionId}, ${lane}, ${leafId}, NULL)`.run(db);
}
export function readLanes(db: SqliteDatabase, sessionId: string) {
const rows = sql`SELECT
l.session_id,
l.lane,
l.leaf_id,
l.open_operation_id,
(l.leaf_id IS NULL OR EXISTS (
SELECT 1 FROM entries AS e WHERE e.session_id = l.session_id AND e.id = l.leaf_id
)) AS leaf_exists
FROM lanes AS l
WHERE l.session_id = ${sessionId}
ORDER BY l.lane`.all<LaneRow & { leaf_exists: number }>(db);
for (const row of rows) {
if (row.leaf_exists === 0) {
throw new SessionError("storage", `Lane ${row.lane} points at missing entry ${row.leaf_id}`);
}
}
return rows.map(({ session_id, lane, leaf_id, open_operation_id }) => ({
session_id,
lane,
leaf_id,
open_operation_id,
}));
}
export function readLane(db: SqliteDatabase, sessionId: string, lane: string) {
return sql`SELECT session_id, lane, leaf_id, open_operation_id
FROM lanes
WHERE session_id = ${sessionId} AND lane = ${lane}`.get<LaneRow>(db);
}
export function readLaneHead(db: SqliteDatabase, sessionId: string, lane: string) {
const row = sql`SELECTView on GitHub (pinned to 4af9d21d3b)
Solutions
- The lane references a missing entry; the database is inconsistent, repair or rebuild it.
When it happens
Trigger: Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts:38 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/20697df0ea430453.
Report an issue: GitHub.