T-8K2M-converge-sdf-desktop-frontmatter-reader
Status: closed/done · Impact: low · Complexity: small
Converge the sdf desktop app’s own frontmatter splitter —
apps/sdlc/desktop/src-tauri/src/control_plane/frontmatter.rs
(extract_frontmatter / parse_task_frontmatter) — onto the shared
markdown-util (M-6TQL). It is the last in-tree Rust splitter still carrying
its own fence logic; it reads a task file’s status/headline for the
stale_inflight dashboard warning.
It was deferred because its fence recognition mirrors frontmatter.ts’s
^---\s*\n … \n---\s* — trailing whitespace on the fence lines is tolerated.
Converging onto strict split drops that; converging onto split_lenient
(shipped with M-6TQL) keeps it and also adds leading-whitespace tolerance the
TypeScript arm lacks. Either way the fleet’s fence-whitespace behaviour is being
decided, so this is blocked on the dialect ruling in
D-4QGN-markdown-dialect-and-compatibility-profile, coordinated with
M-D3KP-typescript-frontmatter-on-markdown-util. Real task files are
machine-written with clean ---\n fences, so the practical change is nil — the
decision, not the blast radius, is the gate.
Acceptance criteria
Section titled “Acceptance criteria”- The sdf reader delegates fence detection to
markdown_util::split_lenient(orsplit, per the dialect ruling) and deletes its bespoke scan. -
status/headlineextraction andstatus_groupare unchanged; thestale_inflightwarning behaves identically on the real task corpus. - A before/after fixture records any intended change from the ruling.
Out of scope
Section titled “Out of scope”- The fence-whitespace dialect decision itself (D-4QGN-markdown-dialect-and-compatibility-profile) — this task consumes the ruling, it does not make it.
- The TypeScript frontmatter consumers (M-D3KP-typescript-frontmatter-on-markdown-util).