Skip to content

Upgrading

Josh edited this page Nov 5, 2026 · 1 revision

Describes robot-council/core v0.8.3.

To 0.8.3

task_claim and POST {prefix}/api/tasks/{id}/claim now answer 422 with refused, as a refused placement does, when the claiming session's seat is parked or it is outside its developer's assignment hours (#578). A client that read only 200 and 409 from a claim should treat the 422 as a refusal it cannot retry until the seat is lifted or the hours open; the MCP tool answers it as an error.

To 0.8.2

Run php artisan migrate: one migration adds robot_council_agent_sessions.stale_announced_at and marks every session already stale as announced, since its session.stale was already written, so its resumption is still told (#574). After it, session.stale and a stale lane's working_unobserved are written once a session has been quiet for twice presence.stale_after_minutes, rather than when it goes stale, and not at all when it answers first; their shapes are unchanged. A host whose presence.gone_after_minutes is at or below twice the stale threshold sees session.gone alone. Sessions moved to stale by the previous version while the deploy is still switching over carry no mark, so their resumption may go untold.

To 0.8.1

Read the blocked_by file again with the query the GitHub webhook section now shows, which reads each blocker's state, and run robot-council:github-import-blockers with it (#569). An import from 0.8.0's query recorded edges to blockers it had no row for, and an unknown blocker blocks, so a ticket blocked only by closed issues stayed off the shortlist. The new file records each such closed blocker, which unblocks those tickets; no edge needs deleting.

To 0.8.0

Run php artisan migrate: one migration adds robot_council_agent_sessions.ephemeral, defaulting to false, so every existing session stays an ordinary one (#424).

Run php artisan migrate before serving the new code: one migration makes robot_council_agent_sessions.declared_capacity nullable (#564), and a session that declares no capacity is now stored as null, which the old column refuses. The migration also turns every stored 1 into null, because a stored 1 cannot say whether it was declared: the bridge sends a capacity only when one was declared. So a running session in a seat whose Tasks at once was raised takes that number at once, including one that really did declare 1. A host calling Support\AgentSessions::start() without a capacity gets a session that takes its seat's number, where it used to get one. Pass 1 to keep the old behavior.

Run robot-council:github-import-blockers once per repository the webhook reports on, with the file the GitHub webhook section shows how to read (#569). Until it runs, a ticket blocked since before the webhook was configured reads as unblocked: the shortlist offers it and the documentation-ahead warning counts it.

To 0.7.0

Two public reads changed shape for #409, which matters only to a host calling them directly:

  • Support\LaneBoard::read(): a Working lane's task fields moved from on_what itself into on_what.tasks, a list with one entry per held task, and on_what.also_holds is gone. Each row also gained holding and capacity.
  • Support\LiveSessions: its constructor now takes a Support\Seats as well as the AgentLogins. Resolving it from the container needs no change.

Run php artisan migrate: one migration adds the capacity columns and robot_council_tasks.sub_label, each defaulting so every existing session and seat keeps a capacity of one.

Clone this wiki locally