Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
015bec3
obs(w1): docs — observability planning + impl spec baseline
Number531 Apr 16, 2026
219d1c9
obs(w1): featureFlags — add RAW_SOURCE_ARCHIVE, PROMPT_INJECTION_DETE…
Number531 Apr 16, 2026
8566bc1
obs(w1): rawSource — SourceHasher (Option B, raw-byte SHA-256)
Number531 Apr 16, 2026
2b98e3a
obs(w1): rawSource — SourceSanitizer (pure secret scrubbing)
Number531 Apr 16, 2026
833bdb4
obs(w1): rawSource — SourceStorage (atomic sharded pool I/O)
Number531 Apr 16, 2026
907f4c9
obs(w1): rawSource — SourceManifestWriter + SourceIndexWriter
Number531 Apr 16, 2026
bd9fcd7
obs(w1): rawSource — SourceEmbeddingDispatcher (Wave 1 stub)
Number531 Apr 16, 2026
d0c506b
obs(w1): rawSource — RawSourceService orchestrator
Number531 Apr 16, 2026
2621b34
obs(w1): promptInjectionDetector — pure regex detection module (#8)
Number531 Apr 16, 2026
8bcdca9
obs(w1): sdkMetrics — histogram label refactor + deriveClient helper …
Number531 Apr 16, 2026
69e6286
obs(w1): hookDBBridge — extract _hybrid_metadata into event_data (#13)
Number531 Apr 16, 2026
69432cb
obs(w1): hooks — wire injection detection + RawSource + histogram (#3…
Number531 Apr 16, 2026
5d1b7c7
obs(w1): server — raw-source routes + percentile cols + SLA route + i…
Number531 Apr 16, 2026
541c983
obs(w1): frontend — SLA panel + 60s polling (#13)
Number531 Apr 16, 2026
3136a3c
obs(w1): tests — integration + fixtures + smoke runbook + wave-1 depl…
Number531 Apr 16, 2026
aa4f1ae
obs(w1): runbook — surface 3 unconditional changes from blast-radius …
Number531 Apr 16, 2026
ae53e7d
obs(w1-fix): rawSource — refactor createRawSourceService to per-sessi…
Number531 Apr 17, 2026
ce7dad9
obs(w1-fix): rawSource — delete SourceIndexWriter, add first_landing …
Number531 Apr 17, 2026
1d2c1ce
obs(w1-fix): hooks+server — per-session routes + sessionId propagation
Number531 Apr 17, 2026
b6c42dc
obs(w1-fix): tests — per-session pool paths + first_landing assertions
Number531 Apr 17, 2026
5c01d5f
obs(w1-fix): docs — per-session pool paths across planning + runbook …
Number531 Apr 17, 2026
edad8fc
obs(w1-fix): hookSSEBridge — add WebFetch/WebSearch to raw-source all…
Number531 Apr 17, 2026
ecc9d31
obs(w1-fix): sdkHooks + hookDBBridge — handle SDK built-in web tools
Number531 Apr 17, 2026
17d8f98
obs(w1-fix): Path C — stream interception for raw-source capture
Number531 Apr 17, 2026
13b55da
obs(w1-fix): Correction 1.3 — wrapWithConversation raw-source capture
Number531 Apr 17, 2026
e492c2c
obs(w1-fix): hookDBBridge — fix SLA fetch_source 'unknown' for MCP tools
Number531 Apr 17, 2026
81b4644
docs(changelog): v6.0.0 — Wave 1 observability release
Number531 Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions super-legal-mcp-refactored/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,40 @@

All notable changes to the Super Legal MCP Server are documented in this file.

## [6.0.0] - 2026-04-18

### Feature — Wave 1 Observability Release (Institutional Audit Traceability)

Adds four observability capabilities behind feature flags (all default OFF) to close gaps identified in an institutional-buyer audit against PE/IB/M&A/IC requirements. 26 commits, 45 files changed, +6530/-888 LOC, 165 unit + integration tests.

**Deployment note**: `RAW_SOURCE_ARCHIVE=true` requires `EXA_WEB_TOOLS=true` to capture web activity. All other flags are independent. See `docs/runbooks/wave-1-deploy.md` for the 5-stage flag rollout with 24-48h soaks.

**GitHub PR:** [#76](https://github.com/Number531/Legal-API/pull/76)

#### #3 — Raw-Source Archive (content-addressed, per-session)

Persists every raw external API response (SEC filings, CourtListener opinions, Exa search results, FRED data, EPA records, etc.) as content-addressed files in a per-session pool. Each session is a self-contained audit bundle — legal hold, retention, deletion, and export all align with session boundaries.

- **Capture layer**: `wrapWithConversation()` middleware in `toolImplementations.js` — wraps all 163 MCP tool handlers
- **Storage**: `reports/{session_id}/raw-sources/{ab}/{cd}/{hash}.{ext}.gz` — sharded, gzip-compressed, mode 0444, atomic write
- **Integrity**: SHA-256 content-addressed filenames; recomputed on every read
- **Dedup**: within-session dedup by hash; cross-session duplication accepted for self-containment
- **Secret sanitization**: scrubs Authorization headers, API keys, AWS keys, JWTs, PEM private keys
- **Live-tested**: 287 unique sources captured across 21 tool types
- **Flag**: `RAW_SOURCE_ARCHIVE=false` (default)

#### #8 — Prompt-Injection Detection on Tool Outputs

Lightweight regex detector (6 patterns, confidence scoring). Detection + logging only, no hard block. FP-resistant against SEC/legal text. **Flag**: `PROMPT_INJECTION_DETECTION=false`

#### #12 — Per-Tool Latency Histograms (P50/P95/P99)

Histogram labels `[tool, status]` → `[tool_name, client, status]`. Percentile SQL on `/api/analytics/tools/health`. Composite index on `hook_audit_log`. Always-on (no flag). **Breaking**: Prometheus queries must migrate `tool=` → `tool_name=`.

#### #13 — 7-Day SLA Dashboard per External API

Frontend panel + `GET /api/analytics/sla/7day`. Success rate, P95 latency, fallback count per API client. **Flag**: `SLA_TELEMETRY=false`

## [5.9.2] - 2026-04-17

### Fixed — Federal Register agency slugs + GovInfo USC Section resolver
Expand Down
Loading