Skip to content

chore: porter les correctifs velesdb-memory sur main avant de taguer 0.11.2#1615

Merged
cyberlife-coder merged 12 commits into
mainfrom
develop
Jul 27, 2026
Merged

chore: porter les correctifs velesdb-memory sur main avant de taguer 0.11.2#1615
cyberlife-coder merged 12 commits into
mainfrom
develop

Conversation

@cyberlife-coder

Copy link
Copy Markdown
Owner

Prépare le tag velesdb-memory-v0.11.2, qui ne peut pas être posé en l'état.

Pourquoi cette PR est nécessaire

main porte déjà velesdb-memory en 0.11.2, mais avec le seul #1608. Trois correctifs réels sont restés sur develop :

PR apport
#1610 --features extract compile enfin seule ; stable_id_bytes gaté sur son consommateur réel
#1611 les schémas de sortie MCP ne publient plus d'items non typés
#1612 élagage des $defs inatteignables — le schéma repasse sous sa taille d'origine

Taguer v0.11.2 depuis main publierait donc une version amputée de trois correctifs que le CHANGELOG 4.1.0 annonce déjà en chapeau.

Comme 0.11.2 n'a jamais été publiéecrates.io est en 0.11.1 — son contenu n'est pas figé : aucun consommateur ne verrait un numéro changer de sens.

Aussi dans ce lot

Le désuivi de .velesdb-hooks.json et de .agents/, deux artefacts locaux qu'un git add -A avait embarqués dans le commit de release 4.1.0.

Ensuite, et pas avant

Attendre que la CI soit verte sur le commit de merge, puis seulement taguer. Le gate REL-06 de release-memory.yml refuse un tag posé sur un commit sans CI enregistrée — c'est exactement ce qui a fait échouer le premier run de la 4.1.0.

cargo check -p velesdb-memory --no-default-features --features extract
echouait sur 'cannot find function keep_alive', puis sur DEFAULT_KEEP_ALIVE :
les deux etaient gates sur 'ollama', alors qu'extract.rs les appelle et que
extract = [dep:ureq] ne tire pas ollama. Defaut pre-existant.

Les deux passent en cfg(any(ollama, extract)) plutot que d'ajouter ollama aux
dependances d'extract : un utilisateur qui ne veut que l'extraction n'a pas a
embarquer l'embedder.

La CI ne pouvait pas l'attraper. Son check --no-default-features porte sur le
WORKSPACE, donc les features s'unifient entre crates et une feature qui ne
compile que grace a une voisine passe quand meme. Chaque feature optionnelle
de velesdb-memory est desormais verifiee isolement.

Matrice verifiee en local : aucune, extract, ollama, ollama+extract, context,
persistence, context+persistence.
Le correctif precedent n'avait traite que l'entree. wire_safe_output_schema
n'appliquait que widen_id_properties, et cinq outils ne declaraient aucun
output_schema du tout : rmcp en derivait un, qui conservait des $ref qu'un
client aveugle aux $defs ne peut pas resoudre.

Ce n'est pas cosmetique. Les SDK MCP officiels valident structuredContent
contre le schema annonce : un $ref irresolvable est un resultat que le client
peut rejeter, ce qui est plus dur que le cas de l'entree ou le serveur avait
au moins pu repondre.

L'inliner recursif est applique cote sortie, et recall, recall_fused,
recall_where, why et list_working_contexts declarent desormais leur schema
explicitement.

Rouge prouve : 11 items non types sur 18 schemas de sortie avant, 0 apres.
Le test generique couvre TOUS les outils, donc le prochain a rendre un
tableau d'objets est couvert par construction.
Le nouveau gate par-feature l'a immediatement attrape : avec RUSTFLAGS=-Dwarnings
comme en CI, --features ollama, extract ou persistence echouaient sur
'function stable_id_bytes is never used'.

La fonction est pub, mais le module id est pub(crate) : hors du crate elle
n'est joignable par personne, et son seul appelant est context/media.rs, qui
adresse par contenu des octets bruts. Sans la feature context, elle est donc
reellement morte.

Gatee sur cfg(feature = context), ses deux tests aussi, plutot qu'un
allow(dead_code) qui aurait masque le fait au lieu de le dire.

Matrice verifiee sous -Dwarnings : aucune, ollama, extract, context,
persistence, context+persistence, ollama+extract.
Il affirmait « Scope is deliberately the INPUT schemas [...] Output schemas
keep their $ref-only items — a separate concern ». Le commit precedent de
cette meme branche traite les schemas de sortie : le commentaire etait devenu
faux, et un commentaire faux egare plus surement qu'une absence de commentaire.
…piles-alone

fix(memory): --features extract compile désormais seule
…typed

fix(memory): typer aussi les schémas de SORTIE des outils MCP
Mesure avant d'agir, sur les 18 outils reellement publies :

  avant inlining (0.11.1)        108 162 octets
  apres inlining, sans elagage   148 310 octets   (+37 %)
  apres elagage                  107 803 octets   (-359 o vs l'origine)

L'inlining copie chaque definition a tous les sites qui la referencent, ce
qui rend son entree $defs inutile : 55 % des octets publies, soit 83 Ko. Un
client aveugle aux $defs ne lit jamais ce pool, c'etait tout l'objet de
l'inlining. Le schema redevient donc plus petit qu'avant tout en etant
entierement auto-descriptif.

Seules les entrees INATTEIGNABLES partent. 35 $ref survivent legitimement
(une borne arretee par le garde de cycle, un bras d'anyOf) et leur cible est
conservee. Le calcul est un point fixe : supprimer une entree peut en
orpheliner une autre.

Nouveau test : aucun $ref publie ne pointe vers une definition elaguee. Il
resout chaque reference contre ce qui a reellement ete livre, entree ET
sortie.

Trois tests existants naviguaient via $defs["ContextFragment"]. Leur contrat
est inchange et VERIFIE au site inline (type = ["integer","string","null"]) :
ils pointent desormais sur le chemin publie. Ce n'est pas un affaiblissement,
c'est l'inverse — ils verifient le contrat la ou le client le lit.
…-schema-defs

perf(memory): élaguer les $defs que l'inlining a rendus inatteignables
…ter-4.1.0

chore(backmerge): main → develop après la release 4.1.0
Le commit de release 409c255 a ete fait avec `git add -A`, qui a ramasse
deux chemins jamais suivis auparavant :

  .velesdb-hooks.json          etat de session d'un poste : {"project":
                               "velesdb", "session": "rolling"}
  .agents/skills/core-parity-audit/**   repertoire de skills local

Les deux sont donc partis dans le tag v4.1.0 d'un depot public, au detour
d'un bump de version que personne n'a relu pour ca. Le depot prive n'a pas
de .agents/, ce qui confirme qu'il s'agit d'etat de poste et non de contenu
partage.

Retires du suivi et ajoutes au .gitignore, avec la raison ecrite pour que
le prochain `add -A` ne recommence pas. Les fichiers restent sur le disque :
seul le suivi git s'arrete.

Si .agents/ doit etre versionne, que ce soit une decision explicite, pas un
effet de bord d'un commit de release.
…ifacts

chore: retirer du suivi deux artefacts locaux embarqués par erreur
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 13 complexity

Metric Results
Complexity 13

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@cyberlife-coder
cyberlife-coder merged commit 860aac0 into main Jul 27, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant