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
SourceDocumentas 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_idsourcecontentconceptheadingslinkstimestampdoc_lengthauthor_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¶
SectionChunknow 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_claimsremains 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.4to0.1.5