Skip to content

Releases: Fatin-Ishraq/ThoughtML

0.3.0 — 2026-07-13

Choose a tag to compare

@github-actions github-actions released this 13 Jul 08:55

Release Notes

Added

  • thoughtml guide — the language travels inside the binary. The whole spec is
    embedded (include_str!) so a tool you just cargo installed can teach itself, with no
    website and no network. Three shapes over one source (crates/thoughtml/llms.txt):
    • thoughtml guide — a one-screen tour (the 60-second model + a quick reference + a topic menu).
    • thoughtml guide <topic> — one section, by keyword (relations, kinds, mirror,
      time, formulas, …) or number.
    • thoughtml guide --full — the complete, source-derived spec, meant to be piped into an
      AI (thoughtml guide --full | pbcopy).
      The same file is served on the site at /llms.txt and bundled in the crate and npm
      packages, so the CLI, the site, and the AI-ready dump can never disagree.

Changed

  • llms.txt rewritten and re-verified against parser source. Now carries the exact
    compute mechanics (derived-confidence propagation, grounded argument status, decision
    expected value), the full diagnostic-code table (TML101TML501), formulas and units,
    imports, and a concept → example index mapping every one of the 20 corpus documents to
    the construct it demonstrates. Moved from the repo root into the crate so it publishes with
    the package.

Internal

  • A conformance test (corpus_covers_every_core_construct) asserts every core kind, relation,
    and posture has a worked instance in the example corpus — so "the guide teaches the whole
    language" is enforced, not assumed. (roadmap-priorities gained an assumption and a
    considers to close the last two gaps.)

Install thoughtml 0.3.0

Install prebuilt binaries into your npm project

npm install thoughtml@0.3.0

Download thoughtml 0.3.0

File Platform Checksum
thoughtml-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
thoughtml-x86_64-apple-darwin.tar.xz Intel macOS checksum
thoughtml-x86_64-pc-windows-msvc.zip x64 Windows checksum
thoughtml-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
thoughtml-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.2.0 — 2026-07-13

Choose a tag to compare

@github-actions github-actions released this 12 Jul 20:15

Release Notes

Added

  • Installable, not just cloneable. thoughtml now ships as prebuilt binaries for
    macOS, Linux, and Windows — attached to each GitHub release, built by
    cargo-dist — and as an npm package:
    npm install -g thoughtml puts the CLI on your PATH with no Rust toolchain
    required. Building from source (cargo install / cargo build) still works.
  • A subcommand CLI — the toolchain, not just a compiler. thoughtml grows
    git-style subcommands; the bare thoughtml <file> [--compute/--html/…] invocation
    is unchanged and still the default.
    • check — validate and report diagnostics without emitting the model.
      --json gives each diagnostic a stable code (TML1xx vocabulary … TML5xx
      lints), line, and a suggested help fix (nearest-spelling for the "unknown
      <thing>" family — supprtssupports); --lint adds opinionated checks,
      starting with the supports-used-as-a-list detector (TML501) that catches
      the enumeration-inflates-confidence smell; --strict fails on any warning. The
      machine-readable stream is what an agent or editor self-corrects against.
    • fmt — rewrite a document in one canonical style (two-space indentation,
      a blank line between records, normalized field/body order). It re-parses its own
      output and refuses to write if the model would change, so formatting is always
      safe; --check (CI) and -w (in place). Comments are not yet preserved.
    • explain <id> — trace why a node reads the way it does: its derived
      confidence and grounded status, the evidence for and against it with each edge's
      leverage, the stances on it, the conflict it's caught in, and a one-line "why".
      Makes the mirror interrogable, not just declarative.
    • diff <a> <b> — a semantic diff at the belief level, not the text level:
      nodes added/removed, confidence and status changes (inout), supersession,
      and the conflicts that appeared or resolved between two documents. Version
      control for reasoning. Install with cargo install --path crates/thoughtml.
  • Concise authoring surface (M1–M2) — less boilerplate, same model. Pure sugar
    that desugars to the existing canonical model; every prior .thml still parses.
    • Typed headers. A built-in kind used as the header word — observation foo,
      decision bar — is shorthand for focus foo + kind.
    • Optional time / narrative replay. Time is no longer required to get a good
      view. A document with no real time spread reveals and lays out in document
      order
      (each node carries a seq), so authors stop inventing timestamps just
      to force an ordering; dated documents are unchanged.
    • Evidence bundles. A <relation> <target> header lists its sources, one per
      line (supports claim + members), each desugaring to an ordinary link.
    • On the ~1,200-line Netflix case study these cut the file ~40% with an
      identical canonical model.
  • Collections & candidates (M3) — enumerations stop polluting the mirror. Two
    non-evidential relations: part-of (a collection member) and
    candidate-for (a proposed answer to a question). Using supports to list
    a claim's parts silently inflated its derived confidence (a SWOT-summary read as
    100%-certain just for naming its items); part-of has no evidence polarity, so it
    never touches confidence, argument status, or leverage. The engine needed no
    change — non-supports/opposes/undercuts relations were already ignored by
    evidence propagation. The viewer renders them as a muted, subordinate member
    edge.
  • Memory & time overhaul (Phase A) — valid-time is now the backbone. Five
    temporal primitives toward "version control for reasoning":
    • Time spine. The derived timeline now carries an ordered events array
      (at, seq, id, kind, optional agent), sorted by valid-time with a
      seq tiebreak — the document's reasoning as a sequence of moments, not the
      order you happened to type it.
    • Tree-of-thought. A focus or question can contain other records by
      nesting them (indentation); the members are recorded on includes and inherit
      the container's provenance/temporal context. A thought-tree, not a flat list.
    • Lifecycle / fold. A focus gains a first-class status:
      open / settled / superseded / abandoned. An abandoned branch is kept
      with its reason
      , not deleted, so dead ends stay inspectable.
    • Keep-everything. Redefining a focus with differing content no longer
      silently clobbers the first definition — every alternative is retained on
      divergent and surfaced as a definition-divergence conflict. Concurrent
      authoring is lossless.
    • As-of replay. --as-of <instant> (valid-time, the default axis) and
      --as-of-seq <n> (transaction order) project the model to a point in time,
      cascading to drop dangling links and stances to a fixpoint. Exposed in the
      library as parse_str_as_of / AsOf.
  • A second conflict type: definition-divergence (warning). The mirror now
    flags a focus defined more than once with differing content — see above.
  • Standalone interactive viewer (thoughtml --html). Bake any document into a
    single, self-contained HTML file — the interactive graph (pan/zoom, node detail,
    the lenses, the as-of timeline, light/dark) with the canonical model inlined and
    no wasm and no server. --html implies the full compute stack so every lens
    has data. The graph is now an output of the toolchain, alongside JSON.

Changed

  • The viewer is now a time-driven reasoning view (Track D). The playground's
    "Readable" surface is replaced by a Viewer that lays reasoning out along
    time — earlier beliefs to the left, later to the right — with vertical position
    emerging from a force layout rather than fixed lanes, and a built-in replay
    (drag the as-of bar, or press play) that fades beliefs in as of when they were
    asserted. "Structural" stays as the node-link view. The same time-driven
    renderer (timeview.ts, dependency-free SVG) drives the standalone --html
    export, so both render identically.
  • The renderer is a wasm-free core. The graph/detail/legend projection was
    split from the wasm parser (a pure model.ts type seam), so the same renderer
    drives both the playground and the standalone viewer — they can't drift. The
    viewer ships with system fonts (no inlined web fonts), keeping each exported
    file small. A CI freshness guard rebuilds the viewer template and fails if the
    committed copy drifts, so cargo build still needs no Node.

Removed

  • Interactive what-if. The playground's what-if control (mute a node/link and
    re-derive the counterfactual live) is gone, along with its wasm bridge
    (parse_what_if). It leaned oracle rather than mirror, never worked in the
    standalone viewer (it needs a live parser), and left the playground with a third
    control the docs already described as a two-lens spine. The underlying override
    engine (Overrides / parse_str_with_overrides) stays — it's the derive
    pipeline's spine and still powers sensitivity / leverage, which is unchanged.

Install thoughtml 0.2.0

Install prebuilt binaries into your npm project

npm install thoughtml@0.2.0

Download thoughtml 0.2.0

File Platform Checksum
thoughtml-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
thoughtml-x86_64-apple-darwin.tar.xz Intel macOS checksum
thoughtml-x86_64-pc-windows-msvc.zip x64 Windows checksum
thoughtml-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
thoughtml-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum