Analysis quality audit

Status: freeze sheet for the 25 core module ids
Pins: analysis_port_pins.md
Severity: release_severity_triage.md
Porting map: analysis_module_porting.md

Living sheet — one row per registered MODULE_ID. 0.9.x / 1.0 freeze: no new modules unless an audit proves a release-critical repair. Do not rewrite these to TranscriptX-depth stacks (sklearn LDA, spaCy NER, speaker momentum).

semantic_class is copied from the pin registry. A unit test fails if a registered MODULE_ID disappears from that list.

Honesty on thinner algorithms

These notebook adaptations are weaker than the TranscriptX originals and must stay labelled as such:

Module

Algorithm in Transcribe

Must not silently become

topic_modeling

Deterministic seed-bucket topics (topic_seed_buckets_v1); no sklearn LDA

A different topic engine under the same id

keyphrases

Notebook TF-IDF unigram/bigram ranking

spaCy / TX keyphrase stack

wordclouds

Baseline token frequencies (enrichment_mode: baseline)

Keyphrase-enriched clouds without a version bump

bertopic

Optional extra; missing extra → unavailable_extra

Seed-bucket / LDA substitute under this id

moments

Notebook salience fork (no TX momentum)

Speaker-momentum scoring

Optional extras and LLM modules that cannot run must abstain honestly (unavailable_extra / unavailable_model), never invent a substitute payload.

Rows

module_id

semantic_class

Intended question

Algorithm honesty

Recommendation

Severity

stats

adaptation

How long / varied is this notebook?

Page/unit distributions; no speaker rollups

retain

—

lexical_diversity

adaptation

How diverse is the vocabulary?

Document + per-unit metrics

retain

—

understandability

adaptation

How readable is the text?

Pure-Python readability (no nltk/textstat)

retain

—

wordclouds

adaptation

What words dominate?

Baseline frequency path

retain; keep baseline labelled

known limitation vs TX viz

ner

adaptation

Which names and places appear?

Notebook NER adaptation

retain

—

sentiment

adaptation

What is the tone by page?

Lexicon / unit sentiment; no speakers

retain

—

epistemic_markers

adaptation

How certain is the language?

Lexicon markers

retain

—

keyphrases

adaptation

What phrases stand out?

Notebook TF-IDF

retain; document thinner stack

known limitation vs TX

entity_sentiment

adaptation

How does tone attach to entities?

Join NER × sentiment

retain

—

topic_modeling

adaptation

What is this notebook about?

Seed-bucket topics; no sklearn

retain; document thinner stack

known limitation vs TX

semantic_similarity

adaptation

Which pages are alike?

BoW cosine; multi-speaker gate dropped

retain

—

topic_shift

adaptation

Where does the subject change?

Order-based cosine-drop

retain

—

bertopic

adaptation

Clustering when the extra is installed

Optional extra; no silent substitute

retain as optional

known limitation

emotion

adaptation

What emotions show in the text?

Lexicon emotion

retain

—

contextual_emotion

adaptation

How does emotion move across pages?

Order-neighbor window

retain

—

fine_grained_emotion

adaptation

Finer emotion labels

Optional extra → unavailable_extra

retain as optional

known limitation

affect_tension

adaptation

Where does affect tighten?

Join adaptation

retain

—

moments

fork

Which pages are salient?

Notebook salience; no momentum

retain as fork

known limitation vs TX

highlights

adaptation

Which quotes matter?

Notebook salience quotes

retain

—

summary

adaptation

What is the brief?

From-highlights executive brief

retain

—

insights

adaptation

What themes compose?

Highlights + topics; notebook_eligibility_v1

retain

—

llm_summary

adaptation

Abstractive summary

Optional Ollama; abstain offline

retain

known limitation (model)

llm_action_items

adaptation

Actions / decisions / questions

Optional Ollama

retain

known limitation (model)

llm_custom_qa

adaptation

Ask the notebook

Grounded QA; refuse unsupported

retain

known limitation (model)

narrative_summary

adaptation

Longer narrative

Optional Ollama; unavailable_model offline

retain

known limitation (model)

Mandatory scrutiny

Deterministic highlights / summaries vs LLM equivalents — keep both, but do not present an LLM skip as if the deterministic brief were the same claim. Seed-bucket topics, TF-IDF keyphrases, and baseline wordclouds stay adaptations, not parity with TranscriptX.