Index: branches/eam_branches/ipp-20111110/ippTools/src/chiptool.c
===================================================================
--- branches/eam_branches/ipp-20111110/ippTools/src/chiptool.c	(revision 32645)
+++ branches/eam_branches/ipp-20111110/ippTools/src/chiptool.c	(revision 32694)
@@ -885,4 +885,6 @@
     }
     psFree(query);
+    int numDeleted = psDBAffectedRows(config->dbh);
+    psLogMsg("chiptool", PS_LOG_INFO, "Deleted %d chipProcessedImfiles", numDeleted);
 
     if (!fault) {
@@ -898,4 +900,7 @@
     }
     psFree(query_update);
+    int numUpdated = psDBAffectedRows(config->dbh);
+    psLogMsg("chiptool", PS_LOG_INFO, "Updated %d chipProcessedImfiles", numUpdated);
+
 
     return true;
Index: branches/eam_branches/ipp-20111110/ippTools/src/disttool.c
===================================================================
--- branches/eam_branches/ipp-20111110/ippTools/src/disttool.c	(revision 32645)
+++ branches/eam_branches/ipp-20111110/ippTools/src/disttool.c	(revision 32694)
@@ -141,5 +141,4 @@
     PXOPT_LOOKUP_BOOL(use_alternate, config->args, "-use_alternate", false);
     PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);
-    PXOPT_LOOKUP_BOOL(i_am_sure, config->args, "-i_am_sure", false);
     PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false);
     PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false);
@@ -165,10 +164,4 @@
     PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false);
 
-    // queuing no_magic runs can be quite dangerous. Require confirmation
-    if (no_magic && !pretend && !i_am_sure) {
-        psError(PXTOOLS_ERR_SYS, true, "-i_am_sure required to queue no_magic distribution runs");
-        return false;
-    }
-   
     if (use_alternate) {
         if (strcmp(stage, "raw")) {
Index: branches/eam_branches/ipp-20111110/ippTools/src/disttoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20111110/ippTools/src/disttoolConfig.c	(revision 32645)
+++ branches/eam_branches/ipp-20111110/ippTools/src/disttoolConfig.c	(revision 32694)
@@ -49,5 +49,4 @@
 
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not needed", false);
-    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-i_am_sure", 0, "confirmation needed when -no_magic is supplied", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-use_alternate", 0, "use alternate inputs", false);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label",    0, "define label for run", NULL);
Index: branches/eam_branches/ipp-20111110/ippTools/src/magicdstool.c
===================================================================
--- branches/eam_branches/ipp-20111110/ippTools/src/magicdstool.c	(revision 32645)
+++ branches/eam_branches/ipp-20111110/ippTools/src/magicdstool.c	(revision 32694)
@@ -53,4 +53,5 @@
 
 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, psString extraSetString, psMetadata *where, const char *state);
+static bool validDSRunState(const char *state);
 
 # define MODECASE(caseName, func) \
@@ -1212,6 +1213,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    // new state (required
-    PXOPT_LOOKUP_STR(new_state, config->args, "-set_state", true, false);
+    // new state
+    PXOPT_LOOKUP_STR(new_state, config->args, "-set_state", false, false);
     // old state (required)
     PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
@@ -1237,4 +1238,6 @@
         if (!strcmp(state, "failed_revert")) {
             new_state = "new";
+        } else if (!strcmp(state, "failed_revert_ud")) {
+            new_state = "update";
         } else if (!strcmp(state, "failed_cleanup")) {
             new_state = "goto_cleaned";
@@ -1243,7 +1246,12 @@
             return false;
         }
+    } else {
+        if (!validDSRunState(new_state)) {
+            psError(PS_ERR_UNKNOWN, true, "unexpected value for new state: %s", new_state);
+            return false;
+        }
     }
     if (!p_psDBRunQueryF(config->dbh, query, new_state)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to revert");
+        psError(PS_ERR_UNKNOWN, false, "failed to clear state faults");
         psFree(query);
         return false;
@@ -1403,4 +1411,5 @@
           (strcmp(state, "wait") == 0) ||
           (strcmp(state, "failed_revert") == 0) ||
+          (strcmp(state, "failed_revert_ud") == 0) ||
           (strcmp(state, "error_cleaned") == 0) ||
           (strcmp(state, "restored") == 0) ||
Index: branches/eam_branches/ipp-20111110/ippTools/src/magicdstoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20111110/ippTools/src/magicdstoolConfig.c	(revision 32645)
+++ branches/eam_branches/ipp-20111110/ippTools/src/magicdstoolConfig.c	(revision 32694)
@@ -163,5 +163,5 @@
     // -clearstatefaults
     psMetadata *clearstatefaultsArgs = psMetadataAlloc();
-    psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state (required)", NULL);
+    psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL);
     psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-state", 0, "search by state (required)", NULL);
     psMetadataAddS64(clearstatefaultsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magictool de-streak ID", 0);
