proto, memoryd: no line of an entry may start with §, and headers are exact

Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
This commit is contained in:
2026-09-25 16:41:44 -07:00
parent 3640d32de0
commit 81107bc5c6
6 changed files with 114 additions and 4 deletions
+11
View File
@@ -140,6 +140,17 @@ fn entries_are_not_empty_not_too_long_and_hold_no_separator_line() {
assert!(entry_problem(" \n\t", MAX_ENTRY).is_some());
assert!(entry_problem("before\n§\nafter", MAX_ENTRY).is_some());
assert!(entry_problem("before\n § \nafter", MAX_ENTRY).is_some());
// A line that starts with the separator would read as a header in notes.md (review of
// 2026-09-24).
let forged = "before\n§ moved 2026-09-24T20:14Z from memory.md in session mm-s1\nafter";
let problem = entry_problem(forged, MAX_ENTRY).unwrap();
assert!(problem.contains("starts with §"), "{problem}");
assert!(entry_problem("§ at the start", MAX_ENTRY).is_some());
assert!(entry_problem("before\n §x\nafter", MAX_ENTRY).is_some());
assert_eq!(
entry_problem("before\nit costs 5 §\nafter", MAX_ENTRY),
None
);
assert_eq!(entry_problem(&"é".repeat(MAX_ENTRY), MAX_ENTRY), None);
assert!(entry_problem(&"é".repeat(MAX_ENTRY + 1), MAX_ENTRY).is_some());
let note = MemoryArgs::Note {