robot-council/core
Core foundation for Robot Council, providing shared contracts, container bindings, and orchestration primitives for building multi-agent robot workflows in Laravel and PHP. Lightweight, extensible, and designed to integrate with the wider Robot Council ecosystem.
Architecture fit
task_claim now rejects requests from a parked seat or one outside its developer's assignment hours, returning 422 with the violated rule named. This is the right layer — the rule belongs in the domain/authorization path rather than in each controller or client.placement behaviour ("as a placement already is"), which is a coherence win: claim and placement paths previously diverged, and that asymmetry is a common source of "why did this succeed here but fail there" defects.422 body is a meaningful observability affordance for API consumers and for on-call triage. It is the single most valuable detail in these notes.Integration feasibility
v0.8.3 patch release.task_claim needs a branch for the new 422, and every environment needs correct parking state and assignment-hours data before the guard is safe to enable.Technical risk
v0.x permits breaking change, but a patch version is still the wrong vehicle), an unexplained data dependency (parked state and hours must be populated accurately), and an unquantified blast radius across claim entry points.422 is a client-visible error. Retry logic, idempotency handling, and queue workers that treat 4xx as non-retryable may silently drop claims rather than surfacing them.Key questions
422 payload shape stable and documented? Does it identify the rule by machine-readable code, not just prose?composer update?v0.9.0?Stack fit
422-with-named-rule pattern aligns with Laravel's validation/authorization conventions, so existing exception handling and API response formatting should absorb it — but only if the app's exception handler passes through the package's error body rather than flattening it.Migration path
task_claim call sites, confirm assignment-hours and parking data quality in each environment, then upgrade behind a staged rollout.422, distinguish "rule refused" from "malformed request", and define retry semantics (a parked seat is retryable after unparking; a request outside hours is retryable only after hours change — these are different operational signals and should not share a dead-letter path).Compatibility
v0.8.3 — absent from the notes and relevant if the host app is mid-upgrade.Sequencing
422 and surface the named rule to end users.Maintenance
Support
Scaling
Failure modes
422 as terminal and discards the claim without notifying anyone.composer update, catching a team mid-sprint.Ramp-up
422 handling and retry-semantics work is the real cost.How can I help you explore Laravel packages today?