the attached seems to fix the problem with "fossil branch new" from a private checkin not preserving the privateness.  also fixes the problem with clearsign prompting for a key even when this settings is defaulted to off.

looks like the sql command for cancelling prior propagating tags between checkin.c
    /* For a new branch, cancel all prior propagating tags */
    Stmt q;
    db_prepare(&q,
        "SELECT tagname FROM tagxref, tag"
        " WHERE tagxref.rid=%d AND tagxref.tagid=tag.tagid"
        "   AND tagtype==2 AND tagname GLOB 'sym-*'"
        "   AND tagname!='sym-'||%Q"
        " ORDER BY tagname",
        vid, zBranch);

and branch.c
  /* Cancel all other symbolic tags */
  db_prepare(&q,
      "SELECT tagname FROM tagxref, tag"
      " WHERE tagxref.rid=%d AND tagxref.tagid=tag.tagid"
      "   AND tagtype>0 AND tagname GLOB 'sym-*'"
      " ORDER BY tagname",
      rootid);

are slightly different.  my sql is a bit rusty so not sure if they accomplish the same thing just in different ways.

still not sure why "delete from private"  and then a fossil rebuild still leaves artifacts in the private table