anchor.diff:    /// creates xake build script
     let xake options = new RulesBuilder(options)
   
  +  /// Gets the script options.
  +  let getCtxOptions() = action {
  +    let! (ctx: ExecContext) = getCtx()
  +    return ctx.Options
  +  }
  +
     /// key function implementation
     /// Executes and awaits specified artifacts
     let needFileset fileset =
         action {
  -        let! ctx = getCtx()
  -        do! fileset |> (toFileList ctx.Options.ProjectRoot >> List.map (fun f -> new Artifact (f.FullName) |> FileTarget)) |> Impl.needTarget
  +        let! options = getCtxOptions()
  +        do! fileset |> (toFileList options.ProjectRoot >> List.map (fun f -> new Artifact (f.FullName) |> FileTarget)) |> Impl.needTarget
         }
   
     /// Executes and awaits specified artifacts
  
positive.code:       |> function
          | Some action ->
            async {
              let! task = ctx.TaskPool.PostAndAsyncReply (fun chnl ->
                Run(target,
                  async {
                    // TODO check if rebuild is required
                    let! (result,_) = action (BuildLog.makeResult target,ctx)
                    return ctx.Db.Post <| Store result
                    ctx.Logger.Log Never "Storing result for '%A': %A" target result
                  }, chnl))
  
              do! task
              return Dependency.ArtifactDep target
            }
          | None ->
            // should always fail for phony
            let (FileTarget file) = target
            match file.Exists with
            | false -> raiseError ctx (sprintf "Neither rule nor file is found for '%s'" (getFullname target)) ""
            | true -> async {return Dependency.File (file,file.LastWriteTime)}
  
      /// Executes several artifacts in parallel
      let private exec ctx = Seq.ofList >> Seq.map (execOne ctx) >> Async.Parallel
  
negative.code:     open WorkerPool
      open BuildLog
      open Storage
  
      let TimeCompareToleranceMs = 100
  
      /// Writes the message with formatting to a log
      let writeLog (level:Logging.Level) fmt  =
  