Releases: mikeparcewski/wicked-estate
v0.7.0
Minor release.
What's new
stale-annotationsCLI — surfacesannotations_stale_since, so agents can see which graph annotations have gone stale.- Fractional-confidence conformance assertion — pins the confidence-precision contract across backends (SQLite stores
f64, Postgresf32); the GraphStore conformance kit now asserts fractional confidence round-trips correctly.
v0.5.1 — idempotent annotation upsert
Patch: idempotent upsert for cache-class / system-derived annotations.
annotate --replace— upsert by(type, key)for a symbol (delete-then-write). Append-only stays the default for advisory/note/comment/question;--replaceis opt-in for re-projectable cache tags so a re-project doesn't duplicate rows.clusters --annotateis now idempotent — re-running replaces each symbol'scommunityannotation instead of duplicating it.
Unblocks consumers that project a re-buildable cache as annotations. Gate green: build 0 warnings, 44 test suites, clippy -D warnings, fmt.
🤖 Generated with Claude Code
v0.5.0 — typed annotations
Typed name/value annotations on graph entities — assumptions, questions, notes, observations, comments, and custom types — with the semantics services need to treat them differently.
Typed annotations
- One
typefield on each annotation (no enum): fixed typesnote/observation/comment(informational),assumption/question(advisory),community(system-derived), plus arbitrary custom types stored + queried identically. advisoryis computed from the type —assumption/questionsurface asadvisory: trueso an agent never reads them as fact (R7). Confidence keeps its own meaning.- Stored on the existing annotations table (one additive column); idempotent migration; pre-0.5 untyped annotations read back as
note. Multiple per entity, stableSymbolIdkeying.
Surfaces
- CLI:
annotate --type <t> --key K --value V;annotations <name> [--type <t>] --json;annotations+annotation_summary {count, by_type, has_advisory}innodes --jsonandsource --json. clusters --annotatewrites each symbol's community as a system-authoredcommunityannotation (opt-in; no mutation without the flag).- MCP:
RetrieveEntityreturnsannotations+annotation_summary+ per-itemadvisory, capped at 20/entity (advisory-class first;countis the true total).
The known types are service conventions, never a storage match — a new framework or custom type is data, not a core change.
Gates
cargo build --workspace (0 warnings) · cargo test --workspace (44 suites, 0 failures, GraphStore conformance covers typed annotations on both stores) · cargo clippy --workspace --all-targets -- -D warnings · cargo fmt --all --check — all green at the tag.
Consumer contract: docs/recon/annotation-consumer-spec.md.
🤖 Generated with Claude Code
v0.4.0 — community detection v2, framework edges, agent data-availability
First release since v0.2.0. Three themes: better community structure, richer edges, and payloads shaped for how LLM agents and pipelines actually consume the graph.
Community detection v2
- Multi-level Louvain replaces connected-components — a connected-but-clustered codebase no longer collapses into one mega-community. Dogfood (this repo, 3851 nodes): 127 communities, modularity 0.805, largest = 9.2% of symbols (union-find was ~100%).
- Resolution (
--resolution <γ>), hierarchical refinement (--hierarchical), and package-aware bias (--package-bias) — all onwicked-estate clusters. - Semantic clustering (
clusters --weight semantic) — k-means + DBSCAN over embeddings, grouping code by what it does (needs--embeddings+ thefastembedfeature for quality).
Framework-relationship edges (Java/Spring)
- Dependency injection (
@Autowired/@Inject/@Resource, field + constructor) →di-wired; route handlers (@GetMapping/etc.) →route-handler; event pub/sub (@EventListener/@KafkaListener/publishEvent) →event-emits/event-listens. Emitted via generic, data-driven capture roles (no per-language Rust).
Agent / pipeline data-availability
source --jsonbulk bundle — full bodies for an entire--cluster/--file/--symbolsselection in one call; unbounded by default (caller owns its context budget),--max-total-chars/--signatures-onlyto constrain, with a loud-truncation escape hatch (body dropped →source: nullbutsymbol_id/byte_range/blob_shakept; never a dropped node).- Denormalized MCP payloads —
TraverseGraph/BlastRadiusedges carry resolved{name, kind, file, line_1based}+ confidence/provenance inline (no N+1 round-trips); opt-in bounded source slices onSearchEntity/RetrieveEntity; 1-based line fields +end_line; per-fileblob_sha; blast-radiussummary. ContextBundleMCP tool — seed + ranked neighbors + budget-packed stubs in one call.clusters --summary --json(per-community label candidates, dominant files, modularity) andsymbol_idonnodes --jsonfor precise keying.
Gates
cargo build --workspace (0 warnings) · cargo test --workspace (43 suites, 0 failures) · cargo clippy --workspace --all-targets -- -D warnings · cargo fmt --all --check — all green at this tag.
🤖 Generated with Claude Code
v0.1.7 — Marketing site + GitHub Pages
What's new
Marketing site (we.wickedagile.com)
- Full React + Vite + Tailwind site with the wicked brand system (dark/light toggle, Archivo/Hanken Grotesk/JetBrains Mono fonts, yellow accent)
- Snap-scroll sections: Hero, Use Cases, Pipeline, Graph Model, Agent Contract (9 rules), Languages, MCP Connect, Get Started, Featured Tools, Footer
- Pipeline section redesigned as a compact horizontal 4-stage layout (Source → Extract → Resolve → Store)
- StepPlayer terminal animation cycling through install / index / query / connect
- 44-node floating language cloud with pop + float animations
- Featured Tools section linking to wicked-garden and wicked-interactive with live screenshots
- Footer with full wicked-* tool directory and live site URLs
Infrastructure
- GitHub Actions workflow for automatic Pages deploy on every push to
maintouchingsite/**
Engine
- Force reindex, annotation queries,
--explainflag, export (v0.1.4–v0.1.7) - Version-mismatch warning at index time
- Fingerprint
--contentCWD-relative path fix; COBOL paragraph span fix