Development record
The rules loader fences every rule of any domain a user or repo override names (internal/core/rules/rules.go ~965, fix for iss-2609020219265817), including a domain whose override only changes recall or state, so bundled rule bodies lose their markdown in that case. Over-fencing only; no attack path.
issueopenminoriss-2610120656366937
The rules loader fences every rule of any domain a user or repo override names (internal/core/rules/rules.go ~965, fix for iss-2609020219265817), including a domain whose override only changes recall or state, so bundled rule bodies lose their markdown in that case. Over-fencing only; no attack path.
Frontmatter
| id | iss-2610120656366937 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2610120656366937-rules-fence-covers-unreplaced-bundled.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609020219265817sanitizeRuleBody indents every continuation line of a rule body by two spaces, which defuses the line-start contract the host-side parser splits on but not CommonMark: a two-space-indented heading line inside a list item still renders as a heading INSIDE that item. A repo-overridden domain can therefore put an unmarked heading in front of any reader that renders the injected block as markdown, wearing no repo-override label of its own. The line-start contract holds and this is already stronger than the pre-fix behaviour, which indented nothing at all; closing the CommonMark half needs a decision on whether rule bodies get escaped, fenced, or left as the parser contract defines them. Evidence: sanitizeRuleBody in internal/core/rules/rules.go.