Handling user input - follow-up
BUGS
The function retrieveName() is doing the input of the name twice.

        if (fgets(name, buffersize, stdin) != NULL) {
            size_t nlcspn = strcspn(name, "\n");
            bool incomplete = name[nlcspn] == 0;
            name[nlcspn] = 0;
            if (incomplete) {                    int bufferclear;
                while ((bufferclear = getchar()) != '\n' &amp;&amp; bufferclear != EOF);
            }
            if (name[0] == '\0' || !hasAlpha(name, buffersize)) {
                printf("Invalid name entered please try again...\n"
                       "USER NOTE: name cannot be empty and must contain at least one char\n");
            }
            else {
                return;
            }


Both fgets() and getchar() are getting input from stdin. The search you are
performing for end of line is failing because bufferclear should be EOF on the
first execution of the loop. What you should be doing is a search for end of line
on name.

Keep it Simple
Since you are reading from stdin, use gets() rather than fgets(), gets() has
the same semantics as fgets() but only reads from stdin. If you want 
retrieveName() to be able to read from any file you should add another parameter
this is either the file name or a FILE pointer. If it is the file name than
retrieveName() will need to perform a fopen().

There is a software engineering/programming principle call KISS, or Keep it Simple. 
_principle
The simpler you make the code the easier it is to write, maintain and debug. 

Alignment
If name is going to be used in a struct at some point in the future, you should
consider the alignment of the fields in the struct to make the most efficient use
of memory. Computers implement strings in words of memory. A word is some power
of two bytes long, in the past this has been either 2 or 4 bytes, most computers
and compilers are going to use 8 bytes these days in a 64 bit architecture. 
Therefore BUFFSIZE should be some multiple of 8 (8, 16, 24, 32). I'd suggest
as a minimum 16 because 8 may be too small.

Use Functions or Loops for Repetitive Code
In software engineering there is a programming principle called Don't Repeat Yourself. 
Any time you have repeating code such as :

    printf("Enter Name: ");
    retrieveName(name, len);
    printf("Your name is: %s\n", name);


in main() you should consider either creating a loop or writing a function.
Generally I would recommend writing a function, but in this case a loop will
do just as well.