Repository navigation
Carve transcript normalization out into Capacitor.Models.Transcripts - #773
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…679) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
PR Summary by QodoCentralize transcript normalization in a dependency-light leaf project
AI Description
Diagram
High-Level Assessment
Files changed (62)
|
Code Review by Qodo
1.
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…-make-core-the-single-home-of-transcript-normalization # Conflicts: # docs/CHANGES.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Closes #774 — AI-2517. Part of #679 — AI-2265.
What & why
The desktop Chat tab and the server each carry their own transcript-to-canonical mapping for Claude and Codex. This is the first step of giving that mapping one home: a leaf project,
Capacitor.Models.Transcripts, depending only on theKurrent.Agent.Schemapackage andSystem.IO.Hashing, so the server can reference it without importing Core's dependencies. Its projections emit the schema's own messages with deterministic ids, timestamps and lineage; Core maps them to chat envelopes with each vendor's display rules beside that adapter; the app reads through it with one projection context per tail. Coverage is the chat's today; server parity for Claude and Codex comes in the next PRs.Where to look
The id derivations are a persistence contract (the server dedups by them): framing tests and fixed vectors pin every hashed byte. The chat differs in five narrow ways, listed in
docs/CHANGES.md.Verification
dotnet test --solution Capacitor.slnx: 11471 passed, 66 env-gated skips; 5 daemon failures are wall-clock budget tests that each pass when run alone, plus a check of the localcodexbinary against the vendored schema pin (needs codex at the pinned version).dotnet publish -c Releasefor kcap and kcap-daemon: zero IL2026/IL3050 lines.