Skip to content

v0.5.0 — architect audit fixes

Latest

Choose a tag to compare

@punitmishra punitmishra released this 05 Jul 12:07
· 4 commits to main since this release
b5761d2

Fourth tagged release. Ships the second adversarial audit pass — this one at the architecture level (v0.4 was line-level bugs; v0.5 is API design, data model, config precedence, error philosophy, release hygiene, tests strategy, DX).

Audit summary

  • 175 review + verify agents across 10 architecture lenses (API, data-model, concurrency, config, error-handling, performance, security/privacy, docs/release, test strategy, DX).
  • 55 raw findings → 34 confirmed after 3-skeptic adversarial verification (≥2 of 3 refute to drop).
  • 18 fix-now landed in #32 (docs/release/DX) and #33 (correctness).
  • 12 file-issue filed as #34–#45.
  • 4 accept-and-document now explicit invariants in ARCHITECTURE.md.

Landed behavior changes

  • __version__ is now dynamic via importlib.metadata — pyproject.toml is the single source of truth.
  • Entry-point loader failures observable via warnings.warn (was: silent swallow).
  • Full env-var reference table in README + ARCHITECTURE.
  • resolve() prints a stderr warning when the Qdrant URL isn't a loopback host — local-first boundary now explicit.
  • CI MCP smoke test uses a name-set assertion (was: magic count of 7).
  • urgency.score() docstring/comment lie about clamping — fixed; new test pins the loosened contract.
  • Record.from_dict warns (deduped) on unknown fields — forward-compat visible.
  • Store.upsert tmp filenames PID+uuid-tagged — matches other write paths.
  • Consistent Path.expanduser() at the Store.__init__ choke point.
  • Store.load_graph() shared defensive-read helper (CLI + MCP).
  • Test pins the MCP ConfigError-per-tool invariant.

Test suite

133 pass, 0 failures, 1 opt-in Qdrant skip. ruff check clean. The pre-existing failing test that dogged v0.4 is finally fixed (finding #25 — split into keyword+embedding backend-forced tests).