============================= test session starts ============================== platform darwin -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- [LOCAL_WORKSPACE]/KINDYNOS/OTHER APPS/STAR/venv/bin/python cachedir: .pytest_cache rootdir: [LOCAL_WORKSPACE]/KINDYNOS/OTHER APPS/STAR/backend plugins: anyio-4.12.1 collecting ... collected 386 items v4/tests/test_artifact_assembler.py::TestJobResult::test_default_status PASSED [ 0%] v4/tests/test_artifact_assembler.py::TestJobResult::test_custom_fields PASSED [ 0%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_basic_assembly PASSED [ 0%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_artifact_hashes_populated PASSED [ 1%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_engine_ids_collected PASSED [ 1%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_ledger_stages_appended PASSED [ 1%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_failed_job_institutional_raises PASSED [ 1%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_failed_job_creative_continues PASSED [ 2%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_deterministic_artifact_id PASSED [ 2%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_cumulative_hash_deterministic PASSED [ 2%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_provenance_fields PASSED [ 2%] v4/tests/test_artifact_assembler.py::TestAssembleArtifact::test_empty_job_results PASSED [ 3%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_identical_input_identical_hashes PASSED [ 3%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_chain_integrity_N_runs PASSED [ 3%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_stages_complete PASSED [ 3%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_ledger_ordering PASSED [ 4%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_cumulative_hash_stable PASSED [ 4%] v4/tests/test_certification.py::TestReplayCertificationGate::test_cert_different_inputs_different_outputs PASSED [ 4%] v4/tests/test_certification.py::TestCrossBundleCertification::test_eva_report_certification PASSED [ 4%] v4/tests/test_certification.py::TestCrossBundleCertification::test_csuite_branch_certification PASSED [ 5%] v4/tests/test_certification.py::TestCrossBundleCertification::test_iris_view_certification PASSED [ 5%] v4/tests/test_certification.py::TestCrossBundleCertification::test_cross_bundle_determinism PASSED [ 5%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[BOARD_BRIEF_V1] PASSED [ 5%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[AFTER_ACTION_V1] PASSED [ 6%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[TRAINING_NARRATION_V1] PASSED [ 6%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[INVESTOR_BRIEF_V1] PASSED [ 6%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[BOARD_BRIEF_VIDEO_V1] PASSED [ 6%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[LIVE_NARRATION_V1] PASSED [ 7%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[BRANCH_COMPARISON_NARRATION_V1] PASSED [ 7%] v4/tests/test_certification.py::TestTemplateCertification::test_all_templates_produce_valid_artifacts[AFTER_ACTION_NARRATION_V1] PASSED [ 7%] v4/tests/test_certification.py::TestTemplateCertification::test_template_switch_changes_output PASSED [ 8%] v4/tests/test_certification.py::TestTemplateCertification::test_template_determinism_per_template PASSED [ 8%] v4/tests/test_certification.py::TestStoreCertification::test_store_round_trip PASSED [ 8%] v4/tests/test_certification.py::TestStoreCertification::test_store_idempotent PASSED [ 8%] v4/tests/test_certification.py::TestStoreCertification::test_store_isolation PASSED [ 9%] v4/tests/test_certification.py::TestEdgeCaseCertification::test_minimal_bundle PASSED [ 9%] v4/tests/test_certification.py::TestEdgeCaseCertification::test_many_events_bundle PASSED [ 9%] v4/tests/test_certification.py::TestEdgeCaseCertification::test_many_metrics_bundle PASSED [ 9%] v4/tests/test_certification.py::TestEdgeCaseCertification::test_creative_mode_passes PASSED [ 10%] v4/tests/test_certification.py::TestEdgeCaseCertification::test_creative_mode_no_strict_verification PASSED [ 10%] v4/tests/test_certification.py::TestModuleInfoCertification::test_module_info_version PASSED [ 10%] v4/tests/test_certification.py::TestModuleInfoCertification::test_module_info_endpoints_count PASSED [ 10%] v4/tests/test_certification.py::TestModuleInfoCertification::test_module_info_bundle_types PASSED [ 11%] v4/tests/test_certification.py::TestModuleInfoCertification::test_module_info_source_systems PASSED [ 11%] v4/tests/test_data_contracts.py::TestConstants::test_bundle_types PASSED [ 11%] v4/tests/test_data_contracts.py::TestConstants::test_source_systems PASSED [ 11%] v4/tests/test_data_contracts.py::TestConstants::test_modes PASSED [ 12%] v4/tests/test_data_contracts.py::TestConstants::test_scene_types_complete PASSED [ 12%] v4/tests/test_data_contracts.py::TestConstants::test_ledger_stages_ordered PASSED [ 12%] v4/tests/test_data_contracts.py::TestConstants::test_lifecycle_phases_count PASSED [ 12%] v4/tests/test_data_contracts.py::TestInputBundle::test_defaults PASSED [ 13%] v4/tests/test_data_contracts.py::TestInputBundle::test_with_events PASSED [ 13%] v4/tests/test_data_contracts.py::TestInputBundle::test_determinism_policy_default PASSED [ 13%] v4/tests/test_data_contracts.py::TestClaimEntry::test_construction PASSED [ 13%] v4/tests/test_data_contracts.py::TestSceneShot::test_scene_defaults PASSED [ 14%] v4/tests/test_data_contracts.py::TestSceneShot::test_shot_construction PASSED [ 14%] v4/tests/test_data_contracts.py::TestSceneGraph::test_construction PASSED [ 14%] v4/tests/test_data_contracts.py::TestRenderPlan::test_construction PASSED [ 15%] v4/tests/test_data_contracts.py::TestRenderPlan::test_with_jobs PASSED [ 15%] v4/tests/test_data_contracts.py::TestArtifactPackage::test_defaults PASSED [ 15%] v4/tests/test_data_contracts.py::TestArtifactPackage::test_artifact_hashes PASSED [ 15%] v4/tests/test_data_contracts.py::TestLedgerEntry::test_construction PASSED [ 16%] v4/tests/test_data_contracts.py::TestVoiceProfile::test_defaults PASSED [ 16%] v4/tests/test_data_contracts.py::TestBoundaryReport::test_defaults PASSED [ 16%] v4/tests/test_data_contracts.py::TestNarrativeOutput::test_defaults PASSED [ 16%] v4/tests/test_data_contracts.py::TestRenderRequest::test_defaults PASSED [ 17%] v4/tests/test_data_contracts.py::TestSpeechUtterance::test_construction PASSED [ 17%] v4/tests/test_data_contracts.py::TestDataclassToDict::test_simple PASSED [ 17%] v4/tests/test_data_contracts.py::TestDataclassToDict::test_nested PASSED [ 17%] v4/tests/test_data_contracts.py::TestDataclassToDict::test_list_of_dataclasses PASSED [ 18%] v4/tests/test_data_contracts.py::TestDataclassToDict::test_non_dataclass_passthrough PASSED [ 18%] v4/tests/test_data_contracts.py::TestDataclassToDict::test_dict_values_converted PASSED [ 18%] v4/tests/test_determinism.py::TestRoundFloats::test_float_rounded PASSED [ 18%] v4/tests/test_determinism.py::TestRoundFloats::test_int_unchanged PASSED [ 19%] v4/tests/test_determinism.py::TestRoundFloats::test_string_unchanged PASSED [ 19%] v4/tests/test_determinism.py::TestRoundFloats::test_dict_recursive PASSED [ 19%] v4/tests/test_determinism.py::TestRoundFloats::test_list_recursive PASSED [ 19%] v4/tests/test_determinism.py::TestRoundFloats::test_tuple_preserved PASSED [ 20%] v4/tests/test_determinism.py::TestRoundFloats::test_none_unchanged PASSED [ 20%] v4/tests/test_determinism.py::TestRoundFloats::test_precision_zero PASSED [ 20%] v4/tests/test_determinism.py::TestRoundFloats::test_nested_mixed PASSED [ 20%] v4/tests/test_determinism.py::TestNormalizeNewlines::test_crlf_to_lf PASSED [ 21%] v4/tests/test_determinism.py::TestNormalizeNewlines::test_cr_to_lf PASSED [ 21%] v4/tests/test_determinism.py::TestNormalizeNewlines::test_lf_unchanged PASSED [ 21%] v4/tests/test_determinism.py::TestNormalizeNewlines::test_mixed PASSED [ 22%] v4/tests/test_determinism.py::TestNormalizeNewlines::test_empty PASSED [ 22%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_sorted_keys PASSED [ 22%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_float_precision PASSED [ 22%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_deterministic_identical_input PASSED [ 23%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_key_order_irrelevant PASSED [ 23%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_utf8_content PASSED [ 23%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_nested_sorting PASSED [ 23%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_empty_dict PASSED [ 24%] v4/tests/test_determinism.py::TestCanonicalSerialize::test_empty_list PASSED [ 24%] v4/tests/test_determinism.py::TestComputeHash::test_known_hash PASSED [ 24%] v4/tests/test_determinism.py::TestComputeHash::test_string_and_bytes_equal PASSED [ 24%] v4/tests/test_determinism.py::TestComputeHash::test_deterministic PASSED [ 25%] v4/tests/test_determinism.py::TestComputeHash::test_different_input_different_hash PASSED [ 25%] v4/tests/test_determinism.py::TestComputeHash::test_hex_length PASSED [ 25%] v4/tests/test_determinism.py::TestComputeObjectHash::test_deterministic PASSED [ 25%] v4/tests/test_determinism.py::TestComputeObjectHash::test_key_order_irrelevant PASSED [ 26%] v4/tests/test_determinism.py::TestComputeObjectHash::test_float_precision_matters PASSED [ 26%] v4/tests/test_determinism.py::TestDeterministicUuid::test_deterministic PASSED [ 26%] v4/tests/test_determinism.py::TestDeterministicUuid::test_different_inputs PASSED [ 26%] v4/tests/test_determinism.py::TestDeterministicUuid::test_format PASSED [ 27%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_default_policy_valid PASSED [ 27%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_invalid_type PASSED [ 27%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_invalid_precision PASSED [ 27%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_invalid_hash_algorithm PASSED [ 28%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_invalid_newline PASSED [ 28%] v4/tests/test_determinism.py::TestValidateDeterminismPolicy::test_invalid_rng PASSED [ 28%] v4/tests/test_determinism.py::TestHashEquivalence::test_gate_simple_object PASSED [ 29%] v4/tests/test_determinism.py::TestHashEquivalence::test_gate_nested_complex PASSED [ 29%] v4/tests/test_determinism.py::TestHashEquivalence::test_gate_key_order_does_not_matter PASSED [ 29%] v4/tests/test_determinism.py::TestHashEquivalence::test_gate_float_rounding_stability PASSED [ 29%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_ecosystem_fields_present_on_bundle PASSED [ 30%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_ecosystem_fields_default_empty PASSED [ 30%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_hash_stability_across_creation PASSED [ 30%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_institutional_mode_requires_ecosystem_hash PASSED [ 30%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_dev_mode_no_ecosystem_hash_ok PASSED [ 31%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_ecosystem_package_hash_in_required_refs PASSED [ 31%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_missing_ecosystem_package_hash_ref_fails PASSED [ 31%] v4/tests/test_ecosystem_switch.py::TestEcosystemSwitchSTAR::test_bundle_includes_ecosystem_hash_in_hash PASSED [ 31%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryInit::test_loads_13_default_engines PASSED [ 32%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryInit::test_all_expected_engine_ids_present PASSED [ 32%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryInit::test_not_frozen_on_init PASSED [ 32%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryInit::test_registry_hash_empty_before_freeze PASSED [ 32%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_existing_engine PASSED [ 33%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_nonexistent_returns_none PASSED [ 33%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_or_fail_existing PASSED [ 33%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_or_fail_nonexistent_raises PASSED [ 33%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_or_fail_institutional_enforcement_invideo PASSED [ 34%] v4/tests/test_engine_registry_v2.py::TestEngineLookup::test_get_or_fail_invideo_non_institutional_ok PASSED [ 34%] v4/tests/test_engine_registry_v2.py::TestEngineFreeze::test_freeze_sets_frozen_flag PASSED [ 34%] v4/tests/test_engine_registry_v2.py::TestEngineFreeze::test_freeze_produces_nonempty_hash PASSED [ 34%] v4/tests/test_engine_registry_v2.py::TestEngineFreeze::test_freeze_hash_matches_getter PASSED [ 35%] v4/tests/test_engine_registry_v2.py::TestEngineFreeze::test_freeze_updates_entry_hashes PASSED [ 35%] v4/tests/test_engine_registry_v2.py::TestEngineFreeze::test_freeze_updates_entry_timestamps PASSED [ 35%] v4/tests/test_engine_registry_v2.py::TestEngineRegistration::test_register_new_engine_before_freeze PASSED [ 36%] v4/tests/test_engine_registry_v2.py::TestEngineRegistration::test_register_after_freeze_raises PASSED [ 36%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[NARRATION_AUDIO-elevenlabs] PASSED [ 36%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[AVATAR_VIDEO-heygen] PASSED [ 36%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[CHART-openai_image] PASSED [ 37%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[NARRATION-veo] PASSED [ 37%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[DIALOGUE-veo] PASSED [ 37%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[MONTAGE-veo] PASSED [ 37%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_scene_type_mapping[TRANSITION-veo] PASSED [ 38%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_unknown_scene_type_defaults_to_veo PASSED [ 38%] v4/tests/test_engine_registry_v2.py::TestEngineSelection::test_institutional_enforcement_on_selection PASSED [ 38%] v4/tests/test_engine_registry_v2.py::TestEngineExport::test_export_structure_unfrozen PASSED [ 38%] v4/tests/test_engine_registry_v2.py::TestEngineExport::test_export_engines_count PASSED [ 39%] v4/tests/test_engine_registry_v2.py::TestEngineExport::test_export_engines_sorted_by_id PASSED [ 39%] v4/tests/test_engine_registry_v2.py::TestEngineExport::test_export_frozen_has_hash PASSED [ 39%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryDeterminism::test_two_registries_same_hash PASSED [ 39%] v4/tests/test_engine_registry_v2.py::TestEngineRegistryDeterminism::test_registry_version_is_4_0_0 PASSED [ 40%] v4/tests/test_input_validator.py::TestValidBundles::test_valid_eva_report PASSED [ 40%] v4/tests/test_input_validator.py::TestValidBundles::test_valid_csuite_branch PASSED [ 40%] v4/tests/test_input_validator.py::TestValidBundles::test_valid_iris_view PASSED [ 40%] v4/tests/test_input_validator.py::TestInvalidFields::test_empty_bundle_id PASSED [ 41%] v4/tests/test_input_validator.py::TestInvalidFields::test_invalid_bundle_type PASSED [ 41%] v4/tests/test_input_validator.py::TestInvalidFields::test_invalid_source_system PASSED [ 41%] v4/tests/test_input_validator.py::TestInvalidFields::test_invalid_mode PASSED [ 41%] v4/tests/test_input_validator.py::TestSourceRefs::test_csuite_missing_simulation_id PASSED [ 42%] v4/tests/test_input_validator.py::TestSourceRefs::test_csuite_empty_ref PASSED [ 42%] v4/tests/test_input_validator.py::TestSourceRefs::test_eva_missing_hazard_vector PASSED [ 42%] v4/tests/test_input_validator.py::TestMetricNamespaces::test_valid_namespaces PASSED [ 43%] v4/tests/test_input_validator.py::TestMetricNamespaces::test_invalid_namespace PASSED [ 43%] v4/tests/test_input_validator.py::TestEventValidation::test_event_empty_id PASSED [ 43%] v4/tests/test_input_validator.py::TestEventValidation::test_event_empty_domain PASSED [ 43%] v4/tests/test_input_validator.py::TestHashComputation::test_hash_deterministic PASSED [ 44%] v4/tests/test_input_validator.py::TestHashComputation::test_hash_mismatch_detected PASSED [ 44%] v4/tests/test_input_validator.py::TestHashComputation::test_hash_match_accepted PASSED [ 44%] v4/tests/test_input_validator.py::TestHashComputation::test_empty_hash_accepted PASSED [ 44%] v4/tests/test_input_validator.py::TestDeterminismPolicy::test_invalid_algorithm PASSED [ 45%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_eva_pipeline_success PASSED [ 45%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_csuite_pipeline_success PASSED [ 45%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_iris_pipeline_success PASSED [ 45%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_verification_passes PASSED [ 46%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_pipeline_metadata PASSED [ 46%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_ledger_export_structure PASSED [ 46%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_artifact_structure PASSED [ 46%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_custom_template PASSED [ 47%] v4/tests/test_integration.py::TestInstitutionalPipeline::test_invalid_template_raises PASSED [ 47%] v4/tests/test_integration.py::TestPipelineWithStore::test_pipeline_persists_to_store PASSED [ 47%] v4/tests/test_integration.py::TestPipelineWithStore::test_store_has_scene_graph PASSED [ 47%] v4/tests/test_integration.py::TestPipelineWithStore::test_store_has_ledger_entries PASSED [ 48%] v4/tests/test_integration.py::TestReplayDeterminism::test_identical_input_identical_output PASSED [ 48%] v4/tests/test_integration.py::TestReplayDeterminism::test_different_bundles_different_hashes PASSED [ 48%] v4/tests/test_integration.py::TestReplayDeterminism::test_replay_chain_valid_across_runs PASSED [ 48%] v4/tests/test_integration.py::TestValidationFailures::test_empty_bundle_id_fails PASSED [ 49%] v4/tests/test_integration.py::TestValidationFailures::test_invalid_bundle_type_fails PASSED [ 49%] v4/tests/test_integration.py::TestValidationFailures::test_missing_source_refs_fails PASSED [ 49%] v4/tests/test_integration.py::TestModuleInfo::test_module_info_structure PASSED [ 50%] v4/tests/test_kaila_client.py::TestKAILAClientInit::test_default_mode PASSED [ 50%] v4/tests/test_kaila_client.py::TestKAILAClientInit::test_custom_mode PASSED [ 50%] v4/tests/test_kaila_client.py::TestFetchInputBundle::test_fetch_missing_returns_none PASSED [ 50%] v4/tests/test_kaila_client.py::TestFetchInputBundle::test_store_and_fetch PASSED [ 51%] v4/tests/test_kaila_client.py::TestFetchInputBundle::test_production_raises PASSED [ 51%] v4/tests/test_kaila_client.py::TestValidateSourceReferences::test_valid_refs PASSED [ 51%] v4/tests/test_kaila_client.py::TestValidateSourceReferences::test_empty_refs PASSED [ 51%] v4/tests/test_kaila_client.py::TestRegisterArtifact::test_register_development PASSED [ 52%] v4/tests/test_kaila_client.py::TestRegisterArtifact::test_retrieve_local PASSED [ 52%] v4/tests/test_kaila_client.py::TestRegisterArtifact::test_production_raises PASSED [ 52%] v4/tests/test_kaila_client.py::TestRegisterReplayLedger::test_register_ledger PASSED [ 52%] v4/tests/test_kaila_client.py::TestRegisterReplayLedger::test_retrieve_local_ledger PASSED [ 53%] v4/tests/test_kaila_client.py::TestRegisterReplayLedger::test_production_raises PASSED [ 53%] v4/tests/test_kaila_client.py::TestFetchEngineRegistryVersion::test_returns_version PASSED [ 53%] v4/tests/test_kaila_client.py::TestSubmitBoundaryReport::test_submit_development PASSED [ 53%] v4/tests/test_kaila_client.py::TestSubmitBoundaryReport::test_production_raises PASSED [ 54%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_valid_institutional PASSED [ 54%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_wrong_mode PASSED [ 54%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_template_not_frozen PASSED [ 54%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_missing_template_version PASSED [ 55%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_missing_engine_registry PASSED [ 55%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_invalid_hash_algorithm PASSED [ 55%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_invalid_rng_policy PASSED [ 55%] v4/tests/test_mode_guard.py::TestInstitutionalMode::test_no_boundary_report_warns PASSED [ 56%] v4/tests/test_mode_guard.py::TestCreativeMode::test_valid_creative PASSED [ 56%] v4/tests/test_mode_guard.py::TestCreativeMode::test_wrong_mode PASSED [ 56%] v4/tests/test_mode_guard.py::TestCreativeMode::test_empty_bundle_id PASSED [ 56%] v4/tests/test_mode_guard.py::TestEnforceMode::test_institutional_dispatch PASSED [ 57%] v4/tests/test_mode_guard.py::TestEnforceMode::test_creative_dispatch PASSED [ 57%] v4/tests/test_mode_guard.py::TestEnforceMode::test_unknown_mode_raises PASSED [ 57%] v4/tests/test_mode_guard.py::TestTemplateFreezeEnforcement::test_frozen_institutional_ok PASSED [ 58%] v4/tests/test_mode_guard.py::TestTemplateFreezeEnforcement::test_unfrozen_institutional_fails PASSED [ 58%] v4/tests/test_mode_guard.py::TestTemplateFreezeEnforcement::test_unfrozen_creative_ok PASSED [ 58%] v4/tests/test_mode_guard.py::TestEngineCapability::test_valid_institutional PASSED [ 58%] v4/tests/test_mode_guard.py::TestEngineCapability::test_no_institutional_support PASSED [ 59%] v4/tests/test_mode_guard.py::TestEngineCapability::test_no_deterministic_support PASSED [ 59%] v4/tests/test_mode_guard.py::TestEngineCapability::test_creative_mode_permissive PASSED [ 59%] v4/tests/test_mode_guard.py::TestClaimGrounding::test_all_grounded PASSED [ 59%] v4/tests/test_mode_guard.py::TestClaimGrounding::test_ungrounded_institutional_raises PASSED [ 60%] v4/tests/test_mode_guard.py::TestClaimGrounding::test_ungrounded_creative_returns_list PASSED [ 60%] v4/tests/test_mode_guard.py::TestClaimGrounding::test_invalid_source_type PASSED [ 60%] v4/tests/test_narration.py::TestNarrationPipeline::test_extracts_narration_scenes PASSED [ 60%] v4/tests/test_narration.py::TestNarrationPipeline::test_segment_fields PASSED [ 61%] v4/tests/test_narration.py::TestNarrationPipeline::test_empty_dialogue_skipped PASSED [ 61%] v4/tests/test_narration.py::TestNarrationPipeline::test_narration_hash_deterministic PASSED [ 61%] v4/tests/test_narration.py::TestNarrationPipeline::test_no_narration_scenes PASSED [ 61%] v4/tests/test_narration.py::TestAvatarPipeline::test_extracts_avatar_scenes PASSED [ 62%] v4/tests/test_narration.py::TestAvatarPipeline::test_segment_fields PASSED [ 62%] v4/tests/test_narration.py::TestAvatarPipeline::test_avatar_hash_deterministic PASSED [ 62%] v4/tests/test_narration.py::TestAvatarPipeline::test_no_avatar_scenes PASSED [ 62%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_default_profiles_loaded PASSED [ 63%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_existing_profile PASSED [ 63%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_missing_returns_none PASSED [ 63%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_or_fail_missing_raises PASSED [ 63%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_or_fail_unfrozen_institutional_raises PASSED [ 64%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_or_fail_institutional_unsupported_raises PASSED [ 64%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_get_or_fail_creative_allows_unfrozen PASSED [ 64%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_register_custom_profile PASSED [ 65%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_registry_hash_deterministic PASSED [ 65%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_registry_hash_changes_on_register PASSED [ 65%] v4/tests/test_narration.py::TestVoiceProfileRegistry::test_all_defaults_institutional PASSED [ 65%] v4/tests/test_nce.py::TestExtractClaims::test_claims_from_metrics PASSED [ 66%] v4/tests/test_nce.py::TestExtractClaims::test_claims_from_events PASSED [ 66%] v4/tests/test_nce.py::TestExtractClaims::test_claims_from_constraints PASSED [ 66%] v4/tests/test_nce.py::TestExtractClaims::test_claims_from_recommendations PASSED [ 66%] v4/tests/test_nce.py::TestExtractClaims::test_claim_ids_are_deterministic PASSED [ 67%] v4/tests/test_nce.py::TestExtractClaims::test_claim_hashes_are_deterministic PASSED [ 67%] v4/tests/test_nce.py::TestExtractClaims::test_total_claims_count PASSED [ 67%] v4/tests/test_nce.py::TestNarrativeOutline::test_all_7_sections_present PASSED [ 67%] v4/tests/test_nce.py::TestNarrativeOutline::test_constraint_violations_detected PASSED [ 68%] v4/tests/test_nce.py::TestNarrativeOutline::test_regret_analysis_eva_report PASSED [ 68%] v4/tests/test_nce.py::TestNarrativeOutline::test_regret_analysis_csuite PASSED [ 68%] v4/tests/test_nce.py::TestScriptDraft::test_contains_all_sections PASSED [ 68%] v4/tests/test_nce.py::TestScriptDraft::test_contains_claim_refs PASSED [ 69%] v4/tests/test_nce.py::TestScriptDraft::test_deterministic PASSED [ 69%] v4/tests/test_nce.py::TestCanonicalPrompt::test_contains_template_info PASSED [ 69%] v4/tests/test_nce.py::TestCanonicalPrompt::test_contains_bundle_info PASSED [ 69%] v4/tests/test_nce.py::TestCanonicalPrompt::test_metrics_sorted PASSED [ 70%] v4/tests/test_nce.py::TestCanonicalPrompt::test_deterministic PASSED [ 70%] v4/tests/test_nce.py::TestRunNCE::test_produces_output PASSED [ 70%] v4/tests/test_nce.py::TestRunNCE::test_deterministic_output_hash PASSED [ 70%] v4/tests/test_nce.py::TestRunNCE::test_identical_script_draft PASSED [ 71%] v4/tests/test_nce.py::TestRunNCE::test_empty_bundle_raises PASSED [ 71%] v4/tests/test_nce.py::TestRunNCE::test_narrative_outline_sections PASSED [ 71%] v4/tests/test_render_planner.py::TestRenderPlanGeneration::test_generates_plan PASSED [ 72%] v4/tests/test_render_planner.py::TestRenderPlanGeneration::test_scene_graph_hash_recorded PASSED [ 72%] v4/tests/test_render_planner.py::TestRenderPlanGeneration::test_engine_registry_version PASSED [ 72%] v4/tests/test_render_planner.py::TestRenderPlanGeneration::test_all_jobs_have_hashes PASSED [ 72%] v4/tests/test_render_planner.py::TestRenderPlanGeneration::test_jobs_reference_scenes PASSED [ 73%] v4/tests/test_render_planner.py::TestEngineSelection::test_narration_scenes_get_video_engine PASSED [ 73%] v4/tests/test_render_planner.py::TestEngineSelection::test_chart_scenes_get_image_engine PASSED [ 73%] v4/tests/test_render_planner.py::TestRenderPlanDeterminism::test_identical_input_identical_hash PASSED [ 73%] v4/tests/test_render_planner.py::TestRenderPlanDeterminism::test_job_hashes_stable PASSED [ 74%] v4/tests/test_render_planner.py::TestRenderPlanDeterminism::test_job_count_stable PASSED [ 74%] v4/tests/test_render_planner.py::TestRenderPlanErrors::test_unfrozen_registry_fails PASSED [ 74%] v4/tests/test_render_planner.py::TestRenderPlanErrors::test_unfrozen_registry_ok_creative PASSED [ 74%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_new_ledger_empty PASSED [ 75%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_first_entry_parent_is_genesis PASSED [ 75%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_cumulative_hash_computed PASSED [ 75%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_second_entry_chains PASSED [ 75%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_entry_id_increments PASSED [ 76%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_bundle_id_stored PASSED [ 76%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_actor_defaults PASSED [ 76%] v4/tests/test_replay_ledger.py::TestReplayLedgerBasics::test_actor_custom PASSED [ 76%] v4/tests/test_replay_ledger.py::TestInvalidStage::test_unknown_stage_raises PASSED [ 77%] v4/tests/test_replay_ledger.py::TestInvalidStage::test_empty_stage_raises PASSED [ 77%] v4/tests/test_replay_ledger.py::TestClose::test_close_prevents_append PASSED [ 77%] v4/tests/test_replay_ledger.py::TestClose::test_close_idempotent PASSED [ 77%] v4/tests/test_replay_ledger.py::TestVerifyChain::test_empty_chain_valid PASSED [ 78%] v4/tests/test_replay_ledger.py::TestVerifyChain::test_single_entry_valid PASSED [ 78%] v4/tests/test_replay_ledger.py::TestVerifyChain::test_full_chain_valid PASSED [ 78%] v4/tests/test_replay_ledger.py::TestVerifyChain::test_tampered_chain_invalid PASSED [ 79%] v4/tests/test_replay_ledger.py::TestVerifyStages::test_all_stages_present PASSED [ 79%] v4/tests/test_replay_ledger.py::TestVerifyStages::test_missing_stages PASSED [ 79%] v4/tests/test_replay_ledger.py::TestVerifyStages::test_creative_mode_always_passes PASSED [ 79%] v4/tests/test_replay_ledger.py::TestVerifyStages::test_out_of_order_detected PASSED [ 80%] v4/tests/test_replay_ledger.py::TestVerifyStages::test_multiple_render_jobs_allowed PASSED [ 80%] v4/tests/test_replay_ledger.py::TestAccessors::test_get_entries_returns_copy PASSED [ 80%] v4/tests/test_replay_ledger.py::TestAccessors::test_cumulative_hash_is_last_entry PASSED [ 80%] v4/tests/test_replay_ledger.py::TestExport::test_export_structure PASSED [ 81%] v4/tests/test_replay_ledger.py::TestExport::test_export_after_close PASSED [ 81%] v4/tests/test_replay_ledger.py::TestExport::test_export_entries_are_dicts PASSED [ 81%] v4/tests/test_replay_ledger.py::TestReplayDeterminism::test_identical_inputs_identical_chain PASSED [ 81%] v4/tests/test_replay_ledger.py::TestReplayDeterminism::test_different_input_different_chain PASSED [ 82%] v4/tests/test_scene_graph.py::TestParseSections::test_parses_sections PASSED [ 82%] v4/tests/test_scene_graph.py::TestParseSections::test_empty_string PASSED [ 82%] v4/tests/test_scene_graph.py::TestParseSections::test_no_sections PASSED [ 82%] v4/tests/test_scene_graph.py::TestSplitSentences::test_basic_split PASSED [ 83%] v4/tests/test_scene_graph.py::TestSplitSentences::test_single_sentence PASSED [ 83%] v4/tests/test_scene_graph.py::TestSplitSentences::test_empty_string PASSED [ 83%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_generates_graph PASSED [ 83%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_scene_order_preserved PASSED [ 84%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_all_scenes_have_hashes PASSED [ 84%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_scene_types_assigned PASSED [ 84%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_shots_exist PASSED [ 84%] v4/tests/test_scene_graph.py::TestSceneGraphGeneration::test_narrative_hash_recorded PASSED [ 85%] v4/tests/test_scene_graph.py::TestSceneGraphDeterminism::test_identical_input_identical_hash PASSED [ 85%] v4/tests/test_scene_graph.py::TestSceneGraphDeterminism::test_shot_splitting_stable PASSED [ 85%] v4/tests/test_scene_graph.py::TestSceneGraphDeterminism::test_scene_hashes_stable PASSED [ 86%] v4/tests/test_scene_graph.py::TestSceneGraphErrors::test_empty_script_draft PASSED [ 86%] v4/tests/test_store.py::TestBundles::test_save_and_get PASSED [ 86%] v4/tests/test_store.py::TestBundles::test_get_missing PASSED [ 86%] v4/tests/test_store.py::TestBundles::test_upsert PASSED [ 87%] v4/tests/test_store.py::TestBundles::test_json_fields_deserialized PASSED [ 87%] v4/tests/test_store.py::TestClaims::test_save_and_get PASSED [ 87%] v4/tests/test_store.py::TestClaims::test_get_claims_empty PASSED [ 87%] v4/tests/test_store.py::TestNarrativeOutputs::test_save_and_get PASSED [ 88%] v4/tests/test_store.py::TestNarrativeOutputs::test_get_missing PASSED [ 88%] v4/tests/test_store.py::TestSceneGraphs::test_save_and_get PASSED [ 88%] v4/tests/test_store.py::TestRenderPlans::test_save_and_get PASSED [ 88%] v4/tests/test_store.py::TestRenderJobLogs::test_save_and_get PASSED [ 89%] v4/tests/test_store.py::TestArtifacts::test_save_and_get PASSED [ 89%] v4/tests/test_store.py::TestArtifacts::test_list_artifacts PASSED [ 89%] v4/tests/test_store.py::TestLedgerPersistence::test_save_and_get PASSED [ 89%] v4/tests/test_store.py::TestLedgerPersistence::test_ordering_by_timestamp PASSED [ 90%] v4/tests/test_store.py::TestVoiceProfiles::test_save_and_get PASSED [ 90%] v4/tests/test_store.py::TestVoiceProfiles::test_list PASSED [ 90%] v4/tests/test_store.py::TestEngineRegistry::test_save_and_get PASSED [ 90%] v4/tests/test_store.py::TestEngineRegistry::test_list PASSED [ 91%] v4/tests/test_store.py::TestBoundaryReports::test_save_and_get PASSED [ 91%] v4/tests/test_store.py::TestTemplates::test_save_and_get PASSED [ 91%] v4/tests/test_store.py::TestTemplates::test_list PASSED [ 91%] v4/tests/test_store.py::TestSpeechUtterances::test_save_and_get PASSED [ 92%] v4/tests/test_store.py::TestSchemaIdempotent::test_double_init PASSED [ 92%] v4/tests/test_template_registry.py::TestTemplateDefinition::test_compute_template_hash_returns_hex_string PASSED [ 92%] v4/tests/test_template_registry.py::TestTemplateDefinition::test_compute_template_hash_sets_field PASSED [ 93%] v4/tests/test_template_registry.py::TestTemplateDefinition::test_compute_template_hash_deterministic PASSED [ 93%] v4/tests/test_template_registry.py::TestTemplateDefinition::test_compute_template_hash_changes_with_content PASSED [ 93%] v4/tests/test_template_registry.py::TestTemplateDefinition::test_default_frozen_is_true PASSED [ 93%] v4/tests/test_template_registry.py::TestTemplateRegistryInit::test_loads_eight_default_templates PASSED [ 94%] v4/tests/test_template_registry.py::TestTemplateRegistryInit::test_all_expected_ids_present PASSED [ 94%] v4/tests/test_template_registry.py::TestTemplateRegistryInit::test_all_defaults_are_frozen PASSED [ 94%] v4/tests/test_template_registry.py::TestTemplateRegistryInit::test_all_defaults_have_hash_computed PASSED [ 94%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_found PASSED [ 95%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_not_found_returns_none PASSED [ 95%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_or_fail_found PASSED [ 95%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_or_fail_not_found_raises PASSED [ 95%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_or_fail_unfrozen_institutional_raises PASSED [ 96%] v4/tests/test_template_registry.py::TestTemplateLookup::test_get_or_fail_unfrozen_non_institutional_ok PASSED [ 96%] v4/tests/test_template_registry.py::TestTemplateRegistration::test_register_custom_template PASSED [ 96%] v4/tests/test_template_registry.py::TestTemplateRegistration::test_register_auto_computes_hash PASSED [ 96%] v4/tests/test_template_registry.py::TestTemplateRegistration::test_register_preserves_existing_hash PASSED [ 97%] v4/tests/test_template_registry.py::TestTemplateRegistration::test_register_increases_template_count PASSED [ 97%] v4/tests/test_template_registry.py::TestTemplateRegistryDeterminism::test_registry_hash_deterministic_across_instances PASSED [ 97%] v4/tests/test_template_registry.py::TestTemplateRegistryDeterminism::test_registry_hash_is_valid_sha256 PASSED [ 97%] v4/tests/test_template_registry.py::TestTemplateRegistryDeterminism::test_registry_hash_changes_after_registration PASSED [ 98%] v4/tests/test_template_registry.py::TestTemplateRegistryDeterminism::test_individual_template_hashes_stable_across_instances PASSED [ 98%] v4/tests/test_template_registry.py::TestTemplateContent::test_all_templates_have_narrative_sections PASSED [ 98%] v4/tests/test_template_registry.py::TestTemplateContent::test_citation_rules_present_on_all_templates PASSED [ 98%] v4/tests/test_template_registry.py::TestTemplateContent::test_determinism_policy_temperature_zero PASSED [ 99%] v4/tests/test_template_registry.py::TestTemplateContent::test_determinism_policy_precision_eight PASSED [ 99%] v4/tests/test_template_registry.py::TestTemplateContent::test_all_templates_version_1_0_0 PASSED [ 99%] v4/tests/test_template_registry.py::TestTemplateContent::test_max_tokens_covers_all_sections PASSED [100%] ============================= 386 passed in 0.69s ==============================