Skip to content

chore(sync): develop → main (v0.36.6)#151

Merged
Destynova2 merged 24 commits intomainfrom
sync-main-v0.36.6
Apr 11, 2026
Merged

chore(sync): develop → main (v0.36.6)#151
Destynova2 merged 24 commits intomainfrom
sync-main-v0.36.6

Conversation

@Destynova2
Copy link
Copy Markdown
Contributor

Automated sync triggered by tag v0.36.6. This PR promotes the develop branch to main so the tag can be released. Safe to auto-merge once CI passes.

commis-ci-fix and others added 22 commits April 11, 2026 12:45
Supprime le logging en cleartext de valeurs canary PII dans les assertions
de test (pii.rs), annote le faux positif HTTPS dans credential_check.rs,
et ajoute nosemgrep sur le token de test assemblé dynamiquement (tests.rs).

Résout: 4 alertes HIGH CodeQL (pii.rs L689/L1151/L1172/L1183),
1 alerte HIGH CodeQL (credential_check.rs L70),
1 faux positif Semgrep (tests.rs L58).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Re-vérifie is_instance_running avant spawn_background_service pour éviter
le faux-démarrage quand le flow credentials interactif prend du temps.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ajoute ComplexityHint (trivial/medium/complex), le tool MCP grob_hint
(one-shot slot), la résolution multi-source dans dispatch (header →
metadata → MCP slot), et l'injection dans tools/list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(security): résoudre 6 alertes CodeQL/Semgrep cleartext logging
fix(exec): vérifier la santé avant spawn pour éviter le faux-démarrage
Les types ComplexityHint et le champ grob_hint dans AppState référencent
le module MCP qui n'existe pas quand le feature est désactivé. Ajoute les
guards #[cfg(feature = "mcp")] manquants dans dispatch/mod.rs et
server/mod.rs pour corriger les builds feature powerset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(mcp): ajouter le tool grob_hint + header X-Grob-Hint
Add 13 proptest properties for DLP and router parsers:

DLP (7):
- sanitize idempotence (sanitize(sanitize(x)) == sanitize(x))
- output length bounded (len <= input + 200)
- known secrets never leak through sanitize
- DFA scanner never panics on arbitrary UTF-8
- Luhn-valid credit cards detected by PII scanner
- Mod97-valid IBANs detected by PII scanner
- sanitize preserves valid UTF-8

Router (6):
- extract_trailing_literal_byte never panics on arbitrary input
- deterministic (same input = same output)
- result always lowercase ASCII alphabetic
- alternation patterns always return None
- classify never panics on arbitrary model names
- route never panics on arbitrary user text

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
test(dlp,router): ajouter proptests pour robustesse DLP et router
- deny.toml: ignore RUSTSEC-2026-0097 (rand unsound with custom logger
  calling rand::rng()). No impact: grob does not define a custom logger
  accessing ThreadRng.

- ci.yml: for PRs, scan gitleaks against origin/<base-ref> instead of
  github.event.before. Force-pushes invalidate the "before" SHA, causing
  gitleaks to fail on a broken commit range. Using the base branch ref
  always resolves to a valid range.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(ci): add RUSTSEC-2026-0097 exception and fix gitleaks force-push
Ajoute deux nouvelles options dans le wizard setup pour configurer des
endpoints LLM custom compatibles OpenAI ou Anthropic. Le wizard demande
la base_url, valide la connexion via un appel GET /models, et écrit
le provider_type + base_url dans le TOML config.

Modifications :
- src/providers/registry.rs : nouveaux types "openai_compatible" et
  "anthropic_compatible" dans create_provider
- src/commands/credential_check.rs : validate_custom_endpoint() pour
  valider les clés API contre des endpoints custom
- src/commands/setup.rs : screen_custom_endpoints(), CustomEndpoint
  struct, intégration dans le wizard flow + 9 tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds an in-memory SimHash-based semantic cache layer that detects
near-duplicate prompts via 64-bit fingerprints and Hamming distance
(default threshold ≤ 3 bits). The fuzzy layer is consulted before the
exact SHA-256 cache to improve hit rates for rephrased requests.

- src/cache/simhash.rs: normalize, compute, hamming_distance, SimHashCache
- Integrated into ResponseCache via get_with_simhash / put_with_simhash
- 16 new unit tests covering normalization, hashing, distance, and cache ops

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tion

- Supprimer le tri lexicographique des tokens qui detruisait le sens
  semantique (ex: "translate English to French" = "translate French to
  English"). L'ordre est desormais preserve.
- Hasher chaque token avec sa position (hash_token_at) pour rendre le
  SimHash sensible a l'ordre des mots.
- Remplacer RwLock<HashMap> par moka::sync::Cache avec max_capacity et
  TTL built-in, alignant le cycle de vie sur le cache exact.
- Adapter response_cache.rs pour passer capacity/TTL au constructeur.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…aces

Ajoute la rotation automatique des fichiers trace JSONL quand ils
dépassent la taille configurée (max_size_mb, défaut 50 MB). Les fichiers
rotatifs sont nommés trace.N.jsonl et limités à max_files (défaut 3).
L'option compress active la compression zstd des fichiers rotatifs.

Nouveaux champs TracingConfig : max_size_mb, max_files, compress.
6 tests unitaires couvrent la rotation, le shift, la suppression des
plus anciens, la compression zstd, et le déclenchement via write_trace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remplace `zstd::encode_all` (charge tout en mémoire) par un
`zstd::Encoder` en streaming avec `BufReader` + `io::copy`.
Élimine le pic mémoire lors de la compression de gros fichiers trace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(setup): ajouter support custom endpoint OpenAI/Anthropic-compatible
feat(cache): ajouter cache sémantique SimHash avec distance de Hamming
feat(tracing): ajouter rotation par taille et compression zstd des traces
@Destynova2 Destynova2 added the sync-main Automated sync develop → main label Apr 11, 2026
@Destynova2 Destynova2 enabled auto-merge (squash) April 11, 2026 12:54
Destynova2 and others added 2 commits April 11, 2026 15:27
cargo-audit echoue sur develop depuis le merge #148 car
RUSTSEC-2026-0097 (rand unsound avec custom logger) n'etait
ignore que dans deny.toml, pas dans .cargo/audit.toml.

Pas d'impact : grob ne definit pas de custom logger utilisant
ThreadRng.

Co-authored-by: commis-ci-fix <commis-ci-fix@grob.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Destynova2 Destynova2 merged commit b87a077 into main Apr 11, 2026
32 checks passed
@Destynova2 Destynova2 deleted the sync-main-v0.36.6 branch April 11, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

sync-main Automated sync develop → main

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant