Notes
Use a Haft note for one fact, observation, caveat, or small piece of rationale that later work should remember. Ordinary reasoning is not captured automatically.
/h-note Remember that the billing sandbox rate limit is a vendor
observation from 2026-08-08, not a contractual production limit. A note is not a decision
A note can describe a choice or condition. It cannot make the choice,
authorize work, approve a specification, or prove that a claim is true. If
you later choose an option, record that choice through h-decide
instead of treating old note text as approval.
What a note can carry
A note requires a title and can include observations, rationale, source or
evidence references, affected files, search terms, context, and a
valid_until date. Use a freshness date when the note should not
support later work indefinitely.
Expiry is an attention signal. It does not delete the note or claim that the historical observation never happened.
Advanced: direct interfaces
haft interface note.record --json
haft artifact create note.record --input-file input.json --json The MCP form is:
haft_note(title="...", observations=[...]) A note can exist without an exact project-entity link. When that exact link matters, provide the identity and project context explicitly; Haft does not infer them from a similar name or search rank.