Skip to content

0.77.3

Released 2026-11-12. A fix release of 0.77.2.

  • train check in a worktree checks the app. A coordinator’s linked worktree often has no apps.json (the main checkout keeps an untracked .claude/straw-boss/apps.json), and train check then skipped the app and answered ok, while the tower refused the same slip with “no app named …”. It now reads the main checkout’s apps.json when its own folder has none. When neither has one, an app the check names is refused with “could not be checked” instead of passed.
  • A slip’s car: is its app, said everywhere. On a slip, car: names the car’s app as apps.json names it, never a ticket; train_car’s car is the car’s first ticket. The tool’s schema, the prompts, the refusals and the docs now say which is which. app: is accepted as the same field as car:, and a slip that gives both with different values (such as app: moldplan-frontend-2 | car: MP-4618) is refused with the reason.
  • No slip field is dropped unsaid. An inline app: on a slip line used to be split off and ignored, and a key that is no slip field reached the tower’s door without a word. The door now refuses such a slip with the parse’s words.
  • Herdr reads retry once. At a load of 30 to 55, about half of the first pane.list and workspace.list requests failed (“timeout no answer within 5000 ms”, “the connection closed before an answer”). A request on Herdr’s socket that only reads is asked once more after 250 ms when it times out or its connection closes; a request that changes something is still sent once.
  • tower_send to the head tower’s workspace says to use head: true. Naming the head tower by its workspace id, its label, or its session id (sb-head) answered “Head tower has no tower and no joined session to hear a message”. It now answers that this is the head tower and head: true with inReplyTo reaches it.
  • A tower run tells the sender of a relay it could not deliver. The tower-run prompt says so, and records a wait for the boss when only the boss can unblock it, instead of only noting it in the handoff.
  • The check at received (review of 0.77.2). A fetch that fails as unreachable after the server’s mirror config or HEAD changed since its init is refused as tampered, not received unchecked (R0772-F001). A URL’s userinfo (https://token@host) is blanked in the reason text and in the log, also where landed names a remote that moved between two opens (R0772-F002, R0773-F001). Only a repository the remote says is not there counts as “repository not found”, so ssh: command not found refuses; the docs name what counts as a connection failure: DNS, TLS errors, HTTP 5xx, a proxy’s 407, and sb’s own 60 s timeout (R0772-F003). Unreachable and unauthenticated remotes are still received unchecked, as the boss kept.