JavaScript (ES6), 985
function f(x){x<0||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(0);
function f(x){x<1||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(1);
function f(x){x<2||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(2);
function f(x){x<3||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(3);
function f(x){x<4||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(4);
function f(x){x<5||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(5);
function f(x){x<6||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(6);
function f(x){x<7||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(7);
function f(x){x<8||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(8);
function f(x){x<9||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(9);
I misunderstood the rules earlier, so my previous answer was incorrect.
This one uses function hoisting instead of variable hoisting, so it doesn't depend on program 10. In fact, I think it's a quine for any combination of two or more concatenated programs.
Disclaimer: it's really late right now, so everything above could be completely wrong.
"Each program pK must be larger in byte size than the previous program pK-1" - huh, why this strange requirement? – nicael – 2016-01-03T21:30:39.800
6@nicael Because it's a growing quine sequence. – Conor O'Brien – 2016-01-03T21:31:00.863
Why does p10 print itself and not p11? That makes the problem a bit harder. – SuperJedi224 – 2016-01-04T00:28:12.060
@SuperJedi224 Because simply there is no p11. – Conor O'Brien – 2016-01-04T00:31:49.890
This challenge would have been a lot more interesting if built-in quining functions had been forbidden. – Dennis – 2016-01-04T17:42:27.567
@Dennis Perhaps, but if I was sure that a solution indeed existed without quining functions, I would have banned them. Further, before I had clarified whether or not there use was allowed, an answer already used them. Since this is not a conventional quine challenge, it is not natural to assume that quining functions would be prohibited. – Conor O'Brien – 2016-01-04T18:15:15.963
@CᴏɴᴏʀO'Bʀɪᴇɴ What should happen if a null byte is contained in the source, since printing a null byte
\x00
results in nothing being printed for that char? Is that acceptable as long as none of the programs contains only null bytes (or is that also acceptable)? Or must a program also "grow" by more than just a null byte? – mbomb007 – 2016-01-04T21:13:00.863