Releases: forkzero/lattice
v0.2.1
Summary
Adds lattice health — a unified CI gate that combines freshness, change pressure, and code impact into a single PASS/WARN/FAIL verdict.
What's New
lattice health— one command, one verdict:- Freshness: hours since lattice was updated relative to code
- Change pressure: contested theses + drift items
- Code impact: files changed since last lattice update that are bound in implementation nodes (lattice-tracked files)
--checkexits 2 on FAIL for CI gates; WARN exits 0--format jsonfor automation
Verdict logic
FAIL: pressure + code/time signals together, or high pressure alone (>3)
WARN: any single signal (tracked files changed, stale >72h, or some pressure)
PASS: nothing flagged
Fixes
- Fixed NodeMeta untagged serde ordering — ThesisMeta was incorrectly matching implementation nodes due to struct-level
#[serde(default)] lattice summarynow shows message count and contested thesis count- Health command loads graph once via
build_node_indexinstead of double-loading
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Summary
Major release adding adversarial debate primitives, persona-specific messaging, and continuous learning foundations. Lattice can now capture structured challenges to strategic positions, track confidence changes over time, and measure change pressure across the knowledge graph.
What's New
Message node type (MSG-*)
lattice add message— create persona-specific claims grounded in theses- Messages trace back to strategic positions via
grounded_inedges - Drift-detected when underlying theses weaken — know immediately when messaging is on shaky ground
- Searchable, listable, and visible in
lattice summary
Adversarial debate primitives
rebutsedge — thesis directly argues against another thesis (structured debate)concedesedge — thesis acknowledges validity of an opposing point (partial agreement)contestedstatus — signals a thesis is under active challenge; downstream requirements flagged
Confidence tracking
- Confidence history — audit trail of
{value, reason, updated_by, updated_at}entries on theses - Research lifecycle fields:
last_researched,research_scope,agent_directive
Change pressure assessment
lattice assess— compute change pressure from contested theses, confidence shifts, affected requirements, and drift--checkflag exits non-zero for CI gates — trigger planning cycles when enough has shifted
Schema versioning
- Auto-detection on every command — warns if lattice schema is older or newer than the binary
lattice migrate(hidden) — upgrades.lattice/to v0.2.0 schema- Handles both directions: "run
lattice migrate" or "runlattice update"
What's Changed
lattice summarynow shows message counts and contested thesis counts- New
adversarial_debateworkflow inlattice help workflowsand--jsoncatalog - Message node type in
conceptsblock with prefix MSG-* - All 3 new edge types documented with semantics in catalog
Fixes
- Fixed NodeMeta untagged serde ordering — variants with required fields now tried first, preventing silent data loss on thesis metadata
- Schema version comparison properly handles major.minor (ignores patch)
lattice assessuses shared node index instead of double-loading all nodes
Full Changelog: v0.1.26...v0.2.0
v0.1.26
Summary
Fixes a bug where lattice list -s and -p flags were silently ignored, producing unfiltered results regardless of input.
Fixes
--status/-snow validates and filters — acceptsdraft|active|deprecated|superseded, errors on invalid values likedeferredwith a clear message pointing to valid options--priority/-pnow actually filters — was also silently ignored, now filters byP0|P1|P2- Improved help text to disambiguate workflow status (
--status) from resolution filters (--blocked,--deferred)
Example
$ lattice list requirements -s deferred
Error: Invalid status: deferred. Must be draft, active, deprecated, or superseded
$ lattice list requirements -p P0
(shows only P0 requirements)
Fixes #29
Full Changelog: v0.1.25...v0.1.26
v0.1.25
Summary
Unifies all help output (lattice, lattice --help, lattice help) to show the same grouped, domain-aware display. Subcommand --help (e.g. lattice drift --help) still shows clap's per-command help.
What's Changed
lattice,lattice --help, andlattice helpnow all show the same grouped output:- KNOWLEDGE GRAPH — add, get, list, search, edit, resolve, verify, refine, remove, replace
- HEALTH & ANALYSIS — summary, drift, freshness, lint, diff, plan, export
- SETUP — init, update, help
- Integration commands (
mcp,prompt,push) hidden from help display (still work) - 8 new integration tests covering all help paths, grouped output, hidden commands, topics, and subcommand help
Full Changelog: v0.1.24...v0.1.25
v0.1.24
Summary
Reorganizes CLI help output so the domain model is immediately visible and commands are logically grouped.
What's New
- Domain summary at the top of
--helpandlattice help: "sources → theses → requirements → implementations" - Grouped command list in
lattice help: KNOWLEDGE GRAPH, HEALTH & ANALYSIS, SETUP addsubcommands expanded in help: showsadd source,add thesis,add requirement,add implementationindividually- Integration commands hidden from
--help:mcp,prompt,pushstill work but don't clutter the display
What's Changed
- Commands reordered in
--help: graph operations first, then health/analysis, then setup - All command descriptions now teach the domain by naming the four node types explicitly
lattice helpdescriptions truncated to first sentence for scannability
Full Changelog: v0.1.23...v0.1.24
v0.1.23
Summary
Adds lattice freshness — a staleness detector that compares the last git commit touching .lattice/ vs code files, for use in pre-commit hooks and CI.
What's New
lattice freshness: Shows when lattice and code were last updated, flags if the gap exceeds a thresholdlattice freshness --check: Exits with code 2 if stale — use in CI or pre-commit hooks--threshold <hours>: Configurable staleness window (default: 72 hours)--format json: Machine-readable output for dashboards and automation
Example usage
# Pre-commit hook or CI job
lattice freshness --check --threshold 48
# Output when stale:
# STALE: Code updated 2026-03-24 21:19 UTC but lattice last updated 2026-03-17 00:48 UTC (188 hours ago, threshold: 48h)
# exit code: 2Fixes
- Fix 4 clippy warnings from Rust 1.93 upgrade (checked_div, redundant into_iter)
Full Changelog: v0.1.22...v0.1.23
v0.1.22
Summary
Adds a --compact flag for LLMs that already know the lattice domain model and just need command signatures.
What's New
lattice --json --compact: Outputs only command names and parameter specs (name, type, required, description) — no examples, descriptions, concepts, or workflows. ~50% smaller than the full catalog.- Also available via
lattice help --json --compact
What's Changed
- v0.1.21 added
lattice help conceptsandlattice help workflowsfor human-readable onboarding - v0.1.20 added the full enriched catalog (concepts, workflows, structured examples, schema hints, related commands)
Full Changelog: v0.1.21...v0.1.22
v0.1.21
Summary
Adds human-readable help topics so users can learn lattice concepts and workflows directly from the CLI.
What's New
lattice help concepts: Displays node types (with prefixes), all edge types with semantics and direction, versioning/drift model, and ID naming conventionslattice help workflows: Shows 4 common task-oriented command sequences (capture_decision, check_health, respond_to_drift, record_gap)lattice helpnow includes a TOPICS section pointing to the new topics- Unknown topics produce a clear error with available options
Full Changelog: v0.1.20...v0.1.21
v0.1.20
Summary
Enriches the lattice --json command catalog so LLMs can understand the domain model, edge semantics, and common workflows without external documentation.
What's New
- Concepts block: Node types (with prefixes and purpose), all 10 edge types with plain-English semantics and direction, versioning/drift model, and ID naming conventions
- Workflows section: 4 task-oriented patterns — capture_decision, check_health, respond_to_drift, record_gap — with step-by-step command sequences
- Structured examples: Examples now include
command+explanation(was bare strings) - Output schema hints: Each command includes a one-line hint of its
--format jsonresponse shape - Related commands: Navigation hints between commands (e.g.,
drift→get,edit,summary)
What's Changed
- All command descriptions expanded with "when to use" guidance
- 6 new tests validating catalog structure; edge type test validates against canonical
EDGE_TYPESconstant
Fixes
- JUnit XML test reporting added for forkzero meta-repo conformance (
make test-all)
Full Changelog: v0.1.19...v0.1.20
v0.1.19
Summary
Push payload now includes the git remote URL so the app can link back to the source repository.
What's New
repoUrlin push payload:lattice pushsends thegit remote get-url originvalue, enabling the app to link to the source repo, files, commits, and PRs
What's Changed
- Made
get_git_remote_url()public for use by the push handler repoUrlis optional — omitted gracefully if no git remote is configured
Full Changelog: v0.1.18...v0.1.19