add PTY + IPC error-handling audit (T-18)

29 issues across PTY (lib/src/pty/), IPC (lib/src/ipc/), and
daemon command handlers (lib/src/daemon/). 14 critical (silent
failures, resource leaks, races), 8 high (degraded UX/debug),
7 medium (cleanliness). Each item references the follow-up
ticket where the fix lands (T-75 through T-81).

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-05 14:59:14 +02:00
co-authored by Claude
parent 4ff004790d
commit b99548a900
2 changed files with 377 additions and 5 deletions
+222 -5
View File
@@ -1,5 +1,5 @@
{
"exported_at": "2026-05-05T12:51:04Z",
"exported_at": "2026-05-05T12:59:14Z",
"decisions": [
{
"id": "D-1",
@@ -2007,11 +2007,11 @@
"id": "T-18",
"type": "task",
"title": "audit error handling in PTY and IPC critical paths",
"status": "ready",
"status": "done",
"priority": "medium",
"decision_ref": "D-5",
"created_at": "2026-04-22 13:26:29",
"updated_at": "2026-05-03 20:37:30"
"updated_at": "2026-05-05 12:59:05"
},
{
"id": "T-19",
@@ -2291,11 +2291,11 @@
"parent_id": "T-3",
"title": "Ship clide tmux.conf for Claude pane sessions",
"description": "Bundle a clide-specific tmux.conf (no status bar, large scrollback, zero escape delay, 256color passthrough). Claude pane spawn passes -f to use it. Includes bottom-anchoring via initial escape sequence or shell profile trick after attach.",
"status": "in_progress",
"status": "done",
"priority": "high",
"decision_ref": "D-41",
"created_at": "2026-04-22 22:01:13",
"updated_at": "2026-05-03 20:33:10"
"updated_at": "2026-05-05 12:51:24"
},
{
"id": "T-44",
@@ -2538,6 +2538,132 @@
"priority": "medium",
"created_at": "2026-04-24 06:34:16",
"updated_at": "2026-05-03 19:26:04"
},
{
"id": "T-68",
"type": "task",
"title": "inline terminal emulator (drop xterm.dart dependency)",
"status": "done",
"priority": "medium",
"created_at": "2026-05-05 12:52:48",
"updated_at": "2026-05-05 12:53:15"
},
{
"id": "T-69",
"type": "story",
"title": "Claude pane: fullscreen mode + mouse-wheel scroll",
"status": "done",
"priority": "medium",
"created_at": "2026-05-05 12:52:52",
"updated_at": "2026-05-05 12:53:15"
},
{
"id": "T-70",
"type": "bug",
"title": "Bold text breaks terminal cell grid (workaround: suppress bold)",
"status": "done",
"priority": "medium",
"created_at": "2026-05-05 12:52:56",
"updated_at": "2026-05-05 12:53:15"
},
{
"id": "T-71",
"type": "task",
"title": "PTY read buffer: 4KB → 64KB",
"status": "done",
"priority": "medium",
"created_at": "2026-05-05 12:53:01",
"updated_at": "2026-05-05 12:53:15"
},
{
"id": "T-72",
"type": "task",
"title": "tmux: isolated -L clide socket so user's tmux config doesn't bleed into clide",
"status": "done",
"priority": "medium",
"created_at": "2026-05-05 12:53:05",
"updated_at": "2026-05-05 12:53:15"
},
{
"id": "T-73",
"type": "task",
"title": "ship matching bold weight to restore semantic bold rendering",
"status": "backlog",
"priority": "medium",
"created_at": "2026-05-05 12:53:21",
"updated_at": "2026-05-05 12:53:21"
},
{
"id": "T-74",
"type": "task",
"title": "forward real mouse events to TUI apps (not just PgUp/PgDown)",
"status": "backlog",
"priority": "medium",
"created_at": "2026-05-05 12:53:22",
"updated_at": "2026-05-05 12:53:22"
},
{
"id": "T-75",
"type": "task",
"title": "PTY: surface errno from forkpty/execve/write/ioctl failures",
"status": "backlog",
"priority": "high",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-76",
"type": "task",
"title": "PTY: fix resource leaks and reader-isolate races",
"status": "backlog",
"priority": "high",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-77",
"type": "task",
"title": "IPC server: per-request timeout, broadcast logging, stale-socket race",
"status": "backlog",
"priority": "high",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-78",
"type": "bug",
"title": "files.read path traversal — validate paths stay under workspace root",
"status": "backlog",
"priority": "high",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-79",
"type": "task",
"title": "pane.spawn / editor.open: map errno to actionable error kinds",
"status": "backlog",
"priority": "medium",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-80",
"type": "task",
"title": "Standardize errno constants + logger in PTY/IPC/daemon",
"status": "backlog",
"priority": "low",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
},
{
"id": "T-81",
"type": "task",
"title": "Misc PTY/IPC/git polish (audit medium-priority items)",
"status": "backlog",
"priority": "low",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
}
],
"ticket_deps": null,
@@ -3709,6 +3835,97 @@
"old_value": "in_progress",
"new_value": "done",
"changed_at": "2026-05-03 20:40:22"
},
{
"ticket_id": "T-43",
"field": "status",
"old_value": "in_progress",
"new_value": "done",
"changed_at": "2026-05-05 12:51:24"
},
{
"ticket_id": "T-68",
"field": "status",
"old_value": "backlog",
"new_value": "done",
"changed_at": "2026-05-05 12:53:11"
},
{
"ticket_id": "T-69",
"field": "status",
"old_value": "backlog",
"new_value": "done",
"changed_at": "2026-05-05 12:53:11"
},
{
"ticket_id": "T-70",
"field": "status",
"old_value": "backlog",
"new_value": "done",
"changed_at": "2026-05-05 12:53:11"
},
{
"ticket_id": "T-71",
"field": "status",
"old_value": "backlog",
"new_value": "done",
"changed_at": "2026-05-05 12:53:11"
},
{
"ticket_id": "T-72",
"field": "status",
"old_value": "backlog",
"new_value": "done",
"changed_at": "2026-05-05 12:53:11"
},
{
"ticket_id": "T-68",
"field": "status",
"old_value": "done",
"new_value": "done",
"changed_at": "2026-05-05 12:53:15"
},
{
"ticket_id": "T-69",
"field": "status",
"old_value": "done",
"new_value": "done",
"changed_at": "2026-05-05 12:53:15"
},
{
"ticket_id": "T-70",
"field": "status",
"old_value": "done",
"new_value": "done",
"changed_at": "2026-05-05 12:53:15"
},
{
"ticket_id": "T-71",
"field": "status",
"old_value": "done",
"new_value": "done",
"changed_at": "2026-05-05 12:53:15"
},
{
"ticket_id": "T-72",
"field": "status",
"old_value": "done",
"new_value": "done",
"changed_at": "2026-05-05 12:53:15"
},
{
"ticket_id": "T-18",
"field": "status",
"old_value": "ready",
"new_value": "in_progress",
"changed_at": "2026-05-05 12:54:39"
},
{
"ticket_id": "T-18",
"field": "status",
"old_value": "in_progress",
"new_value": "done",
"changed_at": "2026-05-05 12:59:05"
}
]
}