1.8.1
Install
Drop the attached .zip at your repo root without extracting it — the agent unpacks it as the first step. Then type this shortcut phrase as a chat message to your AI agent (Claude Code, Cursor, Codex, Junie, GitHub Copilot, Windsurf, Air, or Warp):
Install Wavefoundry
That is the only operator-typed command — the agent runs the rest of the install. Prerequisites: Python 3.11+, an MCP-aware agent host. Full walkthrough and host-specific notes in the README.
Upgrade
Already running Wavefoundry? Drop the attached .zip at your repo root without extracting it and type this shortcut phrase to your agent:
Upgrade Wavefoundry
The agent unpacks the zip, advances the framework, runs any required migrations and index rebuilds, and reloads the MCP server. Review the version notes below for anything that re-indexes or changes behavior on this upgrade.
Upgrading runs a one-time graph re-extract. This release bumps the graph builder version (the call graph's edge/node shape changed), so the graph is re-extracted once after upgrade — graph-only and fast (~10–30 s), not a semantic re-embed (
CHUNKER_VERSIONis unchanged, so there is no re-chunk/re-embed). The upgrade's final index phase now does this automatically alongside the semantic update — version-aware, the same way it handles a chunker bump — so no manual step is required. (If the graph step is skipped, the first graph query still rebuilds it in-process as a safety net.)Two behavior changes to know: CPU index builds now use a smaller default embedding batch (much lower peak memory — see below), and the local dashboard is now a read-only viewer that no longer runs index builds (the
auto_indexsetting was removed; index updates come from the post-edit hook, the MCP server, andwave_index_build).
Added
- Config-key → reader edges. A code site that reads a config key by literal name now links to that key in the graph — Python
.get("KEY")/cfg["KEY"]against JSON config, and Java/Spring@Value("${key}")/getProperty("key")againstapplication.{yml,properties}keys (.properties/.yml/.yamlnow contribute config-key nodes). Bounded to real config surfaces and unique, distinctive keys so ordinary dictionary access does not create false links. - Instrumentation targets on advice classes. OpenTelemetry
TypeInstrumentationclasses carry aninstrumentsproperty naming the types theirtypeMatcher()weaves into — includingnamedOneOflists and matchers nested inimplementsInterface/hasSuperType— so "what does this advice instrument" is answerable from the graph without hand-searching. Method/argument matchers are excluded. - Model downloads fall back to the OS trust store. When a model download fails TLS verification (
CERTIFICATE_VERIFY_FAILED) — common behind a corporate proxy whose root CA is in the OS trust store but not the bundledcertifi— the fetch retries against the OS trust store (honoring a presetSSL_CERT_FILE/REQUESTS_CA_BUNDLE). Verification stays on throughout; only the trusted CA bundle changes.
Changed
- Cross-language call-confidence promotion. A call that resolves to a unique definition by construction (same-file, or an exact cross-file match) is now recorded at full confidence instead of the heuristic tier, across all languages — sharpening blast-radius and change-risk ranking. Only the confidence label changes; no edge target is altered.
- Transitive blast-radius confidence.
code_risk_scorepropagates edge confidence along the whole path and reportstransitive_extracted_fraction, so a blast radius reached only through low-trust edges is discounted rather than over-counted. - Much lower memory for CPU index builds. The embedding forward batch is now per-model and defaults to 32 (down from 256), cutting peak RSS of the CPU embedding pass ~3.5–3.8× at equal-or-better throughput (measured on an M2 Max CPU path). Tune per model via
indexing.code_embed_batch_size/docs_embed_batch_size. The GPU/CoreML path is unaffected. On a constrained low-RAM CPU/WSL2 host this is projected to bring the build well under the memory cap and clear the out-of-memory failure — field-confirmation on such a host is still pending. - The local dashboard is a read-only viewer. It no longer triggers index builds; index freshness is owned by the post-edit hook, the MCP server's background refresh, and
wave_index_build. The dashboard's build-status panel now reflects those builds.
Fixed
- Index health no longer hides a missing code layer. When code sources are in scope but the code index is absent (e.g. an interrupted or OOM-killed code embedding pass),
wave_index_healthnow reportsincompletewith the code layer inmissing_layersand a remediation diagnostic, instead ofready. - Out-of-memory index builds fail loudly. A code embedding pass killed by the OS OOM-killer now surfaces a clear out-of-memory error with remediation (lower the embedding batch, raise host/WSL2 memory) instead of appearing to succeed.
Removed
- Dashboard
auto_index/auto_index_delay_secondssettings. The dashboard no longer runs index builds, so these settings were removed; index updates are background/MCP-owned.