chore: promote staging to staging-promote/bfca5e93-24761127746 (2026-04-22 08:09 UTC) - #2839
Conversation
Previously the hourly staggered schedule (five crons at :00/:15/:30/
:45/:50) kicked off a separate workflow run per cron, which produced
24 runs/day per lane group, four red dots per day when something
flaked, and four separate notifications.
Collapse to a single cron `0 2 * * *`. Every job's `if:` guard now
matches that one slot, so all lanes run as parallel jobs inside a
single workflow run:
- One run/day, one red dot on failure, one notification.
- All per-lane statuses visible inside the run; per-job results
still independent (one failing lane doesn't cancel siblings).
- If we want to temporarily dial up frequency for a specific lane
again, we add another cron here and update that lane's `if:`
guard to match.
02:00 UTC chosen as a low-traffic window globally.
* feat(bridge): project 3 dropped engine events to AppEvents Closes the first 3 of ~9 coverage gaps in `thread_event_to_app_events` (#2654) — the UI state convergence work tracked under #2792 (Phase 1). Bridges: - `EventKind::StepFailed` → `AppEvent::Error` (LLM / step failures were silently dropped; "Processing..." stuck with no explanation) - `EventKind::ChildCompleted` → new `AppEvent::ChildThreadCompleted` (symmetric to existing `ChildThreadSpawned`; tree views couldn't mark child branches finished) - `EventKind::CodeExecutionFailed` → new `AppEvent::CodeExecutionFailed` (CodeAct / Monty runtime failures never surfaced to the UI) Scope kept deliberately narrow: the 3 variants with no duplicate-emit risk. `ApprovalRequested` / `ApprovalReceived` are deferred to the PR that adds the `projection-exempt` lint (Phase 1 PR 2), where the existing direct emits from the gate manager can be audited in the same change. Regression tests mirror the existing `thread_event_to_app_events_preserves_call_id_for_action_events` pattern — one per new arm, asserting field mapping and `thread_id` propagation. Refs: #2792, #2654 * refactor(bridge): type CodeExecutionFailed.category as enum Addresses a types.md regression in the previous commit. `category` was stringified on the wire via the engine's `Display` impl, which violates the "Fixed small sets → enum" rule and risks silent drift if the engine enum adds a variant. - Define `CodeExecutionFailureCategory` in `ironclaw_common::event` as a parallel Copy enum with matching `#[serde(rename_all = "snake_case")]` — same wire format, compile-time variant safety. - Bridge the engine enum via an exhaustive match in `code_execution_category_to_wire`. Exhaustiveness is the point: adding a variant to the engine enum is now a compile error here, forcing the wire mirror to be kept in lockstep. - Re-export `CodeExecutionFailureCategory` from the crate root and update the bridge test to assert against the typed variant rather than a string literal. The `ironclaw_engine::CodeExecutionFailure` can't be imported directly into `ironclaw_common` (dependency direction), so the parallel enum is the cleanest option without a bigger crate restructure. Refs: #2792
Now the guard will be take and cusom, So we should not skip msg_tx clone.
feat: add fork_repo action to GitHub WASM tool Adds fork_repo action with full input validation, optional organization/name/default_branch_only params. CI failures are pre-existing (RUSTSEC-2026-0098 in rustls-webpki transitive dep, unrelated to this PR).
Code reviewFound 1 issue:
The Recommendation: Either (a) use a dedicated JSON field validator, or (b) document why URL-path validation is intentionally applied to body fields. All other checks passed:
|
Auto-promotion from staging CI
Batch range:
7fb41555a9e55677d1aaea29ca567a5b369c2b05..653801700eb0e52393f8ae36455815fc0ad613c3Promotion branch:
staging-promote/65380170-24767546819Base:
staging-promote/bfca5e93-24761127746Triggered by: Staging CI batch at 2026-04-22 08:09 UTC
Commits in this batch (74):
onboardfails with "Failed to save settings to database", butironclawstarts successfully and applies migrations #846) (fix(setup): run migrations during onboard when DATABASE_URL preset (#846) #2309)Current commits in this promotion (4)
Current base:
staging-promote/bfca5e93-24761127746Current head:
staging-promote/65380170-24767546819Current range:
origin/staging-promote/bfca5e93-24761127746..origin/staging-promote/65380170-24767546819Auto-updated by staging promotion metadata workflow
Waiting for gates:
Auto-created by staging-ci workflow