class_docstr: `current.card['myid']` should be accessible when cards have an `id` argument in decorator
  - `current.card.append` should not work when there are no single default editable card.
  - if a card has `ALLOW_USER_COMPONENTS=False` then it can still be edited via accessing it with `id` property.
class_docstr_tok: ["`","current.card","[","'myid","'","]","`","should","be","accessible","when","cards","have","an","`","id","`","argument","in","decorator","-","`","current.card.append","`","should","not","work","when","there","are","no","single","default","editable","card",".","-","if","a","card","has","`","ALLOW_USER_COMPONENTS=False","`","then","it","can","still","be","edited","via","accessing","it","with","`","id","`","property","."]
code: def check_results(self, flow, checker):
      run = checker.get_run()
      if run is None:
          # This means CliCheck is in context.
          for step in flow:
              if step.name != "start" or step.name != "end":
                  continue
  
              cli_check_dict = checker.artifact_dict(
                  step.name, "random_number"
              )
              for task_pathspec in cli_check_dict:
                  task_id = task_pathspec.split("/")[-1]
                  number = cli_check_dict[task_pathspec][
                      "random_number"
                  ]
                  checker.assert_card(
                      step.name,
                      task_id,
                      "test_editable_card"
                      if step.name == "start"
                      else "test_non_editable_card",
                      "%d" % number,
                      card_id="abc",
                      exact_match=True,
                  )
      else:
          # This means MetadataCheck is in context.
          for step in flow:
              if step.name != "start" or step.name != "end":
                  continue
              meta_check_dict = checker.artifact_dict(
                  step.name, "random_number"
              )
              for task_id in meta_check_dict:
                  random_number = meta_check_dict[task_id][
                      "random_number"
                  ]
                  checker.assert_card(
                      step.name,
                      task_id,
                      "test_editable_card"
                      if step.name == "start"
                      else "test_non_editable_card",
                      "%d" % random_number,
                      card_id="abc",
                      exact_match=True,
                  )
  
imports: from metaflow_test import MetaflowTest, ExpectationFailed, steps, tag
label_desc: Use image node_id 4 for calling the CardsWithIdTest obj's underlying member method code with example usage: obj.check_results(flow, checker) without return types