On this site, a solution for text wrapping based on descriptions in Pandoc-generated ConTeXt documents was previously formulated. Although satisfactory for a one-page minimum working example, the then proposed solution still contains a pair of pitfalls.
One problem is that figure floats with text wrapping near a page break will misbehave as depicted below.

\setuppapersize [A4][A4]
\setuplayout [width=middle, backspace=1.5in, cutspace=1.5in,
height=middle, topspace=0.75in, bottomspace=0.75in]
\setuppagenumbering[location={footer,center}]
\setuptolerance[horizontal, tolerant, stretch]
\setupexternalfigures [location=default]
% Keep old definitions
\let\oldplacefigure\placefigure
\let\oldexternalfigure\externalfigure
% For full text-width figures
\def\placefigure[#1]#2#3{%
\def\externalfigure[##1]{\oldexternalfigure[##1][wfactor=fit]}%
\oldplacefigure[#1]{#2}{#3}%
\let\externalfigure\oldexternalfigure% Reset for in-line figures
}
% For figures with wrapped text
\definedescription[description][
headstyle=bold,
style=normal,
location=hanging,
width=4cm
]
\def\startdescription#1{%
\def\externalfigure[##1]{\oldexternalfigure[##1][width=4cm]}%
\oldplacefigure[left,high,none]{}{#1}%
\let\externalfigure\oldexternalfigure% Reset for in-line figures
}
\def\stopdescription{\endgraf}
\starttext
\input douglas.tex
\input linden.tex
\input linden.tex
\section{Section near page end}
\startdescription{{\externalfigure[cow]}}
\input linden.tex
\stopdescription
\input bryson.tex
Additional unit tests:
Yeah, but I produce milk! \externalfigure[cow][height=31pt]
\placefigure[here,nonumber]{Large milk cow}{\externalfigure[cow]}
\stoptext
Question
How can this problem be solved without changing anything between \starttext and \stoptext? (Remember, the whole idea is about fully automated document generation starting from Pandoc MarkDown.)
As an absolute ConTeXt-novice, I would think that perhaps something with penalties would be possible or I would hope for similar functionality as offered by the needspace LaTeX package.
Edit
I also tried the relatively new \starthanging[left]{#1} environment, with and without the [n=...] argument (the latter in the assumption that an image height could be measured in text line units). The results using \starthanging are equally unsatisfactory (see below);
- The cow image is placed partly in the bottom margin,
- The text continues being wrapped on the next page, and
- (Not shown) When the wrapped text is short, the next paragraph will not be wrapped and overlap with the image.
Hence, a solution using \placefigure as outlined earlier looks more promising.

