Skip to content

Unspaghettit

v0.10.1 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Fixed invariant condition validation bug that caused entire features to disappear on load.

Changes in this release

Bugfix Medium

Prevents condition-less invariant from causing entire feature loss on load.

Prevents condition-less invariant from causing entire feature loss on load.

Source: llm_adapter@2026-07-15

Confidence: low

Bugfix Medium

Validator rejects invariants without a condition during write.

Validator rejects invariants without a condition during write.

Source: granite4.1:30b@2026-07-15-audit

Confidence: low

Bugfix Medium

Normalizer tolerates missing or malformed invariant conditions on load.

Normalizer tolerates missing or malformed invariant conditions on load.

Source: granite4.1:30b@2026-07-15-audit

Confidence: low

Bugfix Low

Collapses duplicate navigation entries in digest's "Where you can go" section.

Collapses duplicate navigation entries in digest's "Where you can go" section.

Source: llm_adapter@2026-07-15

Confidence: high

Bugfix Low

Loader warns to stderr when skipping an unreadable snapshot.

Loader warns to stderr when skipping an unreadable snapshot.

Source: granite4.1:30b@2026-07-15-audit

Confidence: low

Full changelog

Two engine fixes found by dogfooding through the MCP. No breaking changes.

Fixed

  • A condition-less invariant can no longer make a whole feature vanish. apply_batch's invariant ops accepted an invariant with a description but no condition and wrote it to disk (the standalone tools already required one). On the next cold load the expression normalizer threw and the loader silently dropped the ENTIRE feature: get_feature returned "not found" and it disappeared from list_features with no error, unrecoverable by restart. Closed three ways: the validator rejects a condition-less invariant at write time (so the batch path fails fast), the normalizer tolerates a missing or malformed condition instead of crashing (so an already-poisoned snapshot loads and becomes fixable), and the loader warns to stderr when it skips an unreadable snapshot instead of dropping a file in silence.
  • The digest's "Where you can go" no longer duplicates or mislabels navigation. A surface reachable more than one way rendered one bullet per route, and edges whose target did not resolve to a surface rendered as a bare "... to another surface". get_digest's navigation section now collapses every route from a surface to a given destination into one named entry, and drops any edge whose target is not a surface in the feature.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Unspaghettit

Get notified when new releases ship.

Sign up free

About Unspaghettit

All releases →

Related context

Beta — feedback welcome: [email protected]