Add a reusable native Ruby archive transcript state module for Jekyll archive data. The archive has migrated from legacy transcript content to structured turns, but callers still need one conservative state interface that treats either content or structured turns as transcript text. Scope is limited to src/generators/ and corresponding specs under spec/src/generators/. Do not edit bin scripts or Liquid templates.
Generators::ArchiveState under src/generators/archive_state.rb with a small read-only API for path/id loading, transcript presence/format, text/word count, validation, enrichment, indexing, and summary-friendly structured output.spec/src/generators/archive_state_spec.rb for content-only, turns-only, missing, invalid YAML, validation_error, enriched, and indexed cases.bundle exec rspec spec/src/generators/core/yaml_io_spec.rb spec/src/generators/archive_state_spec.rb.
Implemented Generators::ArchiveState as a read-only transcript state wrapper with for_path, for_id, and from_data entry points. The module treats legacy content and structured turns as transcript text, exposes load/parse status and invalid YAML errors, keeps validated_at separate from validation_error, and reports enriched_at/indexed_at flags. Targeted specs passed: bundle exec rspec spec/src/generators/core/yaml_io_spec.rb spec/src/generators/archive_state_spec.rb (10 examples, 0 failures).
Implemented the core archive transcript state module only.
Changed files:
src/generators/archive_state.rbspec/src/generators/archive_state_spec.rbSummary:
Generators::ArchiveState.for_path, .for_id, and .from_data, returning a TranscriptState object.has_transcript?, transcript_format, text, word_count, validated?, validation_error, enriched?, indexed?, turn_count, speakers, and to_h.Tests:
bundle exec rspec spec/src/generators/core/yaml_io_spec.rb spec/src/generators/archive_state_spec.rb passed with 10 examples, 0 failures.Risks: