Skip to content

Import Podcast Assistant into assistants/podcast #7

Closed

Description

@alexeygrigorev

Import Podcast Assistant into assistants/podcast

Status: done — import accepted; standalone Telegram credential smoke superseded/cancelled, not passed
Tags: migration, assistant, podcast, testing, P0
Depends on: None — #12 is complete
Blocks: None — #9 and #44 are complete; the implementation source required by #30/#31 was delivered

Final disposition

The Podcast Assistant source import is complete and accepted. The canonical in-repository module is assistants/podcast/; the transitional root copy is absent; the external source remained read-only; package metadata, documentation, ignore rules, import log, prompts/templates, fixtures, utilities, and tests were reconciled.

The previously open real-credential smoke for the imported assistant's standalone Telegram bot is cancelled as superseded, not passed. Telegram rollout is now owned by the shared conversational-agent work (#121 and #128). Closing this import issue does not assert that the old standalone bot was smoke-tested, that shared production Telegram rollout has passed, or that a shared Podcast execution capability exists. #128 explicitly keeps Podcast creation outside its MVP; any later Podcast execution must be separately implemented and accepted through its owning issue.

Completion evidence

  • assistants/podcast/ is the canonical imported module and there are not two active maintained copies.
  • The source boundary and import provenance are documented; the external source was not modified and is not a runtime dependency.
  • Sensitive/local outputs are ignored and the transitional local-storage boundary is documented.
  • Package resolution, knowledge-base utilities, Telegram text/status behavior, Heru progress behavior, and retry/resume behavior have automated coverage.
  • Tester re-review passed after retry/resume and root-command fixes: evidence.
  • Assistant-boundary re-review passed after automatic commit/push behavior was removed: evidence.
  • PM accepted the completed import: evidence.
  • CANCELLED / SUPERSEDED — NOT PASSED: standalone real Telegram credential smoke. Shared Telegram ingress and rollout belong to Consolidate private Telegram identity, text, voice, and photo input #121/Roll out and cut over the Telegram conversational MVP #128.

Historical acceptance scope

The completed import preserved the source assistant's code and tests sufficiently to make it available as a DataOps module. It did not make transitional local inbox/document/run storage into production artifact storage, and it did not establish production Podcast execution, production Telegram readiness, or permission for external writes.

Out of scope after closure

Activity

  1. added
    needs groomingRaw intake that needs PM grooming
    migrationImport or migration work
    assistantAssistant modules and jobs
    podcastPodcast workflow and assistant
    P0Must have
    and removed
    needs groomingRaw intake that needs PM grooming
    on Jun 27, 2026
  2. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    Software Engineer handoff for #7

    Summary:

    • Canonicalized Podcast Assistant under assistants/podcast/.
    • Removed the active root-level podcast-assistant/ copy instead of keeping a shim, so there is one maintained in-repo assistant location.
    • Reconciled the current local source content from ../podcast-assistant into the canonical path, including assistant code, tests, process docs, templates, knowledge-base data/docs, actual-question tooling, .env.example, and example .docx fixtures.
    • Updated package metadata and uv lockfile so the moved project resolves local Heru from ../../../heru relative to assistants/podcast/.
    • Updated README/setup docs and ignore rules for the canonical path and transitional local storage boundary.
    • Updated _docs/import-log.md with final destination, source state, exclusions, and validation results.
    • No commit made.

    Changed paths:

    • podcast-assistant/** moved to assistants/podcast/**.
    • assistants/podcast/.gitignore
    • assistants/podcast/README.md
    • assistants/podcast/pyproject.toml
    • assistants/podcast/uv.lock
    • assistants/podcast/process/podcast.md
    • assistants/podcast/scripts/search_podcast_kb.py
    • assistants/podcast/tests/test_search_podcast_kb.py
    • Added/reconciled from source under assistants/podcast/: .env.example, actual podcast data files, knowledge_base/actual_questions_analysis.md, knowledge_base/question_playbook.md, scripts/import_actual_podcast_questions.py, tests/test_import_actual_podcast_questions.py, and podcast_examples/Podcast/** fixtures.
    • _docs/import-log.md

    Tests and checks run:

    • uv lock --project assistants/podcast: passed.
    • cd assistants/podcast && uv run pytest: passed, 24 passed / 0 failed.
    • uv run --project /home/alexey/git/dataops/assistants/podcast --directory /home/alexey/git/dataops/assistants/podcast pytest: passed, 24 passed / 0 failed.
    • cd assistants/podcast && uv run python scripts/search_podcast_kb.py "AI agents evaluation": passed.
    • test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant: passed.
    • git diff --check: passed.

    Requested command caveat:

    • uv run --project assistants/podcast pytest from the repo root failed before running the assistant suite because pytest used the DataOps root config and collected unrelated root tests. Result: 4 collection errors from missing root-test dependencies frontmatter and playwright. The assistant suite itself passes from the assistant project root as shown above.

    Skipped / human checks:

    • [HUMAN] Telegram smoke test was not run. It requires real TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, and external Telegram delivery.
    • Live Groq transcription/image-description and real Heru engine processing were not run; unit tests cover mocked/local behavior and the package resolves the local Heru checkout.

    Source-boundary confirmation:

    • ../podcast-assistant was read only for this work.
    • Verified ../podcast-assistant exists and is not Git-backed: ../podcast-assistant/.git is absent.
    • Runtime/config paths now point to assistants/podcast/; the imported package does not rely on runtime reads from ../podcast-assistant.
    • Root-level podcast-assistant/ no longer exists in the DataOps checkout after the move.

    Acceptance criteria status:

    • assistants/podcast/ exists and is canonical: done.
    • Root podcast-assistant/ removed/reduced so there are not two active copies: done; removed, no shim kept.
    • Source boundary respected and no runtime dependency on ../podcast-assistant: done.
    • _docs/import-log.md updated with final destination, source path/state, copied paths, exclusions, and validations: done.
    • Sensitive/local-only files excluded: done via assistants/podcast/.gitignore for .env, .env.* except .env.example, .venv, caches, .tmp, heru_runs/, raw/used inbox contents, and generated documents.
    • Package metadata and uv config work from new location: done; lock resolves and tests pass from assistants/podcast/.
    • Existing assistant unit tests imported and pass: done, 24 passed / 0 failed from canonical package path.
    • Tests cover key preserved behavior: done at practical import level. Existing/imported tests cover Telegram text/status counts, Heru progress formatting, retry/resume behavior, and knowledge-base build/search utilities, plus actual-question utility behavior.
    • README/setup docs document env vars and local commands from assistants/podcast/: done.
    • Docs explain transitional storage boundary for local inbox/, documents/, and logs: done in README and import log.
    • Prompts/process instructions and guest-intake templates remain versioned/readable: done under assistants/podcast/process/ and assistants/podcast/templates/.
    • [HUMAN] real Telegram bot smoke test: not run; remains human-gated.

    Readiness:

    • Ready for Tester review. Main technical caveat is the repo-root uv run --project assistants/podcast pytest collection behavior; use cd assistants/podcast && uv run pytest or the absolute --project + --directory form to validate the assistant suite.
  3. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    ASSISTANT REVIEW FINDINGS for #7

    Reviewed from the assistant-boundary perspective. I did not modify files or commit.

    Finding

    • Uncontrolled external GitHub write path remains in live /process. assistants/podcast/process/podcast.md:51 instructs the Heru agent to commit results whenever the directory is a git repo, and assistants/podcast/main.py:497-498 then runs git push automatically when a commit hash is detected after /process. This means an allowed Telegram chat can trigger a real Heru run, local file changes, a commit, and a remote push from the assistant runtime. That conflicts with the issue/process boundary that real external writes should be human/integration-gated and that normal repo commits/pushes go through the DataOps review pipeline. Recommendation: remove auto-push for the imported DataOps module, or gate it behind an explicit opt-in env var/dry-run mode with tests and docs that make the default local-only.

    Passed boundary checks

    • Canonical path is assistants/podcast/; root podcast-assistant/ is absent in the worktree.
    • ../podcast-assistant remains outside runtime references in the imported assistant; boundary command passed: test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant.
    • Heru dependency path is explicit as ../../../heru in assistants/podcast/pyproject.toml and uv.lock; ../heru exists relative to the DataOps repo root.
    • README documents TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, GROQ_API_KEY, HERU_ENGINE, canonical path, and local run commands from assistants/podcast/.
    • Local runtime storage is documented as transitional in assistants/podcast/README.md:56-60 and ignored by assistants/podcast/.gitignore for .env*, .tmp/, .venv/, caches, heru_runs/, inbox/raw/*, inbox/used/*, and documents/* except .gitkeep placeholders.
    • Process prompt and guest-intake template remain readable/versioned at assistants/podcast/process/podcast.md and assistants/podcast/templates/podcast_guest_intake.md.
    • Secret scan found only placeholders/env-var reads for Telegram/Groq keys; no obvious committed API tokens or private keys.
    • Integration tests for real Heru engines are opt-in via PODCAST_ASSISTANT_INTEGRATION_ENGINES and skipped when unset.

    Verification run

    • Inspected the engineer handoff test results on this issue: assistant suite reported 24 passed / 0 failed from assistants/podcast/.
    • Ran focused current-state suite from assistants/podcast/ with bytecode/cache writes disabled:
      • PYTHONDONTWRITEBYTECODE=1 uv run pytest -p no:cacheprovider tests/test_main.py tests/test_heru_runner.py tests/test_session_retrier.py tests/test_search_podcast_kb.py tests/test_build_podcast_knowledge_base.py tests/test_import_actual_podcast_questions.py -q
      • Result: 24 passed in 0.25s.
    • Ran opt-in integration collection default:
      • PYTHONDONTWRITEBYTECODE=1 uv run pytest -p no:cacheprovider tests_integration -q
      • Result: 2 skipped in 0.08s.
  4. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    CHANGES REQUESTED

    Tester verification for #7 on 2026-06-27.

    Blocking findings:

    1. Retry/resume behavior is not actually covered by the imported unit tests. assistants/podcast/tests/test_session_retrier.py covers session-id lookup, non-Git commit lookup, and the first-run success path. It does not cover the key retry/resume behavior required by the acceptance criteria: first Heru run fails, a saved session id is used, HeruRunner is invoked again with session_id and the continuation prompt, Telegram gets the resume message, and no-session / max-retry failure paths behave correctly.

    2. The issue-listed command uv run --project assistants/podcast pytest still fails from the DataOps repo root before reaching a clean assistant-suite result. It uses the DataOps root pytest config, collects unrelated root tests, and errors on missing root dependencies frontmatter and playwright. The implementation handoff records this caveat, and the package-path forms below do pass. If the root --project form is intentionally unsupported, the issue/docs/import-log should not leave it looking like a normal validation command for the assistant suite.

    Passing evidence:

    • cd assistants/podcast && uv run pytest: PASS, 24 passed in 0.25s.
    • uv run --project /home/alexey/git/dataops/assistants/podcast --directory /home/alexey/git/dataops/assistants/podcast pytest: PASS, 24 passed in 0.23s.
    • cd assistants/podcast && uv run python scripts/search_podcast_kb.py "AI agents evaluation": PASS, returned episode, prep-question, and actual-transcript-question matches.
    • test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant: PASS.
    • git diff --check: PASS.

    Static/source-boundary checks:

    • assistants/podcast/ exists and is the canonical in-repo package location.
    • Root podcast-assistant/ is absent in the working tree.
    • rg found no runtime references from assistant code to ../podcast-assistant; those references are confined to README/import-log style documentation.
    • assistants/podcast/pyproject.toml resolves Heru from ../../../heru, and uv.lock matches that editable path.
    • assistants/podcast/.gitignore excludes .env, .env.* except .env.example, .venv, .pytest_cache, __pycache__, .tmp, heru_runs/, raw/used inbox contents, and generated documents; current inbox/ and documents/ tracked candidates are only .gitkeep placeholders.
    • README documents the required env vars: TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, GROQ_API_KEY, and HERU_ENGINE, plus local commands from assistants/podcast/ and the transitional storage boundary.
    • _docs/import-log.md records source path/state, final destination, copied path groups, exclusions, and validation results. It does not falsely claim the human Telegram smoke was run.

    Not run / still open:

    • [HUMAN] Telegram smoke remains open. I did not run real Telegram delivery or processing because it requires real bot credentials and external delivery.
    • No app suite run; this change is scoped to the assistant package and I found no app code changes.
  5. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    Software Engineer updated handoff for #7 after changes requested

    Summary of follow-up fixes:

    • Added focused retry/resume unit coverage in assistants/podcast/tests/test_session_retrier.py:
      • first Heru run fails, saved session id is reused, resume runner gets session_id and continuation prompt, Telegram gets the resume message, then success returns cleanly;
      • first run fails with no saved session id and returns the expected no-session error without sending a resume message;
      • repeated resume failures stop after MAX_RETRIES and return the final retry error.
    • Made the exact required command uv run --project assistants/podcast pytest pass from the DataOps repo root without changing root pytest config or weakening root tests. The assistant project now has a minimal build backend and package-local pytest entrypoint that routes no-arg assistant pytest runs to assistants/podcast/tests with the assistant config.
    • Removed the live /process auto-push path from assistants/podcast/main.py. It no longer imports or calls subprocess.run(["git", "push"], ...).
    • Updated assistants/podcast/process/podcast.md so Heru is instructed not to commit or push. Generated documents and moved inbox files stay as local working-tree changes for the DataOps review pipeline.
    • Added assistants/podcast/tests/test_main.py coverage proving /process reports a local commit hash without calling subprocess.run / push behavior by default.
    • Updated assistants/podcast/README.md and _docs/import-log.md with the no-push/local-review boundary and current validation results.
    • No commit made.

    Changed paths since the prior handoff include:

    • assistants/podcast/assistant_pytest.py
    • assistants/podcast/main.py
    • assistants/podcast/process/podcast.md
    • assistants/podcast/pyproject.toml
    • assistants/podcast/uv.lock
    • assistants/podcast/tests/test_session_retrier.py
    • assistants/podcast/tests/test_main.py
    • assistants/podcast/README.md
    • _docs/import-log.md

    The original #7 canonicalization changes are still present:

    • podcast-assistant/** moved to assistants/podcast/**.
    • Current source content from ../podcast-assistant reconciled into assistants/podcast/, including assistant code, tests, prompts/process docs, templates, knowledge-base data/docs, actual-question tooling, .env.example, and example .docx fixtures.

    Tests and checks run after the fixes:

    • uv lock --project assistants/podcast: passed.
    • uv run --project assistants/podcast pytest: passed, 28 passed / 0 failed.
    • cd assistants/podcast && uv run pytest: passed, 28 passed / 0 failed.
    • cd assistants/podcast && uv run pytest tests/test_session_retrier.py tests/test_main.py: passed, 12 passed / 0 failed.
    • cd assistants/podcast && uv run python scripts/search_podcast_kb.py "AI agents evaluation": passed, returned episode, prep-question, and actual-transcript-question matches.
    • test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant: passed.
    • git diff --check: passed.
    • Static scan: rg -n "git push|subprocess\.run|commit the result|commit.*push|No push was performed|Do not commit or push" assistants/podcast/main.py assistants/podcast/process/podcast.md assistants/podcast/tests assistants/podcast/README.md confirms the old push/commit instruction is gone and only the new no-push/default-local behavior remains.

    Skipped / human checks:

    • [HUMAN] Telegram smoke test was not run. It still requires real TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, and external Telegram delivery.
    • Live Groq transcription/image-description and real Heru engine processing were not run; the unit suite covers mocked/local behavior and the project resolves local Heru.

    Source-boundary confirmation:

    • ../podcast-assistant was not modified.
    • Verified ../podcast-assistant exists and is not Git-backed: ../podcast-assistant/.git is absent.
    • Root-level podcast-assistant/ is absent in the DataOps checkout.
    • Runtime/config paths point to assistants/podcast/; the imported package does not read from ../podcast-assistant at runtime.

    Per-acceptance-criterion status:

    • assistants/podcast/ exists and is canonical: done.
    • Root podcast-assistant/ removed/reduced so there are not two active copies: done; removed, no shim kept.
    • Source boundary respected and no runtime dependency on ../podcast-assistant: done.
    • _docs/import-log.md records final destination, source path/state, copied paths, exclusions, and validation: done and updated after follow-up fixes.
    • Sensitive/local-only files excluded: done via assistants/podcast/.gitignore for .env, .env.* except .env.example, .venv, caches, .tmp, heru_runs/, raw/used inbox contents, and generated documents.
    • Package metadata and uv configuration work from new location: done; exact uv run --project assistants/podcast pytest now passes from repo root.
    • Existing assistant unit tests imported and pass: done, 28 passed / 0 failed.
    • Tests cover key preserved behavior: done. Coverage now includes Telegram text/status and /process no-push behavior, Heru progress formatting, retry/resume success/no-session/max-retry paths, and knowledge-base build/search utilities.
    • README/setup docs document env vars and commands from assistants/podcast/: done.
    • Docs explain transitional storage boundary: done, including that live /process does not commit or push by default and generated files stay local for review.
    • Prompts/process instructions and guest-intake templates remain versioned/readable: done; process prompt now explicitly says not to commit or push.
    • [HUMAN] real Telegram bot smoke test: not run; remains human-gated.

    Readiness:

    • Ready for Tester re-review. Both prior blocking gaps are addressed: retry/resume unit coverage exists, and the exact root command uv run --project assistants/podcast pytest passes.
  6. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    TEST PASS

    Tester re-review for #7 after the Software Engineer follow-up fixes.

    Previous blockers are resolved:

    • Retry/resume unit coverage now exists and passes. assistants/podcast/tests/test_session_retrier.py covers first-run success, failed first run resuming with a saved session id, Telegram resume notification, no saved session id failure, and max-retry exhaustion.
    • The exact repo-root command now passes: uv run --project assistants/podcast pytest collected 28 assistant tests and passed.

    Verification rerun:

    • uv run --project assistants/podcast pytest: PASS, 28 passed in 0.26s.
    • cd assistants/podcast && uv run pytest: PASS, 28 passed in 0.27s.
    • cd assistants/podcast && uv run pytest tests/test_session_retrier.py tests/test_main.py: PASS, 12 passed in 0.26s.
    • uv run --project /home/alexey/git/dataops/assistants/podcast --directory /home/alexey/git/dataops/assistants/podcast pytest: PASS, 28 passed in 0.27s.
    • cd assistants/podcast && uv run python scripts/search_podcast_kb.py "AI agents evaluation": PASS, returned episode, prep-question, and actual-transcript-question matches.
    • test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant: PASS.
    • git diff --check: PASS.

    Additional checks:

    • assistants/podcast/ remains the canonical package location; root podcast-assistant/ is absent in the working tree.
    • Runtime references to ../podcast-assistant remain confined to docs/import-log evidence, not assistant code.
    • Heru still resolves via the explicit ../../../heru editable path in package metadata/lockfile.
    • The previous assistant-review push risk is addressed: main.py no longer contains a git push path, process/podcast.md says not to commit or push, and tests/test_main.py verifies /process reports a local commit without calling subprocess.run for push behavior.
    • .gitignore still excludes local-only state; current inbox/ and documents/ tracked candidates are only .gitkeep placeholders.

    Not run / still open:

    • [HUMAN] Telegram smoke remains open. I did not run real Telegram delivery or processing because it requires real bot credentials and external delivery.
    • No app suite run; this change remains scoped to the assistant package and I found no app code changes.
  7. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    ASSISTANT REVIEW PASS for #7

    Re-reviewed after the Software Engineer follow-up, focused on the prior assistant-boundary blocker. I did not edit files or commit.

    Pass criteria checked:

    • Default live /process no longer auto-pushes. assistants/podcast/main.py no longer imports subprocess or runs git push; when a commit hash is detected it reports Local commit detected ... No push was performed.
    • The process prompt no longer instructs commits. assistants/podcast/process/podcast.md now says: Do not commit or push changes. Leave generated documents and moved inbox files as local working tree changes for the DataOps review pipeline.
    • README documents the boundary: live /process runs do not commit or push by default, and generated files stay local for normal DataOps review.
    • Tests cover the default no-push behavior in assistants/podcast/tests/test_main.py, and retry/resume coverage is now present in assistants/podcast/tests/test_session_retrier.py.
    • Static scan for the previous blocker found no remaining git push, git commit, old commit instruction, or subprocess push/commit call in the assistant runtime/test/doc surfaces reviewed. Remaining hits are the explicit no-push prompt, no-push status message, and test assertion.

    Verification run:

    • PYTHONDONTWRITEBYTECODE=1 PYTEST_ADDOPTS='-p no:cacheprovider' uv run --project assistants/podcast pytest: passed, 28 passed.
    • PYTHONDONTWRITEBYTECODE=1 PYTEST_ADDOPTS='-p no:cacheprovider' uv run pytest tests/test_main.py tests/test_session_retrier.py -q from assistants/podcast/: passed, 12 passed.
    • PYTHONDONTWRITEBYTECODE=1 PYTEST_ADDOPTS='-p no:cacheprovider' uv run pytest tests_integration -q from assistants/podcast/: 2 skipped as expected because real engine integration tests are opt-in.
    • test -d ../podcast-assistant && test ! -d ../podcast-assistant/.git && test ! -e podcast-assistant: passed.
    • git diff --check: passed.

    No remaining assistant-boundary findings from this re-review.

  8. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    ACCEPTED

    PM acceptance after Tester pass and Assistant Engineer pass.

    The V1 canonicalization is acceptable: assistants/podcast/ is the canonical in-repo Podcast Assistant location, the root podcast-assistant/ active copy is absent, ../podcast-assistant remains a read-only source boundary with no runtime dependency, and the import log / README / package metadata / ignore rules document the new path, env vars, validation, local-only storage, and future DataOps job/artifact boundary.

    Acceptance evidence checked:

    • Tester re-review passed: uv run --project assistants/podcast pytest collected the assistant suite and passed, retry/resume coverage is now present, and the previous root-command blocker is resolved.
    • Assistant Engineer re-review passed: live /process no longer auto-pushes, the prompt says not to commit or push, and tests cover the default no-push behavior.
    • PM spot-check reran uv run --project assistants/podcast pytest: PASS, 28 passed; git diff --check: PASS; source/root-copy boundary command: PASS.

    Keep this issue open with the human label after commit/push. The only remaining criterion is [HUMAN] Telegram smoke with real credentials: allowed chat accepts a harmless intake item, /status reports it, and processing/dry-run starts safely. Because that external check is still open, the implementation commit should use Refs #7 rather than Closes #7.

  9. added
    humanCode done or issue blocked on human verification
    on Jun 27, 2026
  10. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    Human-gate audit update (2026-06-28): no agent-verifiable implementation work remains for #7.\n\nCurrent evidence:\n- Canonical Podcast Assistant module is in assistants/podcast/.\n- Root podcast-assistant/ copy is absent; ../podcast-assistant remains read-only and not Git-backed.\n- Import evidence is recorded in _docs/import-log.md.\n- Re-run verification passed: uv run --project assistants/podcast pytest (31 passed); focused main/session tests passed; knowledge-base search command passed; git diff --check passed.\n\nRemaining HUMAN verification to close #7:\n1. Configure real assistants/podcast/.env values: TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, GROQ_API_KEY if testing audio/image paths, and HERU_ENGINE=codex or HERU_ENGINE=claude.\n2. Start the bot from this repo: cd assistants/podcast && uv sync && uv run python main.py.\n3. From the allowed Telegram chat: send /start, send one harmless text intake item, confirm it is stored under assistants/podcast/inbox/raw/, send /status, and start /process or a safe controlled dry-run path.\n4. Confirm no unauthorized chat access, no secret exposure, no auto-commit, and no auto-push.\n5. Comment evidence here, then remove human and close #7 if the smoke passes.

  11. removed
    humanCode done or issue blocked on human verification
    on Jul 31, 2026
  12. alexeygrigorev commented on Jul 31, 2026

    @alexeygrigorev
    MemberAuthor

    PM closeout: the import itself was completed, independently re-tested, Assistant-reviewed, and PM-accepted. The remaining standalone real-credential Telegram smoke is explicitly CANCELLED AS SUPERSEDED, not passed: shared Telegram ingress/rollout is owned by #121/#128. This closure does not claim a shared Podcast execution capability; #128 keeps Podcast creation outside its MVP. Dependencies are reconciled: #12, #9, and #44 are complete, the implementation source for #30/#31 was delivered, and #7 blocks nothing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Must haveassistantAssistant modules and jobsmigrationImport or migration workpodcastPodcast workflow and assistanttestingTests and QA

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions