Skip to content

perf(capture): reject bounded writes before loading embeddings - #492

Draft
cdeust wants to merge 1 commit into
mainfrom
perf/green-exact-preflight
Draft

perf(capture): reject bounded writes before loading embeddings#492
cdeust wants to merge 1 commit into
mainfrom
perf/green-exact-preflight

Conversation

@cdeust

@cdeust cdeust commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Symptôme

W3-1a / F1 : une capture répétée chargeait le modèle d’embedding avant de déterminer qu’elle ne pouvait pas franchir la porte d’écriture.

Cause racine

Le calcul sémantique coûteux précédait un rejet déjà prouvable à partir des signaux légers. Le seuil et les observations doivent rester ceux de l’évaluation complète.

Changement

Calculer une borne supérieure de nouveauté avec les signaux habituation/surprise/structure et le maximum sémantique. Rejeter seulement lorsque cette borne est strictement sous le seuil existant ; sinon poursuivre le chemin complet avec la même observation, calculée une fois. Les contenus admis, inconnus et cas limites gardent leur évaluation complète.

Preuve

Avant 6ec76a0e0f9851893c39396a5f59ddaa329abfd5, après 7a3575ea875fc0983cf8e04557dbfd67fb8b72b4. macOS ARM64, Python3.13.7, MiniLM en cache durable hors ligne, SQLite jetable ; quatre répétitions, première écartée.

Capture Read CPU médiane avant → après Wall médiane avant → après RSS max médiane avant → après
Habituée, rejetée 3,37 → 0,16 s 4,48 → 0,30 s 580222976 → 55541760 octets
Naturelle, admise 3,42 → 3,50 s 4,58 → 4,64 s 583532544 → 583729152 octets

Le témoin habitué contient vingt présentations préparées : aucun chargement de modèle, aucun encode et aucune mutation du store après rejet. La capture admise conserve les1536octets de chaque vecteur et toutes les colonnes hors created_at/heat_base_set_at/last_accessed. Aucun gain n’est revendiqué sur la capture admise, ni sur l’énergie physique.

Commande du harnais exécuté, paramètres enregistrés dans son report.json :

/Users/cdeust/Developments/anthropic-partnership/Cortex/.venv/bin/python /private/tmp/cortex-green-w3-capture-measure.py --phase a --before /private/tmp/cortex-green-final-main --after /private/tmp/cortex-green-w3-1a-final --output /private/tmp/cortex-green-w3-1a-capture-final-v2 --project /private/tmp/cortex-green-hook-fixture/project --cache-root /Users/cdeust/.cache --timeout-seconds 10 --poll-seconds 0.01 --worker-idle-seconds 300 --execute

Chaque commande enfant /usr/bin/time -l … scripts/launcher.py mcp_server.hooks.post_tool_capture, ses entrées, sorties et paramètres d’environnement sont enregistrés dans /private/tmp/cortex-green-w3-1a-capture-final-v2/report.json. La preuve de relecture des lignes est /private/tmp/cortex-green-w3-final-capture-proof.json. Charge propre à cette phase :3,515→3,836 pour10cœurs. Fenêtre shell de la série : uptime03:00, charge3,15/3,16/3,53 →03:19,3,72/3,63/3,52 ; df -h /38Gi disponibles avant/après. Cette fenêtre englobe les trois phases et les courts contrôles suivants.

Gates locaux ordonnés sur le SHA publié :

bash /private/tmp/cortex-green-local-gates.sh w3-1a-final-ordered tests_py/core tests_py/handlers tests_py/hooks

Résultat : verrou uv, Ruff/format, craftsmanship et Pyright verts ; couches5246passés/67ignorés/67sous-tests ; suite complète7715passés/221ignorés/415sous-tests en273,40s. Log /private/tmp/cortex-green-w3-1a-final-ordered-gates.log. uptime07:41, charge4,97/6,47/6,64 sur10cœurs ; df -h /39Gi avant/après. PostgreSQL est volontairement inaccessible dans cette suite locale ; ses tests ignorés ne constituent pas une validation PG.

La gate globale benchmarks/reproduce.sh reste ouverte. La référence6ec76a0e échoue déjà au floor MRR LongMemEval (0,904988 ; rappel0,978) et aux deux floors LoCoMo sur trois runs complets (moyennes0,779868/0,889506). Cette PR reste en brouillon tant que la qualité complète W3 n’est pas validée ; aucune dérogation aux floors n’est demandée.

État CI du 2026-09-07 : tous les contrôles de 7a3575ea875fc0983cf8e04557dbfd67fb8b72b4 sont réussis ou attendus ignorés. La première reproduction complète de la pile W3 sur 0b978d7 a terminé avec échec des floors existants ; les trois passes LoCoMo sont terminées, sans recul des moyennes MRR/R10 par rapport à la référence. La CI verte ne clôt pas cette gate.

Reproduction complète commune à la pile W3 — trois passes LoCoMo terminées

Le vrai pilote reproduce.sh a terminé sur 0b978d7, après tous les contrôles W3 verts. Référence : 6ec76a0. Le tableau compare les premières passes complètes, valeurs arrondies ; il ne remplace pas la moyenne LoCoMo sur trois passes.

Corpus Questions MRR avant → après Recall@10 avant → après Durée en secondes avant → après
LongMemEval 500 0,904988 → 0,904988 0,978000 → 0,978000 1676,888 → 1680,788
LoCoMo 1982 0,781201 → 0,780265 0,889001 → 0,887487 2051,173 → 2042,735
BEAM 395 0,533336 → 0,532453 0,716944 → 0,716667 744,912 → 740,546

Sortie du pilote : 1. Le floor MRR LongMemEval et les deux floors LoCoMo échouent ; ils échouaient déjà sur main. Aucun seuil n'est abaissé. Les deux répétitions LoCoMo prescrites par reproduce.sh:338–350 sont terminées sur la même tête. Moyenne MRR avant → après : 0,779867618 → 0,781210992 ; Recall@10 : 0,889505550 → 0,889505550. Aucun recul n'est observé sur ces deux moyennes LoCoMo ; cela ne démontre pas une amélioration statistique ni une garantie générale. Les seuils effectifs MRR 0,800 / Recall@10 0,910 restent manqués. BEAM n'a pas de seuil dans le pilote : ses minima ont été demandés au propriétaire, aucune réussite BEAM n'est inventée.

Commande effective du pilote, dans chaque arbre figé et l'environnement fermé consigné par le lanceur :

bash benchmarks/_green_reproduce_transport_local.sh --no-ablation

Ce fichier temporaire est le pilote original avec une insertion de transport UNIX vers son propre conteneur ; protocoles, données, modèles et floors ne sont pas réécrits. Commande exacte de lancement W3 :

python3 /private/tmp/cortex-green-run-private-quality.py /Users/cdeust/Developments/anthropic-partnership/Cortex final-w3-worker-fixed-r1

Python 3.12.11/macOS ARM64, Torch 2.13.0, sentence-transformers 5.6.1 et psycopg 3.3.5 ; mêmes versions et poids de modèles vérifiés dans les manifestes. MiniLM révision 1110a243, reranker L-12 actif. Sur 10 cœurs, charge 1 min référence 2,369→5,647 et W3 2,854→5,404. Espace libre enregistré dans les manifestes : référence 50 543 837 184 → 49 479 544 832 octets, W3 40 884 998 144 → 40 118 521 856 octets ; uptime initial et df -h / avant/après dans les logs. Un seul travail lourd local. Aucun gain d'énergie ou de latence globale n'est revendiqué.

Preuves complètes : référence /private/tmp/cortex-green-final-main/benchmarks/results/repro/20260907T015046Z/, W3 benchmarks/results/repro/20260907T071015Z/, comparaison /private/tmp/cortex-green-final-w3-quality-comparison.json. Les trois résultats, MANIFEST et preuve de transport sont présents. Le conteneur 92770dee et son ancien socket ont été vérifiés absents après nettoyage : /private/tmp/cortex-green-final-w3-r1-cleanup-proof.json. Les deux répétitions supplémentaires sont terminées, avec nettoyage vérifié. La gate globale reste ouverte et cette PR reste en brouillon.

Répétitions LoCoMo W3 — 1 982 questions chacune

Passe MRR Recall@10 Secondes Dossier de résultats
1 0,780265244 0,887487386 2042,735 20260907T071015Z
2 0,782550294 0,891523713 2032,414 20260907T082518Z
3 0,780817436 0,889505550 2036,426 20260907T085915Z

Les passes 2 et 3 utilisent la même commande de lancement, avec les labels final-w3-worker-fixed-r2 et final-w3-worker-fixed-r3 et l'option --only locomo. Chaque passe crée puis supprime ses propres ressources. Les trois conteneurs et anciens dossiers de sockets sont vérifiés absents dans /private/tmp/cortex-green-final-w3-r1-cleanup-proof.json, -r2-cleanup-proof.json et -r3-cleanup-proof.json. Valeurs intégrales et moyenne : /private/tmp/cortex-green-final-w3-locomo-three-runs.json.

Conformité

  • Règles1–2 : branche propre à W3-1a, commits conventionnels, gates ordonnés verts avant push ; fusion réservée au propriétaire.
  • Règle3 : craftsmanship vert, aucune extension de baseline ; borne dérivée de la formule existante, seuil inchangé.
  • Règle4 : pas de fallback silencieux ni de modèle sous/tmp ; chemin complet conservé si la borne ne permet pas de rejeter.
  • Règle5 : données de mesure jetables ; gate globale de qualité encore ouverte, PR brouillon.
  • Règles6–7 : un seul travail lourd local à la fois ; aucune action sur les données de production.
  • Règles8–9 : aucune issue ouverte ; chiffres rattachés aux SHA et rapports ci-dessus après rebase final.
  • Règle10 : porte de confiance du reranker inchangée.

Candidats issues

La référence complète ne satisfait plus les floors publiés. L’enquête compare les conditions de corpus/provenance avant toute correction ; ces seuils ne sont pas abaissés dans cette PR. Le coût du modèle froid pour une capture admise demeure et relève de W3-1c.

Runbook

Aucune migration ni purge. Conserver le mode de capture actuel ; cette PR n’ajoute pas d’option d’exploitation.

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