Development record
Lab finding C6 (lab-260831131349-976575f, base sha 976575f9): `sanitizeRuleBody` (internal/core/rules/rules.go) indents a continuation line only when it begins with `#`, so every other continuation line of a multi-line rule body renders flush-left and un-bulleted — a multi-line rule reads as a bullet followed by loose paragraphs, a continuation beginning with `- ` forges a sibling rule bullet, and the `#` case gets a single space. Reproduced at v0.7.0 with `abcd rules`. The code comment states the threat model backwards ("only a continuation line would sit flush-left"): every continuation line does, because `Validate` accepts a bare newline and the normaliser turns CR, LS and PS into one. The fix indents every continuation line two spaces (the markdown list-item continuation), keeps the sanitiser a fixed point, and defends the line-start contract the host-side parser splits on (`## ` flush-left); no bundled default carries a newline, so only multi-line repo overrides re-inject once.
Lab finding C6 (lab-260831131349-976575f, base sha 976575f9): sanitizeRuleBody (internal/core/rules/rules.go) indents a continuation line only when it begins with #, so every other continuation line of a multi-line rule body renders flush-left and un-bulleted — a multi-line rule reads as a bullet followed by loose paragraphs, a continuation beginning with - forges a sibling rule bullet, and the # case gets a single space. Reproduced at v0.7.0 with abcd rules. The code comment states the threat model backwards ("only a continuation line would sit flush-left"): every continuation line does, because Validate accepts a bare newline and the normaliser turns CR, LS and PS into one. The fix indents every continuation line two spaces (the markdown list-item continuation), keeps the sanitiser a fixed point, and defends the line-start contract the host-side parser splits on (## flush-left); no bundled default carries a newline, so only multi-line repo overrides re-inject once.
Grounds
- pursued: the defect was the i > 0 arm firing only on "#"; indenting every continuation is the smallest change that keeps a body inside its bullet and keeps the pass idempotent
Frontmatter
| id | iss-2609012039227456 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609012039227456-lab-finding-c6-lab-260831131349-976575f.md
open on GitHub ↗ · commit history ↗