Skip to content

Native reader labs + Brain v4: exhaustive device evidence and repair loop #531

Native reader labs + Brain v4: exhaustive device evidence and repair loop

Native reader labs + Brain v4: exhaustive device evidence and repair loop #531

name: Canonical media type, playback core and native evidence gate
on:
pull_request:
branches: [main]
paths:
- "provider_catalog.json"
- "manifest.json"
- "vf/manifest.json"
- "package.json"
- "package-lock.json"
- ".github/triggers/nuvio-client-lab.json"
- "automation/native-human-ux-policy.json"
- "automation/nuvio-client-compatibility-matrix.json"
- "assets/**"
- "engine_v2/config/global-repair-skills.json"
- "engine_v2/src/**"
- "engine_v2/tests/**"
- "engine_v2/scripts/plan-repairs.mjs"
- "engine_v2/scripts/diagnose-native-reader.mjs"
- "engine_v2/scripts/diagnose-native-media-capabilities.mjs"
- "engine_v2/scripts/learning-lab.mjs"
- "engine_v2/scripts/watch-upstream-providers.mjs"
- "scripts/check_nuvio_client_upstreams.py"
- "scripts/nuvio_runtime_compatibility.py"
- "scripts/resolve_nuvio_lab_heads.py"
- "scripts/scope_native_reader_learning_runtime.py"
- "scripts/prepare_native_corpus_validation.py"
- "scripts/native_player_diagnostics_codegen.py"
- "scripts/augment_native_corpus_request_contract.py"
- "scripts/augment_native_provider_loading.py"
- "scripts/prepare_native_candidate_repository.py"
- "scripts/resolve_native_repository.sh"
- "scripts/prime_android_lab_adb.sh"
- "scripts/native_evidence_completeness.cjs"
- "scripts/analyze_native_corpus_collection.cjs"
- "scripts/analyze_native_corpus_results.cjs"
- "scripts/analyze_native_media_type_capabilities.cjs"
- "scripts/gate_native_reader_result.cjs"
- "scripts/gate_native_reader_coverage.cjs"
- "scripts/instrument_native_client_evidence.py"
- "scripts/instrument_native_repository_http_evidence.py"
- "scripts/instrument_native_desktop_evidence.py"
- "scripts/capture_native_device_frontend.sh"
- "scripts/watch_native_device_frontend.sh"
- "scripts/augment_native_desktop_player.py"
- "scripts/complete_native_desktop_frontend_phases.py"
- "scripts/run_native_corpus_tv_suite.sh"
- "scripts/run_native_corpus_mobile_suite.sh"
- "scripts/run_native_corpus_desktop_suite.sh"
- "scripts/merge_native_reader_repair_learning.py"
- "scripts/merge_native_reader_backlog.py"
- "scripts/adaptive_runtime/runtime_repair.py"
- "scripts/provider_patches/safe_structured_parse_v1.py"
- "scripts/provider_patches/global_stream_facts_v1.py"
- "scripts/provider_patches/global_stream_identity_v1.py"
- "scripts/provider_patches/global_stream_presentation_v1.py"
- ".github/workflows/native-android-route-reader.yml"
- ".github/workflows/native-desktop-reader-acceptance.yml"
- ".github/workflows/native-reader-learning-sync.yml"
- ".github/workflows/brain-learning-lab.yml"
- "tests/canonical_media_types_test.py"
- "tests/global_stream_identity_test.py"
- "tests/global_stream_presentation_test.py"
- "tests/global_stream_presentation_pipeline_test.py"
- "tests/badge_asset_contract_test.py"
- "tests/brain_cron_full_coverage_test.py"
- "tests/safe_structured_parse_skill_test.py"
- "tests/adaptive_safe_structured_parse_profile_test.py"
- "tests/native_android_avd_cache_contract_test.py"
- "tests/native_evidence_contract_test.py"
- "tests/native_evidence_completeness_test.cjs"
- "tests/native_evidence_codegen_pipeline_test.py"
- "tests/native_player_diagnostics_codegen_test.py"
- "tests/native_lab_observational_purity_test.py"
- "tests/native_human_ux_policy_lock_test.py"
- "tests/native_repository_cache_contract_test.py"
- "tests/native_repository_http_instrumentation_test.py"
- "tests/native_media_type_capability_test.py"
- "tests/native_reader_learning_memory_test.py"
- "tests/native_reader_runtime_scope_test.py"
- "tests/nuvio_lab_head_resolver_test.py"
- "tests/native_reader_backlog_test.py"
- ".github/workflows/canonical-media-types.yml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: canonical-media-types-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
canonical-media-types:
runs-on: ubuntu-latest
timeout-minutes: 18
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with: {persist-credentials: false}
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with: {node-version: "24", package-manager-cache: false}
- name: Install exact dependency tree
run: npm ci --ignore-scripts --no-audit --no-fund
- name: Audit non-optional production dependencies
run: npm audit --audit-level=high --omit=optional
- name: Verify upgraded runtime imports
run: node -e "require('axios'); require('cheerio'); console.log('dependency imports ok')"
- name: Validate canonical catalog and manifest projections
run: python3 tests/canonical_media_types_test.py
- name: Validate canonical stream contract
run: node engine_v2/tests/contracts.test.mjs
- name: Validate shared stream presentation and TMDB fallback
run: node engine_v2/tests/stream-presentation.test.mjs
- name: Validate Core-wide stream facts, identity and presentation
run: |
python3 tests/global_stream_presentation_test.py
python3 tests/global_stream_presentation_pipeline_test.py
python3 tests/global_stream_identity_test.py
python3 tests/brain_cron_full_coverage_test.py
- name: Validate versioned Nuvio Brain compatibility and global structural skills
run: |
python3 scripts/nuvio_runtime_compatibility.py
node engine_v2/tests/repair-brain.test.mjs
python3 tests/safe_structured_parse_skill_test.py
python3 tests/adaptive_safe_structured_parse_profile_test.py
- name: Validate Android AVD reuse and adb bootstrap
run: python3 tests/native_android_avd_cache_contract_test.py
- name: Validate image badge assets and theme contrast mapping
run: python3 tests/badge_asset_contract_test.py
- name: Validate weekly upstream provider comparator
run: node engine_v2/tests/upstream-provider-watch.test.mjs
- name: Validate deep HLS playback chain and ranking
run: node engine_v2/tests/media-validator.test.mjs
- name: Validate resolver Core
run: node engine_v2/tests/resolver-core.test.mjs
- name: Validate Brain v4 reader causality
run: node engine_v2/tests/native-reader-brain-v4.test.mjs
- name: Validate exact official Nuvio Lab HEAD resolver
run: python3 tests/nuvio_lab_head_resolver_test.py
- name: Validate full native evidence architecture
run: python3 tests/native_evidence_contract_test.py
- name: Validate native evidence execution floor
run: node tests/native_evidence_completeness_test.cjs
- name: Validate native reader codegen purity
run: python3 tests/native_player_diagnostics_codegen_test.py
- name: Execute native evidence Kotlin codegen pipeline
run: python3 tests/native_evidence_codegen_pipeline_test.py
- name: Audit observational purity of native labs
run: python3 tests/native_lab_observational_purity_test.py
- name: Enforce locked human UX harness policy
run: python3 tests/native_human_ux_policy_lock_test.py
- name: Validate repository HTTP instrumentation contracts
run: python3 tests/native_repository_http_instrumentation_test.py
- name: Validate persistent native repository cache safety
run: python3 tests/native_repository_cache_contract_test.py
- name: Validate repository and reader Brain diagnosis
run: node engine_v2/tests/native-reader-diagnosis.test.mjs
- name: Validate native reader repair-memory merge
run: python3 tests/native_reader_learning_memory_test.py
- name: Validate reader memory isolation across Nuvio runtime drift
run: python3 tests/native_reader_runtime_scope_test.py
- name: Validate automatic native reader bug backlog
run: python3 tests/native_reader_backlog_test.py
- name: Validate Brain cross-day reader-memory preservation
run: node engine_v2/tests/learning-lab-memory.test.mjs
- name: Validate non-blocking tv/anime capability learning
run: python3 tests/native_media_type_capability_test.py