Ctrl K
ComunidadGuías…

CHANGELOG.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

Nothing has been released yet, so this describes what the workspace
does today rather than how it got here.

### Crates

- **elide-pipeline** — the stateless engine and the umbrella entry
  point: decode, analyze, review, anonymize. Re-exports what the
  other crates define, so a host reaches everything from here.
- **elide-provider** — deployment-owned configuration: which NER, LLM,
  OCR and STT backends exist, and the per-modality orchestrator built
  from them. A request toggles them; it does not choose them.
- **elide-schema** — the wire schema for what happens to sensitive
  data: policies, scopes, rules, predicates, operator specs, and the
  vocabulary a request introduces.
- **elide-template** — ready-to-run policy postures for HIPAA
  §164.514, GDPR Article 9, PCI DSS §3.3.1/§3.5.1 and CCPA. Each
  carries its own version and the effective date of the text it
  encodes, independent of the crate release.
- **elide-review** — reviewer edits over a report: add, retag,
  suppress. Validated against the report before any of them land, so
  a set that cannot apply in full applies not at all.
- **elide-export** — audits as JSON documents or CSV tables.

### Detection and redaction

- One entity model across text, tabular data, images and audio, so an
  operator written once serves every modality.
- Layered detection: regex, dictionary and checksum patterns first,
  then NER, OCR, VLM and LLM recognition for what deterministic
  methods cannot reach. Language, OCR and speech enrichers feed the
  text they produce back through the same pipeline.
- Context-aware scoring, with overlapping findings reconciled into one
  deduplicated entity set.
- Operators: mask, replace, truncate, HMAC, hash, generalize and clamp
  text; blur, pixelate and black out image regions; silence and beep
  audio; drop tabular rows and columns. Encryption and pseudonymization
  round-trip.
- Codecs read and rewrite TXT, CSV, JSON, XML, HTML, PDF, DOCX,
  PPTX, XLSX, images (PNG, JPEG, TIFF) and audio (WAV, MP3), changing
  only the redacted spans. `codec-mp3` and `codec-pdf-render` stay
  opt-in: MP3 patent licensing may not be satisfiable downstream, and
  PDF rasterisation pulls in a native dependency.
- Per-format codec settings on `CodecParams`: how a PDF rasterises,
  whether a CSV has a header row and what separates its fields, and
  what happens to an image's EXIF metadata when no metadata pipeline
  strips it. Each defaults to the codec's own behaviour, and a request
  that sets none shares the prebuilt format registry. EXIF is stripped
  by default — GPS, device and timestamp fields do not survive a
  re-encode unless a request asks to retain them.

### What a request supplies

- **Policies** say what happens to sensitive data: scopes naming the
  labels the policy acts on, rules within them, and a fallback for
  what no rule claimed.
- **`RequestContext`** says what the caller asserts about this
  document and this run — languages and jurisdictions, how the bytes
  decode, the key a keyed operator resolves through, and the
  vocabulary the request introduces beyond elide's shipped labels.
  Anything two callers sharing one engine could disagree about lives
  here rather than on the provider.
- A **`Recognition`** introduces labels elide does not ship, and
  matchers — a regex or a term list — that find them. A label without
  a matcher is legitimate: it joins the catalog for a reviewer to add
  entities under, and nothing detects it automatically.

### Auditing

- Every entity carries its full trail: how it was found, how it was
  scored, and how it was hidden. The trail verifies.
- An audit carries what the second pass needs and nothing it does not:
  the recognition context, the codec parameters and the request's
  vocabulary, so `anonymize` compiles against the same labels and
  decodes to the same bytes `analyze` did. The key is never recorded.
- Detections no policy acted on are reported rather than left silent.

### Inference

- Model services live in [`packages/`](packages) and are reached over
  HTTP. The engine ships clients for them, and any service
  reproducing the wire contract is a drop-in replacement, including
  self-hosted models and weights.

[Unreleased]: https://github.com/nvisycom/elide-runtime/commits/main