---
feature_story: FS_90_48_11_45
feature_title: always consume `dictated_arg`
feature_status: TEST
---

TODO: Consider the opposite behavior (see "potential improvements"):
      do not consume `dictated_arg` no match with (`prop_name`, `prop_value`) found.
      Maybe to implement "always consume", we need some kind of `forced_arg` with `!` prefix instead of `-`?

# Description

When FS_20_88_05_60 `dictated_arg` is specified, its `arg_value` can be set to anything.
Unlike FS_96_46_42_30 `offered_arg` (which uses `arg_value` matching to consume or ignore values
based on data query), `arg_value` for `dictated_arg` is always consumed (the query is forced with that `arg_value`).

The outcome of this behavior is that `dictated_arg` may set value which gives zero search results.

For example:

```
some_command goto service apac -service_name no_such_service |
```

There is no such service named as `no_such_service`, so auto-completion for the rest of the attributes will
return nothing.

`service_name` `prop_name` will be assigned `no_surch_service` `prop_value` with `ValueSource.explicit_dictated_arg`.

Note the difference:
*   Such forced value cannot be possibly proposed
    (as it would not come from data query).
*   But it can be manually specified = forced
    (which will return zero search results until `arg_value`-s are relaxed).

# Potential improvements

The exact behavior can be configure-able per `search_control`.

For example, the options could be:

*   Current: Always consume `dictated_arg`.

    This also allows converting command to "strict" version (via replacing all `offered_arg`-s by `dictated_arg`-s):
    https://github.com/argrelay/argrelay/issues/22

*   Potential extra: Ignore (do not consume) if `arg_value` of `dictated_arg` does not match `prop_value`-s.

    This is similar to `offered_arg`.

# See also

*   FS_20_88_05_60 `dictated_arg`
*   FS_96_46_42_30 `offered_arg`
*   FS_51_67_38_37 avoid impossible arg combinations
*   FS_13_51_07_97 singled out implicit values
*   FS_44_36_84_88 consume args one by one
