@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 1.6.0] - 2026-04-10
11+
12+ ### Added
13+ - ** Knowledge Graph** : New ` qp_vault.graph ` subpackage. Access via ` vault.graph ` on any AsyncVault or Vault instance.
14+ - ** GraphEngine** : Typed async CRUD for nodes, edges, mentions, traversal, merge, and scan. Every mutation fires a VaultEvent for capsule audit.
15+ - ** GraphStorageBackend Protocol** : 20-method storage contract. PostgreSQL (pg_trgm similarity, recursive CTE traversal) and SQLite (FTS5 search, Python BFS traversal) backends.
16+ - ** KnowledgeExtractor** : LLM-based entity/relationship extraction with membrane sanitization (NFKC normalization, HTML escaping, XML wrapping). Validation caps: 200 entities, 500 relationships.
17+ - ** EntityResolver** : Three-stage dedup cascade (exact match, FTS/trigram search, create-on-miss).
18+ - ** EntityDetector** : In-memory name matching (10k entity index, 50k text cap). Optional fuzzy mode via EntityResolver.
19+ - ** EntityMaterializer** : Generates ` profile.md ` (wikilinks, properties, relationships, mentions) and ` manifest.json ` per entity.
20+ - ** WikilinkResolver** : Parse and resolve ` [[Entity Name]] ` and ` [[Entity Name|Display Text]] ` syntax. Code fence exclusion. Case-insensitive dedup.
21+ - ** Graph-Augmented Search** : ` vault.search(query, graph_boost=True) ` detects entities in queries and boosts matching documents (15% relevance boost).
22+ - ** Membrane Sanitization** : ` sanitize_for_extraction() ` for LLM extraction input.
23+ - ** 10 Graph EventTypes** : ` ENTITY_CREATE ` , ` ENTITY_UPDATE ` , ` ENTITY_DELETE ` , ` EDGE_CREATE ` , ` EDGE_DELETE ` , ` ENTITY_MERGE ` , ` MENTION_TRACK ` , ` SCAN_START ` , ` SCAN_COMPLETE ` , ` SCAN_FAIL ` .
24+ - ** ` graph ` optional extra** in pyproject.toml (no additional deps required).
25+ - 213 new graph tests (storage, capsule, intelligence, models, edge cases, materialization, extraction errors, security).
26+
27+ ### Security
28+ - Input validation at every boundary: name (500 chars), entity_type (50 chars), relation_type (100 chars), properties (50KB, 2000 chars/value), tags (50 max, 100 chars each), weight (0.0-1.0), null byte stripping.
29+ - Self-edge rejection, self-merge rejection, direction enum validation, limit capping (10,000), context_for ID cap (50).
30+ - ` graph_schema ` parameter validated as SQL identifier (` ^[a-zA-Z_][a-zA-Z0-9_]*$ ` ).
31+ - ` source_label ` in sanitization validated as alpha-only.
32+ - LLM extraction output: property key cap (20/entity, 100 chars), property value cap (500 chars).
33+
34+ ### Changed
35+ - ` PostgresBackend.__init__() ` accepts ` graph_schema ` parameter (default ` "qp_vault" ` , set to ` "quantumpipes" ` for Core migration compatibility).
36+ - ` vault.search() ` accepts ` graph_boost: bool = False ` parameter.
37+ - ` __init__.py ` exports ` GraphStorageBackend ` , ` GraphEngine ` , ` GraphNode ` , ` GraphEdge ` (lazy-loaded).
38+
1039## [ 1.5.2] - 2026-04-09
1140
1241### Fixed
0 commit comments