Skip to content

chore: promote staging to staging-promote/f2cd1d37-23262791325 (2026-03-18 20:09 UTC)#1379

Merged
henrypark133 merged 3 commits intomainfrom
staging-promote/6831bb4d-23264725970
Mar 18, 2026
Merged

chore: promote staging to staging-promote/f2cd1d37-23262791325 (2026-03-18 20:09 UTC)#1379
henrypark133 merged 3 commits intomainfrom
staging-promote/6831bb4d-23264725970

Conversation

@ironclaw-ci
Copy link
Contributor

@ironclaw-ci ironclaw-ci bot commented Mar 18, 2026

Auto-promotion from staging CI

Batch range: 428303af1128e7f124ad623fc1338393a4d06fcc..6831bb4d7b2bf7bf841c07de098ec023ddb26a5c
Promotion branch: staging-promote/6831bb4d-23264725970
Base: staging-promote/f2cd1d37-23262791325
Triggered by: Staging CI batch at 2026-03-18 20:09 UTC

Commits in this batch (11):

Current commits in this promotion (3)

Current base: staging-promote/f2cd1d37-23262791325
Current head: staging-promote/6831bb4d-23264725970
Current range: origin/staging-promote/f2cd1d37-23262791325..origin/staging-promote/6831bb4d-23264725970

Auto-updated by staging promotion metadata workflow

Waiting for gates:

  • Tests: pending
  • E2E: pending
  • Claude Code review: pending (will post comments on this PR)

Auto-created by staging-ci workflow

henrypark133 and others added 3 commits March 18, 2026 12:29
* fix: consume matched event routine messages

* style: run rustfmt for event routine fix

* fix: preserve preprocessing for routine-triggered messages

* fix: match routines against rewritten input

* refactor: narrow check_event_triggers API and simplify routine_engine_slot

Address Copilot review feedback:

- Change check_event_triggers to accept (user_id, channel, content) instead
  of &IncomingMessage, eliminating the need to clone the full message
  (including attachments) when hooks rewrite content.

- Remove routine_trigger_message and the Cow<IncomingMessage> indirection;
  the event-trigger check now inlines the is_internal + UserInput guard and
  passes the post-hook content string directly.

- Make routine_engine_slot non-optional since Agent::new() always
  initializes it. Removes the redundant Option wrapper and simplifies
  accessor/setter methods.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
#1360)

One flaky test (test_builtin_echo_tool timeout) was stopping the entire
e2e coverage suite via -x, preventing 118+ remaining tests from running
and generating coverage data.

Tests are independent (each gets a fresh browser context via the
function-scoped page fixture), so removing -x is safe.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: add FullJobWatcher to track full_job lifecycle for concurrency (#1318)

full_job routines previously bypassed max_concurrent and global concurrency
limits because execute_full_job() returned RunStatus::Ok immediately after
dispatch. This meant running_count was decremented and the routine_run row
was finalized before the actual job completed.

Introduce FullJobWatcher struct that polls store.get_job() every 5s until
the linked job reaches a non-active state, then maps the final JobState to
RunStatus. execute_full_job now creates and awaits the watcher, keeping both
the DB-level running row and the in-memory running_count elevated for the
full job duration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: full_job concurrency regression tests (issue #1318)

Add two integration tests verifying full_job routine concurrency:

1. full_job_max_concurrent_blocks_second_fire_while_first_active:
   Inserts a Running routine_run (simulating an in-flight full_job) and
   verifies fire_manual returns MaxConcurrent error for max_concurrent=1.

2. global_concurrency_counts_live_full_job_runs:
   Elevates running_count to simulate a live full_job holding the global
   slot, verifies check_cron_triggers skips due routines, then releases
   the slot and verifies the routine fires.

Also makes running_count_for_test() unconditionally public so integration
tests (separate crate) can access it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fmt and clippy fixes for full_job concurrency tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address PR review feedback on FullJobWatcher

- Add #[doc(hidden)] to running_count_for_test() to hide from public API
- Derive MAX_POLLS from POLL_INTERVAL to keep constants coupled
- Check job state before first sleep to finalize promptly for fast jobs
- Update execute_full_job doc comment to reflect blocking behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions bot added scope: agent Agent core (agent loop, router, scheduler) scope: ci CI/CD workflows size: L 200-499 changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Mar 18, 2026
Base automatically changed from staging-promote/f2cd1d37-23262791325 to main March 18, 2026 21:16
@henrypark133 henrypark133 merged commit a95a84e into main Mar 18, 2026
57 of 64 checks passed
@henrypark133 henrypark133 deleted the staging-promote/6831bb4d-23264725970 branch March 18, 2026 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: agent Agent core (agent loop, router, scheduler) scope: ci CI/CD workflows size: L 200-499 changed lines staging-promotion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant