Skip to content

Launch the signed bundled CLI in the packaged-app smoke - #1782

Merged
claude[bot] merged 3 commits into
mainfrom
claude/packaged-cli-smoke-lih6ec
Sep 23, 2026
Merged

claude[bot] merged 3 commits into
mainfrom
claude/packaged-cli-smoke-lih6ec

Conversation

@claude

@claude claude Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Requested by Justin · project thread

Before: the release smoke only checked that Contents/Helpers/transcripted-mcp exists. The bundled transcripted-cli was only run (build-info) before signing, so nothing proved it still launches once it's signed with the hardened runtime and loads its frameworks from the app bundle. Also, a plain bash build.sh (no --no-open) built fine and then exited non-zero on your own account.

After: transcripted-qa packaged-app-smoke runs the shipped transcripted-cli build-info and fails the release unless it exits cleanly and reports the full meeting pipeline. bash build.sh opens the app again.

Why

Deep review findings M15 and M16 for 1.1.62. The CLI will be tested by a user right after release, and the Release Candidate workflow's packaged-app smoke is the only place the notarized app gets run before publishing.

Product Impact

  • Affects: agent artifacts
  • Lane: release ops
  • Why this matters: a CLI that dies under library validation would ship silently.

What changed

  • PackagedAppSmoke.swift: new cli-helper check (exists + executable) and cli-launch check (runs Contents/Helpers/transcripted-cli build-info, expects {"mode":"meeting","transcription":true,"diarization":true,"meetingImport":true}). Reads the last JSON line, since the command runner merges stderr into stdout. Skips the launch if the helper is missing so there's one clear failure.
  • PackagedAppSmokeTests.swift: fixture now bundles a CLI stub; new tests for pass, missing helper, launch failure (dyld-style exit 134), retrieval-only build, missing JSON, and stderr noise before the JSON.
  • scripts/entrypoints/build.sh: drop the native-smoke-isolation guard right before open. It's meant for automated smokes; under set -e it made the normal dev open fail (since Guard native QA launches from active macOS account #1757). Automated launch smokes stay guarded.

How I checked it

  • scripts/dev/agent-preflight.sh
  • python3 scripts/dev/check-build-source-lists.py, bash -n on build.sh, the build.sh entrypoint and lib/bundle-cli.sh
  • swift test --package-path Tools/TranscriptedQA: no Swift toolchain in the session (Linux), so hosted CI is the compile and test check
  • bash build.sh --no-open: CI
  • Manual check: the new check only runs for real in the Release Candidate workflow on the notarized app

Risk Review

  • Privacy / local-first behavior reviewed (build-info loads no models, touches no user paths, no network)
  • Release/update impact reviewed: adds one required check to the RC smoke. Local build.sh also bundles the CLI, so the QA bench smoke sees it too.
  • No private transcripts, audio, tokens, personal paths, or customer data are included

Agent handoff

COORD_DONE: BRIEF | this PR | M15 CLI launch check + M16 build.sh open | none | none | preflight, source lists, bash -n; Swift via CI | merge before 1.1.62 publishes

🤖 Generated with Claude Code

https://claude.ai/code/session_018E4d9Q4eEHgeHYdXFxFAMV


Generated by Claude Code

The build scripts only run `transcripted-cli build-info` before signing,
so nothing checked that the CLI still launches once it is signed with the
hardened runtime and loads its frameworks from the app bundle. The
packaged-app smoke now runs build-info on the shipped helper and fails
unless it exits cleanly and reports the full meeting pipeline.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018E4d9Q4eEHgeHYdXFxFAMV
Since #1757 the native-smoke-isolation guard ran right before `open`, so
on a normal account `bash build.sh` (without --no-open) built fine and then
exited non-zero without opening anything. The guard protects automated
smokes from the owner's preferences; opening your own build is not one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018E4d9Q4eEHgeHYdXFxFAMV
@claude claude Bot assigned r3dbars Sep 23, 2026
@claude
claude Bot requested a review from r3dbars September 23, 2026 19:03
@claude

claude Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

spm-tests is red, but not from this PR. The XCTest stall detector aborted the Core package tests in CoreAudioSystemAudioCaptureTests.testAttemptFinishSubscriberCanCancelAcrossBackendQueueWithoutDeadlock (CoreAudioSystemAudioCaptureTests.swift:193). This PR doesn't touch Sources/TranscriptedCore or its tests. The same test stalled the same way on #1756 (main + Info.plist only) earlier today, and no fix exists yet.

Because the abort kills the job, the later Tools package tests step never ran, so this PR's new PackagedAppSmokeTests are still unverified. It needs one re-run of spm-tests. This session can't re-run jobs (403), so that has to be done by hand.


Generated by Claude Code

@claude
claude Bot marked this pull request as ready for review September 23, 2026 20:32
@claude
claude Bot merged commit 4425229 into main Sep 23, 2026
15 of 19 checks passed
@claude
claude Bot deleted the claude/packaged-cli-smoke-lih6ec branch September 23, 2026 21:14
claude Bot pushed a commit that referenced this pull request Sep 23, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NZkqPnF73GpVNv9N5LYX9b
claude Bot pushed a commit that referenced this pull request Sep 23, 2026
…p9 [skip ci]

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013GAxhzGyuaTxNTv8tpj9j2
claude Bot pushed a commit that referenced this pull request Sep 23, 2026
Resolve the Core CLAUDE.md conflict (keep both notes) and point #1781's
tap-failure diagnostics at the recording's own tap, so a mic-only meeting
doesn't report the previous meeting's tap failure.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wd6LPpeoYvtp2aMj7wVQLU
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.

2 participants