Skip to content

Add first usable transcription CLI slice - #7

Merged
szymoniwacz merged 4 commits into
mainfrom
feature-first-transcription-slice
Aug 21, 2026
Merged

szymoniwacz merged 4 commits into
mainfrom
feature-first-transcription-slice

Conversation

@szymoniwacz

@szymoniwacz szymoniwacz commented Aug 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • add the installable Ruby 3.3 gem and meetxt executable
  • implement meetxt transcribe <audio-file> from local validation through one OpenAI request to atomic Markdown output
  • isolate whisper-1 verbose JSON segment handling in the OpenAI adapter, with SDK retries/logging disabled and sanitized error mapping
  • add RSpec, RuboCop, GitHub Actions, and the real setup/run/test/lint/build documentation

Closes #6

Scope check

This is the first file-based transcription slice only. It does not add recording, diarization, summaries, integrations, retries, cloud storage, accounts, GUI behavior, or Linux-specific support.

Validation

  • bundle exec rake — 37 examples, 0 failures; 22 files linted with no offenses
  • gem build meetxt.gemspec — built meetxt-0.1.0.gem
  • bash tests/test-adapter.sh — passed
  • bash scripts/check-workflow-leak.sh — clean
  • bash scripts/ai-workflow-doctor.sh — ready
  • git diff --check main...HEAD — clean

Automated validation makes no paid OpenAI request. A manual smoke test exposed the verbose-response SDK shape mismatch addressed in the latest commit; the smoke test must be rerun manually.

Review notes

Independent integrated review identified SDK conversion-error sanitization and missing CLI validation/write-failure coverage. Both were fixed. A follow-up review of the real-response parsing fix was also clean: openai-ruby 0.80.0 preserves verbose-only fields behind its public raw-key accessor, while its multipart encoder correctly sends the bracketed timestamp array.

Diff-risk: Medium
Signals: architecture/API boundary, cross-layer application/CI/docs change, security-sensitive external upload and secret handling, new OpenAI SDK dependency, CI workflow change
Evidence: 33 scoped files establish the first complete CLI slice; provider behavior is isolated in lib/meetxt/providers/openai_adapter.rb; 37 mocked/local examples cover request count, SDK response coercion and multipart encoding, sanitization, validation, rendering, CLI behavior, and atomic no-overwrite output
Reviewer focus: OpenAI request/response mapping and error sanitization; hard-link-based atomic publication; CLI exit/output behavior
Required action: Human review and green CI before merge

Limitations and follow-ups

  • Real OpenAI response/upload behavior is not exercised in CI; the documented smoke test is manual and paid and must be rerun after this fix.
  • The MVP intentionally pins whisper-1 with verbose_json segment timestamps behind the adapter boundary.
  • Manual RubyGems publishing and rollback remain deferred until release preparation.

@szymoniwacz
szymoniwacz merged commit 7f1dbcf into main Aug 21, 2026
6 checks passed
@szymoniwacz
szymoniwacz deleted the feature-first-transcription-slice branch August 21, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build first usable MeetXT transcription slice

1 participant