code: func NewController(dynamicConfigDir string, transform TransformFunc) *Controller {
  	return &Controller{
  		transform: transform,
  		// channels must have capacity at least 1, since we signal with non-blocking writes
  		pendingConfigSource: make(chan bool, 1),
  		configStatus:        status.NewNodeConfigStatus(),
  		checkpointStore:     store.NewFsStore(utilfs.DefaultFs{}, filepath.Join(dynamicConfigDir, storeDir)),
  	}
  }
docs: // NewController constructs a new Controller object and returns it. The dynamicConfigDir
  // path must be absolute. transform applies an arbitrary transformation to config after loading, and before validation.
  // This can be used, for example, to include config from flags before the controller's validation step.
  // If transform returns an error, loadConfig will fail, and an InternalError will be reported.
  // Be wary if using this function as an extension point, in most cases the controller should
  // probably just be natively extended to do what you need. Injecting flag precedence transformations
  // is something of an exception because the caller of this controller (cmd/) is aware of flags, but this
  // controller's tree (pkg/) is not.