summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:37:18 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:37:18 +0200
commite73fbb9083cdab1542dd826096e0d673989c560c (patch)
treee88efe67f5fdc9f402b10e9ce770639fbcd435c6 /lua
parentacf8650a0f2d823f6d388d4d787ebfec134c35b0 (diff)
Select fresh effective descriptors
Diffstat (limited to 'lua')
-rw-r--r--lua/clever_f/sequence_coordinator.lua27
1 files changed, 26 insertions, 1 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua
index 37657b2..bcb6689 100644
--- a/lua/clever_f/sequence_coordinator.lua
+++ b/lua/clever_f/sequence_coordinator.lua
@@ -204,6 +204,31 @@ function SequenceCoordinator:acquire_primary(descriptor, invocation)
)
end
+function SequenceCoordinator:fresh_primary_resolution(
+ initiating_descriptor,
+ acquisition_result,
+ invocation
+)
+ initiating_descriptor = self:validate_primary_descriptor(initiating_descriptor)
+ if type(acquisition_result) ~= "table"
+ or acquisition_result.resolved ~= true
+ or not domain.TargetValue.is(acquisition_result.target)
+ or not domain.TargetPlan.is(acquisition_result.target_plan)
+ or not domain.ResolvedMotionPlan.is(acquisition_result.motion_plan)
+ then
+ fail("fresh primary resolution requires acquired motion plans", 2)
+ end
+ return {
+ kind = "fresh",
+ invocation = invocation,
+ acquisition_result = acquisition_result,
+ target = acquisition_result.target,
+ target_plan = acquisition_result.target_plan,
+ motion_plan = acquisition_result.motion_plan,
+ effective_descriptor = initiating_descriptor,
+ }
+end
+
function SequenceCoordinator:resolve_acquisition(descriptor, invocation)
local result = self:acquire_primary(descriptor, invocation)
if type(result.has_outcome) ~= "function" then
@@ -212,7 +237,7 @@ function SequenceCoordinator:resolve_acquisition(descriptor, invocation)
if result:has_outcome() then
return result.outcome
end
- return result
+ return self:fresh_primary_resolution(descriptor, result, invocation)
end
function SequenceCoordinator:primary(value)