7.7 KiB
Roadmap: Transcript Artifact Naming
Status: Implemented
Problem
Narratio's built-in transcript artifact names and canonical paths currently mix operator-facing artifact meaning with historical stage and tool terminology:
narratio.transcript.mergedmaps totranscripts/merged.json.narratio.transcript.polishedmaps totranscripts/processed.json.narratio.transcript.fullmaps totranscripts/normalized.json.narratio.transcript.trimmedmaps totranscripts/trimmed.json.
This makes the public artifact surface harder to reason about. Operators see
full, normalized, processed, polished, merged, and trimmed used in
different places for the same transcript lineage.
The transcript source IDs, canonical paths, and manifest output kinds should use one vocabulary based on each transcript's role in the session artifact model.
Target Model
Built-in transcript artifacts should use these public source IDs, canonical paths, and manifest output kinds:
| Source ID | Canonical path | Output kind | Meaning |
|---|---|---|---|
narratio.transcript.base |
transcripts/base.json |
transcript_base |
First unified transcript produced by merging per-speaker raw transcripts. |
narratio.transcript.polished |
transcripts/polished.json |
transcript_polished |
Audita-polished transcript. |
narratio.transcript.final |
transcripts/final.json |
transcript_final |
Full final transcript after normalization. |
narratio.transcript.final_trimmed |
transcripts/final.trimmed.json |
transcript_final_trimmed |
Trimmed version of the final transcript. |
Stage names remain process-oriented and unchanged:
mergepolishnormalizetrim
Downstream adapter contracts also remain process-oriented. The rename changes Narratio's artifact model, canonical paths, config examples, archive promotion sources, lock sources, status output, and documentation. It should not rename the stages themselves or move external integration details into stage logic.
Compatibility Policy
This is a hard cutover.
After implementation, these old source IDs should be rejected:
narratio.transcript.mergednarratio.transcript.fullnarratio.transcript.trimmed
These old canonical paths should not be compatibility fallbacks:
transcripts/merged.jsontranscripts/processed.jsontranscripts/normalized.jsontranscripts/trimmed.json
Existing remote archives are not migrated automatically. Operators who want new promoted keys for old sessions should republish those sessions after updating configuration.
Implementation Stages
Stage 1: Centralize Transcript Artifact Naming
Status: Implemented
Consolidate transcript artifact source IDs, canonical paths, and output kinds in the artifact/path layer before changing runtime behavior.
Implementation requirements:
- Add or consolidate constants/helpers for built-in transcript source IDs.
- Add or consolidate constants/helpers for canonical transcript paths.
- Add or consolidate constants/helpers for transcript manifest output kinds.
- Keep source ID, path, and output-kind mappings in one registry or one obviously shared artifact model.
- Update artifact registry tests to prove the target mapping.
- Avoid changing stage output behavior in this stage unless the implementation is simpler and still reviewable.
Acceptance criteria:
- There is one clear source of truth for built-in transcript artifact names, paths, and output kinds.
- Tests prove the new target mapping in the artifact layer.
- No generic workflow abstraction is introduced.
Stage 2: Rename Runtime Outputs and Defaults
Status: Implemented
Switch runtime behavior to the new transcript artifact model.
Implementation requirements:
- Update
mergeto write and recordtranscripts/base.jsonwithtranscript_base. - Update
polishto write and recordtranscripts/polished.jsonwithtranscript_polished. - Update
normalizeto write and recordtranscripts/final.jsonwithtranscript_final. - Update
trimto write and recordtranscripts/final.trimmed.jsonwithtranscript_final_trimmed. - Update normalize and trim defaults to:
pipeline.normalize.output_path: transcripts/final.jsonpipeline.trim.output_path: transcripts/final.trimmed.json
- Update built-in artifact resolution, archive promotion destination derivation, archive locks, status output, artifact catalog output, previous-cache resolution, restore planning, and restore execution to use the new registry values.
- Ensure old source IDs fail config validation.
Acceptance criteria:
- New runs produce the target canonical transcript files.
- Manifest outputs use the target output kinds.
- Archive promotion and lock validation accept new source IDs and reject old source IDs.
- Status and artifact listing display new source IDs.
- Restore uses the new canonical paths and does not restore old transcript paths as canonical outputs.
Stage 3: Update Tests, Examples, and Current Documentation
Status: Implemented
Update all implemented-behavior references after the runtime cutover lands.
Implementation requirements:
- Update examples to use
narratio.transcript.final_trimmedandtranscripts/final.trimmed.jsonwhere trimmed final transcript is intended. - Update examples that refer to full final transcripts to use
narratio.transcript.finalandtranscripts/final.json. - Update
docs/config.md,docs/internal/artifacts.md, stage docs, CLI examples, operations examples, archive examples, lock examples, and status/artifact-list examples. - Add strict validation tests proving old source IDs are rejected.
- Mark roadmap stages implemented only after code, tests, examples, and current-behavior docs agree.
Acceptance criteria:
- Maintained examples load and validate.
- Current-behavior docs describe only implemented new names.
- Old names remain only in this roadmap as historical/planning context until this roadmap is retired or archived.
Test Guidance
Run focused tests while implementing:
go test ./internal/artifacts -vgo test ./internal/config -vgo test ./internal/stage -vgo test ./internal/app -v
Run full validation before finishing:
go test ./...
Run final searches:
- Old source IDs:
narratio.transcript.mergednarratio.transcript.fullnarratio.transcript.trimmed
- Old paths:
transcripts/merged.jsontranscripts/processed.jsontranscripts/normalized.jsontranscripts/trimmed.json
- Old output kinds:
transcript_mergedtranscript_processedtranscript_normalizedtranscript_trimmed
Expected remaining matches should be limited to this roadmap's historical/planning references until the roadmap is fully completed.
Architecture Guardrails
- Keep Narratio explicit and stage-driven; do not introduce a generic workflow or DAG abstraction.
- Keep path and artifact naming in centralized helpers rather than scattered string concatenation.
- Preserve manifest-driven resume behavior.
- Keep storage details behind storage adapters.
- Do not move Seriatim, Audita, or Scriptorium command details out of their adapter boundaries.
- Keep current-behavior documentation in sync only after implementation lands; planned behavior belongs in this roadmap until then.
Assumptions
- The cutover is intentionally not backward-compatible.
- Existing remote archive objects are not renamed or migrated automatically.
- Stage names and downstream adapter request field names remain unchanged.
- The term
baseis preferred overmergedfor the first unified transcript. - The term
finalis preferred overfullornormalizedfor the full final transcript. - The trimmed final path is
transcripts/final.trimmed.json.