File: LifeOS/install/LIFEOS/TOOLS/GenerateTelosSummary.ts
Environment: LifeOS 7.1.1, Claude Code 2.1.206, Bun 1.3.11, Ubuntu 24.04.4 LTS, ThinkPad (AMD Ryzen AI 9 HX PRO 370, 24 threads, 86GB RAM).
Summary
parseItems() recognizes typed-ID TELOS entries in two forms only: bullets (- **ID**: text) and H3 headings (### ID: text). A source file using H2 headings (## T0: title) with a multi-paragraph prose body underneath — the shape produced by a voice-capture/raw-transcript convention, one heading, several paragraphs — matches neither regex. items.length comes back 0, so the code falls through to the documented ID-less-prose fallback (paragraphItems), which treats every blank-line-separated paragraph in the file as its own new item, ID assigned positionally.
Net effect: a single legitimate multi-paragraph entry silently explodes into N fake sequential entries (e.g. one ## T0: entry with 7 paragraphs becomes items T0 through T6), and the fragmentation compounds any time a new paragraph is appended (a follow-up note, a later addendum) — each one becomes yet another fake entry. This lands directly in PRINCIPAL_TELOS.md, which is @-imported into every session. Reproduced on this install: a real 7-paragraph TRAUMAS.md entry and a 2-paragraph WRONG.md entry, both fragmented exactly as described.
Repro
Create a TELOS split file (e.g. WRONG.md) with:
## W0: Some belief
First paragraph of the entry.
Second paragraph, still the same entry, just a line break.
Run GenerateTelosSummary.ts. Output renders two separate bullet items instead of one — the second paragraph gets no ID at all (prefix is empty for that file), just a bare - text line.
Suggested fix
Extend parseItems()'s regex set to also match H2 ## ID: text headings (mirroring the existing H3 case at line ~131), and treat everything up to the next ## heading as that item's full body instead of falling through per-paragraph. The H2-form should take the same "explicit IDs always win" precedence the H3/bullet forms already get over the prose fallback.
File:
LifeOS/install/LIFEOS/TOOLS/GenerateTelosSummary.tsEnvironment: LifeOS 7.1.1, Claude Code 2.1.206, Bun 1.3.11, Ubuntu 24.04.4 LTS, ThinkPad (AMD Ryzen AI 9 HX PRO 370, 24 threads, 86GB RAM).
Summary
parseItems()recognizes typed-ID TELOS entries in two forms only: bullets (- **ID**: text) and H3 headings (### ID: text). A source file using H2 headings (## T0: title) with a multi-paragraph prose body underneath — the shape produced by a voice-capture/raw-transcript convention, one heading, several paragraphs — matches neither regex.items.lengthcomes back 0, so the code falls through to the documented ID-less-prose fallback (paragraphItems), which treats every blank-line-separated paragraph in the file as its own new item, ID assigned positionally.Net effect: a single legitimate multi-paragraph entry silently explodes into N fake sequential entries (e.g. one
## T0:entry with 7 paragraphs becomes items T0 through T6), and the fragmentation compounds any time a new paragraph is appended (a follow-up note, a later addendum) — each one becomes yet another fake entry. This lands directly inPRINCIPAL_TELOS.md, which is@-imported into every session. Reproduced on this install: a real 7-paragraph TRAUMAS.md entry and a 2-paragraph WRONG.md entry, both fragmented exactly as described.Repro
Create a TELOS split file (e.g.
WRONG.md) with:Run
GenerateTelosSummary.ts. Output renders two separate bullet items instead of one — the second paragraph gets no ID at all (prefix is empty for that file), just a bare- textline.Suggested fix
Extend
parseItems()'s regex set to also match H2## ID: textheadings (mirroring the existing H3 case at line ~131), and treat everything up to the next##heading as that item's full body instead of falling through per-paragraph. The H2-form should take the same "explicit IDs always win" precedence the H3/bullet forms already get over the prose fallback.