You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add GitHub Actions coverage for assistant modules under assistants/**, with the initial required coverage focused on the canonical Podcast Assistant at assistants/podcast/.
Current gap from the #7 on-call context: commit 245a276 canonicalized Podcast Assistant under assistants/podcast/, but existing workflows do not run for assistants/** changes. The current workflows are:
.github/workflows/deploy-dataops-v1.yml, which is scoped to the V1 app, content, Lambda, scripts, tests/docs_app, and work-engine paths.
.github/workflows/validate-dataops-content.yml, which is scoped to content/** and the content validation workflow.
This issue should add or update CI so assistant changes get a deterministic, non-credentialed test signal. The expected baseline command from #7 is:
uv run --project assistants/podcast pytest
The workflow must be safe for a clean GitHub Actions checkout. It must not require real Telegram delivery, TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, GROQ_API_KEY, live Groq calls, live Heru engine runs, Codex, or Claude. If the current assistants/podcast dependency on a local Heru checkout (../../../heru) prevents this from working in Actions, resolving that CI dependency boundary is part of this issue, but only to the extent needed for safe unit CI.
Acceptance Criteria
GitHub Actions runs assistant CI when files under assistants/** change.
Assistant CI also runs when its workflow file changes, and can be started with workflow_dispatch.
The workflow runs on push to main; adding pull_request coverage for assistants/** is acceptable and preferred if it matches existing repo conventions.
Podcast Assistant unit tests run in CI with the safe baseline command, or a documented equivalent that executes the same default assistants/podcast/tests suite from a clean checkout:
uv run --project assistants/podcast pytest
CI does not set or require Telegram, Groq, Heru engine, Codex, or Claude credentials for the default assistant test job.
CI does not run live Telegram delivery, Groq transcription/image analysis, real Heru processing, Codex, or Claude by default.
Opt-in real-engine tests under assistants/podcast/tests_integration/ remain excluded from normal CI, or are collected only in a way that proves they skip when PODCAST_ASSISTANT_INTEGRATION_ENGINES is unset.
CI is able to install/resolve the assistant test environment from a clean GitHub Actions checkout. Any handling of the Heru dependency is explicit and does not depend on Alexey's local ../heru directory being present on the runner.
Workflow path filters include assistant package metadata and lock/config files that affect assistant tests, such as assistants/podcast/pyproject.toml, assistants/podcast/uv.lock, and assistant test files.
CI failure messages are attributable to the assistant job rather than being hidden inside the DataOps V1 deploy workflow.
Existing DataOps V1 app and content workflows keep their current purpose; this issue should not accidentally deploy, refresh content caches, or require AWS credentials for assistant-only test changes.
Test Scenarios
Scenario: Podcast unit tests run for assistant code changes
Given: A change touches assistants/podcast/main.py, assistants/podcast/session_retrier.py, or a file under assistants/podcast/tests/
When: The change is pushed to main or evaluated through any configured pull request event
Then: GitHub Actions runs the assistant CI job and executes the Podcast Assistant unit suite without external credentials.
Scenario: Workflow-only change can validate assistant CI
Given: A change touches the assistant CI workflow file
When: The workflow runs through path filters or workflow_dispatch
Then: The assistant CI job runs and reports a pass/fail status for the Podcast Assistant test suite.
Scenario: No live integrations in default CI
Given: The Actions runner has no TELEGRAM_BOT_API_KEY, TELEGRAM_CHAT_ID, GROQ_API_KEY, Codex CLI, Claude CLI, or live Heru credentials
When: The assistant CI job runs
Then: The default unit suite still passes or fails based on code behavior only, not missing external credentials.
Scenario: Real-engine tests remain opt-in
Given: PODCAST_ASSISTANT_INTEGRATION_ENGINES is unset
When: Any integration-test collection/check is run for assistants/podcast/tests_integration/
Then: Codex/Claude real-engine tests are skipped and do not consume external quota or require CLIs.
Scenario: Assistant-only changes do not trigger app deployment
Given: A change only touches assistants/** and the assistant CI workflow
When: The change reaches GitHub Actions
Then: The assistant test workflow runs, and the DataOps V1 deploy/content refresh workflows are not required for assistant-only validation unless their own path filters are intentionally changed in a separate issue.
Out of Scope
Implementing or changing assistant product behavior.
Running real Telegram, Groq, Heru, Codex, or Claude checks in normal CI.
Adding production assistant deployment, AWS resources, DynamoDB tables, S3 artifact storage, or portal UI.
Modifying source repos outside dataops, including ../podcast-assistant, ../dtc-operations, ../datatasks, or ../heru, unless a separate issue explicitly scopes that work.
Refactoring all assistant packaging beyond what is required for a clean, safe CI test environment.
The engineer should verify the workflow from a clean checkout assumption, not from local-only directories available on Alexey's machine.
If Heru must be available for import-time unit tests, the solution should make that dependency explicit in dataops CI without requiring live Heru engine execution.
Add CI coverage for assistant modules
Status: pending
Tags:
assistant,podcast,infra,testing,P0Depends on: #7
Blocks: None
Scope
Add GitHub Actions coverage for assistant modules under
assistants/**, with the initial required coverage focused on the canonical Podcast Assistant atassistants/podcast/.Current gap from the #7 on-call context: commit
245a276canonicalized Podcast Assistant underassistants/podcast/, but existing workflows do not run forassistants/**changes. The current workflows are:.github/workflows/deploy-dataops-v1.yml, which is scoped to the V1 app, content, Lambda, scripts, tests/docs_app, and work-engine paths..github/workflows/validate-dataops-content.yml, which is scoped tocontent/**and the content validation workflow.This issue should add or update CI so assistant changes get a deterministic, non-credentialed test signal. The expected baseline command from #7 is:
The workflow must be safe for a clean GitHub Actions checkout. It must not require real Telegram delivery,
TELEGRAM_BOT_API_KEY,TELEGRAM_CHAT_ID,GROQ_API_KEY, live Groq calls, live Heru engine runs, Codex, or Claude. If the currentassistants/podcastdependency on a local Heru checkout (../../../heru) prevents this from working in Actions, resolving that CI dependency boundary is part of this issue, but only to the extent needed for safe unit CI.Acceptance Criteria
GitHub Actions runs assistant CI when files under
assistants/**change.Assistant CI also runs when its workflow file changes, and can be started with
workflow_dispatch.The workflow runs on
pushtomain; addingpull_requestcoverage forassistants/**is acceptable and preferred if it matches existing repo conventions.Podcast Assistant unit tests run in CI with the safe baseline command, or a documented equivalent that executes the same default
assistants/podcast/testssuite from a clean checkout:CI does not set or require Telegram, Groq, Heru engine, Codex, or Claude credentials for the default assistant test job.
CI does not run live Telegram delivery, Groq transcription/image analysis, real Heru processing, Codex, or Claude by default.
Opt-in real-engine tests under
assistants/podcast/tests_integration/remain excluded from normal CI, or are collected only in a way that proves they skip whenPODCAST_ASSISTANT_INTEGRATION_ENGINESis unset.CI is able to install/resolve the assistant test environment from a clean GitHub Actions checkout. Any handling of the Heru dependency is explicit and does not depend on Alexey's local
../herudirectory being present on the runner.Workflow path filters include assistant package metadata and lock/config files that affect assistant tests, such as
assistants/podcast/pyproject.toml,assistants/podcast/uv.lock, and assistant test files.CI failure messages are attributable to the assistant job rather than being hidden inside the DataOps V1 deploy workflow.
Existing DataOps V1 app and content workflows keep their current purpose; this issue should not accidentally deploy, refresh content caches, or require AWS credentials for assistant-only test changes.
Test Scenarios
Scenario: Podcast unit tests run for assistant code changes
Given: A change touches
assistants/podcast/main.py,assistants/podcast/session_retrier.py, or a file underassistants/podcast/tests/When: The change is pushed to
mainor evaluated through any configured pull request eventThen: GitHub Actions runs the assistant CI job and executes the Podcast Assistant unit suite without external credentials.
Scenario: Workflow-only change can validate assistant CI
Given: A change touches the assistant CI workflow file
When: The workflow runs through path filters or
workflow_dispatchThen: The assistant CI job runs and reports a pass/fail status for the Podcast Assistant test suite.
Scenario: No live integrations in default CI
Given: The Actions runner has no
TELEGRAM_BOT_API_KEY,TELEGRAM_CHAT_ID,GROQ_API_KEY, Codex CLI, Claude CLI, or live Heru credentialsWhen: The assistant CI job runs
Then: The default unit suite still passes or fails based on code behavior only, not missing external credentials.
Scenario: Real-engine tests remain opt-in
Given:
PODCAST_ASSISTANT_INTEGRATION_ENGINESis unsetWhen: Any integration-test collection/check is run for
assistants/podcast/tests_integration/Then: Codex/Claude real-engine tests are skipped and do not consume external quota or require CLIs.
Scenario: Assistant-only changes do not trigger app deployment
Given: A change only touches
assistants/**and the assistant CI workflowWhen: The change reaches GitHub Actions
Then: The assistant test workflow runs, and the DataOps V1 deploy/content refresh workflows are not required for assistant-only validation unless their own path filters are intentionally changed in a separate issue.
Out of Scope
[HUMAN]Telegram smoke check left open on Import Podcast Assistant into assistants/podcast #7.dataops, including../podcast-assistant,../dtc-operations,../datatasks, or../heru, unless a separate issue explicitly scopes that work.Dependencies
assistants/podcast/package location and current safe local test command.dataopsCI without requiring live Heru engine execution.