# Changelog

> **This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.**

## Score

- CAI 60 → 60 (-0.7)

## Lenses

- Code Health 56 → 56 (+0.0)
- Architecture 97 → 97 (+0.0)
- Maturity 61 → 58 (-3.3)
- Readiness 74 → 74 (-0.1)
- Security 55 → 54 (-0.5)
- Performance 100 → 100 (+0.0)

## Resolved (15)

- Ambiguous naming of tokenization methods. `encode` and `tokenize` appear to perform similar functions (converting input to tokens/ids), but have different signatures (`truncate`/`truncation_direction` vs `add_special_tokens`). It is unclear if `tokenize` is a legacy name, a simplified version, or if they serve distinct internal purposes. This creates confusion for API users about which method to use.
- Base-context workflow trigger runs with an unscoped token
- Further orphaned files (smaller)
- High CVE: [GHSA redacted] (backends/python/server/poetry.lock)
- High CVE: [GHSA redacted] (backends/python/server/requirements-amd.txt)
- High CVE: [GHSA redacted] (backends/python/server/requirements.txt)
- Inconsistent return types for health checks. The `Backend` trait/interface returns a `Result` (implying potential failure or async status), while the higher-level `Infer` struct returns a simple `bool`. This forces consumers to handle errors differently depending on which layer they query.
- Medium CVE: PYSEC-2024-230 (backends/python/server/requirements-amd.txt)
- Orphaned knowledge (backends/candle/src/models/flash_bert.rs)
- Orphaned knowledge (backends/candle/src/models/jina.rs)
- Orphaned knowledge (backends/candle/src/models/jina_code.rs)
- Orphaned knowledge (backends/candle/src/models/mpnet.rs)
- PR-triggered workflow without a permissions block
- Redundant operation naming and separation of concerns. `Backend` exposes `embed` and `predict`, while `Infer` exposes `embed_all`, `embed_sparse`, `embed_pooled`, and `predict`. The `Infer` layer seems to be splitting the `Backend.embed` operation into three distinct methods based on pooling strategy, which duplicates the intent of 'embedding generation' under different names. Additionally, `Backend.predict` and `Infer.predict` likely do the same thing (classification/sparse prediction), but the signature difference (`Batch` vs `I`) obscures this.
- Workflow holding a long-lived secret is unscoped

## New (57)

- Base-context workflow trigger runs with an unscoped token (.github/workflows/upload_pr_documentation.yml)
- Concentrated knowledge decay
- Critical CVE: [GHSA redacted] (backends/python/server/poetry.lock)
- Critical CVE: [GHSA redacted] (backends/python/server/requirements-amd.txt)
- Critical CVE: [GHSA redacted] (backends/python/server/requirements.txt)
- Critical vulnerability: [GHSA redacted] (backends/python/server/poetry.lock)
- Critical vulnerability: [GHSA redacted] (backends/python/server/requirements-amd.txt)
- Critical vulnerability: [GHSA redacted] (backends/python/server/requirements.txt)
- Medium CVE: [GHSA redacted] (backends/python/server/poetry.lock)
- Medium CVE: [GHSA redacted] (backends/python/server/requirements-amd.txt)
- Medium CVE: RUSTSEC-2026-0381 (Cargo.lock)
- Medium CVE: RUSTSEC-2026-0382 (Cargo.lock)
- Medium CVE: RUSTSEC-2026-0383 (Cargo.lock)
- Medium advisory (unsound): RUSTSEC-2026-0386 (Cargo.lock)
- Medium vulnerability: [GHSA redacted] (Cargo.lock)
- Medium vulnerability: RUSTSEC-2026-0367 (Cargo.lock)
- Medium: security finding (details withheld)
- Most significant orphaned file (backends/candle/src/models/bert.rs)
- Most significant orphaned file (backends/candle/src/models/modernbert.rs)
- Most significant orphaned file (router/src/grpc/server.rs)
- …and 37 more

## Architecture

- Unchanged — 0 containers · 1 contexts · 0 edges
