# Drift table (2026-10-23) Shared **patterns** are real. Shared **implementations** often are not. Domain overlap is small: pages/OCR vs speakers/audio. TX pins cited in Transcribe docs: analysis `50a0ede…`; settings notes also cite `da742f9…`. ## Naming pairs | Idea | TranscriptX | Transcribe | |------|-------------|------------| | UI package | `src/transcriptx/web/` | `src/transcribe/ui/` | | Nav registry | `web/navigation.py` (`section="settings"`) | `ui/navigation.py` (`section="system"`) | | Workspace roots | `PathSettings` | `RuntimePaths` | | Analyse launcher | Run Analysis | Analyse | | Consume text | Transcript | Reading | | Correction surface | Corrections Studio | Review (OCR lanes) | | People/places | Speakers → Locations (Folium) | View → People & Places (`st.map`) | | Tag rules | `io/tag_validation.py` | `tagging/kernel.py` + catalog store | | Geocode cache | `location_cache.json` | `data/cache/geocode.json` | | Doctor | `DiagnosticsController` | `DoctorService` + `CorpusDoctorService` | | Analysis layout | `core/analysis//` | `analysis/modules/.py` | | Backup format | `transcriptx.workspace-backup` | `transcribe.workspace-backup` | | Default port | 8501 | 8510 | ## Do not port (from [analysis_module_porting.md](../dev/analysis_module_porting.md)) `interactions`, `pauses`, `transcript_quality`, `llm_speaker_summary`, `contagion`, and the voice family (`voice_features`, `voice_mismatch`, `voice_tension`, `voice_fingerprint`, `voice_charts_core`, `voice_contours`, `prosody_dashboard`). Deferred (not this programme): reinterpretations such as `politeness`, `echoes`, `temporal_dynamics`, `momentum`, and special-case `ocr_quality`. ## Drift | Area | TX | Transcribe | Severity | |------|----|------------|----------| | Nav skeleton | primary / workflow / view / settings | Same groups; notebook pages | none on skeleton; large on page set | | Settings tabs | Storage, Watcher, Speakers, Questions, Keywords, Corrections; Profiles and Dashboard Builder as pages | Configuration, Analysis, Detection, Tags, Prompts, Interface, Models, Profiles, Export | medium (intentional) | | Tag catalog | String sanitize; no `personal_corpus.tag-catalog` | Full kernel + colours + Settings → Tags | large (docs claim a share; TX never got the kernel) | | Analysis ids (core 25) | Present plus many more | Same 25 registered | none on ids | | Analysis depth | Multi-file packages, sklearn/spaCy/viz | Mostly adaptations (TF-IDF, seed buckets, baseline clouds, optional extras) | large vs “ported” wording; **keep** for v1 | | Result envelope | TX pipeline objects | `transcribe.analysis-result` | medium (intentional) | | Export | Transcript bundle / library-by-tag | `transcribe.notebook`, export-bundle, finetune | medium (intentional) | | Backup ZIP | Role roots under transcripts/config/data | Role roots `projects/data/inbox/exports` | small (same pattern) | | Doctor / Diagnostics | Diagnostics page | Diagnostics + notebook + corpus doctor | small | | Places | Folium; default geocode on | `st.map`; opt-in Nominatim | medium (intentional) | | Review vs Corrections | Transcript/speaker corrections | OCR lanes | large (different jobs) | | First-run / sample | Fixtures + workflow docs; demo mode removed | Home CTAs; **no `samples/`** | large (Transcribe UX) | | OCR / corpus import | Absent | Core product | none as a gap-to-port | | Voice / speakers | Shipped | Out of scope | none (intentional) | | PR CI | Smoke-focused; nightly owns contracts/coverage | Matrix 3.10–3.12 + blocking release-checks | medium (different shape; keep Transcribe’s PR gate) | | Nightly / issue templates / Docker CI | Present | Missing (I6) | large | | Release extras | `clean_env_audit`, `image_pip_check`, perf envelopes | Core I2 kit only | medium | | Pre-commit | black + ruff fix + mypy | thinner critical ruff | small | | Coverage floor | 70%, omit `web/` | 70%, omit `ui/` | none | | Docs hosting | Pages + Sphinx + RTD + `docs/workflows/` | Pages + Sphinx + RTD; no workflow media | small | | Runtime coupling | n/a | Must not import TX | none (policy held) | ## Transcribe-only (keep) Page/notebook domain; OCR lifecycle; Prompt Hub; Detect; corpus ImportRun; British **Analyse**; port **8510**; project OCR precedence over env; organisation tag **catalog**. ## Doc authority for intentional divergence [settings_tx_alignment.md](../dev/settings_tx_alignment.md), [places_tx_alignment.md](../dev/places_tx_alignment.md), [analysis_module_porting.md](../dev/analysis_module_porting.md), [analysis_visual_compare.md](../dev/analysis_visual_compare.md). Treat [tag-catalog.md](../contracts/tag-catalog.md) / [INTEGRATION_SEAM.md](../INTEGRATION_SEAM.md) “shared with TX” as planned copy-boundary.