cjm-transcript-correction-core 0.0.5__tar.gz → 0.0.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {cjm_transcript_correction_core-0.0.5/cjm_transcript_correction_core.egg-info → cjm_transcript_correction_core-0.0.10}/PKG-INFO +106 -5
  2. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/README.md +102 -3
  3. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/__init__.py +1 -0
  4. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/cli.py +2350 -0
  5. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core/graph.py +811 -14
  6. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core/journal.py +3 -1
  7. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/launch.py +104 -0
  8. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core/models.py +208 -0
  9. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core/pipeline.py +10 -6
  10. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core/signals.py +83 -1
  11. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/spine.py +1258 -0
  12. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/state.py +93 -0
  13. cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core/strata.py +673 -0
  14. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10/cjm_transcript_correction_core.egg-info}/PKG-INFO +106 -5
  15. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core.egg-info/SOURCES.txt +9 -1
  16. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core.egg-info/requires.txt +3 -1
  17. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/pyproject.toml +1 -1
  18. cjm_transcript_correction_core-0.0.10/tests/test_bench.py +178 -0
  19. cjm_transcript_correction_core-0.0.10/tests/test_cli.py +243 -0
  20. cjm_transcript_correction_core-0.0.10/tests/test_gestures.py +767 -0
  21. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/tests/test_graph.py +351 -0
  22. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/tests/test_journal.py +34 -1
  23. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/tests/test_models.py +37 -1
  24. cjm_transcript_correction_core-0.0.10/tests/test_state.py +54 -0
  25. cjm_transcript_correction_core-0.0.10/tests/test_strata.py +345 -0
  26. cjm_transcript_correction_core-0.0.5/cjm_transcript_correction_core/__init__.py +0 -1
  27. cjm_transcript_correction_core-0.0.5/cjm_transcript_correction_core/cli.py +0 -342
  28. cjm_transcript_correction_core-0.0.5/tests/test_cli.py +0 -37
  29. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/LICENSE +0 -0
  30. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/MANIFEST.in +0 -0
  31. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core.egg-info/dependency_links.txt +0 -0
  32. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core.egg-info/entry_points.txt +0 -0
  33. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/cjm_transcript_correction_core.egg-info/top_level.txt +0 -0
  34. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/setup.cfg +0 -0
  35. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/tests/test_pipeline.py +0 -0
  36. {cjm_transcript_correction_core-0.0.5 → cjm_transcript_correction_core-0.0.10}/tests/test_signals.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cjm-transcript-correction-core
3
- Version: 0.0.5
3
+ Version: 0.0.10
4
4
  Summary: A frontend-agnostic core for the transcript correction workflow — the first downstream graph-extension core; composes the graph-storage capability worker into a headless pipeline that applies unified, non-destructive corrections (text, punctuation, segmentation) as a supersede-able overlay on a committed decomposition spine, recomputes the review worklist from deterministic signals, and exposes a CLI as its first driver.
5
5
  Author-email: "Christian J. Mills" <9126128+cj-mills@users.noreply.github.com>
6
6
  License: Apache-2.0
@@ -10,10 +10,12 @@ Classifier: Programming Language :: Python :: 3 :: Only
10
10
  Requires-Python: >=3.12
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
- Requires-Dist: cjm_substrate>=0.0.57
13
+ Requires-Dist: cjm_substrate>=0.0.61
14
14
  Requires-Dist: cjm_context_graph_primitives>=0.0.15
15
+ Requires-Dist: cjm-capability-primitives>=0.0.12
15
16
  Requires-Dist: cjm-context-graph-layer>=0.0.11
16
17
  Requires-Dist: cjm-transcript-graph-schema>=0.0.7
18
+ Requires-Dist: numpy
17
19
  Dynamic: license-file
18
20
 
19
21
  # cjm-transcript-correction-core
@@ -24,40 +26,68 @@ A frontend-agnostic core for the transcript correction workflow — the first do
24
26
 
25
27
  ## Modules
26
28
 
29
+ - **`cjm_transcript_correction_core.__init__`**
27
30
  - **`cjm_transcript_correction_core.cli`** — The CLI driver — the correction core's first (and currently only) frontend. run <decomp-manifest> corrects the committed spine in the decomp graph DB, pointing the graph worker at that shared DB via load-time config, with optional session resume/reopen; review runs the interactive text-correction loop (the cross-transcriber diff is intra-graph since stage 5).
28
31
  - **`cjm_transcript_correction_core.graph`** — The correction overlay's graph I/O: targeted (scale-shaped) reads of a committed spine via the graph-storage query action, construction of Correction / CorrectionSession nodes + CORRECTS / SUPERSEDES / DERIVED_FROM / REVIEWED edges, the in-core effective-spine projection (layer-0 + applied corrections), and commit through the job queue. Hand-rolled (revolution-1) = direct CR-18 spec material; append-only on layer-0 (never update/delete a Segment).
29
32
  - **`cjm_transcript_correction_core.journal`** — Live append-through for the correction verbs — the workflow journal's domain half.
33
+ - **`cjm_transcript_correction_core.launch`** — The shared launch surface every correction shell drives through: the
30
34
  - **`cjm_transcript_correction_core.models`** — Overlay data shapes for the transcript-correction workflow: the Correction / CorrectionSession graph nodes + their relation registry, the read view of a committed spine segment, the worklist item, run configuration, and the correction run manifest (proto-bundle that chains decomp -> correction).
31
35
  - **`cjm_transcript_correction_core.pipeline`** — The headless correction workflow: load a decomp run manifest, resolve the shared graph DB, start/resume/reopen a CorrectionSession, recompute the worklist from deterministic signals + persisted review state, run the D14 empty-segment prune (first operation), and record a chainable correction run manifest — with a cheapest-form HITL approval seam.
32
- - **`cjm_transcript_correction_core.signals`** — Pure deterministic Tier-1 signal functions (no capability calls): empty-segment detection, bidirectional boundary punctuation/capitalization heuristics, forced-alignment coverage flags, positional cross-transcriber diff, and phonetic + edit-distance variant clustering. The worklist is recomputed from these each session; revolution-1 builds ZERO new capabilities.
36
+ - **`cjm_transcript_correction_core.signals`** — Pure deterministic Tier-1 signal functions (no capability calls): empty-segment detection, bidirectional boundary punctuation/capitalization heuristics, forced-alignment coverage flags, positional cross-transcriber diff, phonetic + edit-distance variant clustering, and the event-proposal overlay (leg 4: the finetuned detector's spans anchored onto the spine). The worklist is recomputed from these each session; revolution-1 builds ZERO new capabilities.
37
+ - **`cjm_transcript_correction_core.spine`**
38
+ - **`cjm_transcript_correction_core.state`** — Sidecar view-state + spine-picker helpers — the correction TUI's pure
39
+ - **`cjm_transcript_correction_core.strata`** — Strata — the filtering lane's domain half (DECs 304fd984 + 9d4c0a38; work items
33
40
 
34
41
  ## API
35
42
 
36
43
  ### `cjm_transcript_correction_core.cli`
37
44
 
45
+ - `bench_command` _function_ — Execute the `bench` subcommand: the reserved-tail verdict join.
38
46
  - `build_parser` _function_ — Build the CLI parser (subcommands: run, review).
47
+ - `commit_wordless_transfer` _function_ — COMMIT a planned transfer — the engine's second half. One
48
+ - `export_command` _function_ — Execute `export-wordless-propset`: write one spine's effective wordless
49
+ - `extract_command` _function_ — Execute the `extract` subcommand: fold the gated overlay into a manifested dataset.
50
+ - `filter_confirm_command` _function_ — Execute `filter-confirm`: the HEADLESS HITL worklist (bc8dbbdd pass-1
51
+ - `filter_ingest_command` _function_ — Execute `filter-ingest`: validate proposer rows against their pack and
52
+ - `filter_pack_command` _function_ — Execute `filter-pack`: write one spine window's effective text-bearing
53
+ - `gate_command` _function_ — Execute the `gate` subcommand: show or assert per-spine extraction gates.
39
54
  - `load_capabilities` _function_ — Discover manifests + load each capability, passing per-capability config (CR-2 caller-wins).
40
55
  - `main` _function_ — CLI entry point (console script: `cjm-transcript-correction-core`).
56
+ - `overlay_event_rows` _function_ — Overlay span records -> dataset event rows for ONE spine (pure).
57
+ - `plan_transfer_rows` _function_ — Place wordless donors on the destination (pure) — the event half of
58
+ - `plan_wordless_export` _function_ — PLAN an export (reads only) — the `export-wordless-propset` engine's
59
+ - `plan_wordless_transfer` _function_ — PLAN a wordless transfer (reads only) — the `transfer-wordless`
60
+ - `resolve_source_node` _function_ — Resolve the --source selector the respine verbs share: exactly ONE
41
61
  - `review_command` _function_ — Execute the `review` subcommand: interactive text corrections over the flagged worklist.
42
62
  - `run_command` _function_ — Execute the `run` subcommand: correct a decomp manifest's committed spine.
63
+ - `run_extract` _function_ — The extract fold on an ALREADY-OPEN graph seat (flywheel build leg 2,
64
+ - `scan_command` _function_ — Execute `scan-mishomed`: flag authoritative FA words stranded outside
43
65
  - `stats_command` _function_ — Execute the `stats` subcommand: flywheel accounting over the shared graph.
66
+ - `transfer_command` _function_ — Execute `transfer-wordless`: replay wordless event inserts (and speaker-
67
+ - `wordless_donors` _function_ — The EFFECTIVE wordless layer of a spine: labeled, effectively wordless
68
+ - `write_wordless_propset` _function_ — WRITE a planned export as a proposal set — the engine's write half.
44
69
 
45
70
  ### `cjm_transcript_correction_core.graph`
46
71
 
47
72
  - `active_corrections` _function_ — Filter to the effective correction set (the layer's resolve_active over a read superseded set).
48
73
  - `active_speaker_assignments` _function_ — Project the ACTIVE speaker assignment per segment (latest-wins).
74
+ - `active_speech_overlays` _function_ — The surviving speech-overlay corrections (supersession applied; pure).
49
75
  - `aggregate_session_purposes` _function_ — Fold sessions into a per-source purpose mix (pure; d915d545 picker rung).
50
76
  - `apply_chunk_inserts` _function_ — Synthesize inserted chunks into the effective spine (DEC 3d3fa2a8).
51
77
  - `apply_time_nudges` _function_ — Apply timing corrections onto segment times (latest-wins per edge).
78
+ - `bench_event_proposals` _function_ — The reserved-tail bench join (leg 4, DECs 8e05b87b + 8cf12c22) — pure.
52
79
  - `build_boundary_shift_correction` _function_ — Build a grouping Correction that moves text across one segment boundary.
53
80
  - `build_chunk_insert_correction` _function_ — Build an insertion Correction that adds a chunk the skeleton never cut (DEC 3d3fa2a8).
54
81
  - `build_chunk_split_corrections` _function_ — Compose a chunk SPLIT from the EXISTING verbs (work item 99c1d2ba) — no
55
82
  - `build_correction_node` _function_ — Construct a Correction overlay node (pure; commit happens separately).
83
+ - `build_extraction_gate_assertion` _function_ — Build one extraction-gate ASSERTION (DEC 8e05b87b — flywheel build leg 1).
56
84
  - `build_mark_correction` _function_ — Build a NON-MUTATING mark Correction (DEC 2a231843: routed attention).
57
85
  - `build_prune_amendment` _function_ — Build a grouping Correction that supersedes a prune with a REDUCED set (unprune).
58
86
  - `build_prune_correction` _function_ — Build one batch grouping Correction that prunes empty segments (D14).
59
87
  - `build_reject_review` _function_ — Build a review Correction that REJECTS a prior correction (reject-as-supersede).
60
88
  - `build_speaker_assign_correction` _function_ — Build a speaker Correction — the assignment op envelope (DEC d6df3a8e).
89
+ - `build_speech_overlay_correction` _function_ — Build a NON-MUTATING speech-overlay Correction (check fc42614d, DEC 4e05a066).
90
+ - `build_stratum_correction` _function_ — Build a NON-MUTATING stratum Correction (DECs 304fd984 + 9d4c0a38: the
61
91
  - `build_text_correction` _function_ — Build a text_content Correction + its CORRECTS (+ optional SUPERSEDES) edges.
62
92
  - `build_time_nudge_correction` _function_ — Build a timing Correction that nudges segment boundary TIMES (node + CORRECTS edges).
63
93
  - `commit_boundary_shift_correction` _function_ — Commit a boundary-shift correction (node + CORRECTS x2 [+ SUPERSEDES]) + REVIEWED markers on both segments.
@@ -65,41 +95,55 @@ A frontend-agnostic core for the transcript correction workflow — the first do
65
95
  - `commit_chunk_insert_removal` _function_ — Remove an inserted chunk WITHOUT touching layer-0 (reject-as-supersede).
66
96
  - `commit_chunk_split_correction` _function_ — Commit a chunk split: three composed nodes in ONE atomic batch + ONE journal op.
67
97
  - `commit_chunk_split_removal` _function_ — UNSPLIT: remove a split's right half AND its whole group (one review
98
+ - `commit_extraction_gate` _function_ — Commit one extraction-gate assertion (node + GATES edge) — the journaled
68
99
  - `commit_mark_correction` _function_ — Commit a mark (node + CORRECTS per anchored segment [+ SUPERSEDES]).
69
100
  - `commit_mark_dismissal` _function_ — Dismiss an open mark WITHOUT a correction (reject-as-supersede).
70
101
  - `commit_nodes_edges` _function_ — Commit overlay nodes/edges through the layer's idempotent extend_graph.
71
102
  - `commit_prune_amendment` _function_ — Commit an unprune amendment (node + DERIVED_FROM edges + SUPERSEDES).
72
103
  - `commit_speaker_assign_correction` _function_ — Commit a speaker assignment (node + CORRECTS per segment + ASSIGNS).
73
104
  - `commit_speaker_entity` _function_ — Mint a source-spanning Entity into the shared registry (DEC 4ec6a49c).
105
+ - `commit_speech_overlay_correction` _function_ — Commit a speech overlay (node + CORRECTS [+ SUPERSEDES]).
106
+ - `commit_speech_overlay_removal` _function_ — Remove a speech overlay WITHOUT a replacement (reject-as-supersede).
107
+ - `commit_stratum_correction` _function_ — Commit a stratum (node + CORRECTS per covered segment [+ SUPERSEDES]).
108
+ - `commit_stratum_retraction` _function_ — Retract a live stratum WITHOUT replacing it (reject-as-supersede, the
74
109
  - `commit_text_correction` _function_ — Commit a text_content correction (node + CORRECTS [+ SUPERSEDES]) + a REVIEWED marker.
75
110
  - `commit_time_nudge_correction` _function_ — Commit a time-nudge correction (node + CORRECTS per touched segment).
76
111
  - `correction_stats` _function_ — Fold one Source's ACTIVE overlay into flywheel-accounting counts (pure).
77
112
  - `corrections_to_edits` _function_ — Map this core's Correction payloads onto the layer's spine-edit vocabulary.
78
113
  - `count_source_segments` _function_ — Count a Source's segments server-side under its chosen rendition + skeleton (typed count mode).
114
+ - `extract_spine_dataset` _function_ — Fold ONE spine's overlay into its v1 insert-span dataset slice (pure).
115
+ - `fa_words_for_transcript` _function_ — One transcript's FA words in source coordinates (the scan-mishomed join,
79
116
  - `find_active_text_correction` _function_ — Single-segment convenience over the batch read (cross-session; latest wins).
80
117
  - `find_active_text_corrections_batch` _function_ — Active text corrections for MANY segments in TWO round-trips (C17).
81
118
  - `find_chunk_split_group` _function_ — Resolve a split right-half's GROUP — the ac84360a group marker cashed in.
82
119
  - `find_corrections_for_session` _function_ — List corrections recorded in a session (typed property filter).
83
120
  - `find_prior_corrections_by_hash` _function_ — Cross-transcript correction-cache lookup (targeted; the graph IS the lexicon).
84
121
  - `get_session` _function_ — Fetch a CorrectionSession node by id (resume/reopen) — typed get, dict shape preserved.
122
+ - `labeled_insert_spans` _function_ — Fold the ACTIVE chunk inserts into span records with op-chain provenance (pure).
123
+ - `latest_extraction_gates` _function_ — Fold gate assertions into the live per-spine gate state (pure; latest-wins).
85
124
  - `list_source_spines` _function_ — The SPINES coexisting under a Source's chosen rendition (DEC f1024568).
86
125
  - `list_speaker_entities` _function_ — Read the source-spanning entity registry (the picker's registry tier).
87
126
  - `load_empty_segments` _function_ — Load ONLY a Source's empty-text segments under its chosen rendition (D14 prune).
127
+ - `load_extraction_gates` _function_ — Read one Source's live per-spine extraction gates (typed property filter).
88
128
  - `load_review_markers` _function_ — Load a session's review markers (typed edge projection over REVIEWED edges).
89
129
  - `load_source_corrections` _function_ — Load every Correction targeting a Source (across sessions) + the superseded-id set.
90
130
  - `load_source_segments` _function_ — Load a Source's fine Segment spine under its chosen rendition + skeleton (typed query surface).
91
131
  - `load_variant_texts` _function_ — Resolve per-transcriber chunk texts from the segments' CharSlice refs.
92
132
  - `mark_anchor_segments` _function_ — Validate a mark anchor and list the Segment ids it touches.
133
+ - `negative_regions` _function_ — Complement the accounted spans below the watermark (pure; DEC 8e05b87b).
93
134
  - `open_marks` _function_ — Filter to the OPEN marks — the pass-2 worklist ('query open marks, walk them').
94
135
  - `project_effective_spine` _function_ — Project the effective spine = layer-0 + applied corrections.
95
136
  - `reanchor_span` _function_ — Re-locate a span anchor in text that may have been edited since mark time.
96
137
  - `record_review_markers` _function_ — Persist per-(session, segment) review markers as REVIEWED edges.
97
138
  - `rename_speaker_entity` _function_ — Rename an Entity on its STABLE id — identification IS a rename (DEC 484e2d74).
139
+ - `reorder_gap_inserts` _function_ — Restore TIME order among stacked inserts after the nudge stage
98
140
  - `resolve_source_renditions` _function_ — Pick the AudioRendition set whose fine Segment spine correction operates on.
99
141
  - `session_purposes_by_source` _function_ — Read every CorrectionSession once and fold the per-source purpose mix.
100
142
  - `set_session_purpose` _function_ — Update a session's purpose + updated_at (the test-session hygiene tag, DEC c86714a4).
101
143
  - `set_session_status` _function_ — Update a session's status + updated_at.
144
+ - `skeleton_hash_for` _function_ — Resolve a skeleton selector to the chosen spine's HASH (pure) — the gate's
102
145
  - `source_audio_segment_ids` _function_ — The Source's coarse spine (one small typed read; ordered by index).
146
+ - `speech_overlay_spans` _function_ — Fold the ACTIVE speech overlays into extraction-facing span records (pure).
103
147
  - `spine_where_for` _function_ — Resolve a skeleton selector against the observed spine set (pure).
104
148
  - `start_session` _function_ — Create + commit a new CorrectionSession node.
105
149
  - `submit_and_wait` _function_ — Submit one capability job, wait for it, return its result (raise on failure).
@@ -110,6 +154,11 @@ A frontend-agnostic core for the transcript correction workflow — the first do
110
154
  - `journal_correction_op` _function_ — Append one correction op — envelope + semantic args + the EXACT wires committed.
111
155
  - `segment_anchor` _function_ — The run-independent anchor stamped on every correction op (DEC ccbab9f5 point 5).
112
156
 
157
+ ### `cjm_transcript_correction_core.launch`
158
+
159
+ - `build_parser` _function_ — The TUI driver's argument surface (mirrors correction-core's run/review args).
160
+ - `resolve_settings` _function_ — Resolve the launch settings every shell shares (5daadfc4 workspace
161
+
113
162
  ### `cjm_transcript_correction_core.models`
114
163
 
115
164
  - `Correction` _class_ — A single non-destructive correction over the committed spine (overlay node).
@@ -117,9 +166,12 @@ A frontend-agnostic core for the transcript correction workflow — the first do
117
166
  - `CorrectionManifest` _class_ — Durable record of one correction run (proto-bundle; chainable, CR-20).
118
167
  - `CorrectionRelations` _class_ — Registry of edge types the correction overlay adds to the spine graph.
119
168
  - `CorrectionSession` _class_ — A resumable, reopen-able correction review over one or more sources.
169
+ - `DatasetManifest` _class_ — Durable record of one dataset extraction (chainable; DEC 16159e09).
120
170
  - `Entity` _class_ — A source-spanning identity in the shared entity substrate (DEC 4ec6a49c).
171
+ - `ExtractionGate` _class_ — One per-spine extraction-gate ASSERTION (DEC 8e05b87b — flywheel build leg 1).
121
172
  - `SpineSegment` _class_ — A committed layer-0 Segment loaded from the graph (read view).
122
173
  - `WorklistItem` _class_ — One spine segment surfaced for review, with its deterministic Tier-1 flags.
174
+ - `new_dataset_id` _function_ — Generate a unique, sortable dataset id (the new_run_id pattern, dataset kind).
123
175
  - `new_run_id` _function_ — Generate a unique, sortable correction run id.
124
176
 
125
177
  ### `cjm_transcript_correction_core.pipeline`
@@ -140,13 +192,62 @@ A frontend-agnostic core for the transcript correction workflow — the first do
140
192
  - `cluster_variants` _function_ — Cluster word variants by phonetic key + edit distance (fix-one-fix-all).
141
193
  - `compute_signal_flags` _function_ — Combine all deterministic Tier-1 signals into per-segment flags.
142
194
  - `detect_empty_segments` _function_ — Find empty-text segments (silence VAD chunks with no aligned words; decomp D14).
195
+ - `event_span_proposals` _function_ — Anchor pending event proposals onto the spine — the propose lane's paint.
143
196
  - `fa_coverage_flags` _function_ — Flag segments whose forced-alignment coverage looks suspect (Tier-1).
144
197
  - `levenshtein` _function_ — Levenshtein edit distance (pure, in-core; variant-clustering primitive).
198
+ - `load_event_proposal_set` _function_ — Find the latest proposal set for a source (the turns-artifact discovery
145
199
  - `phonetic_key` _function_ — Compute a coarse phonetic key for a word (groups like-sounding variants).
146
200
  - `speaker_turn_proposals` _function_ — Dominant diarization cluster per segment — the assign lane's proposal paint.
147
201
  - `variant_divergence` _function_ — Within-segment cross-transcriber divergence (stage 5: intra-graph).
148
202
 
203
+ ### `cjm_transcript_correction_core.spine`
204
+
205
+ - `ChunkRef` _class_ — Where one Segment's VAD-chunk audio lives: the model-input WAV + the chunk-local span.
206
+ - `SeamRef` _class_ — A source-coordinate audio span across one fine-spine boundary (the g/G
207
+ - `SpineView` _class_ — One Source's effective correction spine, cursor-windowed for the TUI.
208
+ - `list_sources` _function_ — Enumerate the graph's Source nodes (the discovery corpus, 2ce81638).
209
+ - `load_source_slice` _function_ — Decode a source-coordinate slice of the ORIGINAL media to playable samples.
210
+ - `match_sources` _function_ — The --source selector (pure; shared by direct open and the picker's seed).
211
+ - `neighbor_word_bound` _function_ — The adjacent word's FA boundary facing an overlay span (pure).
212
+ - `open_stack` _function_ — Bootstrap the graph capability stack, resolving the db path (2ce81638).
213
+ - `parse_entity_input` _function_ — Parse the new-speaker editor line (pure). A leading `?` marks the entity
214
+ - `parse_mark_input` _function_ — Parse the M-editor mark grammar (pure; the DEC 2a231843 TUI gesture).
215
+ - `plan_boundary_shift` _function_ — Plan a ONE-WORD boundary shift (the [ / ] gesture unit).
216
+ - `plan_chunk_insert` _function_ — Plan a chunk insertion into the seam after the cursor (the i gesture unit; pure).
217
+ - `plan_chunk_split` _function_ — Plan a chunk split at a caret position (the S gesture unit; pure).
218
+ - `plan_gate` _function_ — Plan an extraction-gate assertion (the F gesture unit; pure — DEC 8e05b87b).
219
+ - `plan_split_rows` _function_ — Place speaker-split boundaries on a destination spine (pure) — the
220
+ - `plan_time_nudge` _function_ — Plan a boundary-time nudge (the ,/. and </> gesture unit; pure).
221
+ - `resolve_mark_class_token` _function_ — Resolve a leading digit token to its menu class (the M picker; pure).
222
+ - `segment_word_tokens` _function_ — Tokenize a segment's text into words WITH character offsets (pure).
223
+ - `snap_word_span` _function_ — Derive a word range's TIME span from FA word timestamps (pure; fc42614d).
224
+ - `source_status` _function_ — Correction-status-at-a-glance for one Source (the picker's detail row).
225
+ - `split_donors` _function_ — The SPEAKER-SPLIT layer of a spine (pure) — the DoD rider 54aac7d3 on
226
+
227
+ ### `cjm_transcript_correction_core.state`
228
+
229
+ - `load_tui_state` _function_ — Read the per-graph TUI sidecar state (last-focused positions).
230
+ - `save_tui_state` _function_ — Merge one source's view state into the sidecar state file.
231
+ - `selector_for_spine` _function_ — The selector value a picker choice persists (pure): the full skeleton
232
+ - `spine_label` _function_ — One picker row's config summary for a skeleton spine (pure).
233
+
234
+ ### `cjm_transcript_correction_core.strata`
235
+
236
+ - `active_strata` _function_ — The live strata: stratum corrections neither superseded (reclassified /
237
+ - `bench_filter_proposals` _function_ — Derive the filtering verdicts (DEC 8e05b87b, the bench_event_proposals
238
+ - `build_filter_pack` _function_ — Build the proposer's input: one source window's text-bearing effective
239
+ - `exclude_strata` _function_ — The per-consumer filtered projection (DEC 9d4c0a38): "filtered" is a
240
+ - `load_filter_proposal_sets` _function_ — Every filtering proposal set for a source (and optionally one spine),
241
+ - `new_pack_id` _function_ — Generate a unique, sortable pack id.
242
+ - `pack_digest` _function_ — Digest the READ content (source binding + window + numbered segments) —
243
+ - `pending_filter_proposals` _function_ — The headless worklist: proposals with NO live stratum carrying their id and
244
+ - `proposals_from_rows` _function_ — Resolve validated rows to proposal-set rows: proposal id, category, source
245
+ - `render_filter_pack` _function_ — Render a pack as the brief a proposer reads: identity + window, the class
246
+ - `strata_index` _function_ — Segment-keyed view of the live strata (the consumer query's index).
247
+ - `validate_proposal_rows` _function_ — Validate + normalize proposer rows against their pack — loud on the first
248
+ - `write_filter_propset` _function_ — Write one filtering proposal set: `<out_root>/<set_id>/manifest.json` +
249
+
149
250
  ## Dependencies
150
251
 
151
- **Depends on:** `cjm-context-graph-layer`, `cjm-context-graph-primitives`, `cjm-substrate`, `cjm-transcript-graph-schema`
152
- **Used by:** `cjm-transcript-correction-tui`, `cjm-workflow-hub-tui`
252
+ **Depends on:** `cjm-capability-primitives`, `cjm-context-graph-layer`, `cjm-context-graph-primitives`, `cjm-substrate`, `cjm-transcript-graph-schema`, `numpy`
253
+ **Used by:** `cjm-transcript-correction-qt`, `cjm-transcript-correction-tui`, `cjm-transcription-core`, `cjm-workflow-hub-qt`, `cjm-workflow-hub-tui`
@@ -6,40 +6,68 @@ A frontend-agnostic core for the transcript correction workflow — the first do
6
6
 
7
7
  ## Modules
8
8
 
9
+ - **`cjm_transcript_correction_core.__init__`**
9
10
  - **`cjm_transcript_correction_core.cli`** — The CLI driver — the correction core's first (and currently only) frontend. run <decomp-manifest> corrects the committed spine in the decomp graph DB, pointing the graph worker at that shared DB via load-time config, with optional session resume/reopen; review runs the interactive text-correction loop (the cross-transcriber diff is intra-graph since stage 5).
10
11
  - **`cjm_transcript_correction_core.graph`** — The correction overlay's graph I/O: targeted (scale-shaped) reads of a committed spine via the graph-storage query action, construction of Correction / CorrectionSession nodes + CORRECTS / SUPERSEDES / DERIVED_FROM / REVIEWED edges, the in-core effective-spine projection (layer-0 + applied corrections), and commit through the job queue. Hand-rolled (revolution-1) = direct CR-18 spec material; append-only on layer-0 (never update/delete a Segment).
11
12
  - **`cjm_transcript_correction_core.journal`** — Live append-through for the correction verbs — the workflow journal's domain half.
13
+ - **`cjm_transcript_correction_core.launch`** — The shared launch surface every correction shell drives through: the
12
14
  - **`cjm_transcript_correction_core.models`** — Overlay data shapes for the transcript-correction workflow: the Correction / CorrectionSession graph nodes + their relation registry, the read view of a committed spine segment, the worklist item, run configuration, and the correction run manifest (proto-bundle that chains decomp -> correction).
13
15
  - **`cjm_transcript_correction_core.pipeline`** — The headless correction workflow: load a decomp run manifest, resolve the shared graph DB, start/resume/reopen a CorrectionSession, recompute the worklist from deterministic signals + persisted review state, run the D14 empty-segment prune (first operation), and record a chainable correction run manifest — with a cheapest-form HITL approval seam.
14
- - **`cjm_transcript_correction_core.signals`** — Pure deterministic Tier-1 signal functions (no capability calls): empty-segment detection, bidirectional boundary punctuation/capitalization heuristics, forced-alignment coverage flags, positional cross-transcriber diff, and phonetic + edit-distance variant clustering. The worklist is recomputed from these each session; revolution-1 builds ZERO new capabilities.
16
+ - **`cjm_transcript_correction_core.signals`** — Pure deterministic Tier-1 signal functions (no capability calls): empty-segment detection, bidirectional boundary punctuation/capitalization heuristics, forced-alignment coverage flags, positional cross-transcriber diff, phonetic + edit-distance variant clustering, and the event-proposal overlay (leg 4: the finetuned detector's spans anchored onto the spine). The worklist is recomputed from these each session; revolution-1 builds ZERO new capabilities.
17
+ - **`cjm_transcript_correction_core.spine`**
18
+ - **`cjm_transcript_correction_core.state`** — Sidecar view-state + spine-picker helpers — the correction TUI's pure
19
+ - **`cjm_transcript_correction_core.strata`** — Strata — the filtering lane's domain half (DECs 304fd984 + 9d4c0a38; work items
15
20
 
16
21
  ## API
17
22
 
18
23
  ### `cjm_transcript_correction_core.cli`
19
24
 
25
+ - `bench_command` _function_ — Execute the `bench` subcommand: the reserved-tail verdict join.
20
26
  - `build_parser` _function_ — Build the CLI parser (subcommands: run, review).
27
+ - `commit_wordless_transfer` _function_ — COMMIT a planned transfer — the engine's second half. One
28
+ - `export_command` _function_ — Execute `export-wordless-propset`: write one spine's effective wordless
29
+ - `extract_command` _function_ — Execute the `extract` subcommand: fold the gated overlay into a manifested dataset.
30
+ - `filter_confirm_command` _function_ — Execute `filter-confirm`: the HEADLESS HITL worklist (bc8dbbdd pass-1
31
+ - `filter_ingest_command` _function_ — Execute `filter-ingest`: validate proposer rows against their pack and
32
+ - `filter_pack_command` _function_ — Execute `filter-pack`: write one spine window's effective text-bearing
33
+ - `gate_command` _function_ — Execute the `gate` subcommand: show or assert per-spine extraction gates.
21
34
  - `load_capabilities` _function_ — Discover manifests + load each capability, passing per-capability config (CR-2 caller-wins).
22
35
  - `main` _function_ — CLI entry point (console script: `cjm-transcript-correction-core`).
36
+ - `overlay_event_rows` _function_ — Overlay span records -> dataset event rows for ONE spine (pure).
37
+ - `plan_transfer_rows` _function_ — Place wordless donors on the destination (pure) — the event half of
38
+ - `plan_wordless_export` _function_ — PLAN an export (reads only) — the `export-wordless-propset` engine's
39
+ - `plan_wordless_transfer` _function_ — PLAN a wordless transfer (reads only) — the `transfer-wordless`
40
+ - `resolve_source_node` _function_ — Resolve the --source selector the respine verbs share: exactly ONE
23
41
  - `review_command` _function_ — Execute the `review` subcommand: interactive text corrections over the flagged worklist.
24
42
  - `run_command` _function_ — Execute the `run` subcommand: correct a decomp manifest's committed spine.
43
+ - `run_extract` _function_ — The extract fold on an ALREADY-OPEN graph seat (flywheel build leg 2,
44
+ - `scan_command` _function_ — Execute `scan-mishomed`: flag authoritative FA words stranded outside
25
45
  - `stats_command` _function_ — Execute the `stats` subcommand: flywheel accounting over the shared graph.
46
+ - `transfer_command` _function_ — Execute `transfer-wordless`: replay wordless event inserts (and speaker-
47
+ - `wordless_donors` _function_ — The EFFECTIVE wordless layer of a spine: labeled, effectively wordless
48
+ - `write_wordless_propset` _function_ — WRITE a planned export as a proposal set — the engine's write half.
26
49
 
27
50
  ### `cjm_transcript_correction_core.graph`
28
51
 
29
52
  - `active_corrections` _function_ — Filter to the effective correction set (the layer's resolve_active over a read superseded set).
30
53
  - `active_speaker_assignments` _function_ — Project the ACTIVE speaker assignment per segment (latest-wins).
54
+ - `active_speech_overlays` _function_ — The surviving speech-overlay corrections (supersession applied; pure).
31
55
  - `aggregate_session_purposes` _function_ — Fold sessions into a per-source purpose mix (pure; d915d545 picker rung).
32
56
  - `apply_chunk_inserts` _function_ — Synthesize inserted chunks into the effective spine (DEC 3d3fa2a8).
33
57
  - `apply_time_nudges` _function_ — Apply timing corrections onto segment times (latest-wins per edge).
58
+ - `bench_event_proposals` _function_ — The reserved-tail bench join (leg 4, DECs 8e05b87b + 8cf12c22) — pure.
34
59
  - `build_boundary_shift_correction` _function_ — Build a grouping Correction that moves text across one segment boundary.
35
60
  - `build_chunk_insert_correction` _function_ — Build an insertion Correction that adds a chunk the skeleton never cut (DEC 3d3fa2a8).
36
61
  - `build_chunk_split_corrections` _function_ — Compose a chunk SPLIT from the EXISTING verbs (work item 99c1d2ba) — no
37
62
  - `build_correction_node` _function_ — Construct a Correction overlay node (pure; commit happens separately).
63
+ - `build_extraction_gate_assertion` _function_ — Build one extraction-gate ASSERTION (DEC 8e05b87b — flywheel build leg 1).
38
64
  - `build_mark_correction` _function_ — Build a NON-MUTATING mark Correction (DEC 2a231843: routed attention).
39
65
  - `build_prune_amendment` _function_ — Build a grouping Correction that supersedes a prune with a REDUCED set (unprune).
40
66
  - `build_prune_correction` _function_ — Build one batch grouping Correction that prunes empty segments (D14).
41
67
  - `build_reject_review` _function_ — Build a review Correction that REJECTS a prior correction (reject-as-supersede).
42
68
  - `build_speaker_assign_correction` _function_ — Build a speaker Correction — the assignment op envelope (DEC d6df3a8e).
69
+ - `build_speech_overlay_correction` _function_ — Build a NON-MUTATING speech-overlay Correction (check fc42614d, DEC 4e05a066).
70
+ - `build_stratum_correction` _function_ — Build a NON-MUTATING stratum Correction (DECs 304fd984 + 9d4c0a38: the
43
71
  - `build_text_correction` _function_ — Build a text_content Correction + its CORRECTS (+ optional SUPERSEDES) edges.
44
72
  - `build_time_nudge_correction` _function_ — Build a timing Correction that nudges segment boundary TIMES (node + CORRECTS edges).
45
73
  - `commit_boundary_shift_correction` _function_ — Commit a boundary-shift correction (node + CORRECTS x2 [+ SUPERSEDES]) + REVIEWED markers on both segments.
@@ -47,41 +75,55 @@ A frontend-agnostic core for the transcript correction workflow — the first do
47
75
  - `commit_chunk_insert_removal` _function_ — Remove an inserted chunk WITHOUT touching layer-0 (reject-as-supersede).
48
76
  - `commit_chunk_split_correction` _function_ — Commit a chunk split: three composed nodes in ONE atomic batch + ONE journal op.
49
77
  - `commit_chunk_split_removal` _function_ — UNSPLIT: remove a split's right half AND its whole group (one review
78
+ - `commit_extraction_gate` _function_ — Commit one extraction-gate assertion (node + GATES edge) — the journaled
50
79
  - `commit_mark_correction` _function_ — Commit a mark (node + CORRECTS per anchored segment [+ SUPERSEDES]).
51
80
  - `commit_mark_dismissal` _function_ — Dismiss an open mark WITHOUT a correction (reject-as-supersede).
52
81
  - `commit_nodes_edges` _function_ — Commit overlay nodes/edges through the layer's idempotent extend_graph.
53
82
  - `commit_prune_amendment` _function_ — Commit an unprune amendment (node + DERIVED_FROM edges + SUPERSEDES).
54
83
  - `commit_speaker_assign_correction` _function_ — Commit a speaker assignment (node + CORRECTS per segment + ASSIGNS).
55
84
  - `commit_speaker_entity` _function_ — Mint a source-spanning Entity into the shared registry (DEC 4ec6a49c).
85
+ - `commit_speech_overlay_correction` _function_ — Commit a speech overlay (node + CORRECTS [+ SUPERSEDES]).
86
+ - `commit_speech_overlay_removal` _function_ — Remove a speech overlay WITHOUT a replacement (reject-as-supersede).
87
+ - `commit_stratum_correction` _function_ — Commit a stratum (node + CORRECTS per covered segment [+ SUPERSEDES]).
88
+ - `commit_stratum_retraction` _function_ — Retract a live stratum WITHOUT replacing it (reject-as-supersede, the
56
89
  - `commit_text_correction` _function_ — Commit a text_content correction (node + CORRECTS [+ SUPERSEDES]) + a REVIEWED marker.
57
90
  - `commit_time_nudge_correction` _function_ — Commit a time-nudge correction (node + CORRECTS per touched segment).
58
91
  - `correction_stats` _function_ — Fold one Source's ACTIVE overlay into flywheel-accounting counts (pure).
59
92
  - `corrections_to_edits` _function_ — Map this core's Correction payloads onto the layer's spine-edit vocabulary.
60
93
  - `count_source_segments` _function_ — Count a Source's segments server-side under its chosen rendition + skeleton (typed count mode).
94
+ - `extract_spine_dataset` _function_ — Fold ONE spine's overlay into its v1 insert-span dataset slice (pure).
95
+ - `fa_words_for_transcript` _function_ — One transcript's FA words in source coordinates (the scan-mishomed join,
61
96
  - `find_active_text_correction` _function_ — Single-segment convenience over the batch read (cross-session; latest wins).
62
97
  - `find_active_text_corrections_batch` _function_ — Active text corrections for MANY segments in TWO round-trips (C17).
63
98
  - `find_chunk_split_group` _function_ — Resolve a split right-half's GROUP — the ac84360a group marker cashed in.
64
99
  - `find_corrections_for_session` _function_ — List corrections recorded in a session (typed property filter).
65
100
  - `find_prior_corrections_by_hash` _function_ — Cross-transcript correction-cache lookup (targeted; the graph IS the lexicon).
66
101
  - `get_session` _function_ — Fetch a CorrectionSession node by id (resume/reopen) — typed get, dict shape preserved.
102
+ - `labeled_insert_spans` _function_ — Fold the ACTIVE chunk inserts into span records with op-chain provenance (pure).
103
+ - `latest_extraction_gates` _function_ — Fold gate assertions into the live per-spine gate state (pure; latest-wins).
67
104
  - `list_source_spines` _function_ — The SPINES coexisting under a Source's chosen rendition (DEC f1024568).
68
105
  - `list_speaker_entities` _function_ — Read the source-spanning entity registry (the picker's registry tier).
69
106
  - `load_empty_segments` _function_ — Load ONLY a Source's empty-text segments under its chosen rendition (D14 prune).
107
+ - `load_extraction_gates` _function_ — Read one Source's live per-spine extraction gates (typed property filter).
70
108
  - `load_review_markers` _function_ — Load a session's review markers (typed edge projection over REVIEWED edges).
71
109
  - `load_source_corrections` _function_ — Load every Correction targeting a Source (across sessions) + the superseded-id set.
72
110
  - `load_source_segments` _function_ — Load a Source's fine Segment spine under its chosen rendition + skeleton (typed query surface).
73
111
  - `load_variant_texts` _function_ — Resolve per-transcriber chunk texts from the segments' CharSlice refs.
74
112
  - `mark_anchor_segments` _function_ — Validate a mark anchor and list the Segment ids it touches.
113
+ - `negative_regions` _function_ — Complement the accounted spans below the watermark (pure; DEC 8e05b87b).
75
114
  - `open_marks` _function_ — Filter to the OPEN marks — the pass-2 worklist ('query open marks, walk them').
76
115
  - `project_effective_spine` _function_ — Project the effective spine = layer-0 + applied corrections.
77
116
  - `reanchor_span` _function_ — Re-locate a span anchor in text that may have been edited since mark time.
78
117
  - `record_review_markers` _function_ — Persist per-(session, segment) review markers as REVIEWED edges.
79
118
  - `rename_speaker_entity` _function_ — Rename an Entity on its STABLE id — identification IS a rename (DEC 484e2d74).
119
+ - `reorder_gap_inserts` _function_ — Restore TIME order among stacked inserts after the nudge stage
80
120
  - `resolve_source_renditions` _function_ — Pick the AudioRendition set whose fine Segment spine correction operates on.
81
121
  - `session_purposes_by_source` _function_ — Read every CorrectionSession once and fold the per-source purpose mix.
82
122
  - `set_session_purpose` _function_ — Update a session's purpose + updated_at (the test-session hygiene tag, DEC c86714a4).
83
123
  - `set_session_status` _function_ — Update a session's status + updated_at.
124
+ - `skeleton_hash_for` _function_ — Resolve a skeleton selector to the chosen spine's HASH (pure) — the gate's
84
125
  - `source_audio_segment_ids` _function_ — The Source's coarse spine (one small typed read; ordered by index).
126
+ - `speech_overlay_spans` _function_ — Fold the ACTIVE speech overlays into extraction-facing span records (pure).
85
127
  - `spine_where_for` _function_ — Resolve a skeleton selector against the observed spine set (pure).
86
128
  - `start_session` _function_ — Create + commit a new CorrectionSession node.
87
129
  - `submit_and_wait` _function_ — Submit one capability job, wait for it, return its result (raise on failure).
@@ -92,6 +134,11 @@ A frontend-agnostic core for the transcript correction workflow — the first do
92
134
  - `journal_correction_op` _function_ — Append one correction op — envelope + semantic args + the EXACT wires committed.
93
135
  - `segment_anchor` _function_ — The run-independent anchor stamped on every correction op (DEC ccbab9f5 point 5).
94
136
 
137
+ ### `cjm_transcript_correction_core.launch`
138
+
139
+ - `build_parser` _function_ — The TUI driver's argument surface (mirrors correction-core's run/review args).
140
+ - `resolve_settings` _function_ — Resolve the launch settings every shell shares (5daadfc4 workspace
141
+
95
142
  ### `cjm_transcript_correction_core.models`
96
143
 
97
144
  - `Correction` _class_ — A single non-destructive correction over the committed spine (overlay node).
@@ -99,9 +146,12 @@ A frontend-agnostic core for the transcript correction workflow — the first do
99
146
  - `CorrectionManifest` _class_ — Durable record of one correction run (proto-bundle; chainable, CR-20).
100
147
  - `CorrectionRelations` _class_ — Registry of edge types the correction overlay adds to the spine graph.
101
148
  - `CorrectionSession` _class_ — A resumable, reopen-able correction review over one or more sources.
149
+ - `DatasetManifest` _class_ — Durable record of one dataset extraction (chainable; DEC 16159e09).
102
150
  - `Entity` _class_ — A source-spanning identity in the shared entity substrate (DEC 4ec6a49c).
151
+ - `ExtractionGate` _class_ — One per-spine extraction-gate ASSERTION (DEC 8e05b87b — flywheel build leg 1).
103
152
  - `SpineSegment` _class_ — A committed layer-0 Segment loaded from the graph (read view).
104
153
  - `WorklistItem` _class_ — One spine segment surfaced for review, with its deterministic Tier-1 flags.
154
+ - `new_dataset_id` _function_ — Generate a unique, sortable dataset id (the new_run_id pattern, dataset kind).
105
155
  - `new_run_id` _function_ — Generate a unique, sortable correction run id.
106
156
 
107
157
  ### `cjm_transcript_correction_core.pipeline`
@@ -122,13 +172,62 @@ A frontend-agnostic core for the transcript correction workflow — the first do
122
172
  - `cluster_variants` _function_ — Cluster word variants by phonetic key + edit distance (fix-one-fix-all).
123
173
  - `compute_signal_flags` _function_ — Combine all deterministic Tier-1 signals into per-segment flags.
124
174
  - `detect_empty_segments` _function_ — Find empty-text segments (silence VAD chunks with no aligned words; decomp D14).
175
+ - `event_span_proposals` _function_ — Anchor pending event proposals onto the spine — the propose lane's paint.
125
176
  - `fa_coverage_flags` _function_ — Flag segments whose forced-alignment coverage looks suspect (Tier-1).
126
177
  - `levenshtein` _function_ — Levenshtein edit distance (pure, in-core; variant-clustering primitive).
178
+ - `load_event_proposal_set` _function_ — Find the latest proposal set for a source (the turns-artifact discovery
127
179
  - `phonetic_key` _function_ — Compute a coarse phonetic key for a word (groups like-sounding variants).
128
180
  - `speaker_turn_proposals` _function_ — Dominant diarization cluster per segment — the assign lane's proposal paint.
129
181
  - `variant_divergence` _function_ — Within-segment cross-transcriber divergence (stage 5: intra-graph).
130
182
 
183
+ ### `cjm_transcript_correction_core.spine`
184
+
185
+ - `ChunkRef` _class_ — Where one Segment's VAD-chunk audio lives: the model-input WAV + the chunk-local span.
186
+ - `SeamRef` _class_ — A source-coordinate audio span across one fine-spine boundary (the g/G
187
+ - `SpineView` _class_ — One Source's effective correction spine, cursor-windowed for the TUI.
188
+ - `list_sources` _function_ — Enumerate the graph's Source nodes (the discovery corpus, 2ce81638).
189
+ - `load_source_slice` _function_ — Decode a source-coordinate slice of the ORIGINAL media to playable samples.
190
+ - `match_sources` _function_ — The --source selector (pure; shared by direct open and the picker's seed).
191
+ - `neighbor_word_bound` _function_ — The adjacent word's FA boundary facing an overlay span (pure).
192
+ - `open_stack` _function_ — Bootstrap the graph capability stack, resolving the db path (2ce81638).
193
+ - `parse_entity_input` _function_ — Parse the new-speaker editor line (pure). A leading `?` marks the entity
194
+ - `parse_mark_input` _function_ — Parse the M-editor mark grammar (pure; the DEC 2a231843 TUI gesture).
195
+ - `plan_boundary_shift` _function_ — Plan a ONE-WORD boundary shift (the [ / ] gesture unit).
196
+ - `plan_chunk_insert` _function_ — Plan a chunk insertion into the seam after the cursor (the i gesture unit; pure).
197
+ - `plan_chunk_split` _function_ — Plan a chunk split at a caret position (the S gesture unit; pure).
198
+ - `plan_gate` _function_ — Plan an extraction-gate assertion (the F gesture unit; pure — DEC 8e05b87b).
199
+ - `plan_split_rows` _function_ — Place speaker-split boundaries on a destination spine (pure) — the
200
+ - `plan_time_nudge` _function_ — Plan a boundary-time nudge (the ,/. and </> gesture unit; pure).
201
+ - `resolve_mark_class_token` _function_ — Resolve a leading digit token to its menu class (the M picker; pure).
202
+ - `segment_word_tokens` _function_ — Tokenize a segment's text into words WITH character offsets (pure).
203
+ - `snap_word_span` _function_ — Derive a word range's TIME span from FA word timestamps (pure; fc42614d).
204
+ - `source_status` _function_ — Correction-status-at-a-glance for one Source (the picker's detail row).
205
+ - `split_donors` _function_ — The SPEAKER-SPLIT layer of a spine (pure) — the DoD rider 54aac7d3 on
206
+
207
+ ### `cjm_transcript_correction_core.state`
208
+
209
+ - `load_tui_state` _function_ — Read the per-graph TUI sidecar state (last-focused positions).
210
+ - `save_tui_state` _function_ — Merge one source's view state into the sidecar state file.
211
+ - `selector_for_spine` _function_ — The selector value a picker choice persists (pure): the full skeleton
212
+ - `spine_label` _function_ — One picker row's config summary for a skeleton spine (pure).
213
+
214
+ ### `cjm_transcript_correction_core.strata`
215
+
216
+ - `active_strata` _function_ — The live strata: stratum corrections neither superseded (reclassified /
217
+ - `bench_filter_proposals` _function_ — Derive the filtering verdicts (DEC 8e05b87b, the bench_event_proposals
218
+ - `build_filter_pack` _function_ — Build the proposer's input: one source window's text-bearing effective
219
+ - `exclude_strata` _function_ — The per-consumer filtered projection (DEC 9d4c0a38): "filtered" is a
220
+ - `load_filter_proposal_sets` _function_ — Every filtering proposal set for a source (and optionally one spine),
221
+ - `new_pack_id` _function_ — Generate a unique, sortable pack id.
222
+ - `pack_digest` _function_ — Digest the READ content (source binding + window + numbered segments) —
223
+ - `pending_filter_proposals` _function_ — The headless worklist: proposals with NO live stratum carrying their id and
224
+ - `proposals_from_rows` _function_ — Resolve validated rows to proposal-set rows: proposal id, category, source
225
+ - `render_filter_pack` _function_ — Render a pack as the brief a proposer reads: identity + window, the class
226
+ - `strata_index` _function_ — Segment-keyed view of the live strata (the consumer query's index).
227
+ - `validate_proposal_rows` _function_ — Validate + normalize proposer rows against their pack — loud on the first
228
+ - `write_filter_propset` _function_ — Write one filtering proposal set: `<out_root>/<set_id>/manifest.json` +
229
+
131
230
  ## Dependencies
132
231
 
133
- **Depends on:** `cjm-context-graph-layer`, `cjm-context-graph-primitives`, `cjm-substrate`, `cjm-transcript-graph-schema`
134
- **Used by:** `cjm-transcript-correction-tui`, `cjm-workflow-hub-tui`
232
+ **Depends on:** `cjm-capability-primitives`, `cjm-context-graph-layer`, `cjm-context-graph-primitives`, `cjm-substrate`, `cjm-transcript-graph-schema`, `numpy`
233
+ **Used by:** `cjm-transcript-correction-qt`, `cjm-transcript-correction-tui`, `cjm-transcription-core`, `cjm-workflow-hub-qt`, `cjm-workflow-hub-tui`