Disambiguation takes place while the parser is still trying to make sense of what the player has typed, before an action has been created, so no action stage rule (Before, Instead, Check, Carry out, After, Report) is ever going to be able to intervene before that.
The parser itself does have some built-in points where you can help it out- such as ‘After reading a command’. ‘After deciding the scope of’, ‘Does the player mean’, ‘Deciding whether all includes’, ‘Supplying a missing noun’, ‘Supplying a missing second noun’ being the main ones.
Responses from the parser such as ‘What do you want to sit on?’ occur when the parser has tried and failed to infer a noun that it needs to complete a valid grammar line, e.g. if the player has typed ‘sit’ and the grammar line requires something to sit on. e.g. in this case ‘Understand "sit on/in/inside [something]" as entering.
’, so they’re not truly disambiguation in the sense of trying to fathom an ambiguous word that has been typed.
This situation will also not trigger the activity ‘Supplying a missing noun’, which only happens when a grammar line has been completely matched but the matching grammar line doesn’t incude a noun required by the action definition- in this case if there was a grammar line ‘Understand "sit" as entering
’ then the command ‘sit’ on its own would completely match this grammar line, but the action definition ‘Entering is an action applying to one thing
’ requires a noun, which the matching grammar line doesn’t supply- hence the activity ‘Supplying a missing noun’ is triggered.
So,if you want to avoid a request to complete an incomplete command- such as ‘What do you want to sit on?’- you’ll need to provide a grammar line that completely matches the incomplete command. You can divert this command to a different dummy action that doesn’t require a noun. e.g.
incomplete-sitting is an action applying to nothing.
Understand "sit" as incomplete-sitting.
Instead of incomplete-sitting...
Or, if you just want to block such commands:
Understand "sit" or "drop" or "take" as a mistake ("Incomplete command.").
Or, if you want to generate a normal built-in action from it without a prompt, supply a dummy noun to complete the action:
Understand "sit" as entering.
Rule for supplying a missing noun when entering:
now the noun is the player.
Instead of entering the player:
say "You forgot to say what you wanted to do that with.".
here as a quick and dirty fix the player object is used as the dummy noun, as it it guaranteed to be always in scope and touchable, so will always be accepted with most actions, but with some finagling to make it in scope and accessible you can supply a dummy object (to avoid confusion should the player type, for example, something unlikely such as ‘enter self’ or ‘sit on self’, either of which would trigger the above Instead rule):
There is a thingumajig.
After deciding the scope of the player:
place the thingumajig in scope.
The allow access to the thingumajig rule is listed first in the accessibility rules.
An accessibility rule (this is the allow access to the thingumajig rule):
if the noun is the thingumajig:
rule succeeds.
Understand "sit" as entering.
Rule for supplying a missing noun when entering:
now the noun is the thingumajig.
Instead of entering the thingumajig:
say "You forgot to say what you wanted to do that with.".
EDIT: If you use a Before rule rather than an Instead rule you don’t need to worry about accessibility, because Before rules run before accessibility is checked (or for that matter whether the action requires something to be carried, or requires light).