Фух, всё правильно работает
В
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: повесил тикет по улучшению доки