Repository navigation
Upgrading
Describes robot-council/core v0.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.
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.
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.
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.
Two public reads changed shape for #409, which matters only to a host calling them directly:
-
Support\LaneBoard::read(): aWorkinglane's task fields moved fromon_whatitself intoon_what.tasks, a list with one entry per held task, andon_what.also_holdsis gone. Each row also gainedholdingandcapacity. -
Support\LiveSessions: its constructor now takes aSupport\Seatsas well as theAgentLogins. 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.