Actually, scratch that. Here is another way to tackle this. Make combine filters return two dicts: one for include and another for exclude. Combine filters should also normalize all values into a list. So include `[os: :windows, os: :unix]` becomes `[os: [:windows, :unix]]`.

Now, to check if something should run or not, we need to check for inclusion:

```elixir
defp tag_included?(include, tag_key, tag_val) do
  case Dict.fetch(include, tag_key) do
    { :ok, allowed } -> tag_val in allowed
    :error -> true
  end
end
```

And for exclusion:

```elixir
defp tag_excluded?(exclude, tag_key, tag_val)  do
  case Dict.fetch(include, tag_key) do
    { :ok, forbidden } -> tag_val in forbidden
    :error -> false
  end
end
```

At the end, you need:

```elixir
Enum.find_value tags, :ok, fn { tag_key, tag_val } ->
  if tag_excluded?(exclude, tag_key, tag_val) or
     not tag_included?(include, tag_key, tag_val) do
    { :error, tag_key }
  end
end
```