Releases: pinoox/neuromesh
Release list
v0.7.15
Adaptive context routing: learning now drives emission with full observability and benchmark harness.
- Emission pipeline.
EmissionPipelinetracksemitted/drop_stageper file through filters, penalized suppression, learning rerank, fill cap, and packet cap.rank_candidatesrefreshed after materialization. - Unified score.
compute_unified_file_scoremerges utility, semantic, graph, learned (focus-aware + decay), pheromone, and penalty intoContextScoreBreakdown. - Explainability.
RankCandidateViewaddsemitted,drop_stage,score_breakdownforexplain_packetdiagnostics. - Configurable thresholds.
penalized_suppression_threshold,learning_relevance_cap_unrelated,learning_decay_half_life_days,max_learned_influence. - Learning eval.
neuromesh eval --learningdose-response sweep;learning_evalmodule with MRR, NDCG@K, Learning Gain, Emission Gain. - CI tests.
LearningToEmissionCausalTest(T5 + Kosha), determinism (4-run identical), catastrophic learning on unrelated queries, generalization, persistence reload. - Fixture.
tests/fixtures/learning-causal/for reinforcement benchmarks.
Complete the learning→emission loop and close v4 mini decoy gaps from benchmark reports.
- Emission.
promote_high_learning_into_emittedswaps high-bonus learned files into the emitted optional set (displaces low-utility slots). Heavily reinforced files bypass per-crate caps (learning_bonus ≥ 28). - Feedback semantics.
access_countincrements only on successful reinforcement;node_learning_bonusapplies a demerit whenbase_relevance < 1.0. Penalized files showpenalized:reasons inselection.candidates. - Seed demotion.
file_min_base_relevancedemotes seeds when any symbol on the path is penalized (not only the file node). - v4/mini decoy.
is_alt_surface_pathpenalizesmini/lite/slim/lightpaths in activation scoring and decoy filters; mini-schema gold tasks forbidv4/mini/schemas.ts. - Tests. Negative-feedback bonus regression, routes.py emission after saturation, alt-surface scoring.
What's Changed
- Enhance learning emission loop, adaptive routing, and mobile docs by @yoosefap in #25
- Sync README and landing page stats with v0.7.15 release by @yoosefap in #26
Full Changelog: v0.7.11...v0.7.15
v0.7.11
Learning weights now change get_context packet selection, not just persisted graph state.
- Learning → routing.
file_learning_boostaggregates symbol + file reinforcement; learned files enter optional fill via focus-term match or high-bonus saturation; penalized seed files (base_relevance < 0.55) leave the required set. - Activation scoring.
ActivationScoreradds alearning_liftfromaccess_count/base_relevancesoinactive_hintsand fallback scores reflect feedback. - Explain diagnostics.
neuromesh_explain_packet→selection.candidateslists{path, score, learning_bonus, reason, selected}for before/after feedback comparison. - Tests. Selector acceptance tests for promote (PromoCodeInput), demote (App.vue), and kosha-style saturation (+50 on
routes.py/schema.py). - Docs & landing. MCP client lists now include OpenCode, MiMo CLI, and Gemini CLI in README, mcp.md, agent-guide.md, and the GitHub Pages site. OpenCode and MiMo CLI setup sections added to the agent guide.
- Perf.
file_learning_boost_indexbuilds learning scores in one graph pass; fixes gold harness latency regression on Linux CI (>200ms) from per-candidate full-graph scans.
v0.7.10
Honest bounded coverage, physarum sidecar cap, and clearer learning feedback fields.
- Coverage
bounded.no_recorded_gaponly when seeds resolve, gaps are empty, no sidecar connector files, and the packet was not budget-truncated. Tasks with physarum/utility fill now reportboundedinstead of false-complete. - Sidecar files. Optional connector fill (
physarum_tube,utility:*) is capped at 3 files and markedsidecar: truein packet output;coverage.sidecar_fileslists them. - Learning feedback clarity.
record_feedbackreturnsepisode_saved_this_call,learning_episodes_in_store, andpersisted_to: graph.bin.episodes_recordedkept for compatibility (per-call 0/1).
v0.7.9
durable learning, parser relink, and Vue trace on stale snapshots.
- Learning persistence (real).
record_feedbacksavesgraph.binviaworkspace_root(not MCPcwd). Episode IDs are checkpointed in the snapshot (applied_learning_episodes). Replay on startup applies only episodes missing from the checkpoint, then persists. MCP flushes graph state on graceful stdio shutdown. - Parser epoch relink.
GRAPH_PARSER_EPOCH(3) in snapshots; loading an older epoch clearsfile_hashesso the next index re-parses all files (Vue CALL edges on upgraded installs without manual--force). - Windows routing fix.
tighten_focused_view_selectionnormalizes\paths socart.jsis kept on checkout stepper tasks (goldcheckout_qty_stepper). - Benchmark fixture.
ProductGrid.vue@viewbinding corrected toui.openProduct(action lives inui.js).
v0.7.8
RETEST v0.7.7 follow-up: cross-session learning, Vue trace edges, and honest fuzzy trace.
- Learning persistence.
graph.binsnapshot digest now includesaccess_count,base_relevance, and edge pheromone weights sosave_persistedafterrecord_feedbackis not skipped as “structurally unchanged”. Episodes replay on MCP startup when graph nodes are still cold (warmup_project_learning). - Vue trace / dead-code. Pinia
actionsmethods becomeFunctionsymbols; template@click/@viewand<script setup>store calls emitCallsedges; store file hints are extension-agnostic (stores/uiresolvesui.js).traceinbound callers work forgoCheckoutand similar. - Trace honesty.
TraceResult.origin_reliableandmatch_reason: "fuzzy"when the seed is not an exact/prefix hit — agents must not treat fuzzy origins as dead-code proof. - Pinia alias resolve. Store alias
uimaps touseUiStore::actionduring call linking.
v0.7.7
Benchmark-driven routing, honest coverage, and a falsifiable learning loop (Vue shop fixture).
- Shop gold fixture.
tests/fixtures/mini-shop/(Vue 3 + Pinia + SCSS) with gold tasks for price-card SCSS (T6), dead-codegoCart(T7), and checkoutsetQty(T5). Runs ingold_harness_on_fixture_repos. - Style routing. Unified SCSS file hints (
tokens.scss/mixins.scsswith and without_),_priceCard.scssseeds, StyleToken search seeds, and cart/promo noise filtering so style tasks do not ship cart components. - View seeds.
related_conceptsbecome seeds; checkout/stepper prompts injectCheckoutViewwithoutcheckout⊃cartfalse positives; focused checkout tasks tighten optional fill. - Coverage honesty.
CoverageReportaddscovered,skipped,semantic_coverage, andpacket_gaps(with optionalline).no_recorded_gaponly when seeds and packet gaps are both empty. - Structural proof.
structural_evidenceincludesexact_line,who_reads,callers_count, andis_dead; bug-hunt tasks can emitbug_linegaps (e.g. duplicate discount intotal()). - Vue template → store.
@click/@submithandlers (ui.goCart()) emitCallsedges to Pinia actions for dead-code and caller tracing. - Learning loop.
record_feedbackresolves human names, persistsbase_relevancetograph.bin, saves episodes, reinforces callee edges, and recalls successful episodes on the nextget_context.neuromesh_get_node_weightsexposes deltas for verification. - New MCP tools.
neuromesh_expand_gap(cheap skeleton for gap paths) andneuromesh_get_node_weights(observability). - Selector / skeleton.
learning_bonusboosts file fill fromaccess_count/base_relevance; files ≤60 lines fold more aggressively. - Docs / ops. README and mcp.md warn against
mcpwithout a workspace path; mcp.md documents learning timing and new tools.
v0.7.6
Agent setup guide, HTTP route seeds, Pinx/Vue overlays, Laravel/SQL/JSON, and tighter TS seed ranking.
- Agent guide (all clients). agent-guide.md walks connect → instructions for Cursor, VS Code/Copilot, Claude, Codex, Antigravity, Kilo, Trae, MiniMax, Windsurf, Cline/Roo, and Zed, plus a universal paste block, one-shot prompt, and smoke test. Cursor template remains agent-rule.mdc; mcp.md links the tutorial.
- Route identifiers.
POST /sms,/api/v1/sms, andhttps://example.com/sms(path only) are identifiers — never file hints — so/smscannot steal every SMS fixture viaresolve_file_hint. GitHub-style/org/repoURLs stay out. - Api path aliases. An
Apinode namedPOST /smsis also indexed as/smsfor exact search; the last segment (sms) is not aliased. - Route→handler edges. Laravel
Route::post('/sms', [SmsController::class, 'store']), Axum.route(..., post(store)), FastAPI@app.post→def, and Express named handlers emitCallsfromPOST /smsto the handler. Gold:mini-laravel/mini-expressroute-only prompts. - Pinx
get()/post()routes.get('/')->action([MainController::class, 'index'])->name('home')is anApinode, not only the olderaction([Class, method])form.collection('/api'),action('home', [Class, method]),render()/view(),app.phppackage/theme/pinx, andvite()entry hints are overlayed too. - Single-app vs multi-app. Root
app.php+bin/pinxis Pinx single-app;apps/com_*with nestedapp.phpis multi-app. Themepackage.jsonundertheme/is scanned for Vue, PrimeVue, PrimeUIX, Pinia, and React. - Vue kebab-case and React
FC.<data-table>becomesDataTable;const StatCard: FC = () =>is aComponent. Gold:mini-pinooxdashboard/StatCard,mini-pinoox-platformshop vs blog. - Laravel is a real stack, not only
Route::get. EloquentModel/$table/belongsTobecomeDbModelnodes;Schema::create, seeders, factories,Route::resource/match, and Blade@includeoverlay too. Gold:mini-laravelstore/route/migration/seeder/SQL/JSON. - SQL and JSON are parsed.
CREATE TABLE/ views / routines areDbModelsymbols;config/*.jsonandpackage.jsonscripts areConfig(dependency maps are skipped). Lockfiles stay out of the walk. - JS/TS modules and stylesheets.
require()/import()/ CSS+JSON side-effect imports; nested SCSS@include/@function/@keyframes; comma-nested classes in CSS/SCSS/Less. Gold:mini-storetheme+CJS,mini-stylesSCSS+CSS. - Tighter name matches beat decorated twins.
safeParseoutranksparseSimpleObject/parseNestedObjectfor the identifierparse; substring score now scales with how much of the symbol name is the identifier. - Bench, locale, and legacy paths are decoys.
bench/,locales//i18n/, andv3//compat//legacy/are penalized like tests unless the prompt is about them.to-json-schemaloses tocore/parseon parse/validate questions. - Type aliases seed.
z.inferextractsinferand stems tooutput/input, so generic questions hitexport type output<T>incore.tsinstead of a runtime schema helper. - Natural phrasing still seeds.
parse()andz.objectare identifiers;parsingstems toparse, so "how does parsing work" is not an empty packet.
CI gold harness: migration vs SQL decoys, and a slightly looser debug latency gate.
- Schema decoys are prompt-kinded. A "migration" question no longer seeds
database/sql/*.sql; a.sql/CREATE TABLEprompt no longer seedsmigrations/. Seeder and factory twins follow the same split. - Migration short name.
2024_…_create_sms_messages_tablealso registerscreate_sms_messages_tableso that identifier seeds the PHP file. - Debug gold latency. Non-Windows gold harness allows < 200 ms (was 150) so Linux CI debug builds do not flake at ~157 ms.
v0.7.4
Compound-task quality, Pinoox View→Twig, and complete MCP usage telemetry.
- Cluster seeds pick the router guard, not a UI helper. A "router permission guard" clause still splits, but the noun
permissionnow preferssrc/permission.js/ store permission modules overdirective/permission. Clipboard and profile decoys are forbidden in gold. - Pinoox View→Twig is a walkable
Callsedge.View::render('hello')attaches to the rendering method, bindstheme/{theme}/hello.twigby file path before the stemhellocan steal another symbol, andget_context/traceonMainController::indexship the template without the prompt sayingtwig. - MCP usage is complete. Handshake writes one
mcp_sessionrow; trace, deps, stats, explain, architecture, impact, and feedback append too. Mean reduction ignores 0-token rows so search/session do not drag the %. MonitorGET /api/usagereports the token-weighted overall %, and telemetry POST works without a Tokio handle. - Explicit MCP workspace stays put.
neuromesh mcp <dir>and initializerootUrino longer walk up to a parent git/Cargo.tomlroot, so a fixture likemini-authis not mixed with the rest of the repo. Type::methodseeds resolve, templates beat namesake helpers.MainController::indexbinds the method (not a missed seed), andhello.twigoutranksGreeter.hello()so the decoy stays out of the packet.
v0.7.3
Workspace confinement, first-query readiness, and compact MCP packets.
- Workspace confinement.
get_file_skeletonandread_sourcerefuse absolute paths,../traversal, and symlink escape.neuromesh index/ start / monitor / eval / connect refuse home and filesystem roots in under 100ms. CLIProcessed Tokensis the current run;Workspace Tokensis the graph total. - Index readiness. Cold MCP
get_contextwaits for the first index (or returnsindexing_in_progress) instead of an emptyno_seed_resolvedpacket.neuromesh_get_statsincludesindex_state,generation, andready. - Coverage honesty. Imperative verbs (
Modify,Refactor, …) are not seeds. Equivalent file-path forms count as a hit. Unknownmodeis a tool error..envis skipped;.env.exampleand siblings are indexed. - Pinoox View→Twig.
View::render('hello')linkstheme/{theme}/hello.twigwith aCallsedge so the template ships with the controller. - No fold bodies on the wire.
get_file_skeletonandget_contextreturnFoldDescriptor(id, symbol, signature, lines, saved tokens).original_bodystays in the session registry and returns only fromneuromesh_expand_fold. - Minimal
get_contextby default. Response ispacket_id,coverage(no_recorded_gap|partial|no_seed_resolved),tokens, skeletonizedfiles,missing/nextonly when coverage is incomplete.modestill picks files;response_detail(minimal|standard|diagnostic) picks metadata. neuromesh_explain_packet. Fetch seeds, selection, budget, physarum, and membrane for apacket_idfrom a 32-slot / 10-minute LRU (no source bodies). Unknown or expired ids are a tool error.- Compact MCP wire. Tool
content[].textis minified JSON of the same object asstructuredContent(not pretty-printed). HTTP/api/simulatestill requestsdiagnosticso the VS Code inspector is unchanged.
v0.7.1
Compound-task coverage is honest: each topical cluster seeds independently, and a named half that misses is partial — never a silent no_recorded_gap.
- Cluster seeds.
including/and how/as well assplit the prompt. A clause with no camelCase identifier (e.g. "router permission guard") still tries those nouns against the graph, sosrc/permission.jsships with the login module instead of being omitted whilecoverage.claimsays complete. - False-complete coverage. If that second cluster resolves nothing,
seeds_missedis non-empty andclaimispartial(Grep innext_actions).unresolvedstays graph call/import gaps — it is not a list of missing task nouns. - Usage from IDE chat.
neuromesh_expand_foldnow appends a telemetry row (it previously only recorded the inactive-node path). Handshake / chatting without a tool call still does not. Rows use unique request ids so two calls in the same millisecond are not dropped.