What breaks
The /work tab's Current Focus (and the Life view's mood/energy banner) can never populate, on any install — including a stock one.
handleLifeWork and handleLifeHome in LIFEOS/PULSE/Observability/observability.ts resolve the focus text via:
const current = telosSectionOrFile(parseTelosUnified(), "current state", "CURRENT.md")
const fields = parseBoldFields(current)
telosSectionOrFile returns the unified TELOS.md ## Current State section whenever it exists, and only falls back to USER/TELOS/CURRENT.md when it doesn't. But:
- The stock
install/USER/TELOS/TELOS.md template ships a ## Current State (where you are now) section, so the section always exists.
- That section holds dimension bullets (
- Health: …, - Finances: …) — no **Focus:** / **Mood:** / **Energy:** bold fields, in the template or in any reasonable user fill.
Consequence: parseBoldFields(current).focus is always empty, the CURRENT.md fallback is dead code, and /work renders "No current focus set in TELOS/CURRENT.md" even when CURRENT.md carries a full **Focus:** block.
Measured on 7.40.4
GET /api/life/work → currentFocus: "" with a fully populated CURRENT.md.
- Same result on a stock template by construction (section always wins, section never has the fields).
Suggested fix
Prefer CURRENT.md when it actually carries a **Focus:** field; otherwise keep current behavior:
const currentMd = readMd(join(TELOS_DIR, "CURRENT.md"))
const current = parseBoldFields(currentMd).focus
? currentMd
: telosSectionOrFile(parseTelosUnified(), "current state", "CURRENT.md")
In handleLifeHome, keep reading domains from the TELOS.md section (the dimension bullets do live there) and only source the bold fields + "Next likely actions" from CURRENT.md — the two sources answer different questions.
Related nit
parseNumberedList(content, heading) splits on the first literal occurrence of the heading text, so any prose mention of "Next likely actions" before the actual ## heading silently empties the list.
What breaks
The
/worktab's Current Focus (and the Life view's mood/energy banner) can never populate, on any install — including a stock one.handleLifeWorkandhandleLifeHomeinLIFEOS/PULSE/Observability/observability.tsresolve the focus text via:telosSectionOrFilereturns the unifiedTELOS.md## Current Statesection whenever it exists, and only falls back toUSER/TELOS/CURRENT.mdwhen it doesn't. But:install/USER/TELOS/TELOS.mdtemplate ships a## Current State (where you are now)section, so the section always exists.- Health: …,- Finances: …) — no**Focus:**/**Mood:**/**Energy:**bold fields, in the template or in any reasonable user fill.Consequence:
parseBoldFields(current).focusis always empty, the CURRENT.md fallback is dead code, and/workrenders "No current focus set in TELOS/CURRENT.md" even whenCURRENT.mdcarries a full**Focus:**block.Measured on 7.40.4
GET /api/life/work→currentFocus: ""with a fully populatedCURRENT.md.Suggested fix
Prefer
CURRENT.mdwhen it actually carries a**Focus:**field; otherwise keep current behavior:In
handleLifeHome, keep readingdomainsfrom the TELOS.md section (the dimension bullets do live there) and only source the bold fields + "Next likely actions" fromCURRENT.md— the two sources answer different questions.Related nit
parseNumberedList(content, heading)splits on the first literal occurrence of the heading text, so any prose mention of "Next likely actions" before the actual##heading silently empties the list.