Skip to content

AbstractNote v0.2.0

Latest

Choose a tag to compare

@lpalbou lpalbou released this 28 Oct 11:24
· 12 commits to main since this release
770a7ce

Added

  • Every statement says where it came from (backlog 0037): what the notebook learns from a note now
    names the steps of AbstractRuntime's ledger that captured the note and that understood it (the run and
    the ledger row), and the note's text and attachments as stored files of the capture run. When a later note
    supersedes or retracts a statement, the closing carries the same. Corrections a person makes on the web page
    (retract, redate, undo a merge, confirm a match, close a task) do not run as steps of the ledger yet: they
    name the revision and its account, but no ledger source. A run id typed by a caller or a model is kept as a
    label, never as a source. The shape is AbstractMemory's (its ADR 0003), so the notebook's knowledge can
    move into the plane's memory with its sources, where it stays yours (readable by your own other
    applications, by nobody else by default). Inside the gateway a captured note's text is also
    stored as an artifact of the capture run; captures from the command line and importers are unchanged.
    Nothing is filled in for notes written before this version.
  • Ideas understood differently reach what relies on them (ADR 0008 §4a): when an earlier note changes what
    an idea is (its statements, its relations, what it is, or deeply its description), the later notes about the
    ideas that rest on it are understood again too, strongest first and in the order things happened, and each
    one is shown what changed. The Processing page says why: "Re-understanding 12 notes (5 because Zorn changed)",
    and before a consolidation runs it says how many more may follow. A wave of changes always ends; a second
    consolidation with nothing new changes nothing.

Changed

  • Requires AbstractRuntime 0.15.0 (its step context and LedgerStore.get_record, ADR 0011): a note
    tool reads the run and ledger row of the step it runs in from the runtime; neither a flow nor a model passes
    it. The floor is abstractruntime>=0.15.0. The [gateway] extra floors abstractgateway>=0.17.0 (the memory routes, the strict owner rule).
  • Notebooks open as before: the new fields are added to an existing notebook when it opens, empty
    for what it already holds; the notebook's format version stays 4 (the live notebooks' version, now the
    baseline of this package).
  • Requires AbstractMemory 0.4.0: a statement placed between two earlier beliefs now moves the
    older belief's end date through AbstractMemory's public narrow_assertion; AbstractNote no longer
    writes AbstractMemory's private table (backlog 0034). The floor is abstractmemory>=0.4.0, the
    release that carries it.
  • What a thing is: the description of a person, project or tool now says what it is (its kind,
    its role or purpose, and what it belongs to or works with), instead of the latest thing
    that happened to it. It is rewritten only when a note changes
    what the thing is, and a note dated before what the notebook learned later describes the thing
    as it stood then.
  • Statements: understanding a note now names how two things relate with a specific verb (runs
    on, depends on, fixed in, status, version) read from the first to the second, and keeps the same
    wording for the same kind of fact, so a new status or version replaces the old one.
  • Agents and their packages: an agent that writes messages (such as a seat named gateway) is
    kept apart from the software it works on, even when both carry the same name.
  • One spelling per topic: abstractnote normalize-topics joins only topics that differ by case,
    hyphens, underscores or spaces; a plural (bug_fixes) stays its own topic.
  • Nothing left out without a word (ADR 0007): a description longer than 600 characters or a
    theme name longer than 4 words is kept whole with a warning instead of being cut or dropped;
    topics a note could not keep are named in what processing did to it; lists chosen under a bound
    (the graph, recall packets, search, stats, reflection candidates) say how much they left out, and
    a request for more than a read allows is answered and logged.

Fixed

  • Consolidation no longer stops silently: when the model gives an empty or partial answer, the
    consolidation asks once more, sets aside what is still unanswered for the next pass and goes on,
    instead of ending the summaries stage and calling the pass complete with hundreds of summaries
    still waiting. A pass that could not refresh everything is marked as having gaps, and the
    Processing page says so in one quiet line ("12 summaries could not be refreshed this time; they
    will be tried again next time.").
  • Imported notes are filed too: an imported note now gets the same quick filing as a note you
    send (its kind and up to four topics) when it is understood, and abstractnote refile --missing --local files the notes that were understood before, a batch at a time, saying how many are left.
    The same repair runs through the server (POST /note/refile with {"missing": true}), each note
    filed on your own runtime, and GET /note/refile says how far it got.
  • A note found unchanged is not read again for the same reason: when a note read again because
    an idea it relies on changed comes out the same, the notebook remembers what it was read against,
    so the next change wave from that idea passes it by without a model call.
  • A note read while the notebook changed is read again: when a statement a note builds on is
    withdrawn while the note is being understood, nothing of that reading is kept and the note goes
    back to the queue once, at its place, with the reason shown in the queue; the next reading is made
    on what holds now.
  • Imports leave out what cannot be read: a file the notebook cannot read (an image without a
    description model, for example) and a Markdown file that is only its header are no longer stored
    as notes made of their names; the import report counts them and names each one with the reason.
  • Web app, developer mock: the mock server answers a note's date basis, a failed note's recent
    errors and how each changed note changed, as the server does, so the screens built on it read the
    same answers.
  • Withdrawn entries stay out of sight: an entry that only an earlier reading of a note made,
    and that the note no longer names once it is understood again, is no longer counted in the
    numbers, the timeline, the day view or the overview, and is in no theme, cue or description
    refresh. Its own page says when and why it was withdrawn and what the note now reads it as
    ("…was understood again and now reads it as Helix calibration plan."); looking at the notebook
    as it was received before that still shows it.

What's Changed

  • Baseline: merge the serve line (schema 4, cd6227c) into main (operator decision 1) by @lpalbou in #2
  • Thin-client slice 1: public narrow_assertion (0034), ledger provenance on every revision (0037), phased convergence plan (0033) by @lpalbou in #1
  • AbstractNote 0.2.0: ledger provenance, AbstractMemory 0.4.0 by @lpalbou in #3

Full Changelog: v0.1.0...v0.2.0