class_docstr: State machine that computes the next state of a test based on the current state and
  perform actions accordingly during the state transition. For example:
  - passing -[two last results failed]-> failing: create github issue
  - failing -[last result passed]-> passing: close github issue
  - jailed -[latest result passed]-> passing: update the test's oncall
  ...
docstr: Action performed when test is in a particular state. This is where we do things
  to keep an invariant for a state. For example, we can keep the github issue open
  if the test is failing.
docstr_tok: ["Action","performed","when","test","is","in","a","particular","state",".","This","is","where","we","do","things","to","keep","an","invariant","for","a","state",".","For","example",",","we","can","keep","the","github","issue","open","if","the","test","is","failing","."]
code: def _state_hook(self, state: TestState) -> None:
      """
      Action performed when test is in a particular state. This is where we do things
      to keep an invariant for a state. For example, we can keep the github issue open
      if the test is failing.
      """
      pass
  
imports: import abc
  from github import Github
  from pybuildkite.buildkite import Buildkite
  from ray_release.test import Test, TestState
  from ray_release.aws import get_secret_token
label_desc: Use image node_id 14 for calling the TestStateMachine obj's underlying member method code with example usage: obj._state_hook(state) without return types