code: func (ce *ConstraintEnforcer) Run() {
  	defer close(ce.doneChan)
  
  	watcher, cancelWatch := state.Watch(ce.store.WatchQueue(), api.EventUpdateNode{})
  	defer cancelWatch()
  
  	var (
  		nodes []*api.Node
  		err   error
  	)
  	ce.store.View(func(readTx store.ReadTx) {
  		nodes, err = store.FindNodes(readTx, store.All)
  	})
  	if err != nil {
  		log.L.WithError(err).Error("failed to check nodes for noncompliant tasks")
  	} else {
  		for _, node := range nodes {
  			ce.rejectNoncompliantTasks(node)
  		}
  	}
  
  	for {
  		select {
  		case event := <-watcher:
  			node := event.(api.EventUpdateNode).Node
  			ce.rejectNoncompliantTasks(node)
  		case <-ce.stopChan:
  			return
  		}
  	}
  }
docs: // Run is the ConstraintEnforcer's main loop.