earendil-works/pi · error · SessionError

invalid_lane

invalid_lane

Error message

Lane not found: ${lane}

What it means

Error "Lane not found: ${lane}" thrown in earendil-works/pi.

Source

Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts:66

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`SELECT
			l.leaf_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} AND l.lane = ${lane}`.get<{
		leaf_id: string | null;
		leaf_exists: number;
	}>(db);
	if (!row) throw new SessionError("invalid_lane", `Lane not found: ${lane}`);
	if (row.leaf_exists === 0) throw new SessionError("storage", `Entry ${row.leaf_id} not found`);
	return { leafId: row.leaf_id };
}

export function createLane(db: SqliteDatabase, sessionId: string, seq: number, lane: string, leafId: string | null) {
	sql`INSERT INTO lanes (session_id, lane, leaf_id, open_operation_id)
		VALUES (${sessionId}, ${lane}, ${leafId}, NULL)`.run(db);
	appendLaneMove(db, sessionId, seq, lane, leafId);
}

export function moveLane(db: SqliteDatabase, sessionId: string, seq: number, lane: string, leafId: string | null) {
	const result = sql`UPDATE lanes SET leaf_id = ${leafId} WHERE session_id = ${sessionId} AND lane = ${lane}`.run(db);
	if (result.changes !== 1) throw new SessionError("invalid_lane", `Lane not found: ${lane}`);
	appendLaneMove(db, sessionId, seq, lane, leafId);
}

export function setLaneLeaf(db: SqliteDatabase, sessionId: string, lane: string, leafId: string | null) {
	const result = sql`UPDATE lanes SET leaf_id = ${leafId} WHERE session_id = ${sessionId} AND lane = ${lane}`.run(db);

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. The lane does not exist; verify the lane name.

When it happens

Trigger: Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts:66 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/a8c029c2440537cc. Report an issue: GitHub.