feat(actor): make built-in actors virtual, resolved on-demand from provider registry #10927

Merged
HAL9000 merged 1 commit from feature/m3-virtual-built-in-actors into master 2026-04-30 12:51:48 +00:00
Member

Summary

  • Replaces DB-persistence of built-in actors with in-memory virtual resolution from ProviderRegistry
  • agents actor list now shows built-in actors immediately after init without any prior write operation
  • ensure_built_in_actors() removed entirely; is_built_in column dropped from actors table via Alembic migration
  • ActorRegistry.update_actor() added to guard virtual built-in actors from being modified via the update path

Motivation

Before this change, agents actor list showed "No actors configured" after a fresh init --yes even when providers were configured with valid API keys. Built-in actors were only materialised lazily on the first write operation, creating the confusing UX described in the specification. This was tracked as a known architectural contradiction (bug #797).

Approach

Virtual resolution pattern: Built-in actors are now Actor domain objects created in-memory from ProviderRegistry.get_configured_providers() at query time. They have is_built_in=True and id=None — never persisted.

Actor resolution order (DB-first):

  1. service.get_actor(name) — custom DB actors
  2. _resolve_virtual_builtin_by_name(name) — virtual built-ins from provider registry
  3. NotFoundError if neither

Default actor preference (actor_preferences singleton table): set_default_actor for a virtual built-in stores just the name string. get_default_actor reads the preference, resolves via the chain, returns with is_default=True.

Built-in actor protection: ActorRegistry.update_actor() rejects virtual built-in actor names with a ValidationError, mirroring the remove() guard. The CLI actor update command now routes through update_actor() instead of upsert_actor() directly.

is_built_in bypass removed: ActorService.upsert_actor() no longer accepts an is_built_in parameter or bypasses the local/ namespace guard. All custom actors must use local/<id> naming; non-local names are always rejected.

Key Files Changed

File Change
src/cleveragents/actor/registry.py Full rewrite with virtual resolution; add update_actor() guard; fix datetime.now(UTC); fix asdict() None guard
src/cleveragents/application/services/actor_service.py New set/get_default_actor_name() preference methods; remove is_built_in bypass from upsert_actor(); fix datetime.now(UTC)
src/cleveragents/infrastructure/database/repositories.py Remove upsert_built_in(), is_built_in persistence; add set/get_default_name(); fix race condition in set_default_name() with try/except IntegrityError
src/cleveragents/infrastructure/database/models.py Remove is_built_in from ActorModel; add ActorPreferencesModel
src/cleveragents/cli/commands/actor.py Remove 2 ensure_built_in_actors() calls; route actor update through registry.update_actor()
src/.../m10_001_virtual_builtin_actors.py Migration: drop is_built_in, add actor_preferences table; fix docstring/down_revision mismatch; fix downgrade to preserve default actor preference
features/virtual_builtin_actors.feature + steps 8 new scenarios: list, show, remove, set-default, get-default, no-DB-writes
features/database_repository_coverage.feature + steps 4 new scenarios covering ActorPreferencesModel singleton table directly
robot/helper_tdd_actor_list_no_db_update.py Add check-no-set-default-name subcommand
robot/tdd_actor_list_no_db_update.robot Add Robot test for set_default_actor_name not called during actor list
tests/actor/test_registry_builtin_yaml.py Rewrite TestEnsureBuiltInActors*TestResolveVirtualBuiltinActors + new test classes

Review Fixes Applied (PR #10927 review)

Critical

  • C1: Added ActorRegistry.update_actor() method that rejects virtual built-in actors with ValidationError. CLI actor update command now routes through this method instead of upsert_actor() directly, closing the path that could silently convert a virtual built-in to a persisted custom actor.
  • C2: Replaced contextlib.suppress anti-pattern in actor_registry_full_coverage_steps.py and actor_registry_new_coverage_steps.py with explicit try/except that captures exceptions into context.<op>_error, allowing Then steps to assert on the correct exception type.

Major

  • M1: Fixed migration docstring: Revises: m9_002_plan_resume_fieldsRevises: a5_006_action_invariants_unique_constraint to match the actual down_revision value.
  • M2: Replaced the vacuously-passing remove_actor scenario in consolidated_actor.feature with two scenarios: one that explicitly asserts ValidationError is raised for virtual built-ins, and one that tests custom actor removal delegation.
  • M3: Replaced the weak step_service_default fallback (which conflated "actor exists" with "actor is default") with a precise assertion on the stored preference name.
  • M4: Added 4 new ActorPreferencesModel scenarios to database_repository_coverage.feature with real repository layer coverage: get when empty, set/get round-trip, update existing row, and fallback to legacy is_default actor row.
  • M5: Added check-no-set-default-name subcommand to the Robot helper and a corresponding Robot test case verifying set_default_actor_name is not called during actor list.
  • M7: Fixed set_default_name() race condition: the INSERT path now catches IntegrityError and falls back to a re-fetch + UPDATE, preventing unhandled errors under concurrent access.
  • M8: Fixed the set_default_actor scenario in consolidated_actor.feature to explicitly call get_default_actor after set_default_actor and assert on the returned actor name, eliminating the stale context.returned_default dependency.
  • M9: Removed WIP: prefix from PR title.

Minor / Nit

  • m1: Added if info.capabilities else None guard around asdict(info.capabilities) in _resolve_virtual_builtin_actors().
  • m2: Changed datetime.now() to datetime.now(UTC) in registry.py and actor_service.py for timezone-aware consistency.
  • m4: Fixed migration downgrade() to copy default_actor_name from actor_preferences back to is_default=True on the actor row before dropping the table, preventing data loss on rollback.
  • m5: Removed is_built_in parameter and its local/ namespace bypass from ActorService.upsert_actor(). Non-local actor names are now always rejected, eliminating the footgun.
  • Removed duplicate allow_unsafe entry from add() docstring.
  • Removed dead step_verify_builtin_overwrite_error step definition.
  • Removed duplicate scenario in consolidated_actor.feature.

Quality Gate Results

Gate Result
nox -e lint ✓ PASS
nox -e typecheck ✓ PASS (0 errors)
nox -e unit_tests ✓ PASS (672 features, 15685 scenarios)
nox -e integration_tests ✓ PASS — 1998 tests, 0 failed
nox -e e2e_tests ⚠️ 1 pre-existing failure (Wf07 CI profile, unrelated)
nox -e coverage_report Delegated to CI

Closes #10923

## Summary - Replaces DB-persistence of built-in actors with in-memory virtual resolution from `ProviderRegistry` - `agents actor list` now shows built-in actors immediately after `init` without any prior write operation - `ensure_built_in_actors()` removed entirely; `is_built_in` column dropped from `actors` table via Alembic migration - `ActorRegistry.update_actor()` added to guard virtual built-in actors from being modified via the update path ## Motivation Before this change, `agents actor list` showed "No actors configured" after a fresh `init --yes` even when providers were configured with valid API keys. Built-in actors were only materialised lazily on the first write operation, creating the confusing UX described in the [specification](docs/specification.md). This was tracked as a known architectural contradiction (bug #797). ## Approach **Virtual resolution pattern**: Built-in actors are now `Actor` domain objects created in-memory from `ProviderRegistry.get_configured_providers()` at query time. They have `is_built_in=True` and `id=None` — never persisted. **Actor resolution order** (DB-first): 1. `service.get_actor(name)` — custom DB actors 2. `_resolve_virtual_builtin_by_name(name)` — virtual built-ins from provider registry 3. `NotFoundError` if neither **Default actor preference** (`actor_preferences` singleton table): `set_default_actor` for a virtual built-in stores just the name string. `get_default_actor` reads the preference, resolves via the chain, returns with `is_default=True`. **Built-in actor protection**: `ActorRegistry.update_actor()` rejects virtual built-in actor names with a `ValidationError`, mirroring the `remove()` guard. The CLI `actor update` command now routes through `update_actor()` instead of `upsert_actor()` directly. **`is_built_in` bypass removed**: `ActorService.upsert_actor()` no longer accepts an `is_built_in` parameter or bypasses the `local/` namespace guard. All custom actors must use `local/<id>` naming; non-local names are always rejected. ## Key Files Changed | File | Change | |------|--------| | `src/cleveragents/actor/registry.py` | Full rewrite with virtual resolution; add `update_actor()` guard; fix `datetime.now(UTC)`; fix `asdict()` None guard | | `src/cleveragents/application/services/actor_service.py` | New `set/get_default_actor_name()` preference methods; remove `is_built_in` bypass from `upsert_actor()`; fix `datetime.now(UTC)` | | `src/cleveragents/infrastructure/database/repositories.py` | Remove `upsert_built_in()`, `is_built_in` persistence; add `set/get_default_name()`; fix race condition in `set_default_name()` with try/except IntegrityError | | `src/cleveragents/infrastructure/database/models.py` | Remove `is_built_in` from `ActorModel`; add `ActorPreferencesModel` | | `src/cleveragents/cli/commands/actor.py` | Remove 2 `ensure_built_in_actors()` calls; route `actor update` through `registry.update_actor()` | | `src/.../m10_001_virtual_builtin_actors.py` | Migration: drop `is_built_in`, add `actor_preferences` table; fix docstring/`down_revision` mismatch; fix downgrade to preserve default actor preference | | `features/virtual_builtin_actors.feature` + steps | 8 new scenarios: list, show, remove, set-default, get-default, no-DB-writes | | `features/database_repository_coverage.feature` + steps | 4 new scenarios covering `ActorPreferencesModel` singleton table directly | | `robot/helper_tdd_actor_list_no_db_update.py` | Add `check-no-set-default-name` subcommand | | `robot/tdd_actor_list_no_db_update.robot` | Add Robot test for `set_default_actor_name` not called during `actor list` | | `tests/actor/test_registry_builtin_yaml.py` | Rewrite `TestEnsureBuiltInActors*` → `TestResolveVirtualBuiltinActors` + new test classes | ## Review Fixes Applied (PR #10927 review) ### Critical - **C1**: Added `ActorRegistry.update_actor()` method that rejects virtual built-in actors with `ValidationError`. CLI `actor update` command now routes through this method instead of `upsert_actor()` directly, closing the path that could silently convert a virtual built-in to a persisted custom actor. - **C2**: Replaced `contextlib.suppress` anti-pattern in `actor_registry_full_coverage_steps.py` and `actor_registry_new_coverage_steps.py` with explicit `try/except` that captures exceptions into `context.<op>_error`, allowing Then steps to assert on the correct exception type. ### Major - **M1**: Fixed migration docstring: `Revises: m9_002_plan_resume_fields` → `Revises: a5_006_action_invariants_unique_constraint` to match the actual `down_revision` value. - **M2**: Replaced the vacuously-passing `remove_actor` scenario in `consolidated_actor.feature` with two scenarios: one that explicitly asserts `ValidationError` is raised for virtual built-ins, and one that tests custom actor removal delegation. - **M3**: Replaced the weak `step_service_default` fallback (which conflated "actor exists" with "actor is default") with a precise assertion on the stored preference name. - **M4**: Added 4 new `ActorPreferencesModel` scenarios to `database_repository_coverage.feature` with real repository layer coverage: get when empty, set/get round-trip, update existing row, and fallback to legacy `is_default` actor row. - **M5**: Added `check-no-set-default-name` subcommand to the Robot helper and a corresponding Robot test case verifying `set_default_actor_name` is not called during `actor list`. - **M7**: Fixed `set_default_name()` race condition: the INSERT path now catches `IntegrityError` and falls back to a re-fetch + UPDATE, preventing unhandled errors under concurrent access. - **M8**: Fixed the `set_default_actor` scenario in `consolidated_actor.feature` to explicitly call `get_default_actor` after `set_default_actor` and assert on the returned actor name, eliminating the stale `context.returned_default` dependency. - **M9**: Removed `WIP:` prefix from PR title. ### Minor / Nit - **m1**: Added `if info.capabilities else None` guard around `asdict(info.capabilities)` in `_resolve_virtual_builtin_actors()`. - **m2**: Changed `datetime.now()` to `datetime.now(UTC)` in `registry.py` and `actor_service.py` for timezone-aware consistency. - **m4**: Fixed migration `downgrade()` to copy `default_actor_name` from `actor_preferences` back to `is_default=True` on the actor row before dropping the table, preventing data loss on rollback. - **m5**: Removed `is_built_in` parameter and its `local/` namespace bypass from `ActorService.upsert_actor()`. Non-local actor names are now always rejected, eliminating the footgun. - Removed duplicate `allow_unsafe` entry from `add()` docstring. - Removed dead `step_verify_builtin_overwrite_error` step definition. - Removed duplicate scenario in `consolidated_actor.feature`. ## Quality Gate Results | Gate | Result | |------|--------| | `nox -e lint` | ✓ PASS | | `nox -e typecheck` | ✓ PASS (0 errors) | | `nox -e unit_tests` | ✓ PASS (672 features, 15685 scenarios) | | `nox -e integration_tests` | ✓ PASS — 1998 tests, 0 failed | | `nox -e e2e_tests` | ⚠️ 1 pre-existing failure (Wf07 CI profile, unrelated) | | `nox -e coverage_report` | Delegated to CI | Closes #10923
hurui200320 added this to the v3.2.0 milestone 2026-04-29 08:13:53 +00:00
hurui200320 changed title from feat(actor): make built-in actors virtual, resolved on-demand from provider registry to WIP: feat(actor): make built-in actors virtual, resolved on-demand from provider registry 2026-04-29 08:14:52 +00:00
hurui200320 force-pushed feature/m3-virtual-built-in-actors from c7ad9bb70e
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 29s
CI / build (pull_request) Successful in 1m1s
CI / lint (pull_request) Failing after 1m8s
CI / typecheck (pull_request) Successful in 1m25s
CI / quality (pull_request) Successful in 1m25s
CI / security (pull_request) Successful in 1m31s
CI / integration_tests (pull_request) Successful in 3m27s
CI / unit_tests (pull_request) Successful in 4m47s
CI / e2e_tests (pull_request) Successful in 4m47s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
to c892f8d7e4
Some checks failed
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / status-check (pull_request) Blocked by required conditions
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 28s
CI / helm (pull_request) Successful in 31s
CI / build (pull_request) Successful in 54s
CI / lint (pull_request) Failing after 1m12s
CI / typecheck (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m25s
CI / security (pull_request) Successful in 1m29s
2026-04-29 08:34:56 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from c892f8d7e4
Some checks failed
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / status-check (pull_request) Blocked by required conditions
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 28s
CI / helm (pull_request) Successful in 31s
CI / build (pull_request) Successful in 54s
CI / lint (pull_request) Failing after 1m12s
CI / typecheck (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m25s
CI / security (pull_request) Successful in 1m29s
to edfb5b158b
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 1m4s
CI / quality (pull_request) Successful in 1m20s
CI / typecheck (pull_request) Successful in 1m29s
CI / security (pull_request) Successful in 1m31s
CI / push-validation (pull_request) Successful in 32s
CI / helm (pull_request) Successful in 33s
CI / build (pull_request) Successful in 41s
CI / e2e_tests (pull_request) Successful in 4m19s
CI / integration_tests (pull_request) Successful in 4m25s
CI / unit_tests (pull_request) Successful in 4m48s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m0s
CI / status-check (pull_request) Successful in 3s
2026-04-29 08:36:52 +00:00
Compare
HAL9001 approved these changes 2026-04-29 22:11:29 +00:00
HAL9001 left a comment

Review Summary

This PR implements a well-scoped architectural change: replacing DB-persisted built-in actors with in-memory virtual resolution from ProviderRegistry. The ensure_built_in_actors() persistence path is fully removed. All CI gates pass (lint, typecheck, security, unit_tests, integration_tests, coverage@97.10%).

What was reviewed

  • Core code changes: registry.py (full rewrite), actor_service.py (default_actor_name split), models.py (is_built_in drop + new ActorPreferencesModel), repositories.py (upsert_built_in removal + preferences CRUD)
  • Migration: m10_001_virtual_builtin_actors.py — drops is_built_in, adds actor_preferences singleton table
  • CLI cleanup: plan.py — two ensure_built_in_actors() call sites removed
  • Behave BDD tests: 8 new scenarios in features/virtual_builtin_actors.feature with comprehensive step definitions
  • Updated tests: 4 existing feature files, 9 step module files, 1 robot helper, 1 test module — all correctly adapted to virtual resolution

10-Category Checklist

  1. CORRECTNESS: All acceptance criteria are met. Actor resolution order (DB → virtual → NotFoundError) is correct. Custom actors take precedence over virtual built-ins in list(). Remove/update reject built-in names. Default set/get for virtual actors stores only the name preference.

  2. SPECIFICATION ALIGNMENT: Aligns with the spec showing built-in actors alongside custom actors in agents actor list output. Removed ensure_built_in_actors() persistence which the spec did not actually mandate.

  3. TEST QUALITY: New 8-scenario feature file covers all new behavior paths. Edge cases handled: no providers → empty list; custom overrides virtual; no default; removal rejection. Integration test helper (robot/helper_tdd_actor_list_validation.py) correctly updated to use list_actors() instead of ensure+upsert. Existing 4 feature files + 9 step modules + test module properly adapted.

  4. TYPE SAFETY: No new # type: ignore comments introduced. All new methods have proper type annotations. The existing # type: ignore comments in repositories.py are pre-existing project-wide patterns, not introduced by this PR.

  5. READABILITY: Naming is clean and descriptive. ActorPreferencesModel, set_default_actor_name/get_default_actor_name, _resolve_virtual_builtin_actors, _is_virtual_builtin_name, _get_by_name_or_virtual — all self-documenting. Docstrings are comprehensive.

  6. PERFORMANCE: No performance concerns. Virtual resolution reads from ProviderRegistry (in-memory) and is efficient. List() merges two in-memory lists and sorts — O(n log n) where n is small. No N+1 patterns.

  7. SECURITY: No new security concerns. No hardcoded secrets, injection vectors, or unsafe patterns. External inputs (actor names) are validated through _normalize_name.

  8. CODE STYLE: SOLID principles followed — separation of concerns between registry (virtual resolution), service (preference persistence), and repository (DB operations). Files are well under 500 lines. ruff conventions followed (lint CI passes).

  9. DOCUMENTATION: Module-level docstrings in registry.py clearly document the new architecture. New ActorPreferencesModel class has a thorough docstring explaining why a separate table is needed. Inline comments explain backward compatibility paths.

  10. COMMIT AND PR QUALITY: PR description is thorough, well-structured, and references the issue. Quality gate numbers provided. One suggestion: PR title prefix "WIP:" is non-standard for Conventional Changelog format. Recommend removing it for the final merge if commits have been cleaned up.

Observations / Minor Suggestions

  1. PR is still a draft (draft: true). The code appears complete — consider marking as ready for review.

  2. Merge conflicts: The PR has has_conflicts: true. This is a branch-level issue, not a code quality concern. Author should rebase on latest master before merge.

  3. Regression test tag: The behavioral change (built-in removal now raises ValidationError instead of silently overwriting) would benefit from a @tdd_issue_N tag on a dedicated regression scenario, since the old behavior was permissive and the new behavior is strict.

Verdict

APPROVED. All acceptance criteria met, all CI gates passing, clean code quality, comprehensive tests. The architectural shift from persistence-based to virtual resolution is well-executed and aligns with the intended design.

## Review Summary This PR implements a well-scoped architectural change: replacing DB-persisted built-in actors with in-memory virtual resolution from `ProviderRegistry`. The `ensure_built_in_actors()` persistence path is fully removed. All CI gates pass (lint, typecheck, security, unit_tests, integration_tests, coverage@97.10%). ### What was reviewed - **Core code changes**: `registry.py` (full rewrite), `actor_service.py` (default_actor_name split), `models.py` (is_built_in drop + new ActorPreferencesModel), `repositories.py` (upsert_built_in removal + preferences CRUD) - **Migration**: `m10_001_virtual_builtin_actors.py` — drops is_built_in, adds actor_preferences singleton table - **CLI cleanup**: plan.py — two ensure_built_in_actors() call sites removed - **Behave BDD tests**: 8 new scenarios in `features/virtual_builtin_actors.feature` with comprehensive step definitions - **Updated tests**: 4 existing feature files, 9 step module files, 1 robot helper, 1 test module — all correctly adapted to virtual resolution ### 10-Category Checklist 1. **CORRECTNESS**: All acceptance criteria are met. Actor resolution order (DB → virtual → NotFoundError) is correct. Custom actors take precedence over virtual built-ins in list(). Remove/update reject built-in names. Default set/get for virtual actors stores only the name preference. 2. **SPECIFICATION ALIGNMENT**: Aligns with the spec showing built-in actors alongside custom actors in `agents actor list` output. Removed `ensure_built_in_actors()` persistence which the spec did not actually mandate. 3. **TEST QUALITY**: New 8-scenario feature file covers all new behavior paths. Edge cases handled: no providers → empty list; custom overrides virtual; no default; removal rejection. Integration test helper (`robot/helper_tdd_actor_list_validation.py`) correctly updated to use list_actors() instead of ensure+upsert. Existing 4 feature files + 9 step modules + test module properly adapted. 4. **TYPE SAFETY**: No new `# type: ignore` comments introduced. All new methods have proper type annotations. The existing `# type: ignore` comments in repositories.py are pre-existing project-wide patterns, not introduced by this PR. 5. **READABILITY**: Naming is clean and descriptive. `ActorPreferencesModel`, `set_default_actor_name`/`get_default_actor_name`, `_resolve_virtual_builtin_actors`, `_is_virtual_builtin_name`, `_get_by_name_or_virtual` — all self-documenting. Docstrings are comprehensive. 6. **PERFORMANCE**: No performance concerns. Virtual resolution reads from ProviderRegistry (in-memory) and is efficient. List() merges two in-memory lists and sorts — O(n log n) where n is small. No N+1 patterns. 7. **SECURITY**: No new security concerns. No hardcoded secrets, injection vectors, or unsafe patterns. External inputs (actor names) are validated through `_normalize_name`. 8. **CODE STYLE**: SOLID principles followed — separation of concerns between registry (virtual resolution), service (preference persistence), and repository (DB operations). Files are well under 500 lines. ruff conventions followed (lint CI passes). 9. **DOCUMENTATION**: Module-level docstrings in `registry.py` clearly document the new architecture. New `ActorPreferencesModel` class has a thorough docstring explaining why a separate table is needed. Inline comments explain backward compatibility paths. 10. **COMMIT AND PR QUALITY**: PR description is thorough, well-structured, and references the issue. Quality gate numbers provided. **One suggestion**: PR title prefix "WIP:" is non-standard for Conventional Changelog format. Recommend removing it for the final merge if commits have been cleaned up. ### Observations / Minor Suggestions 1. **PR is still a draft** (`draft: true`). The code appears complete — consider marking as ready for review. 2. **Merge conflicts**: The PR has `has_conflicts: true`. This is a branch-level issue, not a code quality concern. Author should rebase on latest master before merge. 3. **Regression test tag**: The behavioral change (built-in removal now raises `ValidationError` instead of silently overwriting) would benefit from a `@tdd_issue_N` tag on a dedicated regression scenario, since the old behavior was permissive and the new behavior is strict. ### Verdict APPROVED. All acceptance criteria met, all CI gates passing, clean code quality, comprehensive tests. The architectural shift from persistence-based to virtual resolution is well-executed and aligns with the intended design.
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
hurui200320 force-pushed feature/m3-virtual-built-in-actors from edfb5b158b
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 1m4s
CI / quality (pull_request) Successful in 1m20s
CI / typecheck (pull_request) Successful in 1m29s
CI / security (pull_request) Successful in 1m31s
CI / push-validation (pull_request) Successful in 32s
CI / helm (pull_request) Successful in 33s
CI / build (pull_request) Successful in 41s
CI / e2e_tests (pull_request) Successful in 4m19s
CI / integration_tests (pull_request) Successful in 4m25s
CI / unit_tests (pull_request) Successful in 4m48s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m0s
CI / status-check (pull_request) Successful in 3s
to 9413cff3f6
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / push-validation (pull_request) Waiting to run
CI / status-check (pull_request) Blocked by required conditions
CI / benchmark-publish (pull_request) Waiting to run
CI / lint (pull_request) Has started running
CI / typecheck (pull_request) Has started running
CI / security (pull_request) Has started running
CI / quality (pull_request) Has started running
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / build (pull_request) Has started running
CI / helm (pull_request) Has started running
2026-04-30 02:49:11 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from 9413cff3f6
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / push-validation (pull_request) Waiting to run
CI / status-check (pull_request) Blocked by required conditions
CI / benchmark-publish (pull_request) Waiting to run
CI / lint (pull_request) Has started running
CI / typecheck (pull_request) Has started running
CI / security (pull_request) Has started running
CI / quality (pull_request) Has started running
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / build (pull_request) Has started running
CI / helm (pull_request) Has started running
to f11327fe15
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 49s
CI / lint (pull_request) Failing after 1m1s
CI / quality (pull_request) Successful in 1m36s
CI / typecheck (pull_request) Successful in 1m40s
CI / security (pull_request) Successful in 1m41s
CI / integration_tests (pull_request) Successful in 4m8s
CI / unit_tests (pull_request) Failing after 4m32s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 4m53s
CI / status-check (pull_request) Failing after 3s
2026-04-30 08:56:16 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from f11327fe15
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 49s
CI / lint (pull_request) Failing after 1m1s
CI / quality (pull_request) Successful in 1m36s
CI / typecheck (pull_request) Successful in 1m40s
CI / security (pull_request) Successful in 1m41s
CI / integration_tests (pull_request) Successful in 4m8s
CI / unit_tests (pull_request) Failing after 4m32s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 4m53s
CI / status-check (pull_request) Failing after 3s
to fcf2c3009b
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 28s
CI / build (pull_request) Successful in 52s
CI / lint (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m28s
CI / security (pull_request) Successful in 1m35s
CI / typecheck (pull_request) Successful in 1m44s
CI / integration_tests (pull_request) Successful in 3m34s
CI / e2e_tests (pull_request) Successful in 4m27s
CI / unit_tests (pull_request) Failing after 5m8s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
2026-04-30 09:02:18 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from fcf2c3009b
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 28s
CI / build (pull_request) Successful in 52s
CI / lint (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m28s
CI / security (pull_request) Successful in 1m35s
CI / typecheck (pull_request) Successful in 1m44s
CI / integration_tests (pull_request) Successful in 3m34s
CI / e2e_tests (pull_request) Successful in 4m27s
CI / unit_tests (pull_request) Failing after 5m8s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
to 9413cff3f6
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / push-validation (pull_request) Waiting to run
CI / status-check (pull_request) Blocked by required conditions
CI / benchmark-publish (pull_request) Waiting to run
CI / lint (pull_request) Has started running
CI / typecheck (pull_request) Has started running
CI / security (pull_request) Has started running
CI / quality (pull_request) Has started running
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / build (pull_request) Has started running
CI / helm (pull_request) Has started running
2026-04-30 09:18:24 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from 9413cff3f6
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / push-validation (pull_request) Waiting to run
CI / status-check (pull_request) Blocked by required conditions
CI / benchmark-publish (pull_request) Waiting to run
CI / lint (pull_request) Has started running
CI / typecheck (pull_request) Has started running
CI / security (pull_request) Has started running
CI / quality (pull_request) Has started running
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / e2e_tests (pull_request) Has started running
CI / build (pull_request) Has started running
CI / helm (pull_request) Has started running
to 0f0902bc8a
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 53s
CI / typecheck (pull_request) Successful in 1m6s
CI / helm (pull_request) Successful in 33s
CI / push-validation (pull_request) Successful in 21s
CI / build (pull_request) Successful in 41s
CI / quality (pull_request) Successful in 1m4s
CI / security (pull_request) Successful in 1m35s
CI / integration_tests (pull_request) Successful in 3m25s
CI / e2e_tests (pull_request) Successful in 4m2s
CI / unit_tests (pull_request) Failing after 6m15s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 4s
2026-04-30 09:18:39 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from 0f0902bc8a
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 53s
CI / typecheck (pull_request) Successful in 1m6s
CI / helm (pull_request) Successful in 33s
CI / push-validation (pull_request) Successful in 21s
CI / build (pull_request) Successful in 41s
CI / quality (pull_request) Successful in 1m4s
CI / security (pull_request) Successful in 1m35s
CI / integration_tests (pull_request) Successful in 3m25s
CI / e2e_tests (pull_request) Successful in 4m2s
CI / unit_tests (pull_request) Failing after 6m15s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 4s
to 95352a4d7b
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / status-check (pull_request) Blocked by required conditions
CI / unit_tests (pull_request) Has started running
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 49s
CI / quality (pull_request) Successful in 1m10s
CI / lint (pull_request) Successful in 1m11s
CI / typecheck (pull_request) Successful in 1m25s
CI / security (pull_request) Successful in 1m38s
CI / integration_tests (pull_request) Successful in 3m34s
CI / e2e_tests (pull_request) Successful in 3m49s
2026-04-30 10:28:01 +00:00
Compare
hurui200320 changed title from WIP: feat(actor): make built-in actors virtual, resolved on-demand from provider registry to feat(actor): make built-in actors virtual, resolved on-demand from provider registry 2026-04-30 10:28:45 +00:00
hurui200320 force-pushed feature/m3-virtual-built-in-actors from 95352a4d7b
Some checks are pending
CI / coverage (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / status-check (pull_request) Blocked by required conditions
CI / unit_tests (pull_request) Has started running
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 27s
CI / helm (pull_request) Successful in 34s
CI / build (pull_request) Successful in 49s
CI / quality (pull_request) Successful in 1m10s
CI / lint (pull_request) Successful in 1m11s
CI / typecheck (pull_request) Successful in 1m25s
CI / security (pull_request) Successful in 1m38s
CI / integration_tests (pull_request) Successful in 3m34s
CI / e2e_tests (pull_request) Successful in 3m49s
to 6fe4eb079a
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 59s
CI / lint (pull_request) Successful in 1m9s
CI / quality (pull_request) Successful in 1m11s
CI / typecheck (pull_request) Successful in 1m15s
CI / security (pull_request) Successful in 1m25s
CI / helm (pull_request) Successful in 27s
CI / push-validation (pull_request) Successful in 23s
CI / integration_tests (pull_request) Successful in 3m26s
CI / e2e_tests (pull_request) Successful in 4m13s
CI / unit_tests (pull_request) Successful in 4m54s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m22s
CI / status-check (pull_request) Successful in 3s
2026-04-30 10:33:33 +00:00
Compare
hurui200320 force-pushed feature/m3-virtual-built-in-actors from 6fe4eb079a
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 59s
CI / lint (pull_request) Successful in 1m9s
CI / quality (pull_request) Successful in 1m11s
CI / typecheck (pull_request) Successful in 1m15s
CI / security (pull_request) Successful in 1m25s
CI / helm (pull_request) Successful in 27s
CI / push-validation (pull_request) Successful in 23s
CI / integration_tests (pull_request) Successful in 3m26s
CI / e2e_tests (pull_request) Successful in 4m13s
CI / unit_tests (pull_request) Successful in 4m54s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m22s
CI / status-check (pull_request) Successful in 3s
to 8dc55655e9
Some checks failed
CI / push-validation (push) Successful in 41s
CI / helm (push) Successful in 42s
CI / benchmark-publish (push) Failing after 56s
CI / build (push) Successful in 1m6s
CI / lint (push) Successful in 1m13s
CI / quality (push) Successful in 1m34s
CI / typecheck (push) Successful in 2m12s
CI / security (push) Successful in 2m13s
CI / e2e_tests (push) Successful in 3m45s
CI / integration_tests (push) Successful in 3m57s
CI / unit_tests (push) Successful in 4m53s
CI / docker (push) Successful in 1m34s
CI / coverage (push) Successful in 11m27s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 33s
CI / build (pull_request) Successful in 53s
CI / lint (pull_request) Successful in 59s
CI / quality (pull_request) Successful in 1m28s
CI / security (pull_request) Successful in 1m29s
CI / typecheck (pull_request) Successful in 1m32s
CI / e2e_tests (pull_request) Successful in 4m1s
CI / integration_tests (pull_request) Successful in 5m4s
CI / unit_tests (pull_request) Successful in 5m51s
CI / docker (pull_request) Successful in 1m27s
CI / coverage (pull_request) Successful in 11m51s
CI / status-check (pull_request) Successful in 3s
2026-04-30 10:56:23 +00:00
Compare
HAL9000 scheduled this pull request to auto merge when all checks succeed 2026-04-30 12:49:00 +00:00
HAL9000 merged commit 8dc55655e9 into master 2026-04-30 12:51:48 +00:00
hurui200320 deleted branch feature/m3-virtual-built-in-actors 2026-04-30 14:59:34 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core!10927
No description provided.