freemo
884fe12511
```
...
fix(tool): wire 6-level execution environment precedence chain into ToolRunner
What was implemented
- Updated ToolRunner.execute() to accept plan_priority and project_priority parameters (optional) and to propagate these priority values through the execution path.
- Replaced the legacy four-level resolve_and_validate() with resolve_with_precedence() to implement the correct six-level precedence chain.
- Introduced devcontainer_available derived from has_devcontainer() on linked_resource_types and wired this into the resolution process.
- Updated all call sites (router.py and actor_runtime.py) to accept and forward the new priority parameters.
- Added 12 unit tests verifying the six-level precedence chain behavior in ToolRunner.execute().
- Added integration tests covering override vs. fallback scenarios to ensure correct end-to-end behavior.
Key design decisions and rationale
- Use resolve_with_precedence() instead of resolve_with_dag() because linked_resource_types already provides devcontainer availability information, eliminating the need for a full DAG walk while preserving correct precedence semantics.
- Preserve the existing contract of raising ContainerUnavailableError by retaining a final validate_container_available() call after resolution, ensuring proper error signaling when a container is resolved but no linked container resource exists.
- Make plan_priority and project_priority optional with None defaulting to fallback semantics, aligning with the resolver's _parse_priority() behavior and keeping backward-compatible defaults for existing callers.
ISSUES CLOSED : #2592
```
2026-04-05 08:47:35 +00:00
..
2026-03-16 12:11:08 +00:00
2026-03-16 22:50:27 +00:00
2026-03-30 13:18:07 +01:00
2026-04-03 19:03:15 +00:00
2026-04-02 16:59:07 +00:00
2026-04-05 08:47:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-22 03:23:42 +00:00
2026-03-12 14:38:57 +00:00
2026-03-31 21:47:12 +00:00
2026-03-18 17:33:30 +00:00
2026-03-12 14:38:57 +00:00
2026-04-03 00:29:46 +00:00
2026-04-02 16:51:04 +00:00
2026-04-03 00:29:46 +00:00
2026-04-02 23:53:13 +00:00
2026-04-01 06:16:41 +00:00
2026-04-01 06:16:41 +00:00
2026-03-26 06:19:14 +00:00
2026-03-31 21:47:12 +00:00
2026-03-15 19:33:11 -04:00
2026-04-03 00:23:58 +00:00
2026-03-19 09:30:35 +00:00
2026-03-30 19:35:23 +00:00
2026-03-31 21:47:12 +00:00
2026-03-19 22:42:15 +00:00
2026-03-27 05:58:35 +00:00
2026-03-19 09:30:35 +00:00
2026-03-26 13:41:31 +00:00
2026-03-18 06:58:39 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 16:58:36 +00:00
2026-03-27 23:53:22 +00:00
2026-04-02 17:00:53 +00:00
2026-03-20 21:22:10 +00:00
2026-03-26 17:35:34 +00:00
2026-04-02 06:21:49 +00:00
2026-03-30 13:18:07 +01:00
2026-03-30 13:18:07 +01:00
2026-03-21 05:30:01 +00:00
2026-03-18 16:51:14 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 07:47:09 +00:00
2026-03-20 21:22:10 +00:00
2026-04-02 19:09:04 +00:00
2026-03-21 01:14:18 +00:00
2026-04-02 19:09:04 +00:00
2026-03-27 05:58:35 +00:00
2026-04-02 19:09:04 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-19 23:30:55 +00:00
2026-03-31 21:47:12 +00:00
2026-03-20 21:22:10 +00:00
2026-03-17 13:14:37 -04:00
2026-04-01 06:16:41 +00:00
2026-03-30 21:48:01 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 21:48:01 +00:00
2026-03-28 05:27:14 +00:00
2026-04-01 01:46:37 +00:00
2026-03-30 21:48:01 +00:00
2026-03-19 07:53:43 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 01:49:16 +00:00
2026-03-21 03:14:40 +00:00
2026-03-29 18:57:15 +01:00
2026-03-19 06:53:06 +00:00
2026-04-02 17:07:26 +00:00
2026-03-20 21:22:10 +00:00
2026-03-27 12:57:03 +00:00
2026-03-30 04:45:56 +00:00
2026-03-12 10:31:37 +00:00
2026-03-20 21:22:10 +00:00
2026-03-25 17:49:06 +00:00
2026-03-21 01:40:58 +00:00
2026-04-02 19:09:04 +00:00
2026-03-29 16:23:04 +01:00
2026-03-30 17:06:49 -04:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-03-23 18:41:53 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-03-26 07:52:09 +00:00
2026-04-04 20:38:16 +00:00
2026-03-20 21:22:10 +00:00
2026-03-18 17:16:32 +00:00
2026-03-31 21:47:12 +00:00
2026-03-20 21:22:10 +00:00
2026-03-19 07:53:43 +00:00
2026-04-01 06:16:41 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 17:08:52 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-27 23:53:22 +00:00
2026-04-04 20:38:16 +00:00
2026-03-23 23:33:33 +00:00
2026-04-02 16:58:39 +00:00
2026-03-21 01:40:58 +00:00
2026-04-02 17:07:48 +00:00
2026-04-02 16:53:03 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 11:31:00 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 13:19:08 +00:00
2026-04-02 16:58:39 +00:00
2026-03-24 22:01:48 +00:00
2026-03-31 21:47:12 +00:00
2026-03-24 22:01:48 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-29 18:57:15 +01:00
2026-04-05 05:46:05 +00:00
2026-04-02 16:59:14 +00:00
2026-03-31 23:57:39 +00:00
2026-03-30 09:21:51 +00:00
2026-03-27 11:10:56 +00:00
2026-04-02 16:58:32 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 11:51:27 +00:00
2026-03-31 21:47:12 +00:00
2026-03-24 13:01:12 +00:00
2026-04-02 16:52:33 +00:00
2026-04-05 07:06:53 +00:00
2026-03-31 21:47:12 +00:00
2026-03-12 14:38:57 +00:00
2026-04-02 16:52:33 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 19:09:04 +00:00
2026-03-30 08:42:48 +00:00
2026-04-02 16:59:36 +00:00
2026-03-19 08:46:46 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 22:42:15 +00:00
2026-03-30 22:42:15 +00:00
2026-03-30 19:52:51 +00:00
2026-03-31 21:47:12 +00:00
2026-03-29 18:57:15 +01:00
2026-03-15 19:59:38 -04:00
2026-04-02 17:08:38 +00:00
2026-04-02 17:07:41 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 19:09:04 +00:00
2026-04-03 20:50:17 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 19:09:04 +00:00
2026-03-20 21:22:10 +00:00
2026-03-23 23:33:33 +00:00
2026-03-20 21:22:10 +00:00
2026-03-18 06:58:39 +00:00
2026-03-31 21:47:12 +00:00
2026-04-03 13:38:33 -04:00
2026-03-18 06:58:39 +00:00
2026-04-02 16:50:55 +00:00
2026-03-20 21:22:10 +00:00
2026-04-03 00:01:48 +00:00
2026-03-18 08:13:56 +00:00
2026-03-30 23:40:36 +01:00
2026-03-31 03:58:43 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-04-02 16:59:48 +00:00
2026-03-19 06:53:06 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 17:12:20 +00:00
2026-03-30 08:42:48 +00:00
2026-03-30 14:33:28 +00:00
2026-03-27 05:58:35 +00:00
2026-03-30 14:33:28 +00:00
2026-03-13 13:32:52 +08:00
2026-03-20 21:22:10 +00:00
2026-03-27 05:58:35 +00:00
2026-03-31 21:47:12 +00:00
2026-03-19 09:30:35 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-18 10:09:06 +00:00
2026-03-31 21:47:12 +00:00
2026-03-20 22:28:32 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-30 10:18:19 +00:00
2026-03-25 13:05:04 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 19:17:41 +08:00
2026-04-02 16:52:33 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-04-01 13:02:24 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-19 14:03:17 +00:00
2026-03-30 13:44:54 +00:00
2026-03-23 18:41:53 +00:00
2026-03-18 02:30:00 +00:00
2026-03-19 14:03:17 +00:00
2026-03-24 13:21:12 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-03-18 01:45:25 +00:00
2026-03-11 17:42:13 +00:00
2026-03-11 17:42:13 +00:00
2026-03-20 21:22:10 +00:00
2026-03-11 17:42:13 +00:00
2026-03-11 17:42:13 +00:00
2026-03-20 21:22:10 +00:00
2026-03-28 00:57:51 +00:00
2026-03-29 18:57:15 +01:00
2026-03-31 21:47:12 +00:00
2026-03-29 18:57:15 +01:00
2026-03-20 21:22:10 +00:00
2026-03-21 04:46:45 +00:00
2026-03-12 14:38:57 +00:00
2026-03-30 13:18:07 +01:00
2026-03-27 23:53:22 +00:00
2026-03-12 14:38:57 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 21:47:12 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-03-27 05:58:35 +00:00
2026-04-04 20:38:16 +00:00
2026-03-20 21:22:10 +00:00
2026-03-24 08:46:58 +00:00
2026-03-20 21:22:10 +00:00
2026-03-19 09:30:35 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-31 23:57:39 +00:00
2026-03-18 17:07:07 +00:00
2026-03-28 05:27:14 +00:00
2026-03-27 05:58:35 +00:00
2026-04-03 19:00:22 +00:00
2026-04-02 16:50:50 +00:00
2026-03-27 05:58:35 +00:00
2026-04-02 16:51:15 +00:00
2026-03-30 17:06:49 -04:00
2026-04-02 16:51:29 +00:00
2026-03-28 00:30:26 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 22:53:33 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-04-04 20:38:16 +00:00
2026-04-03 19:03:15 +00:00
2026-03-28 04:15:49 +00:00
2026-04-02 19:09:04 +00:00
2026-04-01 00:40:46 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-04-02 16:51:04 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-03-27 05:58:35 +00:00
2026-04-05 08:47:35 +00:00
2026-04-01 04:27:09 +00:00
2026-03-31 07:42:06 +00:00
2026-03-11 01:36:06 +00:00
2026-04-02 23:53:13 +00:00
2026-04-02 23:59:37 +00:00
2026-04-02 17:07:26 +00:00
2026-03-20 23:51:46 +00:00
2026-03-12 10:31:37 +00:00
2026-03-29 18:57:15 +01:00
2026-04-01 21:51:14 +00:00
2026-03-20 21:22:10 +00:00
2026-04-02 17:12:54 +00:00
2026-04-01 21:51:14 +00:00
2026-03-18 10:09:06 +00:00
2026-04-03 05:56:27 +00:00
2026-04-02 17:08:13 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-20 21:22:10 +00:00
2026-03-18 10:09:06 +00:00
2026-03-20 21:22:10 +00:00
2026-04-02 17:16:59 +00:00
2026-04-02 20:48:33 +00:00
2026-03-20 21:22:10 +00:00
2026-04-01 09:23:21 +00:00
2026-03-20 21:22:10 +00:00
2026-04-03 05:56:27 +00:00
2026-03-11 00:40:07 +00:00
2026-03-13 18:21:50 +00:00
2026-04-02 17:09:15 +00:00
2026-03-31 21:47:12 +00:00
2026-04-01 03:30:00 +00:00
2026-03-30 13:18:07 +01:00
2026-03-30 11:47:37 +08:00