Фух, всё правильно работает 
В 
test_html.ss.js нет, т.к. там ты объявил прототип, но нигде не вызывал и сборщик мусора SS декларацию выпилил, т.к. она не нужна оказалась.
А в 
test.ss.js нет, т.к. ты переопределил родительский для proto des блок и тем самым удалил его декларацию и сборщик мусора SS обнаружил, что на данный прототип нет больше ссылок и удалил его, т.е. это абсолютно правильное поведение, решать это можно двумя способами:
1) Вызов super в родительском блоке
{template main(param) extends html}
    {block body}
        {super}
        <div class="wrap">
                {apply des()}
        </div>
    {/}
{/template}
2) Явное указание использования прототипа
{template main(param) extends html}
    {proto des(des)}
        {super}
    {/}
    {block body}
        <div class="wrap">
                {apply des()}
        </div>
    {/}
{/template}
При таком подходе прототип будет вынесен из body, а body будет перезаписан.
PS: если не сложно, добавь мне в issue заданице описать это поведение в доке, а то у мя ща нет возможности, а если не добавить, то я забуду 
UPD: повесил тикет по улучшению доки