Skip to content

v0.31.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 05:50
· 2474 commits to agent-main since this release
5259a07

What's Changed

  • fix(dashboard): Soften Incidents and Friction detail text to the shared tokens by @danieljhkim in #5423
  • feat(dashboard): Regroup the Delivery tab and fold Context files by @danieljhkim in #5424
  • settle-merged completes a review task whose claimed handoff was revoked and whose PR merged outside Orbit by @orbit-agent-01 in #5425
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5426
  • [auto-task] Website accuracy — validate the oldest orbit-cli.com pages against the current release by @orbit-agent-01 in #5427
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5428
  • orbit mcp serve silently serves ~/.orbit when ORBIT_ROOT points elsewhere, and refuses the --root its help lists by @orbit-agent-01 in #5429
  • Co-change view: read pipeline and settle-merged landings, stop counting no-diff tasks as missing evidence, and explain unreachable minimums by @orbit-agent-01 in #5430
  • task artifact CLI help claims UTF-8-only, omits checkout confinement, and points at a hidden orbit artifacts for listing by @orbit-agent-01 in #5431
  • Refused task status moves fall back to 'the lifecycle has no edge' and name no reachable status by @orbit-agent-01 in #5433
  • Website homepage cuts the install command to “npm install -g @orbit-tools/” at phone width by @orbit-agent-01 in #5432
  • Broader cargo test records with --locked or --no-fail-fast no longer cover their deferred host replays by @orbit-agent-01 in #5434
  • workspace list and config keys ignore the --format plain/--header contract and config keys ndjson is one wrapped document by @orbit-agent-01 in #5436
  • Health rail entry truncates its own label to “He…” when it shows a doctor result and a denial count by @orbit-agent-01 in #5435
  • Update task detail design documentation after the detail head redesign by @orbit-agent-01 in #5441
  • Jobs › History truncates job names and run IDs at desktop width while the mostly blank Failed at column takes the widest share by @orbit-agent-01 in #5438
  • Dashboard informational text drawn in the disabled colour fails WCAG AA contrast (about 3.6:1) by @orbit-agent-01 in #5442
  • orbit update --check fails: latest release metadata (85 KB) exceeds the 64 KiB input limit by @orbit-agent-01 in #5440
  • After-landing review crew draw skips pool members whose executor OS cannot satisfy the task's os tags, and stalls visibly when none can by @orbit-agent-01 in #5439
  • Analytics › Cost: the read-only exploration comparison is always empty, because it looks for an activity name that invocation records never carry by @orbit-agent-01 in #5444
  • Bound the CI job-wait helper’s API subprocess by its advertised overall deadline by @orbit-agent-01 in #5443
  • Settings › Hosts shows only “Loading…” for about 20 s while an unreachable host is probed, then describes it with raw error codes by @orbit-agent-01 in #5446
  • Correct Claude Sonnet 5.5 cache-read pricing from current Anthropic evidence by @orbit-agent-01 in #5447
  • Pilot scope notes strand tasks in proposed: an --approve-proposed drain holds any surface_warnings entry, even advisory ones by @orbit-agent-01 in #5448
  • task add skips the no-context_files warning for chores (the default type) although readiness blocks them by @orbit-agent-01 in #5437
  • [code-org] Split orbit-core codebase analytics facts.rs into a facts/ module by @orbit-agent-01 in #5449
  • Task-authoring skill still says only non-chore adds warn about missing context_files by @orbit-agent-01 in #5450
  • agents show ambiguous-crew refusal tells MCP callers to pass model (the provenance field) and lists no candidate models by @orbit-agent-01 in #5452
  • --complexity help renders a developer note about serde/clap spelling for xhard by @orbit-agent-01 in #5451
  • [delivery-code-review] Zero-weight eligible crews suppress the after-landing OS hold by @orbit-agent-01 in #5454
  • [qa-full-sweep] Reconcile operations phone-shell first-panel placement at 375px by @orbit-agent-01 in #5445
  • Run-inspection MCP tool descriptions omit that agent sessions are refused by @orbit-agent-01 in #5453
  • [delivery-code-review] Cached Hosts health can erase newer probe readings by @orbit-agent-01 in #5455
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5458
  • Rework the orchestrator score so it measures spec quality, not self-assessed task complexity by @orbit-agent-01 in #5456
  • A transient GitHub error during pr_complete blocks the task: authenticated completion retry refuses whenever the base moved or no validation commands are configured by @orbit-agent-01 in #5459
  • Reduce readiness snapshot tail latency below 500 ms without changing admission answers by @orbit-agent-01 in #5460
  • Full-page task view shows the list-only “Not in the current list” note and shows the crew a second time by @orbit-agent-01 in #5461
  • Task-authoring skill says the proposed-task missing-context warning follows every task write, but only task add returns it by @orbit-agent-01 in #5462
  • Keep dashboard task-lock snapshots observational and below 250 ms p95 by @orbit-agent-01 in #5463
  • Task-authoring reference omits the backlog footprint warning from approval writes by @orbit-agent-01 in #5464
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5466
  • A requeued task with a green published PR waits behind other tasks' file locks instead of completing its existing PR by @orbit-agent-01 in #5465
  • [auto-task] Report the unverified actor metrics in documentation validation by @orbit-agent-01 in #5467
  • [delivery-code-review] Overlapping resumed publications can wait on each other's unacquired footprints by @orbit-agent-01 in #5468
  • An --auto-fix drain never repairs a conflicting or red Orbit-managed PR once its task has left the live completion step by @orbit-agent-01 in #5469
  • An UNKNOWN mergeability answer for one PR defers every later out-of-run auto-fix candidate in the pass by @orbit-agent-01 in #5470
  • Out-of-run auto-fix skip reasons are unreadable: the adopt_orphans step output the runbook points to is never persisted by @orbit-agent-01 in #5471
  • adopt_orphaned_deliveries description says a missing completion grant is never repaired, but the code refuses only a --complete leaf under a drain without it by @orbit-agent-01 in #5472
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5473
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5474
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5475
  • [friction-curation] Orbit's doc-duties definition is a stale body fork: it orders by summary prose and lacks the ledger tools and repeat-skip rule by @orbit-agent-01 in #5476
  • [friction-curation] Record why a pipeline worker exited when its run is interrupted as process_not_found by @orbit-agent-01 in #5477
  • [auto-task] Website accuracy — validate the oldest orbit-cli.com pages against the current release by @orbit-agent-01 in #5478
  • Knowledge › Frictions and Health › Events search boxes have no accessible label, only placeholder text by @orbit-agent-01 in #5480
  • [friction-curation] Explicit source repair refuses a conclusively stopped failed pre-adoption successor, stranding a published candidate after final recovery by @orbit-agent-01 in #5479
  • Automation › Routines and Auto-tasks: every enable switch is announced as “Disable, switch, on” with no routine name by @orbit-agent-01 in #5482
  • Agents leaderboard hides the Score column behind a horizontal scroll at desktop width by @orbit-agent-01 in #5483
  • Runbook says a late worker reap means the worker was still running at interruption by @orbit-agent-01 in #5485
  • Health › Events scope chip shows the internal workspace ID (ws_orbit) instead of the workspace name by @orbit-agent-01 in #5484
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5487
  • [delivery-code-review] Do not bound the worker exit observation timestamp by interruption time by @orbit-agent-01 in #5488
  • Full-page view of a task outside the list filter shows its crew as an unlabeled native select on its own row by @orbit-agent-01 in #5481
  • Website CLI reference: command names clip inside their code boxes and the Effect text sits a line low by @orbit-agent-01 in #5486
  • Run detail header reads “Executed on: on dk-server-2” and “Review: none (workspace policy, workspace)” by @orbit-agent-01 in #5489
  • Events workspace chip can clear the sole workspace after a host switch by @orbit-agent-01 in #5490
  • A blocked task's detail never says why it is blocked; the escalation reason is buried in History and Comments by @orbit-agent-01 in #5491
  • Events workspace chip clears scope while the next host's workspace list is still loading by @orbit-agent-01 in #5492
  • [delivery-code-review] Crew select in a draft-held task detail ignores a revert to its build-time crew by @orbit-agent-01 in #5493
  • An escalated block's Next line says a resumable run cannot be resumed by @orbit-agent-01 in #5494
  • [friction-curation] docs/qa/README.md states a QA-record refresh policy no sweep follows, so doc-duties can never fully validate it by @orbit-agent-01 in #5495
  • Out-of-run auto-fix reads only the newest 200 delivery leaves, so an older stuck Orbit PR is never repaired by @orbit-agent-01 in #5497
  • [delivery-code-review] Unreachable prepend fallbacks in the task detail crew chip placement by @orbit-agent-01 in #5496
  • Make claimed screenshot handoff guidance consistent with task_artifacts by @orbit-agent-01 in #5498
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5501
  • Reconcile shipped skill guidance for pre-landing reviewer pools by @orbit-agent-01 in #5499
  • [delivery-code-review] Detail crew refresh resets explicit selections to the workspace default by @orbit-agent-01 in #5500
  • orbit.workspace.list returns a workspace's registered origin URL with the credentials orbit workspace show redacts by @orbit-agent-01 in #5502
  • MCP orbit.workspace.list reports a workspace whose checkout was removed as active; registry validation is copied into five callers by @orbit-agent-01 in #5505
  • Share the validation failure-log classification between owner and claimed validation by @orbit-agent-01 in #5504
  • Walk retry lineage with one bounded walker in vcs automation by @orbit-agent-01 in #5506
  • Unify the provider-answer field guards in vcs operations by @orbit-agent-01 in #5507
  • Build worktree GC reports from one empty-report constructor by @orbit-agent-01 in #5508
  • Share the auto-fix evidence attachment between repair and infrastructure records by @orbit-agent-01 in #5509
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5510
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5511
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5512
  • Show task-pilot warnings on the task with a yellow tag, not as text on the Auto-drain card by @orbit-agent-01 in #5457
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5514
  • Fleet drains host headings read like workspace rows; make the host name the group's clear heading by @orbit-agent-01 in #5513
  • Routine status rows, clock health and routine toggles are built separately by the CLI, dashboard API and desktop MCP read by @orbit-agent-01 in #5515
  • Task detail: move Readiness into the delivery card next to Handled by, instead of low in the side column by @orbit-agent-01 in #5516
  • UI design doc still says the task detail Readiness card leads with the pool alone by @orbit-agent-01 in #5517
  • Clock health tests omit status combinations required by the delivery by @orbit-agent-01 in #5518
  • Ship a blocked-task triage auto-task: requeue mechanical escalations within the requeue bound, propose scope amendments, report human-only blocks by @orbit-agent-01 in #5519
  • orbit.task.artifact.put fails when an agent in the scratch folder passes a checkout-relative source_path by @danieljhkim in #5521
  • orbit.task.update and PATCH /api/tasks/:id store any pr_status; only the CLI refuses values the merge gate cannot read by @orbit-agent-01 in #5520
  • orbit.friction.list remains in shipped agent guidance after its removal by @orbit-agent-01 in #5522
  • Agent envelopes list operator-only tools agents cannot call by @orbit-agent-01 in #5523
  • Orbit skill: keep task titles within the commit subject budget by @orbit-agent-01 in #5525
  • Task detail: Context files list sits off-centre in a double frame and splits paths mid-word by @orbit-agent-01 in #5526
  • orbit.task.artifact.get still probes missing doc-duties ledgers instead of discovering artifacts by @danieljhkim in #5527
  • auto-task show and list find no definitions in a run worktree by @orbit-agent-01 in #5529
  • Task detail: acceptance criteria rows are spaced too far apart by @orbit-agent-01 in #5530
  • A blocked task returned to backlog by plain status update skips the publication pre-flight and fails candidate_resume on its next run by @danieljhkim in #5531
  • Task detail: show lifecycle actions only on Overview and Comment only on the Comments tab, not under every tab by @orbit-agent-01 in #5532
  • orbit.task.artifact.put coverage type errors omit the field and schema recovery guidance by @orbit-agent-01 in #5533
  • Restore contention colors on context selector basenames by @danieljhkim in #5534
  • [delivery-code-review] Local .yml auto-task candidates do not block shared show fallback by @orbit-agent-01 in #5536
  • Combined crew/backlog update preserves the old crew provenance and strands candidate resume by @orbit-agent-01 in #5537
  • chore(deps): bump vite from 8.1.5 to 8.3.4 in /website in the npm_and_yarn group across 1 directory by @dependabot[bot] in #5535
  • Legacy-publication refusal names an unpublished successor as the publishing run by @orbit-agent-01 in #5538
  • Collapse long acceptance criteria in task detail behind a Show full AC toggle by @orbit-agent-01 in #5539
  • docs: scope per-crew credentials (crews..env) by @danieljhkim in #5540
  • Task detail: render the Description (and Plan, Execution summary) Markdown in a contained panel with its own surface by @danieljhkim in #5541
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5543
  • Dashboard task detail: clamped acceptance criteria rows overlap by @danieljhkim in #5544
  • cli: trim verbose help for run auto/show/profiles/cancel and global flags by @danieljhkim in #5545
  • [code-scanning-sweep] Fix rust/path-injection at 2 locations in crates/orbit-core/src/application/auto_tasks/read.rs by @orbit-agent-01 in #5546
  • Dashboard Drain card hides queued drains: a second orbit run auto window is invisible until the first ends by @danieljhkim in #5547
  • docs: distributed-drain: scarcity-aware admission order (design) [ORB-17304] by @danieljhkim in #5551
  • Agents › Pilots credits each assessment to the piloted task's crew instead of the crew the pilot drew by @danieljhkim in #5550
  • Per-crew credentials, phase 1: crews..env list overlays the agent environment by @danieljhkim in #5549
  • Record the orchestrator crew's model on each task and rank Agents › Orchestrators by crew and model by @danieljhkim in #5552
  • Distributed drain › A pending landing repair strands when its original executor stops pulling: the owner fallback never fires by @orbit-agent-01 in #5553
  • Preserve orchestrator show access when a crew has multiple recorded models by @orbit-agent-01 in #5554
  • Owner repair fallback treats available repair slots as a total workspace ceiling by @orbit-agent-01 in #5555
  • Followers report the leaf's crew and model at claim settlement so Agents › Implementers can rank pulled attempts by model by @danieljhkim in #5556
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5557
  • Drain page covers every orbit run auto option, pull included by @orbit-agent-01 in #5558
  • [qa-sweep] Operations browser QA fails after pilot warnings moved to tasks by @danieljhkim in #5559
  • [code-review] Keep provider state-root overrides aligned with sandbox grants by @danieljhkim in #5560
  • [code-review] Fence delivery reset against the inspected action generation by @orbit-agent-01 in #5562
  • [code-review] Repository config example and contributor docs still list four local make gates after required PR checks became the only gate by @orbit-agent-01 in #5561
  • [code-review] Preserve object-valued tool field projections by @orbit-agent-01 in #5564
  • [code-review] Resolve numeric audit steps in run show by @danieljhkim in #5565
  • [code-review] Exclude quoted tool-call examples from invocation telemetry by @orbit-agent-01 in #5566
  • [code-review] Auto-task body history lacks the doc-duties body shipped at 669d9bb, so edited copies of it read as forks by @danieljhkim in #5567
  • [code-review] refusal_during_concurrent_calls_and_after_discarded_mutation_reply_never_replays cannot detect a replay or an in-flight-specific refusal by @danieljhkim in #5568
  • [code-review] No test pins the operator argv that workspace init --mcp generates; the retirement note claims coverage that does not exist by @danieljhkim in #5569
  • [code-review] Deleting a pending task wedges its state routine: member admission errors on the missing task instead of retiring it by @orbit-agent-01 in #5572
  • [code-review] Age-based scratch GC can delete files retained by retrying runs by @orbit-agent-01 in #5570
  • [code-review] Doctor activity health misses duplicate names that prevent catalog dispatch by @orbit-agent-01 in #5573
  • [code-review] Codebase show discards landed facts and misclassifies regression layers by @orbit-agent-01 in #5574
  • [code-review] Honor the gate's configured admission wait deadline by @danieljhkim in #5571
  • Admission prefers work only the requesting executor can run by @orbit-agent-01 in #5563
  • [code-review] Agent guide states two different CI budgets: 10 minutes at the rule, 15 minutes at the coverage rule by @orbit-agent-01 in #5579
  • [code-review] Treat empty XDG roots as unset when resolving Linux OpenCode sandboxes by @orbit-agent-01 in #5575
  • [code-review] Job-action delivery routine never settles a Held run, so its admitted batch stays batch_pending forever by @danieljhkim in #5577
  • [code-review] Remap excluded delivery identities during history replay by @orbit-agent-01 in #5576
  • [code-review] A symbolic sweep cursor (branch name) permanently suppresses skip_if_unchanged sweeps by @danieljhkim in #5578
  • [code-review] Four MCP tests re-execute themselves with hand-rolled child runners that skip run_in_child's deadline and process-group safeguards by @danieljhkim in #5581
  • [code-review] Skill docs show orbit task locks release without the --confirm it requires by @orbit-agent-01 in #5580
  • [code-review] Keep run show usable with corrupt child state by @danieljhkim in #5584
  • [code-review] Task-execution skill tells operators to run nonexistent orbit task approve by @danieljhkim in #5583
  • [code-review] Issue templates' crate dropdown lists the removed orbit-knowledge crate and omits four current crates by @orbit-agent-01 in #5582
  • [code-review] Activity health silently treats unreadable catalog directories as healthy by @orbit-agent-01 in #5585
  • [code-review] mcp_setup_root swaps the process-wide panic hook in the shared libtest parent to self-test a test helper by @orbit-agent-01 in #5588
  • [code-review] Orchestration skill still says a [BLOCKED]-PR task cannot be moved with plain --status backlog by @orbit-agent-01 in #5589
  • [code-review] The auto_concurrency resize refusal row in stdio_drain_window passes for an unrelated reason by @danieljhkim in #5591
  • [code-review] Body-history fixture README and auto-task design doc describe a retired all-records regression; qa-sweep.yaml fixture is orphaned by @orbit-agent-01 in #5592
  • [code-review] Brokered plugin audit fixture hangs until nextest kills it when a call skips the fake broker by @danieljhkim in #5594
  • [code-review] Desktop stdio test hides the pipeline_invoke mixed-input refusal behind the disabled-job refusal and never checks crew reset by @orbit-agent-01 in #5595
  • [code-review] Bound agent answers in compact workflow run snapshots by @orbit-agent-01 in #5593
  • [code-review] CodeQL and macOS workflows and the agent guide still describe PR-time runs after both moved to push-only by @orbit-agent-01 in #5587
  • [code-review] Maintenance skill points workspace scratch-retention default at the global shipped job copy by @danieljhkim in #5596
  • [code-review] Catalog-drift diagnosis in common-failures.md diffs nonexistent job_<job>.yaml paths by @danieljhkim in #5598
  • [code-review] CLI help shows an example path that never existed, a cancel synopsis that always fails, and MCP field names or stale summaries in place of CLI terms by @orbit-agent-01 in #5597
  • [code-review] auto-task reset and delete --force fail when the watched branch cannot be fetched or no longer exists by @danieljhkim in #5600
  • [code-review] Local ship mode with review enabled withholds plugin-routed tasks that the local-route refusal never applies to by @orbit-agent-01 in #5601
  • [code-review] A review finding path that resolves in neither commit counts as unchanged and can charge a spurious false reject by @danieljhkim in #5599
  • [code-review] Epic-retirement readiness check is never called, but the design doc says it refuses migration by @orbit-agent-01 in #5602
  • [code-review] plugins.rs: CLI tool-run input check reduces to stdout.contains("cli"), and a Linux test group is misnamed by @danieljhkim in #5603
  • [code-review] observational_read_only_stores records scenario passes for rows that silently skip when mode bits are ignored by @danieljhkim in #5604
  • [code-review] Preserve non-preset durations when cloning a drain window by @orbit-agent-01 in #5605
  • [code-review] Doctor flags a healthy launchd sweep clock because the sweep.log freshness check allows no slack by @orbit-agent-01 in #5606
  • [code-review] auto-task add and restore leave a written definition behind when their follow-up settings or manifest write fails by @orbit-agent-01 in #5607
  • [code-review] Review settlement's known-red history write bypasses claimed-leaf routing and is skipped on settle replay by @orbit-agent-01 in #5608
  • [code-review] Changing the sweep clock cadence silently resumes a paused clock by @orbit-agent-01 in #5609
  • [delivery-code-review] Doctor runbook still documents the pre-slack launchd log freshness rule by @orbit-agent-01 in #5611
  • [code-review] Use the live pull concurrency ceiling in the claim budget by @danieljhkim in #5610
  • [code-review] Auto-task reset local fallback reuses the fetch-exhausted source deadline by @orbit-agent-01 in #5612
  • Per-crew credentials, phase 2: a crew with env is its own account for limits, holds and auth exclusions by @danieljhkim in #5613
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5615
  • [delivery-code-review] Move cadence tests to public boundaries by @orbit-agent-01 in #5614
  • [code-review] Include unsettled admissions in the pull claim budget by @danieljhkim in #5616
  • [delivery-code-review] Attribute same-provider activity auth failures to the failing crew account by @orbit-agent-01 in #5617
  • Dashboard › Warn when an auto drain runs in a workspace whose task pilot is not enabled on this machine by @danieljhkim in #5618
  • [code-scanning-sweep] Fix rust/cleartext-storage-database in crates/orbit-store/src/driver/sqlite/provider_limit_store.r… by @danieljhkim in #5622
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5623
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5624
  • [friction-curation] Name the checkout identity state in CI sweep evidence-gap errors by @orbit-agent-01 in #5626
  • [friction-curation] Retry GitHub HTTP 499 on read-only PR lookups as transient by @orbit-agent-01 in #5625
  • [code-review] Maintenance skill says orbit gc tmp empties scratch, but without --confirm it only reports by @danieljhkim in #5590
  • chore(deps): bump the codeql-action group with 2 updates by @dependabot[bot] in #5621
  • Hold a provider whose API key is unscoped to a workspace by @orbit-agent-01 in #5627
  • [auto-task] Website accuracy — validate the oldest orbit-cli.com pages against the current release by @orbit-agent-01 in #5629
  • Have task pilot declare exact generated skill companions by @orbit-agent-01 in #5628
  • Align the contributor guide with current validation policy by @orbit-agent-01 in #5630
  • [delivery-code-review] Qualify the candidate-handoff prerequisite for recheck-blocked by @orbit-agent-01 in #5633
  • [qa-full-sweep] Scope host read-only browser assertions by @orbit-agent-01 in #5632
  • [qa-full-sweep] Update clock browser for Comments tab by @orbit-agent-01 in #5634
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5635
  • [BLOCKED] [security-review] Update desktop TLS dependencies to reject distrusted emSign intermediates by @orbit-agent-01 in #5631
  • chore(deps): bump marked from 18.1.0 to 18.1.1 in /crates/orbit-web/assets/dashboard by @dependabot[bot] in #5620
  • [ci-failure-sweep] Fix red CI: CI / Check / Clippy / Test / Run CI guardrails by @orbit-agent-01 in #5637
  • Tasks dock keeps the simple drain panel; the full composer stays on #drain/start only by @orbit-agent-01 in #5636
  • Task detail: related tasks move into the delivery card by @orbit-agent-01 in #5638
  • Drain command preview renders on one line, with Copy beside it by @orbit-agent-01 in #5639
  • Task detail: Context files becomes a tab beside History, Runs, Artifacts and Comments by @orbit-agent-01 in #5641
  • Tasks quick Start offers a refused local drain on replica checkouts by @orbit-agent-01 in #5642
  • [code-review] Reconcile-review refusals tell operators to set the deprecated [operation] review_crew key by @orbit-agent-01 in #5640
  • Polish task readiness, sticky actions and timestamp placement by @orbit-agent-01 in #5643
  • Move full-task Back to list button to the upper right by @orbit-agent-01 in #5645
  • Preserve committed candidates across final-recovery replay by @orbit-agent-01 in #5644
  • [auto-task] Validate the oldest workspace documentation by @orbit-agent-01 in #5646
  • [delivery-code-review] Correct the forecast mode key in distributed-drain design by @orbit-agent-01 in #5647
  • Simplify task detail controls and disclosure spacing by @danieljhkim in #5648
  • [delivery-code-review] Resume a published replay after a host rebase before republishing by @orbit-agent-01 in #5649
  • Preserve older-client compatibility for persisted handoff settlements by @orbit-agent-01 in #5650
  • Prepare v0.31.0 release by @orbit-agent-01 in #5651

Full Changelog: v0.30.0...v0.31.0