jouleclaw-memory:📓 a note is written only with a citation into
words the person signed (Ed25519 under the notebook owner's key) and a
span inside them, so a page, an email or a tool's output cannot become a
note whatever it says. Recall returns the quote with the note.
Maintenance archives a note past its validity or superseded by a newer
note about the same thing, with the reason, and deletes nothing; an
archived note is readable and restorable and does not crowd live ones
out of the top k. Every write, archive and restore is a hash-chained log
entry; an edited or cut history does not verify. SPEC §23.
jouleclaw-skill::personal: finds emails, phone numbers, Luhn-valid card
numbers, mod-97-valid IBANs, IPv4 addresses, credential-shaped tokens
and the person's contacts' names, by shape and deterministically, and
leaves what only looks personal (a failed Luhn, a date, a version, a
name inside a word). Impersonal wraps an inducer and refuses a skill
whose query class or answer holds one: a skill that answers with a
placeholder is wrong where it is used. redact() names what it removed.
SPEC §12.1.
Falsified, each turns a test red: unsigned words accepted, maintenance
that deletes, an unchained log, archived notes crowding recall, no Luhn
check, a personal skill learned, and the answer left unchecked.
Co-Authored-By: Claude Opus 5.5 <[email protected]>