Program: 166761
Project: 166761
Buggy source:
public void create(NAR nar){
  int w=50;
  int h=50;
  int water_threshold=30;
  Hauto cells=new Hauto(w,h,nar);
  cells.forEach(0,0,w,h,new CellFunction(){
    @Override public void update(    Cell c){
      float smoothness=20f;
      c.material=Material.GrassFloor;
      double n=SimplexNoise.noise(c.state.x / smoothness,c.state.y / smoothness);
      if ((n * 64) > water_threshold) {
        c.material=Material.Water;
      }
      c.setHeight((int)(Math.random() * 24 + 1));
    }
  }
);
  Maze.buildMaze(cells,3,3,23,23);
  space=new Grid2DSpace(cells,nar);
  space.newWindow(1000,800,true);
  cells.forEach(16,16,18,18,new Hauto.SetMaterial(Material.DirtFloor));
  GridAgent a=new GridAgent(17,17,nar){
    @Override public void update(    Effect nextEffect){
      if (active) {
        nar.stop();
        executed=false;
        for (int i=0; i < 5; i++) {
          nar.step(1);
          if (executed) {
            break;
          }
        }
      }
      if (!target.equals(lasttarget) || target.equals(lasttarget) && ("String_Node_Str".equals(opname) || "String_Node_Str".equals(opname) || "String_Node_Str".equals(opname))) {
        getfeedback=true;
      }
      lasttarget=target;
      PVector current=new PVector(x,y);
      if (nextEffect == null) {
        List<PVector> path=Grid2DSpace.Shortest_Path(space,this,current,target);
        actions.clear();
        if (path != null) {
          if (inventorybag != null) {
            inventorybag.x=(int)current.x;
            inventorybag.y=(int)current.y;
            inventorybag.cx=(int)current.x;
            inventorybag.cy=(int)current.y;
          }
          if (inventorybag == null || !(inventorybag instanceof Key)) {
            keyn=-1;
          }
          if (path.size() <= 1) {
            nar.step(1);
            if (getfeedback && !"String_Node_Str".equals(goal) && current.equals(target)) {
              getfeedback=false;
              GridObject obi=null;
              if (!"String_Node_Str".equals(opname)) {
                for (                GridObject gridi : space.objects) {
                  if (gridi instanceof LocalGridObject && ((LocalGridObject)gridi).doorname.equals(goal) && ((LocalGridObject)gridi).x == (int)current.x && ((LocalGridObject)gridi).y == (int)current.y) {
                    obi=gridi;
                    break;
                  }
                }
              }
              if (obi != null || cells.readCells[(int)current.x][(int)current.y].name.equals(goal)) {
                if ("String_Node_Str".equals(opname)) {
                  if (inventorybag != null && inventorybag instanceof LocalGridObject) {
                    LocalGridObject ob=(LocalGridObject)inventorybag;
                    ob.x=(int)current.x;
                    ob.y=(int)current.y;
                    space.objects.add(ob);
                  }
                  inventorybag=(LocalGridObject)obi;
                  if (obi != null) {
                    space.objects.remove(obi);
                    if (inventorybag.doorname.startsWith("String_Node_Str")) {
                      keyn=Integer.parseInt(inventorybag.doorname.replaceAll("String_Node_Str","String_Node_Str"));
                      for (int i=0; i < cells.h; i++) {
                        for (int j=0; j < cells.w; j++) {
                          if (Hauto.doornumber(cells.readCells[i][j]) == keyn) {
                            cells.readCells[i][j].is_solid=false;
                            cells.writeCells[i][j].is_solid=false;
                          }
                        }
                      }
                    }
                  }
                  nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                }
 else                 if ("String_Node_Str".equals(opname)) {
                  for (int i=0; i < cells.h; i++) {
                    for (int j=0; j < cells.w; j++) {
                      if (cells.readCells[i][j].name.equals(goal)) {
                        if (cells.readCells[i][j].logic == Logic.SWITCH) {
                          cells.readCells[i][j].logic=Logic.OFFSWITCH;
                          cells.writeCells[i][j].logic=Logic.OFFSWITCH;
                          cells.readCells[i][j].charge=0.0f;
                          cells.writeCells[i][j].charge=0.0f;
                          nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                        }
                      }
                    }
                  }
                }
 else                 if ("String_Node_Str".equals(opname)) {
                  for (int i=0; i < cells.h; i++) {
                    for (int j=0; j < cells.w; j++) {
                      if (cells.readCells[i][j].name.equals(goal)) {
                        if (cells.readCells[i][j].logic == Logic.OFFSWITCH) {
                          cells.readCells[i][j].logic=Logic.SWITCH;
                          cells.writeCells[i][j].logic=Logic.SWITCH;
                          cells.readCells[i][j].charge=1.0f;
                          cells.writeCells[i][j].charge=1.0f;
                          nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                        }
                      }
                    }
                  }
                }
                if ("String_Node_Str".equals(opname)) {
                  nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                  active=true;
                }
              }
            }
            opname="String_Node_Str";
          }
 else {
            active=false;
            int numSteps=Math.min(10,path.size());
            float cx=x;
            float cy=y;
            for (int i=1; i < numSteps; i++) {
              PVector next=path.get(i);
              int dx=(int)(next.x - cx);
              int dy=(int)(next.y - cy);
              if ((dx == 0) && (dy == 1)) {
                turn(UP);
                forward(1);
              }
              if ((dx == 1) && (dy == 0)) {
                turn(RIGHT);
                forward(1);
              }
              if ((dx == -1) && (dy == 0)) {
                turn(LEFT);
                forward(1);
              }
              if ((dx == 0) && (dy == -1)) {
                turn(DOWN);
                forward(1);
              }
              cx=next.x;
              cy=next.y;
            }
          }
        }
      }
    }
  }
;
  Goto wu=new Goto(this,"String_Node_Str");
  nar.memory.addOperator(wu);
  Pick wa=new Pick(this,"String_Node_Str");
  nar.memory.addOperator(wa);
  Activate waa=new Activate(this,"String_Node_Str");
  nar.memory.addOperator(waa);
  Deactivate waaa=new Deactivate(this,"String_Node_Str");
  nar.memory.addOperator(waaa);
  Say waaaa=new Say(this,"String_Node_Str");
  nar.memory.addOperator(waaaa);
  space.add(a);
}

Fixed version (ground truth):
public void create(NAR nar){
  int w=50;
  int h=50;
  int water_threshold=30;
  Hauto cells=new Hauto(w,h,nar);
  cells.forEach(0,0,w,h,new CellFunction(){
    @Override public void update(    Cell c){
      float smoothness=20f;
      c.material=Material.GrassFloor;
      double n=SimplexNoise.noise(c.state.x / smoothness,c.state.y / smoothness);
      if ((n * 64) > water_threshold) {
        c.material=Material.Water;
      }
      c.setHeight((int)(Math.random() * 24 + 1));
    }
  }
);
  Maze.buildMaze(cells,3,3,23,23);
  space=new Grid2DSpace(cells,nar);
  space.newWindow(1000,800,true);
  cells.forEach(16,16,18,18,new Hauto.SetMaterial(Material.DirtFloor));
  GridAgent a=new GridAgent(17,17,nar){
    @Override public void update(    Effect nextEffect){
      if (active) {
        nar.stop();
        executed=false;
        for (int i=0; i < 5; i++) {
          nar.step(1);
          if (executed) {
            break;
          }
        }
      }
      if (!target.equals(lasttarget) || target.equals(lasttarget) && ("String_Node_Str".equals(opname) || "String_Node_Str".equals(opname) || "String_Node_Str".equals(opname))) {
        getfeedback=true;
      }
      lasttarget=target;
      PVector current=new PVector(x,y);
      if (nextEffect == null) {
        List<PVector> path=Grid2DSpace.Shortest_Path(space,this,current,target);
        actions.clear();
        if (path != null) {
          if (inventorybag != null) {
            inventorybag.x=(int)current.x;
            inventorybag.y=(int)current.y;
            inventorybag.cx=(int)current.x;
            inventorybag.cy=(int)current.y;
          }
          if (inventorybag == null || !(inventorybag instanceof Key)) {
            keyn=-1;
          }
          if (path.size() <= 1) {
            active=true;
            nar.step(1);
            if (getfeedback && !"String_Node_Str".equals(goal) && current.equals(target)) {
              getfeedback=false;
              GridObject obi=null;
              if (!"String_Node_Str".equals(opname)) {
                for (                GridObject gridi : space.objects) {
                  if (gridi instanceof LocalGridObject && ((LocalGridObject)gridi).doorname.equals(goal) && ((LocalGridObject)gridi).x == (int)current.x && ((LocalGridObject)gridi).y == (int)current.y) {
                    obi=gridi;
                    break;
                  }
                }
              }
              if (obi != null || cells.readCells[(int)current.x][(int)current.y].name.equals(goal)) {
                if ("String_Node_Str".equals(opname)) {
                  if (inventorybag != null && inventorybag instanceof LocalGridObject) {
                    LocalGridObject ob=(LocalGridObject)inventorybag;
                    ob.x=(int)current.x;
                    ob.y=(int)current.y;
                    space.objects.add(ob);
                  }
                  inventorybag=(LocalGridObject)obi;
                  if (obi != null) {
                    space.objects.remove(obi);
                    if (inventorybag.doorname.startsWith("String_Node_Str")) {
                      keyn=Integer.parseInt(inventorybag.doorname.replaceAll("String_Node_Str","String_Node_Str"));
                      for (int i=0; i < cells.h; i++) {
                        for (int j=0; j < cells.w; j++) {
                          if (Hauto.doornumber(cells.readCells[i][j]) == keyn) {
                            cells.readCells[i][j].is_solid=false;
                            cells.writeCells[i][j].is_solid=false;
                          }
                        }
                      }
                    }
                  }
                  nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                }
 else                 if ("String_Node_Str".equals(opname)) {
                  for (int i=0; i < cells.h; i++) {
                    for (int j=0; j < cells.w; j++) {
                      if (cells.readCells[i][j].name.equals(goal)) {
                        if (cells.readCells[i][j].logic == Logic.SWITCH) {
                          cells.readCells[i][j].logic=Logic.OFFSWITCH;
                          cells.writeCells[i][j].logic=Logic.OFFSWITCH;
                          cells.readCells[i][j].charge=0.0f;
                          cells.writeCells[i][j].charge=0.0f;
                          nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                        }
                      }
                    }
                  }
                }
 else                 if ("String_Node_Str".equals(opname)) {
                  for (int i=0; i < cells.h; i++) {
                    for (int j=0; j < cells.w; j++) {
                      if (cells.readCells[i][j].name.equals(goal)) {
                        if (cells.readCells[i][j].logic == Logic.OFFSWITCH) {
                          cells.readCells[i][j].logic=Logic.SWITCH;
                          cells.writeCells[i][j].logic=Logic.SWITCH;
                          cells.readCells[i][j].charge=1.0f;
                          cells.writeCells[i][j].charge=1.0f;
                          nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                        }
                      }
                    }
                  }
                }
                if ("String_Node_Str".equals(opname)) {
                  nar.addInput("String_Node_Str" + goal + "String_Node_Str");
                  active=true;
                }
              }
            }
            opname="String_Node_Str";
          }
 else {
            active=false;
            int numSteps=Math.min(10,path.size());
            float cx=x;
            float cy=y;
            for (int i=1; i < numSteps; i++) {
              PVector next=path.get(i);
              int dx=(int)(next.x - cx);
              int dy=(int)(next.y - cy);
              if ((dx == 0) && (dy == 1)) {
                turn(UP);
                forward(1);
              }
              if ((dx == 1) && (dy == 0)) {
                turn(RIGHT);
                forward(1);
              }
              if ((dx == -1) && (dy == 0)) {
                turn(LEFT);
                forward(1);
              }
              if ((dx == 0) && (dy == -1)) {
                turn(DOWN);
                forward(1);
              }
              cx=next.x;
              cy=next.y;
            }
          }
        }
      }
    }
  }
;
  Goto wu=new Goto(this,"String_Node_Str");
  nar.memory.addOperator(wu);
  Pick wa=new Pick(this,"String_Node_Str");
  nar.memory.addOperator(wa);
  Activate waa=new Activate(this,"String_Node_Str");
  nar.memory.addOperator(waa);
  Deactivate waaa=new Deactivate(this,"String_Node_Str");
  nar.memory.addOperator(waaa);
  Say waaaa=new Say(this,"String_Node_Str");
  nar.memory.addOperator(waaaa);
  space.add(a);
}