   "FIXME: Add documentation.")
 
 (def config-ns-name 'fhofherr.simple.projectdef)
+
+;; TODO split into sub-namespaces
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Context
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defn initial-context
   "Initial context of a job execution."
   [project-dir]
   {:project-dir project-dir})
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Status model
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defn failed?
   "Check if the given context `ctx` is marked as failed. Return the reason

  "Mark the context `ctx` as failed."
  [ctx]
  (assoc ctx :status :failed))

(defn simple-ci-job?
  "Check if the given object is a Simple CI job."

   :job-fn (var-get job-var)
   :executions (ref [] :validator vector?)
   :executor (agent -1)})

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Scheduling
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn make-job-execution!
  "Creates a new execution for the job represented by `job-desc` and
