0.79.0
Released 2026-11-13. A feature release on 0.78.1.
sb ships the role pack
Section titled “sb ships the role pack”sb now ships the pi-herdr-agents roles its agents run as: worker, scout, planner, reviewer, visual-tester, and adversarial-reviewer, in roles/, registered by a new extension entry, src/rolepack.ts. Spec: 2026-11-09-agent-kinds.md §9, D11. See The role pack.
- Uninstall pi-herdr-roles in the same install. Its roles have the same names, and pi-herdr-agents disables a name two packs both carry: with both installed,
planneris gone wherever no global or projectplannercovers it (review R0790-F004). weihung-basic-agent retires pi-herdr-roles and adds a globalplannerin the commit that pins 0.79.0. - A global or project role of the same name still wins. The pack’s
tools:lines take effect only where no such role exists (on a machine with the weihung-basic-agent overrides, once they are removed). - Each role’s tools.
scout,planner,reviewer, andvisual-testernow list their tools;workerandadversarial-reviewerkeep every tool. Theplannercan edit a plan in place and open it withshow_doc; the reviewers and the visual tester can open an HTML report withshow_doc. /boss roles-check [folder]checks each role’stools:names against the session’s own tools and the names only a subagent has, and fails a name the session lacks or one only a parent has. It starts no process. Run it before a release that changesroles/./planand theplanskill left with pi-herdr-roles: a main plans by its planning rules and dispatchesplannerdirectly.NOTICE.mdnames where each role file comes from and carries the MIT notice of pi-herdr-roles’ lineage.
Agent kinds, phase 2: the net knows every kind
Section titled “Agent kinds, phase 2: the net knows every kind”Spec, Phase 2 steps 1 to 4.
- A subagent keeps its kind when it is resumed. Each pi-herdr-agents child now records its role in its own session file at its first turn (a
straw-boss { agent }entry, written once). The net reads the kind from that entry (the first one in the first 64 KB), and the launch script stands in before the first turn. A resumed child gets a new id and a launch script with no role. The net now finds it by the script that carries its id, then by that script’s session file and the pane that runs it. A running resumed child therefore shows with its name, its live mark, and its kind. Before, it showed asdoneunder a hex id. It keeps its kind when another session resumed it, too. boss_open_maintakesduty.duty: "standing"opens a main of kind standing; the default is coordinator. The new pi consumes the kind with its one-time claim. It writes the kind entry and keeps the kind in its role record, so a Herdr restore before its first message brings it back with its kind. An integrator is still opened only throughrole: "integrator", whose door now hands the new pi its kind directly instead of relying on the nameinteg <project>. A train takes no duty.boss_statusandtower_listshow each main’s kind (kindbeside the tab’s main; null for a tab with no main).- A standing main’s board line is never stale. It minds one system with no end, so
board_read, the tower’s brief, and the page no longer mark its old line as stale.
Auto mode cancels a robot_hand dialog
Section titled “Auto mode cancels a robot_hand dialog”Task 6 of the auto-mode spec. pi-robot-hand 0.8.0 takes a cancel for its robot_hand selector and says so in each dialog’s pending (cancellable: true). sb now sends it one, with the dialog’s digest, only for a dialog that said so: when auto mode turns on, an open robot_hand closes as cancelled and the agent’s turn goes on instead of being aborted, and the page’s Cancel shows on it. A robot_hand older than 0.8.0 says nothing and gets no cancel, as before. secret_drop takes none.
- The subagent list stays fast for a parent with many launches (review R0790-F001). The net reads a launch script only for a child that a pane runs or that was active in the last ten minutes, finds a resume by the id its script carries (the resumes alone are read, once while the folder lists the same names), and keeps the scripts it read per parent, so one parent’s hundreds of launches no longer evict another’s.
- A resumed child shows once when its first launch and its resume have the same activity time (review R0790-F002).