What
Invoking a scenario (rather than a §8.8 movement action) inside a do block is not lowered — and the DSL's primary reuse mechanism therefore does not execute:
The DSL coverage matrix implies it works: §7.6.2.1.1 behavior invocation In/In, §7.6.2.2 actor binding In/In, §7.6.2.3 In. It is documented nowhere as out of scope. Found by the post-P8 audit; highest-severity untracked DSL gap.
Sketch
Lower a composite scenario invocation by inline-expanding the callee's do composition into the caller's composition tree (concrete arguments bound per §7.6.2.2; labels/qualified names kept unique; recursion diagnosed). Trace acceptance per §7.6 permits this operational choice; document it in an ADR amendment.
Done when
What
Invoking a scenario (rather than a §8.8 movement action) inside a
doblock is not lowered — and the DSL's primary reuse mechanism therefore does not execute:frontends/dsl/src/lower.cpp:454-462— a non-§8.8 invocation warns "scenario invocation is p8-s2, [p8-s2] Composition operators: serial, parallel, one_of #45"; [p8-s2] Composition operators: serial, parallel, one_of #45 is closedlower.cpp:592-597— an invocation with no actor prefix is a hard error ("a movement action is invoked on one participant of this scenario (§7.2.2.4.7)")The DSL coverage matrix implies it works: §7.6.2.1.1 behavior invocation In/In, §7.6.2.2 actor binding In/In, §7.6.2.3 In. It is documented nowhere as out of scope. Found by the post-P8 audit; highest-severity untracked DSL gap.
Sketch
Lower a composite scenario invocation by inline-expanding the callee's
docomposition into the caller's composition tree (concrete arguments bound per §7.6.2.2; labels/qualified names kept unique; recursion diagnosed). Trace acceptance per §7.6 permits this operational choice; document it in an ADR amendment.Done when
do, actor binding,with:modifier blocks on the invocation)dsl_lowering_test.cppsnapshots added; an XML/DSL golden exercising a sub-scenario considered