## MODIFIED Requirements ### Requirement: 组内并发拨测 系统 SHALL 在每次调度 tick 时并发执行同组内目标的检查,但实际同时运行的检查数 MUST 受全局 `runtime.maxConcurrentChecks` 限制。当某个目标的 checker 执行 rejected(非正常 CheckResult 返回,而是 Promise reject)时,系统 SHALL 将该异常记录为 `matched: false` 的 check_result,而非仅 console.warn。 #### Scenario: 同组目标并发执行 - **WHEN** 调度器触发一次 tick,该组有 3 个目标,且全局并发余量至少为 3 - **THEN** 系统 SHALL 同时执行 3 个 checker,而非顺序执行 #### Scenario: 单个目标失败不影响同组其他目标 - **WHEN** 同组中某个目标的检查请求超时或失败(checker 正常返回 CheckResult) - **THEN** 其他目标的检查 SHALL 正常完成并记录结果 #### Scenario: 同组中某个目标的 checker 执行 rejected - **WHEN** 同组中某个目标的 checker 执行抛出未捕获异常(Promise rejected) - **THEN** 系统 SHALL 为该目标写入一条 `matched: false` 的 check_result,failure 为 `{ kind: "error", phase: "internal", path: "engine", message: }`,其他目标的检查 SHALL 不受影响 #### Scenario: rejected 结果通过索引关联 targetName - **WHEN** checker 执行 rejected - **THEN** 系统 SHALL 通过 Promise.allSettled 的索引关联回 target 数组,获取对应的 targetName 用于写入 check_result #### Scenario: 全局并发限制生效 - **WHEN** 调度器同时触发 10 个目标且 runtime.maxConcurrentChecks 为 3 - **THEN** 系统 MUST 同时最多运行 3 个检查,其余检查等待并发槽位释放