chore(apply): log deferred provider checks on the tree path (§5.5 review)
The single-node path runs `check_imports_resolve` + `check_extension_points_provided`; the tree path can't (an in-tree, uncommitted node may legitimately provide a module, so a pool-based check would false-positive) and leans on the runtime backstop. Emit a debug log when a tree apply contains app nodes so the deferral isn't a silent gap. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1276,6 +1276,22 @@ impl ApplyService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// §5.5 / Phase 4b: the single-node path runs `check_imports_resolve` and
|
||||||
|
// `check_extension_points_provided`, but the tree path cannot — a node
|
||||||
|
// may legitimately import a module another in-tree (uncommitted) node
|
||||||
|
// declares, so a pool-based provider check would false-positive. Both
|
||||||
|
// lean on the runtime backstop here. Log it so the gap isn't silent.
|
||||||
|
if prepared
|
||||||
|
.iter()
|
||||||
|
.any(|p| matches!(p.owner, ApplyOwner::App(_)))
|
||||||
|
{
|
||||||
|
tracing::debug!(
|
||||||
|
nodes = prepared.len(),
|
||||||
|
"tree apply: per-node import / extension-point provider checks \
|
||||||
|
deferred to the runtime backstop (single-node-only at plan time)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Fold in every in-scope group's structure version, so a reparent or a
|
// Fold in every in-scope group's structure version, so a reparent or a
|
||||||
// new app under the subtree between plan and apply trips StateMoved.
|
// new app under the subtree between plan and apply trips StateMoved.
|
||||||
for gid in &versioned_groups {
|
for gid in &versioned_groups {
|
||||||
|
|||||||
Reference in New Issue
Block a user