Skip to content

Implement Podcast Assistant portal UI in workflow context #44

Closed

Description

@alexeygrigorev

Implement Podcast Assistant portal UI in workflow context

Status: pending
Tags: enhancement, portal, work-engine, assistant, podcast, frontend, testing, design, P0
Depends on: None - #30 agent-verifiable assistant job lifecycle is implemented on main via 553f576; #30 remains open only for human production credential verification.
Blocks: #9 Podcast end-to-end assistant-output review/proof path

Scope

Build the operator-facing Podcast Assistant UI for DataOps V1. The UI must be centered on the operations-manager jobs-to-be-done from docs/operations-manager-platform-jtbd.md: the operator starts from a podcast workflow/task, asks for assistant help, tracks whether assistant work is queued/running/failed/waiting for approval, reviews generated output, and attaches approved output as workflow proof/artifact without switching into a disconnected assistant console.

This issue is the frontend/product layer for Podcast Assistant jobs. It should consume the durable assistant job lifecycle and API from #30 and the accepted artifact model from #29. It may add small API-client or route glue needed by the portal UI, but it must not redefine assistant job persistence, artifact storage policy, or production assistant execution.

Primary operator jobs this issue must make easy:

  • From a Podcast workflow or Podcast task, request assistant help using the current task/bundle context.
  • Track assistant jobs that are queued, running, failed, canceled, succeeded, or waiting for approval.
  • See assistant job risk in the same places the operator checks daily work: workflow detail, task panel, and an assistant-jobs queue/panel reachable from the V1 workspace.
  • Open a job detail view with linked task/bundle context, input references, bounded logs/events, output artifacts, failures, and retry/approval history.
  • Review generated Podcast Assistant output, approve or reject it, retry failed/rejected output, cancel non-terminal jobs, and attach approved output as workflow proof/artifact.
  • Return to the podcast workflow with the approved assistant output visible in the task/bundle proof surface.

Required UI Surfaces

Workflow/task entry points

  • Add an Ask assistant or equivalent action in Podcast task panels and Podcast workflow/bundle detail.
  • The action must require at least one workflow context: taskId, bundleId, or both. It must not create orphaned assistant jobs.
  • The request form should prefill assistant type podcast, linked workflow/task title, and relevant context such as guest/topic/anchor date when available.
  • The operator can add input references such as task notes, source URLs, existing artifacts/files, process docs, or free-form source notes.
  • Submitting creates/submits a Podcast Assistant job through the Implement assistant job model and lifecycle #30 API and returns the operator to workflow context with the new job visible.

Assistant jobs queue/panel

  • Add an assistant jobs queue/panel that is framed as operational work, not a separate assistant app.
  • Default grouping must prioritize waiting_approval, failed, running, and queued jobs before completed history.
  • Each row must show assistant type, job title, linked workflow/task, status, attempt count, last update, and the next available operator action.
  • Filters should support at least status, needs approval, failed, running/queued, and Podcast jobs.
  • Empty states must tell the operator what is clear, for example no jobs need approval or no failed assistant jobs.

Job detail

  • Opening a job shows one primary detail view or panel with:
    • status and status history;
    • linked Podcast workflow/task and a direct return path;
    • input references;
    • output artifacts and review status;
    • bounded log/event timeline;
    • sanitized failure summary and retry policy;
    • available actions based on job status.
  • Logs must be readable enough for the operator to decide whether to retry or file a follow-up issue, but full/raw transcripts should remain artifact/log links when they are too large or sensitive.
  • The detail view must not expose secrets, raw tokens, signed URLs, or unbounded runner output.

Review, approval, retry, cancel, and proof attachment

  • Jobs in waiting_approval expose review actions for approve and reject.
  • Approval must attach or confirm the output artifact on the linked task/bundle using the Define artifact model and storage policy #29 artifact contract and make it visible as proof in the workflow context.
  • Rejection requires a reason and preserves the reason in the job history.
  • Failed or rejected jobs expose retry only when the retry policy allows it.
  • Non-terminal jobs expose cancel when the Implement assistant job model and lifecycle #30 lifecycle allows it.
  • Actions must refresh all affected surfaces: queue row, job detail, task panel, workflow detail, artifact/proof section, and relevant risk state.

V1 workflow integration

  • Assistant job state must contribute to the workflow-level picture from the JTBD doc: what is at risk, what needs approval, and which proof is missing.
  • A Podcast workflow with an assistant job waiting for approval should show that approval as a visible next action.
  • A failed Podcast Assistant job should appear as operational risk and, where Implement assistant job model and lifecycle #30 supports it, as an automation-failure notification.
  • A task that requires an approved assistant-generated artifact must remain blocked until an approved artifact is attached.
  • Approved assistant output must appear in the same artifact/proof UI as manually registered artifacts; do not create a parallel assistant-only proof model.

Design Requirements

  • Follow docs/design-system.md tokens and components. Assistant jobs must reuse DataOps status, panel, artifact, task, and workflow patterns instead of introducing a second visual language.
  • Follow docs/operations-manager-platform-jtbd.md: the workflow remains the primary screen, assistant output is operational output, and proof is part of task completion.
  • Keep the UI calm, compact, and operationally dense. Avoid marketing-style assistant pages, decorative cards, or a standalone chat-console feel.
  • Mobile must work on a Pixel 7-sized viewport with one primary state visible at a time: workflow/task, job queue, or job detail.
  • Buttons/actions should be state-aware and disabled or hidden when invalid, with clear inline reasons for blocked completion or unavailable retry/approval.

Acceptance Criteria

  • Podcast task panels and Podcast workflow/bundle detail provide a clear action to request Podcast Assistant help with the current task/bundle context prefilled.
  • Assistant job creation/submission from the UI requires workflow context and persists assistantType=podcast, taskId and/or bundleId, input references, title, and approval requirement through the Implement assistant job model and lifecycle #30 API.
  • The new assistant jobs queue/panel groups approval-needed, failed, running, queued, and completed jobs in an operator-prioritized order.
  • Queue rows show job title, assistant type, linked Podcast workflow/task, status, attempt count, last update, output/proof summary, and next action.
  • Queue filtering covers Podcast jobs, jobs needing approval, failed jobs, running/queued jobs, and completed/terminal history.
  • Job detail shows linked workflow/task context, input refs, output artifact refs, bounded log/event timeline, status history, retry/approval history, sanitized error summary, and available state-specific actions.
  • Jobs in waiting_approval can be approved or rejected from the UI; rejection requires a reason.
  • Approving output attaches or confirms the generated artifact on the linked task/bundle and makes it visible in the existing artifact/proof section.
  • A task requiring approved assistant output remains blocked until the approved artifact is attached; after approval, the same task can satisfy artifact proof without duplicating the proof model.
  • Failed or rejected jobs can be retried only when the Implement assistant job model and lifecycle #30 retry policy allows it; exhausted retries show a clear no-retry state.
  • Non-terminal jobs can be canceled only when the Implement assistant job model and lifecycle #30 lifecycle allows it; terminal jobs do not show invalid actions.
  • Approval, rejection, retry, cancel, and attach actions refresh queue, job detail, task panel, workflow detail, and proof/risk state without requiring a full page reload.
  • Assistant jobs waiting for approval or failed are visible as workflow risk/next action in Podcast workflow context, not only in a global assistant view.
  • Logs and artifacts are displayed safely: bounded previews, links to full artifacts/logs when available, no secrets/tokens/signed URLs/raw unbounded transcripts in the UI.
  • Empty, loading, error, and permission/API-failure states are implemented for the queue, request form, job detail, logs, and review actions.
  • UI uses DataOps design tokens/components from docs/design-system.md, works in light/dark mode if the touched surface supports it, and remains usable on desktop and Pixel 7 mobile widths.
  • Automated tests cover request-from-workflow, queue grouping/filtering, job detail rendering, approve/reject/retry/cancel state rules, artifact attachment/proof blocking, failed-job risk visibility, and API error states.
  • Tester captures screenshot evidence for desktop and mobile: request from workflow/task, queue/panel, job detail with logs/artifacts, approval-needed review, failed/retry state, and approved artifact visible as workflow proof.

Test Scenarios

Scenario: Request assistant help from a Podcast task

Given: an authenticated operator viewing a Podcast task inside a Podcast workflow
When: the operator clicks the assistant action, reviews the prefilled context, adds source notes or input refs, and submits
Then: a Podcast Assistant job is created/submitted with the linked taskId and bundleId, appears in the queue, and appears on the originating task/workflow.

Scenario: Track approval-needed work from the daily queue

Given: a Podcast Assistant job has produced output and is in waiting_approval
When: the operator opens the assistant jobs queue/panel
Then: the job appears in the approval-needed group with linked workflow/task context and a review action before lower-priority completed history.

Scenario: Review and approve generated output as proof

Given: a Podcast Assistant job is waiting for approval with an output artifact
When: the operator opens job detail, reviews the artifact/log summary, and approves the output
Then: the approval event is recorded, the artifact is attached or confirmed on the linked task/bundle, the task proof section shows the approved artifact, and proof-gated completion can proceed.

Scenario: Reject and retry generated output

Given: a Podcast Assistant job is waiting for approval
When: the operator rejects it with a reason and retries it
Then: the rejection reason remains visible in history, the retry follows the #30 lifecycle/attempt policy, the queue and job detail show the new attempt state, and the original output is not silently treated as approved proof.

Scenario: Failed job surfaces workflow risk

Given: a Podcast Assistant job linked to a Podcast workflow has failed
When: the operator opens the workflow detail or assistant jobs queue
Then: the failed job is visible as a workflow risk/next action with sanitized error context and retry/cancel/follow-up options allowed by lifecycle state.

Scenario: Invalid actions are not available

Given: jobs in terminal states, non-approval states, and exhausted-retry states
When: the operator views the queue or detail
Then: approve/reject/retry/cancel actions are disabled or absent according to lifecycle rules, and direct API failures are handled with clear error feedback.

Scenario: Logs and artifacts stay bounded and safe

Given: a job has multiple log events and artifact/log references
When: the operator opens job detail
Then: the UI shows a bounded event/log preview, links to full artifacts/logs where available, and does not render secrets, signed URLs, or raw unbounded transcripts inline.

Scenario: Mobile workflow remains usable

Given: a Pixel 7-sized viewport
When: the operator requests assistant help, opens the queue, reviews a job, and returns to the workflow
Then: only one primary state is visible at a time, controls are touch-sized, text does not overlap, and the workflow remains the main context.

Out of Scope

  • Implementing the durable assistant job model, lifecycle validation, DynamoDB/SAM tables, export behavior, or worker-runner API; Implement assistant job model and lifecycle #30 owns that.
  • Redefining artifact storage, artifact status semantics, portable export, or artifact proof policy; Define artifact model and storage policy #29 owns that and is the source of truth.
  • Building raw Telegram/email intake triage or an assistant inbox; that belongs to the raw intake/inbox work tracked separately.
  • Requiring live Telegram, Groq, Heru, Codex, Claude, Google Drive, Dropbox, Slack, email, or S3 credentials for normal automated tests.
  • Creating a disconnected assistant console, chatbot surface, or assistant-only proof model outside task/bundle workflow context.
  • Automatically publishing, emailing, pushing to GitHub, or sending assistant output to external systems.
  • Moving generated documents from local assistant folders into Git as durable production storage.
  • Redesigning the whole portal shell, replacing the frontend framework, or rebuilding unrelated task/bundle/artifact UI.
  • Modifying ../podcast-assistant, ../dtc-operations, ../datatasks, or other source repos.

Dependencies

  • Implement assistant job model and lifecycle #30 is the implementation dependency for durable assistant job APIs, lifecycle state, job events/logs, retries, approvals, cancellation, and artifact attachment behavior. Its agent-verifiable work is implemented on main via 553f576; the remaining Implement assistant job model and lifecycle #30 human check for real Telegram/Heru/Codex/Claude production execution does not block this UI issue because live external execution remains out of scope here.
  • Define artifact model and storage policy #29 is closed and provides the artifact/proof contract this UI must reuse for approved Podcast Assistant outputs.
  • Import Podcast Assistant into assistants/podcast #7 imported assistants/podcast/ as the canonical in-repo assistant module. Its remaining human Telegram smoke is not required for this UI unless implementation intentionally enables live Telegram/Heru execution in this issue.
  • Build the Podcast end-to-end slice #9 should consume this UI path for the full Podcast end-to-end slice: assistant draft -> review -> approved artifact proof -> workflow task completion.
  • docs/operations-manager-platform-jtbd.md, .goal-v1.md, and docs/design-system.md are the product/design references for acceptance.

Verification Commands

Expected minimum verification from repo root:

npm --prefix work-engine test
npm --prefix work-engine run typecheck
npm --prefix work-engine run build
npm --prefix work-engine run test:e2e
uv run --project lambda-functions --extra search --with pytest python -m pytest tests/docs_app

If implementation touches assistants/podcast/**, also run:

uv run --project assistants/podcast pytest

If implementation touches docs/content metadata or search-facing references, also run:

cd lambda-functions
uv run --extra search python -m lambda_functions.build_search_index \
  --docs-dir ../content \
  --output ../.tmp/dataops-content-search.index

Tester must capture and inspect screenshots under .tmp/screenshots/ for:

  • Podcast workflow/task assistant request entry point.
  • Assistant jobs queue/panel with approval-needed, running/queued, and failed states.
  • Job detail with logs/events and output artifacts.
  • Approval review and approved artifact visible as workflow proof.
  • Failed/retry/cancel state.
  • Pixel 7-sized mobile views for request, queue/detail, and return-to-workflow.

Activity

  1. added
    needs groomingRaw intake that needs PM grooming
    assistantAssistant modules and jobs
    podcastPodcast workflow and assistant
    P0Must have
    enhancementNew or improved functionality
    portalShared portal shell and UX
    work-engineDataTasks task execution engine
    and removed
    needs groomingRaw intake that needs PM grooming
    on Jun 27, 2026
  2. changed the title [-]Create Podcast Assistant portal UI spec[/-] [+]Implement Podcast Assistant portal UI in workflow context[/+] on Jun 27, 2026
  3. alexeygrigorev commented on Jun 27, 2026

    @alexeygrigorev
    MemberAuthor

    PM grooming complete.

    I rewrote #44 into an implementable Podcast Assistant portal UI issue centered on docs/operations-manager-platform-jtbd.md: the operator requests assistant help from a Podcast workflow/task, tracks queued/running/failed/approval-needed jobs as operational work, reviews generated output, approves/rejects/retries/cancels, and attaches approved output as workflow proof/artifact.

    The scope is intentionally not a disconnected assistant console. It depends on #30 for the durable assistant job lifecycle/API and reuses #29's artifact/proof model. The issue now includes workflow/task entry points, queue/panel, job detail, logs/artifacts, approval/retry/cancel behavior, V1 workflow risk integration, design requirements, acceptance criteria, test scenarios, out-of-scope boundaries, dependencies, labels, and screenshot/verification expectations.

    Removed needs grooming; current status is blocked until #30 provides the job API/lifecycle contract.

  4. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    PM/Assistant Engineer triage update.

    Decision: #44 is unblocked for agent implementation even though #30 remains open with human. #30's agent-verifiable assistant job API/lifecycle contract is on main in 553f576; the only remaining #30 item is real Telegram/Heru/Codex/Claude production execution verification, which is outside #44's scope.

    Tracker update made: changed this issue body from Status: blocked to Status: pending, and changed Depends on: #30 to record that there is no blocking dependency because #30's agent contract is satisfied on main.

    Next owner: Software Engineer. Recommended first implementation slice: audit the existing #30 assistant UI against this issue's acceptance criteria, then fill the missing Podcast-specific UI gaps in workflow/task request entry points, job detail, approval/retry/cancel refresh behavior, proof/artifact blocking, API error states, and desktop/mobile screenshot coverage. Do not modify ../podcast-assistant, ../dtc-operations, or ../datatasks.

  5. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    Software Engineer update for issue #44

    Implemented Podcast Assistant portal UI in workflow context, integrated with the existing operations manager flow rather than a standalone assistant console.

    Summary:

    • Added workflow/task contextual "Ask podcast assistant" request UI with task/bundle context, input URLs/artifacts, source notes, approval requirement, and existing assistant-job submission.
    • Reworked the assistant queue into operational groups and filters: podcast, needs approval, failed, running/queued, completed history, and all.
    • Added assistant job detail view with linked workflow/task context, input refs, output proof/artifacts, sanitized error summary, approval history, bounded run/status timeline, and state-aware actions.
    • Wired refresh/retry/cancel/run-dry/approve/reject affordances where existing APIs support them.
    • Surfaced assistant approval/failure counts back in workflow/dashboard context.
    • Added and updated focused static/E2E coverage for the workflow request path, grouped queue, job detail, proof gating, approval, and existing podcast operator flow.

    Changed files:

    • work-engine/src/public/app.js
    • work-engine/src/pages/index.html
    • work-engine/tests/assistant-ui.test.ts
    • work-engine/e2e/assistant-jobs.spec.js
    • work-engine/e2e/podcast-operator-slice.spec.js

    Verification:

    • node --check work-engine/src/public/app.js passed.
    • npm --prefix work-engine test passed: 671 tests.
    • npm --prefix work-engine run typecheck passed.
    • npm --prefix work-engine run build passed.
    • npm --prefix work-engine run test:e2e -- e2e/assistant-jobs.spec.js --workers=1 passed: 2 tests.
    • npm --prefix work-engine run test:e2e -- e2e/podcast-operator-slice.spec.js --workers=1 passed: 1 test.
    • npm --prefix work-engine run test:e2e passed: 306 tests.
    • uv run --project lambda-functions --extra search --with pytest python -m pytest tests/docs_app passed: 93 passed, 3 skipped.
    • git diff --check passed.

    Screenshots captured under .tmp/screenshots/ with suffix puc5ul:

    • issue-44-request-desktop-puc5ul.png
    • issue-44-queue-desktop-puc5ul.png
    • issue-44-detail-approval-desktop-puc5ul.png
    • issue-44-failed-retry-desktop-puc5ul.png
    • issue-44-approved-proof-desktop-puc5ul.png
    • issue-44-request-mobile-puc5ul.png
    • issue-44-queue-mobile-puc5ul.png
    • issue-44-detail-mobile-puc5ul.png
    • issue-44-return-workflow-mobile-puc5ul.png

    Remaining gaps:

    Ready for Tester: yes.

  6. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    TEST PASS

    Tester gate for #44 completed from /home/alexey/git/dataops/.tmp/worktrees/issue-44 on branch worktree-issue-44. I did not commit.

    Verdict: PASS. No #44 implementation blockers found.

    Acceptance criteria verification:

    • Podcast workflow/task request entry points are contextual: verified from workflow detail and task flow. The request dialog requires bundle/task context, prefills podcast, title/context, and accepts URL/source-note inputs.
    • Assistant creation/submission uses the existing Implement assistant job model and lifecycle #30 APIs: UI calls /api/assistant-jobs, /submit, /run-dry, /approve, /reject, /retry, and /cancel; no production Telegram/Heru/Codex/Claude credentials are required.
    • Queue grouping/filtering is operator-prioritized: needs approval, failed, running/queued, completed history, and Podcast/all filters are visible.
    • Queue rows show title, assistant type, workflow/task context, status, attempts, update time, proof/output summary, and next action.
    • Job detail shows workflow/task links, input refs, output artifacts/proof, bounded event history, approval/retry history, sanitized error summary, and state-aware actions.
    • Approval confirms the generated artifact in the existing artifact/proof surface, and proof-gated task completion is blocked before approval and enabled after approval.
    • Rejected/failed retry and cancel affordances are state-aware; exhausted retry state is represented in UI copy/static coverage.
    • Workflow context surfaces assistant approvals/failures as risk/next-action signals.
    • Screenshots show desktop and Pixel 7-width mobile states without visible broken layout, overlap, 404, or error page.

    Commands run:

    • node --check work-engine/src/public/app.js -> passed, exit 0.
    • git diff --check -> passed, exit 0.
    • npm --prefix work-engine test -> passed, 671 passed.
    • npm --prefix work-engine run typecheck -> passed, exit 0.
    • npm --prefix work-engine run build -> passed, exit 0.
    • npm --prefix work-engine run test:e2e -- e2e/assistant-jobs.spec.js --workers=1 -> passed, 2 passed.
    • npm --prefix work-engine run test:e2e -- e2e/podcast-operator-slice.spec.js --workers=1 -> passed, 1 passed.
    • uv run --project lambda-functions --extra search --with pytest python -m pytest tests/docs_app -> passed, 93 passed, 3 skipped.
    • npm --prefix work-engine run test:e2e -> first aggregate run: 305 passed, 1 failed with unrelated ECONNRESET in e2e/auth.spec.js (GET /api/me without token returns 401). Immediate isolated rerun of that test passed, 1 passed.
    • npm --prefix work-engine run test:e2e -> second aggregate run: 305 passed, 1 failed with unrelated timeout in e2e/home-dashboard.spec.js (Dashboard task rows save comment evidence from the queue). The Implement Podcast Assistant portal UI in workflow context #44 assistant and podcast specs passed in that aggregate run. A follow-up isolated rerun of the dashboard test reported pass, but the local port was then occupied by another worktree's Playwright server, so I am treating the aggregate failures as non-Implement Podcast Assistant portal UI in workflow context #44 full-suite flakiness rather than an implementation blocker.

    Screenshot evidence inspected:

    • Existing SWE screenshots under .tmp/screenshots/issue-44-*-puc5ul.png.
    • Fresh tester screenshots captured under .tmp/screenshots/ with suffix tester-bfp7ak:
      • issue-44-tester-request-desktop-tester-bfp7ak.png
      • issue-44-tester-workflow-risk-desktop-tester-bfp7ak.png
      • issue-44-tester-queue-desktop-tester-bfp7ak.png
      • issue-44-tester-detail-desktop-tester-bfp7ak.png
      • issue-44-tester-failed-desktop-tester-bfp7ak.png
      • issue-44-tester-approved-proof-desktop-tester-bfp7ak.png
      • issue-44-tester-queue-mobile-tester-bfp7ak.png
      • issue-44-tester-detail-mobile-tester-bfp7ak.png
      • issue-44-tester-workflow-mobile-tester-bfp7ak.png
      • contact sheets: issue-44-tester-desktop-contact-tester-bfp7ak.png, issue-44-tester-mobile-contact-tester-bfp7ak.png

    Notes:

  7. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    ACCEPTED

    PM acceptance from the operations-manager/user perspective is complete. I accept this implementation for #44.

    Why accepted:

    • Podcast Assistant is integrated into Podcast workflow/task context, including contextual request entry points and prefilled workflow/task context, rather than a disconnected assistant console.
    • The assistant queue and detail states are useful for daily ops: approval-needed, failed, running/queued, and completed history are prioritized; rows and detail views show linked workflow/task context, status, attempts, output/proof summary, bounded event history, sanitized failures, and state-aware actions.
    • Proof/artifact and approval/failure states are clear: approval confirms generated output in the existing artifact/proof surface, proof-gated task completion remains blocked before approval, failed jobs surface as workflow risk, and retry/cancel/terminal states do not expose invalid actions.
    • Desktop and Pixel 7 mobile screenshots are acceptable for the ops workflow. The UI is dense but readable, keeps one primary state visible on mobile, and does not show layout breakage in the reviewed screenshots.
    • No production assistant credentials are required. The flow uses the existing Implement assistant job model and lifecycle #30 assistant-job APIs and deterministic dry-run/test paths; live Telegram/Heru/Codex/Claude production verification remains outside Implement Podcast Assistant portal UI in workflow context #44 and aligned with the remaining human check on Implement assistant job model and lifecycle #30.

    PM verification performed:

    • Reviewed full issue scope, SWE handoff, Tester PASS, screenshot evidence, and implementation diff.
    • Inspected desktop/mobile contact sheets under .tmp/screenshots/.
    • Ran node --check work-engine/src/public/app.js -> passed.
    • Ran git diff --check -> passed.
    • Ran npm --prefix work-engine test -> passed, 671 tests.
    • Ran npm --prefix work-engine run typecheck -> passed.
    • Ran npm --prefix work-engine run build -> passed.
    • Ran npm --prefix work-engine run test:e2e -- e2e/assistant-jobs.spec.js --workers=1 -> passed, 2 tests.
    • Ran npm --prefix work-engine run test:e2e -- e2e/podcast-operator-slice.spec.js --workers=1 -> initially blocked by an unrelated concurrent issue-56 test server on port 3001, then reran after the port cleared -> passed, 1 test.

    Blockers: none.

    Branch may be committed with Closes #44 after excluding generated local artifacts such as work-engine/e2e/.auth-state.json.

  8. added a commit that references this issue on Jun 28, 2026
  9. alexeygrigorev commented on Jun 28, 2026

    @alexeygrigorev
    MemberAuthor

    ON-CALL REPORT for commit 0bb4430

    Run inspected: Deploy DataOps V1 Lambda https://github.com/DataTalksClub/dataops/actions/runs/28319519897

    Status:

    • Check DataOps v1 app: PASS. Docs app tests, browser-backed docs portal flow, work-engine tests, typecheck, build, full work-engine Playwright E2E, search index build/smoke, full app handler smoke, SAM validate, and SAM build all passed.
    • Deploy DataOps v1 app: FAIL in the Deploy DataOps v1 stack step. Deployed smoke tests were skipped because CloudFormation rolled back.

    Classification: external AWS IAM/EventBridge deploy blocker, not a #44 repo/test-code failure. No on-call fix commit was made.

    Exact blocker from the failed run:

    • CloudFormation logical resource: WorkEngineFunctionDailyWorkEngineCron
    • Resource type: AWS::Events::Rule
    • Stack: dataops-v1 in eu-west-1
    • Assumed role: arn:aws:sts::817685572750:assumed-role/dataops-github-actions-deploy/dataops-v1-deploy
    • Missing action: events:DescribeRule
    • Resource: arn:aws:events:eu-west-1:817685572750:rule/dataops-v1-WorkEngineFunctionDailyWorkEngineCron-fmOSRcqgGKnl
    • Failure: no identity-based policy allows the events:DescribeRule action; CloudFormation entered UPDATE_ROLLBACK_COMPLETE.

    Required action: update the AWS IAM policy for role arn:aws:iam::817685572750:role/dataops-github-actions-deploy to allow EventBridge rule management for the DataOps stack, at minimum events:DescribeRule on dataops-v1 WorkEngineFunctionDailyWorkEngineCron rules. After the role policy is updated, rerun the Deploy DataOps V1 Lambda workflow for main/0bb4430 or push the next main commit so the dataops-v1 stack can create the EventBridge rule.

    Refs #44

  10. added 2 commits that reference this issue on Aug 14, 2026
    cda0e28
    c2c3c5d
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 jobsdesignDesign and UXenhancementNew or improved functionalityfrontendFrontend UIpodcastPodcast workflow and assistantportalShared portal shell and UXtestingTests and QAwork-engineDataTasks task execution engine

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions