releases/v2026.428.0.md
Released: 2026-04-28
todo issues that have no prior heartbeat run, so initial assignments can no longer sit idle. The path reuses budget hard-stops and skips paused agents, and assignmentDispatched is now reported in startup and scheduled recovery logs. (#4614)stranded_issue_recovery issues are now blocked in place instead of spawning nested recovery loops, retry-failure details are redacted from recovery comments (with reviewers pointed at the linked run evidence), and maxConcurrentRuns: 1 is honored by heartbeat concurrency normalization. (#4600)recentOptionIds default avoids a stale render churn. (#4617)attachmentMaxBytes cap (10 MB default) that flows through the shared portability contract, CLI import/export, and server attachment uploads. The process-level cap still acts as the final ceiling. (#4700)createdByUserId, and coalesced or skipped active routine issues are touched for that user so the work stays in their inbox. (#4615)companySkillService.list() now checks that the company exists before refreshing bundled and local-path skill state, returning an explicit 404 Company not found instead of continuing background work for deleted or missing companies. (#4601)CompanyProvider now defers exposing a selected company until the loaded company list validates the stored id, clears storage when no companies are available, and avoids briefly putting downstream UI in an invalid company scope on bootstrap. (#4602)Four new database migrations (0071–0074) will run automatically on startup:
0071_default_hire_approval_off — flips the companies.require_board_approval_for_new_agents column default to false. Only affects future inserts; existing companies keep their stored values.0072_large_sandman — adds a partial unique index that prevents duplicate active stranded_issue_recovery issues for the same source issue.0073_shiny_salo — adds companies.attachment_max_bytes (default 10485760, NOT NULL). Existing rows get the 10 MB default; raise the value per company if you need larger attachments.0074_striped_genesis — adds a partial unique index that prevents duplicate active issue_productivity_review issues for the same source issue.All migrations are additive — no existing data is modified or removed.
If you want new companies to keep requiring board approval for new agents, set that policy explicitly during company creation or import; the stored value still wins over the column default.
Thank you to everyone who contributed to this release!
@cryppadotta