Blueprint a sestina

Python, 72 64 bytes

i,n=input(),'\n';exec"print n.join(i)+n;i=map(i.pop,[-1,0]*3);"*6

Takes input through STDIN as a comma separated array of 6 strings and outputs to STDOUT in the format described in the post with an additional trailing newline.

Try It Online! (Ideone)

Also, I am not sure if this is okay to do, but here is a shorter answer in the form of an anonymous lambda function at 59 bytes that takes in input in the same format as the above answer, and outputs the program needed to generate the correct output:

lambda i,n='\n':"print n.join(i)+n;i=map(i.pop,[-1,0]*3);"*6

Therefore it must be called in the format exec(<Function Name>(<Array>)). Again, I am not sure if this is okay to do, so I am adding this as an extra, separate, non-competing answer until someone (maybe even OP) can hopefully clarify if this is okay or not, which I would really appreciate.


MATL, 18 17 bytes

0ch5:"t[6l5H4I7])

Input is a cell array of strings, in the format

{'house' 'grandmother' 'child' 'stove' 'almanac' 'tears'}

Try it online!

Explanation

0c          % Push string with a single space, to be used as separator
h           % Input array of 6 strings implicitly and append the above string
5:"         % Repeat 5 times
  t         %   Duplicate the array of strings (previous stanza plus separator)
  [6l5H4I7] %   Push array [6 1 5 2 4 3 7]. The 7th string is the separator, and stays
            %   at the end. The other strings are shuffled as required
  )         %   Index into the array of strings
            % End implicitly
            % Display implicitly

Mathematica, 59 bytes

r=Riffle;""<>Flatten@r[NestList[RotateRight,#,5],""]~r~"\n"&

The core of this unnamed function is NestList[RotateRight,#,5], which takes an input list of length 6 and creates a list of 6 lists, each rotated in the sestina way. Indeed, if a list of lists-of-strings is acceptable output, then NestList[RotateRight,#,5]& does the job in 26 bytes.

Then, r[...,""] inserts an empty string between each of the 6 lists; Flatten turns the whole thing into a single list of strings; ~r~"\n" then inserts a newline between each of those strings; and ""<> concatenates the whole thing into a single string. Thus the other 33 bytes are just to convert the structured output into a single string.