Skip to content

1.8.1

Choose a tag to compare

@coryhacking coryhacking released this 24 Jun 05:17

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_VERSION is 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_index setting was removed; index updates come from the post-edit hook, the MCP server, and wave_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") against application.{yml,properties} keys (.properties/.yml/.yaml now 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 TypeInstrumentation classes carry an instruments property naming the types their typeMatcher() weaves into — including namedOneOf lists and matchers nested in implementsInterface/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 bundled certifi — the fetch retries against the OS trust store (honoring a preset SSL_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_score propagates edge confidence along the whole path and reports transitive_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_health now reports incomplete with the code layer in missing_layers and a remediation diagnostic, instead of ready.
  • 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_seconds settings. The dashboard no longer runs index builds, so these settings were removed; index updates are background/MCP-owned.