Promote the pending facts of a project memory topic into the topic's note.
76
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
tessl memory save has stored the topic's new note: what is worth keeping from
the note and the waiting facts you were handed, with nothing else. The save
also cleared that batch of facts.
Take the first situation that applies:
tessl memory pending refuses this run: it is not the topic's
promotion run, or its turn has ended. Save nothing and report the refusal.
A refusal to write its files is not this; Environment facts says what to do.--allow-empty, which clears the batch. Saving nothing hands the same batch
to every later run.If what you were handed fits none of these, say what you found in your result and stop.
TOPIC.- <fact> (<who>, <YYYY-MM-DD>). Keep an unchanged line's attribution
exactly as it is. Restamp a line only when its content changes or a batch
fact restates it, with that fact's statedBy and statedOn. A line with no
attribution becomes (inferred, unknown) and counts as the oldest.supersedes names it. Between batch facts, the later statedOn wins.retracts entry deletes what it names, from the note and from the batch,
and adds nothing, not even a note that something was forgotten. If neither
the note nor the batch says what it names, change nothing.(inferred, unknown) lines, then
settled decisions, then incident lessons, then what names mean, then
pointers, keeping standing instructions, preferences, conventions, and who
owns or decides what to the last.tessl memory pending output, with the version it printed. The save clears
exactly the facts you were handed; facts that arrive while you work wait for
the next promotion. A refused save stores nothing and leaves the batch
waiting.new-note.md in the folder
the latest pending wrote, with your file-writing tool, never a shell
heredoc. Never edit note.md: it is the stored note you started from.TOPIC in .cloud-launch/inputs.json at the root of the
repository. Run every tessl memory command from the directory the run
started in: the CLI finds the project from the nearest tessl.json at or
above the directory it runs in.tessl memory pending --topic <topic> --out-dir <dir> writes note.md, the
whole note exactly as stored, and facts.json, the batch: {"facts": [...]},
each with id, statedBy, statedOn, proposedAt, an optional source and
supersedes, and either fact or retracts. It also writes promotion.json,
checksums of the two, which you can ignore. It prints the note's version.
Only the run the promotion job started for this topic may call it.pending call in this run hands you the same batch: the job picked it
when it started the run, and facts proposed since then wait for the next
promotion.supersedes and retracts are text, not ids: a note line as the proposing
run read it, without its leading - and its (<who>, <date>) ending. A
promotion since then may have reworded the line, so match by what it says.
When no note line or batch fact says it, a retracts changes nothing
(invariant 6), and a fact with supersedes is handled as if it had none.pending only creates new files. It refuses a folder that already holds any
of the three, and a path through a symbolic link, with "Could not write the
promotion input". Give every call a new, empty folder, such as one from
mktemp -d; after that refusal, call it again with another new folder. If
that is refused too, save nothing and report it.tessl memory save --topic <topic> --file <note file> --note-version <version>
stores the note and redacts secret-shaped text. Its refusals, and what to do
after each:
pending printed: run pending again into
a new, empty folder and rewrite the note from what it writes.--allow-empty is missing: see situation 3.