Skip to content

Index 2.11.0

Choose a tag to compare

@HarperZ9 HarperZ9 released this 07 Sep 10:46
· 43 commits to main since this release
79f5f65

Index 2.11.0

Index 2.11.0 hardens large-workspace inventory and interactive agent surfaces. Complete workspace maps now have a resumable JSONL checkpoint path, and interactive router, graph, context, and context-envelope calls return typed UNVERIFIABLE results when repository discovery exceeds their configured budget.

What changed

  • Fixed fresh-process interactive MCP cache identity so warm calls can return before repository discovery instead of recursively walking the workspace during cache lookup.
  • Added --budget-ms to index router, index graph, index context, and index context-envelope; matching interactive MCP tools accept budget_ms.
  • Added index map --resume-state PATH and MCP index.map resume_state for resumable complete repository inventory builds.
  • Made map resume reuse freshness-aware across Git/control-file identity, dirty/untracked state, markers, and row-affecting config.
  • Added explicit metadata uncertainty fields: row-level metadata_status, optional metadata_error, and top-level metadata_status, metadata_ok_count, metadata_unknown_count, and dirty_count_status.
  • Changed index.map MCP behavior so complete inventory calls do not use the interactive TTL text cache and do not advertise an unsupported budget_ms parameter.
  • Prevented broken nested Git markers from inheriting parent repository metadata; failed Git metadata now reports unknown instead of false cleanliness.

Published artifacts

These GitHub release assets are the PyPI-published bytes downloaded back from PyPI during verification, not the earlier local release-candidate build bytes. The local candidate and CI/PyPI builds are content-equivalent against the accepted source, but the archive bytes differ, so the hashes below are authoritative for public downloads.

70c41ff3920a79755465cd0d920acd73d665052f065fa06fc3a61e6bf776ad86  index_graph-2.11.0-py3-none-any.whl
231c9f630c140dcfce5a8ef314f8258faed6399aec5f3e2658f158c64176cef2  index_graph-2.11.0.tar.gz

Accepted local candidate hashes for traceability only:

a003be9115e93e5343f4e651b277aff87ef19e6740a70989aa87c6c8496fb390  index_graph-2.11.0-py3-none-any.whl
1335acd2df103849f30c9f2f45b13601dfa8809c3886e230fc86ff4f5fda7283  index_graph-2.11.0.tar.gz

Provenance and checks

  • Tag v2.11.0 peels to merge commit 79f5f65dd516c27618fe80bf45080a9bd1cf8526.
  • Accepted source commit 01b2b28ebd443f81898b57dc2ee3f392408f3f92 has an empty tree diff against the merge commit.
  • PyPI JSON digests match the downloaded wheel and sdist bytes.
  • Wheel provenance check compared 109 packaged Python files against the tag tree with zero mismatches.
  • Sdist provenance check compared 312 tracked files against the tag tree with zero mismatches.
  • twine check with twine 7 passed for both downloaded distributions.
  • GitHub Actions run 34112180947 completed successfully, including the package build and PyPI publish jobs.

Large-workspace acceptance measurement

A final frozen-source private workspace measurement was run at version 2.11.0, commit 01b2b28. The measurement is aggregate-only here; raw path lists were not uploaded.

Surface Time Repositories Diagnostic fixture repos Metadata ok Metadata unknown Dirty count status Path reconciliation
CLI fresh map 16.609s 617 84 515 102 known_only exact
CLI resumed map 11.817s 617 84 515 102 known_only exact
MCP fresh index.map 12.210s 617 84 515 102 known_only exact
MCP resumed index.map 10.078s 617 84 515 102 known_only exact

The metadata status is partial because broken or synthetic Git fixtures fail closed as unknown. dirty_count is therefore a known-only aggregate, not a complete workspace cleanliness assertion.

Boundary

This release fixes complete map reliability and bounds interactive discovery failure modes. It does not claim that a cold full router build over every large workspace finishes inside every host timeout; the supported complete-inventory path is index map --resume-state PATH or MCP index.map with resume_state.