Question: I want to change the TODO state of a task automatically on a give date.
I would expect something like this:

```
* FUTU Some task that only becomes actionable of a given date
:PROPERTIES:
:ACTIONABLE: some-function(<timestamp>, TODO)
:END:

```

This block should automatically change the task to a TODO state once the date is reached. 
Is there a package that can do this?

Regards,

Answer: 
Not a direct answer, but I would generally use scheduling (`org-schedule`, `C-c C-s`) combined with an agenda view for this sort of workflow. The default agenda view will not include any tasks scheduled for a future date. On that date the item will start to appear.

This provides a built in way to set the date when you want a task to start showing up in your daily todo list (or GTD review view, etc).

Note that org-mode has different kinds of timestamps with different semantics, see <https://emacs.stackexchange.com/a/10506/780>. Your task might have a deadline as well as a scheduled time when you want to start thinking about it. (For more detail see [Deadlines and Scheduling](https://orgmode.org/manual/Deadlines-and-Scheduling.html#Deadlines-and-Scheduling) in the org manual.)
I ended up writing a small functions for this purpose

```
(defun j/org-evaluate-if-actionable ()
  "Returns t if the task at point is actionable or nil if it isn't"
  (and (org-entry-get (point) "ACTIONABLE")
       (string< (org-read-date nil nil (org-entry-get (point) "ACTIONABLE"))
                    (org-read-date nil nil "+0"))))

(defun j/org-process-task ()
    "Vefifies if a task is actionable. If it is, set it as actionable"
    (message "PROPIEDAD: %s" (stringp (org-entry-get (point) "ACTIONABLE")))
    (message "Tarea: %s" (org-entry-get (point) "ITEM"))
    (message "Accionable: %s:" (j/org-evaluate-if-actionable))
    (when (j/org-evaluate-if-actionable)
           (org-todo "TODO")
           (org-delete-property "ACTIONABLE")))

(defun j/org-verify-actionable-tasks ()
  "Goes through al agenda files checking if FUTU tasks are actionable"
  ;(interactive)
  (org-map-entries
   '(j/org-process-task)
   "/+FUTU" 'agenda))

;; Ejecutar j/org-verify-actionable-tasks cada vez que se corra la agenda. Lo hace antes de que se calcula le agenda.
(add-hook 'org-agenda-mode-hook #'j/org-actionable)
(defun j/org-actionable ()
  (j/org-verify-actionable-tasks))

```

This function will find tasks with a `FUTU` TODO state and an `ACTIONABLE` property prior to today. Then, it changes the TODO state to `TODO` and removes the `ACTIONABLE` property. For example, this task

```
* FUTU Some task
  :PROPERTIES:
  :ACTIONABLE: [2020-04-29]
  :END:  

```

Will look like this after the date set in actionable `ACTIONABLE`:

```
* TODO Some task

```