## [2026-05-15T13:21:55.082Z]
Initial creation (R0.6): in-memory parsers (log-parser, file-when-parser, when-parser) moved from io/ to core/parsing/. These are pure computation modules — no file I/O — so they belong in core/ not io/. Replaces separate cli/file-when-support and cli/when-support nodes (deleted).
## [2026-05-15T13:26:16.740Z]
Fix relative model imports in moved files: file-when-parser.ts and when-parser.ts had '../model/...' imports (correct from io/) but now need '../../model/...' from core/parsing/. No logic change.
## [2026-05-16T17:09:32.931Z]
Extracted shared parsePredicateBoolean helper into new predicate-boolean.ts. Both when-parser and file-when-parser now delegate to it (~50 LOC duplication eliminated). The helper is generic over the clause type and accepts an optional error class so file-when-parser preserves its WhenPredicateInvalidError contract. Error messages and dotted-path conventions are unchanged.
## [2026-05-28T11:23:13.986Z]
Extended parseAspectAttachment with a mode parameter ('attach-site' default, 'implies-edge' new). The implies-edge mode accepts status_inherit field ('strictest' | 'own-default'); the attach-site mode (existing callers unchanged) reserves the slot for a future status field. The mode parameter is defaulted, keeping all existing callers backward-compatible. Constants ASPECT_STATUS_VALUES and STATUS_INHERIT_VALUES are imported from the graph model to drive validation.
## [2026-05-30T04:57:35.418Z]
Removed leaked internal planning references — task, phase, and decision identifiers and section citations — from source-code comments. These tokens named ephemeral planning artifacts that mean nothing to a future reader and violated the project's comment self-containment rule. The substantive explanation each comment carried was preserved; no code or behavior changed.
## [2026-05-31T09:10:42.342Z]
Made the per-component history reader agree with the history validator about where entries begin. An entry header is a specific line shape at the start of a line, but that same shape can legitimately appear inside a fenced code block within an entry's body — for example when an entry quotes an example. The validator already treated a header-shaped line inside a fence as ordinary body text; the reader did not, so a history that validated as having two entries could be read back as three. The reader now tracks fenced regions the same way, so both agree on entry boundaries and a quoted header inside a code block is never mistaken for a new entry.
