Feature Packet
Primary owner agent: Chief Release/DevOps Officer
Review agents: Chief QA Officer, Platform Architect, Chief Open Source Officer
Layer: Mixed
Parent roadmap: TV qualification automation
Critical Agent Gate
Problem: The Airo TV integration-test runs on macOS are passing functionally, but the run is noisy and partially degraded. The runner logs Failed to foreground app; open returned 1, emits repeated CocoaPods deployment-target warnings, and emits Flutter plugin warnings about missing Swift Package Manager support on macOS. This makes qualification output harder to trust and masks real failures.
User / actor: QA automation, release/dev tooling, engineers running TV qualification locally on macOS.
Framework or application layer: Mixed. The foregrounding behavior is runner/platform/tooling-facing. The warnings are build/dependency/configuration-facing.
Owning agent: Chief Release/DevOps Officer.
Reviewing agents: Chief QA Officer, Platform Architect, Chief Open Source Officer.
Impacted modules/files: app/macos/, Flutter macOS test runner configuration, macOS dependency configuration, TV integration test docs/config.
Base branch/worktree: issue only; no implementation started.
Open questions:
- Is
Failed to foreground app; open returned 1 coming from Flutter test tooling, Codex desktop environment, or repo-specific macOS runner config?
- Which warnings are fixable in-repo versus upstream plugin noise that should be documented/ignored?
- Should the macOS live-source TV smoke tests remain part of regular local qualification or only opt-in?
Decision: Ready
Cross-Agent Contract
Provider agent: Chief Release/DevOps Officer
Consumer agent: Chief QA Officer / TV qualification maintainers
Interface/API: Local flutter test -d macos TV qualification workflow and its expected clean output.
Input shape: macOS local test execution of TV integration suites.
Output shape: Clean test output where actionable failures are distinguishable from environment noise; either working app foregrounding or an intentional documented non-blocking behavior.
State changes: macOS runner/build config and possibly test docs/config.
Errors: Runner launch/foreground failures, dependency target mismatch warnings, plugin packaging warnings.
Permissions: none beyond local build/test.
Privacy/redaction: no user data involved.
Persistence: repository config/docs only.
Versioning/migration: none expected.
Tests required: focused macOS TV integration reruns plus evidence capture.
Deterministic Use Cases
UC-001: Deterministic TV EPG test run on macOS
Actor: Engineer running local TV qualification on macOS.
Preconditions: macOS environment can build the app and run flutter test -d macos.
Trigger: Run flutter test -d macos integration_test/tv/test/epg_import_test.dart.
Happy path: App builds, test runs, test passes, output contains no misleading runner/packaging noise beyond known approved items.
Alternate paths: If upstream plugin/tooling warnings remain unavoidable, output is reduced to a documented accepted baseline.
Failure paths: Foreground failure, deployment-target warnings, or packaging warnings obscure real failures or indicate misconfiguration.
Data created/updated/deleted: local build artifacts only.
Privacy expectations: no external/user data.
UC-002: Opt-in live-source smoke test on macOS
Actor: Engineer validating current public IPTV/EPG source compatibility.
Preconditions: network access available; AIRO_RUN_LIVE_TV_SOURCE_TESTS=true.
Trigger: Run flutter test -d macos --dart-define=AIRO_RUN_LIVE_TV_SOURCE_TESTS=true integration_test/tv/test/iptv_org_live_sources_test.dart.
Happy path: App builds, endpoints are reachable, playlist/EPG overlap is validated, and the run output is clean enough to identify real network/source failures.
Alternate paths: Source-side failures are surfaced clearly as source failures, not runner noise.
Failure paths: Local macOS runner issues or dependency warnings make it unclear whether the source validation itself failed.
Data created/updated/deleted: temporary downloaded guide artifacts only.
Privacy expectations: public source data only.
Automation Flow
AUTO-001: Local deterministic TV EPG test
Given: the app workspace on macOS
When: flutter test -d macos integration_test/tv/test/epg_import_test.dart is executed
Then: the app should build, run the EPG import test, and exit without runner foreground failure or avoidable warning noise
Fixtures: local XMLTV fixture under app/integration_test/tv/helpers/playlist_fixtures.dart
Mocks/stubs: none beyond test-time provider overrides already in the suite
Assertions: test passes; output is clean/approved; no open returned 1 unless explicitly documented as non-actionable
Cleanup: standard Flutter build/test cleanup
AUTO-002: Local live-source smoke validation
Given: network access and current public source availability
When: flutter test -d macos --dart-define=AIRO_RUN_LIVE_TV_SOURCE_TESTS=true integration_test/tv/test/iptv_org_live_sources_test.dart is executed
Then: endpoints should be reachable and at least one playlist entry should resolve against the published guide
Fixtures: public endpoints only
Mocks/stubs: none
Assertions: source overlap is found; output remains actionable
Cleanup: temp downloaded files removed
Evidence From July 23, 2026 Run
Commands run
cd /Users/udaychauhan/workspace/airo/app
flutter test -d macos integration_test/tv/test/epg_import_test.dart
flutter test -d macos --dart-define=AIRO_RUN_LIVE_TV_SOURCE_TESTS=true integration_test/tv/test/iptv_org_live_sources_test.dart
Functional result
epg_import_test.dart passed.
iptv_org_live_sources_test.dart passed after fixing the test helper to avoid closing the HTTP client before the body stream completed.
- Live source overlap was confirmed against the current public sources on July 23, 2026 using
4TVNews.in@SD.
Problems observed
- Runner log:
Failed to foreground app; open returned 1
- Repeated macOS CocoaPods warnings about
MACOSX_DEPLOYMENT_TARGET being set to 10.11 or 10.12 while supported versions start at 10.13
- Flutter warning that these plugins do not support Swift Package Manager for macOS:
flutter_image_compress_macos
flutter_tts
media_kit_libs_macos_video
media_kit_native_event_loop
pdfx
- Linker warning: building for macOS 11.0 while linking with
XCTest.framework built for newer version 14.0
Expected Outcome
- macOS TV qualification runs should either:
- foreground the built app cleanly, or
- document that foregrounding is intentionally not required and suppress/avoid the misleading failure log.
- Build/test warning volume should be reduced to a known-approved baseline so test regressions are easy to spot.
- Any remaining upstream warnings should be explicitly tracked and documented.
Implementation Boundaries
- Framework files: Flutter/macOS test runner config if needed.
- Application files:
app/macos/ config and TV qualification test config/docs.
- Tests: rerun the two macOS TV integration commands above.
- Docs: qualification run notes if some warnings are accepted as upstream noise.
- Verification environment: local macOS.
Feature Packet
Primary owner agent: Chief Release/DevOps Officer
Review agents: Chief QA Officer, Platform Architect, Chief Open Source Officer
Layer: Mixed
Parent roadmap: TV qualification automation
Critical Agent Gate
Problem: The Airo TV integration-test runs on macOS are passing functionally, but the run is noisy and partially degraded. The runner logs
Failed to foreground app; open returned 1, emits repeated CocoaPods deployment-target warnings, and emits Flutter plugin warnings about missing Swift Package Manager support on macOS. This makes qualification output harder to trust and masks real failures.User / actor: QA automation, release/dev tooling, engineers running TV qualification locally on macOS.
Framework or application layer: Mixed. The foregrounding behavior is runner/platform/tooling-facing. The warnings are build/dependency/configuration-facing.
Owning agent: Chief Release/DevOps Officer.
Reviewing agents: Chief QA Officer, Platform Architect, Chief Open Source Officer.
Impacted modules/files:
app/macos/, Flutter macOS test runner configuration, macOS dependency configuration, TV integration test docs/config.Base branch/worktree: issue only; no implementation started.
Open questions:
Failed to foreground app; open returned 1coming from Flutter test tooling, Codex desktop environment, or repo-specific macOS runner config?Decision: Ready
Cross-Agent Contract
Provider agent: Chief Release/DevOps Officer
Consumer agent: Chief QA Officer / TV qualification maintainers
Interface/API: Local
flutter test -d macosTV qualification workflow and its expected clean output.Input shape: macOS local test execution of TV integration suites.
Output shape: Clean test output where actionable failures are distinguishable from environment noise; either working app foregrounding or an intentional documented non-blocking behavior.
State changes: macOS runner/build config and possibly test docs/config.
Errors: Runner launch/foreground failures, dependency target mismatch warnings, plugin packaging warnings.
Permissions: none beyond local build/test.
Privacy/redaction: no user data involved.
Persistence: repository config/docs only.
Versioning/migration: none expected.
Tests required: focused macOS TV integration reruns plus evidence capture.
Deterministic Use Cases
UC-001: Deterministic TV EPG test run on macOS
Actor: Engineer running local TV qualification on macOS.
Preconditions: macOS environment can build the app and run
flutter test -d macos.Trigger: Run
flutter test -d macos integration_test/tv/test/epg_import_test.dart.Happy path: App builds, test runs, test passes, output contains no misleading runner/packaging noise beyond known approved items.
Alternate paths: If upstream plugin/tooling warnings remain unavoidable, output is reduced to a documented accepted baseline.
Failure paths: Foreground failure, deployment-target warnings, or packaging warnings obscure real failures or indicate misconfiguration.
Data created/updated/deleted: local build artifacts only.
Privacy expectations: no external/user data.
UC-002: Opt-in live-source smoke test on macOS
Actor: Engineer validating current public IPTV/EPG source compatibility.
Preconditions: network access available;
AIRO_RUN_LIVE_TV_SOURCE_TESTS=true.Trigger: Run
flutter test -d macos --dart-define=AIRO_RUN_LIVE_TV_SOURCE_TESTS=true integration_test/tv/test/iptv_org_live_sources_test.dart.Happy path: App builds, endpoints are reachable, playlist/EPG overlap is validated, and the run output is clean enough to identify real network/source failures.
Alternate paths: Source-side failures are surfaced clearly as source failures, not runner noise.
Failure paths: Local macOS runner issues or dependency warnings make it unclear whether the source validation itself failed.
Data created/updated/deleted: temporary downloaded guide artifacts only.
Privacy expectations: public source data only.
Automation Flow
AUTO-001: Local deterministic TV EPG test
Given: the app workspace on macOS
When:
flutter test -d macos integration_test/tv/test/epg_import_test.dartis executedThen: the app should build, run the EPG import test, and exit without runner foreground failure or avoidable warning noise
Fixtures: local XMLTV fixture under
app/integration_test/tv/helpers/playlist_fixtures.dartMocks/stubs: none beyond test-time provider overrides already in the suite
Assertions: test passes; output is clean/approved; no
open returned 1unless explicitly documented as non-actionableCleanup: standard Flutter build/test cleanup
AUTO-002: Local live-source smoke validation
Given: network access and current public source availability
When:
flutter test -d macos --dart-define=AIRO_RUN_LIVE_TV_SOURCE_TESTS=true integration_test/tv/test/iptv_org_live_sources_test.dartis executedThen: endpoints should be reachable and at least one playlist entry should resolve against the published guide
Fixtures: public endpoints only
Mocks/stubs: none
Assertions: source overlap is found; output remains actionable
Cleanup: temp downloaded files removed
Evidence From July 23, 2026 Run
Commands run
Functional result
epg_import_test.dartpassed.iptv_org_live_sources_test.dartpassed after fixing the test helper to avoid closing the HTTP client before the body stream completed.4TVNews.in@SD.Problems observed
Failed to foreground app; open returned 1MACOSX_DEPLOYMENT_TARGETbeing set to10.11or10.12while supported versions start at10.13flutter_image_compress_macosflutter_ttsmedia_kit_libs_macos_videomedia_kit_native_event_looppdfxXCTest.frameworkbuilt for newer version 14.0Expected Outcome
Implementation Boundaries
app/macos/config and TV qualification test config/docs.