From 43a43dd511b4cedcd0fb12dbb97d0bf86b4bfe20 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 8 Sep 2026 22:55:13 +0000 Subject: [PATCH 1/3] Initial plan From 634bd35513ee3fa7ac6f6587bbf0bc8817222fb0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 8 Sep 2026 23:21:44 +0000 Subject: [PATCH 2/3] fix: keep empty Studio events honest Co-authored-by: groupthinking <154503486+groupthinking@users.noreply.github.com> --- apps/web/src/components/OneLoopStudio.tsx | 7 ++++--- .../lib/__tests__/studio-pipeline-status.test.ts | 16 ++++++++++++++++ apps/web/src/lib/studio-pipeline-status.ts | 6 +++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/OneLoopStudio.tsx b/apps/web/src/components/OneLoopStudio.tsx index f8e92fe98..91ee87e31 100644 --- a/apps/web/src/components/OneLoopStudio.tsx +++ b/apps/web/src/components/OneLoopStudio.tsx @@ -862,9 +862,10 @@ export default function OneLoopStudio() { busy: busy || selected?.status === 'processing', hasCompletedRun: selected != null && selected.status !== 'processing' && !busy, eventCount: 0, - hasArchitecture: Boolean(packFormation.architecture), - artifactCount: packFormation.artifacts.length, - toolCount: packFormation.tools.length, + hasTranscript: Boolean(selected?.transcript?.trim()), + hasArchitecture: Boolean(packFormation.architecture), + artifactCount: packFormation.artifacts.length, + toolCount: packFormation.tools.length, })} )} diff --git a/apps/web/src/lib/__tests__/studio-pipeline-status.test.ts b/apps/web/src/lib/__tests__/studio-pipeline-status.test.ts index 0afe3e3de..3cc2934c4 100644 --- a/apps/web/src/lib/__tests__/studio-pipeline-status.test.ts +++ b/apps/web/src/lib/__tests__/studio-pipeline-status.test.ts @@ -200,6 +200,22 @@ describe('studio-pipeline-status', () => { ); }); + it('does not claim a transcript exists when a completed run only has pack identity', () => { + const emptyNoTranscript = studioEventsEmptyMessage({ + busy: false, + hasCompletedRun: true, + eventCount: 0, + hasArchitecture: false, + artifactCount: 0, + toolCount: 0, + hasTranscript: false, + }); + + expect(emptyNoTranscript.toLowerCase()).toMatch(/no extracted events/); + expect(emptyNoTranscript.toLowerCase()).not.toContain('transcript'); + expect(emptyNoTranscript.toLowerCase()).toContain('pack identity'); + }); + it('enables export from pack formation when events[] is empty', () => { expect( studioCanExport({ diff --git a/apps/web/src/lib/studio-pipeline-status.ts b/apps/web/src/lib/studio-pipeline-status.ts index 87db998c0..4a00769b7 100644 --- a/apps/web/src/lib/studio-pipeline-status.ts +++ b/apps/web/src/lib/studio-pipeline-status.ts @@ -90,6 +90,7 @@ export function studioEventsEmptyMessage(input: { busy: boolean; hasCompletedRun: boolean; eventCount: number; + hasTranscript?: boolean; hasArchitecture: boolean; artifactCount: number; toolCount: number; @@ -102,7 +103,10 @@ export function studioEventsEmptyMessage(input: { if (packReady) { return 'This pack has no extracted events. Architecture, artifacts, and stack from the video are below — export them from this page.'; } - return 'This run has no extracted events. Transcript and pack identity stay on this page.'; + if (input.hasTranscript) { + return 'This run has no extracted events. Transcript and pack identity stay on this page.'; + } + return 'This run has no extracted events. Pack identity stays on this page.'; } export function studioPromotePackWorkbench(input: { From 130d78a3caf7b4962204903f9052978c30ff44ed Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 8 Sep 2026 23:22:25 +0000 Subject: [PATCH 3/3] fix: keep empty Studio events honest Co-authored-by: groupthinking <154503486+groupthinking@users.noreply.github.com> --- apps/web/src/components/OneLoopStudio.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/OneLoopStudio.tsx b/apps/web/src/components/OneLoopStudio.tsx index 91ee87e31..cde52fb41 100644 --- a/apps/web/src/components/OneLoopStudio.tsx +++ b/apps/web/src/components/OneLoopStudio.tsx @@ -862,10 +862,10 @@ export default function OneLoopStudio() { busy: busy || selected?.status === 'processing', hasCompletedRun: selected != null && selected.status !== 'processing' && !busy, eventCount: 0, - hasTranscript: Boolean(selected?.transcript?.trim()), - hasArchitecture: Boolean(packFormation.architecture), - artifactCount: packFormation.artifacts.length, - toolCount: packFormation.tools.length, + hasTranscript: Boolean(selected?.transcript?.trim()), + hasArchitecture: Boolean(packFormation.architecture), + artifactCount: packFormation.artifacts.length, + toolCount: packFormation.tools.length, })} )}