Skip to content

Release Notes: v0.1.5

Date: 2026-04-26

This release is a major memory-system refactor. The biggest change is that Lint-AI now supports single-document insert/update through a mutable IndexStore, while the query path is separated into a frozen MemoryIndex snapshot. In practice, that means callers can incrementally upsert one source document at a time instead of treating the whole corpus as a monolithic rebuild.

The release also adds optional claim extraction, temporal context support, temporal fact storage, refreshed lexical data, and aggregation scaffolding.

Highlights

  • Added single-document insert/update support through IndexStore.
  • Refactored the retrieval system into:
  • a mutable ingestion/store layer
  • an immutable query snapshot layer
  • Added SourceDocument as the primary artifact ingestion type.
  • Added stable chunk identifiers and chunk lifecycle tracking.
  • Added optional claim extraction, disabled by default.
  • Added temporal parsing, temporal fact storage, and timeline reasoning scaffolding.
  • Refreshed lexical expansion data from WordNet and ConceptNet subsets.
  • Added aggregation scaffolding for count/sum style queries.
  • Bumped crate version to 0.1.5.

Memory Index Refactor

The core architectural change in this release is the split between ingest and query:

  • IndexStore
  • mutable artifact-facing store
  • owns source documents, cached records, tombstones, and lifecycle metadata
  • supports document-level upsert and remove
  • rebuilds query state from the current store contents
  • MemoryIndex
  • immutable query snapshot
  • built from the current store state
  • optimized for retrieval and reranking

This is a more practical model for artifact-driven workflows because:

  • a single document can be inserted or updated independently
  • the store can keep lifecycle/history data separate from retrieval state
  • queries run against a stable snapshot instead of a moving ingest target

Single-Document Insert and Update

Before this release, the memory path was primarily batch-oriented. This release adds the ability to ingest and update one source document at a time.

New primary input

SourceDocument is now the main artifact input type. It captures:

  • doc_id
  • source
  • content
  • concept
  • headings
  • links
  • timestamp
  • doc_length
  • author_agent

Ingestion behavior

  • each source document is normalized into a DocRecord
  • the record is chunked and enriched
  • the record is inserted into the mutable IndexStore
  • the snapshot is rebuilt when needed

Why this matters

  • callers no longer need to reconstruct the entire corpus for a single change
  • the model fits incremental artifact systems better
  • doc lifecycle and chunk lifecycle can be tracked explicitly

Chunking and Lifecycle

This release formalizes chunk-level structure more clearly.

Chunk model

  • SectionChunk now carries stable identifiers.
  • Chunk timestamps inherit from the parent source document.
  • Chunks retain headings, line ranges, entities, and important terms.

Lifecycle model

Lifecycle metadata is now tracked at both chunk and document levels:

  • ChunkLifecycleMeta
  • version
  • latest status
  • update timestamp
  • superseded chunk reference
  • lineage key
  • DocumentLifecycleMeta
  • derived from chunk lifecycle state

This makes it possible to reason about:

  • the latest version of a chunk
  • the latest version of a document
  • how a document changed over time

Optional Claim Extraction

Claim extraction is now optional and off by default.

Behavior

  • top_claims remains part of the record schema.
  • Claim extraction only runs when the option is enabled.
  • Claim-based retrieval plumbing only activates when claim scoring is enabled.

Why this matters

  • claim metadata is preserved for workflows that want it
  • the default query path stays cleaner and less opinionated
  • claim support is available without becoming part of every index build

Temporal Support

This release adds the first full temporal layer for timestamped chunks.

Query-side temporal context

  • temporal queries can be evaluated against a range or anchor
  • relative expressions can be interpreted with a time context
  • chunk timestamps are used directly in ranking decisions

Document-side temporal data

  • source document timestamps are propagated into chunks
  • temporal terms are stored on records for date-oriented retrieval
  • temporal metadata is available without rewriting the core query API

Timeline reasoning

The release also adds a temporal timeline layer for ordered event analysis:

  • timeline windows over timestamped facts
  • adjacent-pair detection
  • support for sequence/order style temporal questions

Temporal Facts and State Over Time

This release introduces a separate temporal fact layer on top of document and chunk lifecycle.

What it is for

  • storing structured temporal assertions
  • tracking validity windows
  • answering “as of” and timeline-style questions
  • keeping semantic state separate from raw text

Data model

  • facts are stored separately from chunks
  • facts can be versioned over time
  • facts can retain provenance back to source chunk/document ids

Why this matters

This is the first step toward state-over-time reasoning rather than simple timestamp-based ranking.

Lexical Expansion Refresh

Lexical expansion data was rebuilt and checked into the repository.

Changes

  • refreshed WordNet subset JSON
  • refreshed ConceptNet subset JSON
  • added a generator script for offline subset rebuilds
  • kept lexical expansion data local and inspectable

Policy

  • lexical expansion data should be regenerated from upstream sources
  • domain vocabulary should be added through seed terms and regeneration
  • hardcoded Rust synonym lists should be avoided

Query and Aggregation

This release also adds early reasoning scaffolding for aggregation-style questions.

Added support for

  • count-style aggregation
  • sum-style aggregation
  • reasoning over retrieved evidence with citations

This is still a generic first pass, but it establishes the infrastructure for questions that need retrieval plus computation.

Documentation

This release also adds or expands documentation for:

  • artifact-oriented indexing
  • chunk strategy behavior
  • lexical subset generation
  • release notes for the current version family

Compatibility Notes

  • Existing queries still work through the same public API surface.
  • Claim metadata remains on the record schema but is not part of default retrieval behavior.
  • Persistent store layouts now validate metadata more strictly, so old incompatible indexes may need to be rebuilt.

Version Bump

  • Crate version updated from 0.1.4 to 0.1.5