============================= test session starts ==============================
platform linux -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0 -- /root/gemma/projects/.power-framework-3.7.11-worktree/.venv/bin/python
cachedir: .pytest_cache
rootdir: /root/gemma/projects/.power-framework-3.7.11-worktree
configfile: pyproject.toml
plugins: anyio-4.14.2, asyncio-1.4.0, cov-7.1.0
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 1426 items / 17 deselected / 1409 selected

tests/test_application.py::test_retrieve_envelope_is_bounded_and_content_free_receipt PASSED [  0%]
tests/test_application.py::test_request_context_rejects_invalid_authority_actor_and_request_id PASSED [  0%]
tests/test_application.py::test_propose_apply_share_idempotent_application_contract PASSED [  0%]
tests/test_application.py::test_apply_proposal_by_id_uses_durable_canonical_record PASSED [  0%]
tests/test_application.py::test_optional_fleet_is_explicitly_unavailable PASSED [  0%]
tests/test_application.py::test_apply_requires_authority_and_approval PASSED [  0%]
tests/test_application.py::test_application_task_facade_uses_canonical_task_store PASSED [  0%]
tests/test_application_contract.py::test_retrieve_data_is_identical_through_direct_api_and_cli PASSED [  0%]
tests/test_application_contract.py::test_retrieve_data_is_identical_through_local_mcp PASSED [  0%]
tests/test_application_contract.py::test_receipt_use_case_is_bounded_and_content_free PASSED [  0%]
tests/test_application_contract.py::test_deadline_is_enforced_for_slow_read_without_mutating_vault PASSED [  0%]
tests/test_application_v2.py::test_path_normalization_and_containment PASSED [  0%]
tests/test_application_v2.py::test_read_only_application_service_does_not_create_task_namespace PASSED [  0%]
tests/test_application_v2.py::test_source_list_and_pagination PASSED     [  0%]
tests/test_application_v2.py::test_source_read_and_etag PASSED           [  1%]
tests/test_application_v2.py::test_source_stats PASSED                   [  1%]
tests/test_application_v2.py::test_source_stats_fallback_vault_id PASSED [  1%]
tests/test_application_v2.py::test_graph_projection PASSED               [  1%]
tests/test_application_v2.py::test_decision_api_binds_authority_and_returns_durable_receipt PASSED [  1%]
tests/test_attestation_provenance.py::test_exact_attestation_policy_returns_sanitized_summary PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_rejects_binding_mismatch[subject_digest-cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc] PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_rejects_binding_mismatch[predicate_type-https://example.invalid/predicate] PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_rejects_binding_mismatch[source_revision-dddddddddddddddddddddddddddddddddddddddd] PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_rejects_binding_mismatch[run_id-12346] PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_requires_exact_signer_san PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_accepts_gh_certificate_summary_shape PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_accepts_current_gh_json_shape PASSED [  1%]
tests/test_attestation_provenance.py::test_attestation_policy_rejects_cross_record_composite_match PASSED [  1%]
tests/test_benchmark_manifest.py::test_schema_is_valid PASSED            [  2%]
tests/test_benchmark_manifest.py::test_valid_manifest_passes PASSED      [  2%]
tests/test_benchmark_manifest.py::test_measured_claim_rejects_dirty_source PASSED [  2%]
tests/test_benchmark_manifest.py::test_manifest_requires_cold_and_warm_measurements PASSED [  2%]
tests/test_chunker.py::TestStripFrontmatter::test_strips_frontmatter PASSED [  2%]
tests/test_chunker.py::TestStripFrontmatter::test_no_frontmatter PASSED  [  2%]
tests/test_chunker.py::TestStripFrontmatter::test_empty_content PASSED   [  2%]
tests/test_chunker.py::TestSemanticChunkerInit::test_default_mode PASSED [  2%]
tests/test_chunker.py::TestSemanticChunkerInit::test_custom_mode PASSED  [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_single_section PASSED    [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_multiple_h2_sections PASSED [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_h2_and_h3_mixed PASSED   [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_preamble_before_first_header PASSED [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_no_headers PASSED        [  2%]
tests/test_chunker.py::TestChunkByHeaders::test_empty_content PASSED     [  3%]
tests/test_chunker.py::TestChunkByParagraphs::test_multiple_paragraphs PASSED [  3%]
tests/test_chunker.py::TestChunkByParagraphs::test_single_paragraph PASSED [  3%]
tests/test_chunker.py::TestChunkByParagraphs::test_with_frontmatter PASSED [  3%]
tests/test_chunker.py::TestChunkByParagraphs::test_context_prefix_present PASSED [  3%]
tests/test_chunker.py::TestChunkByParagraphs::test_empty_paragraphs PASSED [  3%]
tests/test_chunker.py::TestChunkFixed::test_small_content PASSED         [  3%]
tests/test_chunker.py::TestChunkFixed::test_splits_large_content PASSED  [  3%]
tests/test_chunker.py::TestChunkFixed::test_with_overlap PASSED          [  3%]
tests/test_chunker.py::TestChunkFixed::test_context_prefix_on_each PASSED [  3%]
tests/test_chunker.py::TestChunkFixed::test_empty_fixed PASSED           [  3%]
tests/test_chunker.py::TestChunkerOutputQuality::test_chunk_prefix_contains_metadata PASSED [  3%]
tests/test_chunker.py::TestChunkerOutputQuality::test_chunks_are_non_empty PASSED [  3%]
tests/test_chunker.py::TestChunkerOutputQuality::test_whitespace_only_skipped PASSED [  3%]
tests/test_chunker.py::TestChunkerOutputQuality::test_context_prefix_always_includes_both_fields PASSED [  4%]
tests/test_chunker.py::TestChunkerOutputQuality::test_different_modes_produce_same_prefix_format PASSED [  4%]
tests/test_ci_policy.py::test_pr_workflows_do_not_suppress_or_depend_on_private_vaults PASSED [  4%]
tests/test_ci_policy.py::test_ci_keeps_blocking_test_and_security_jobs PASSED [  4%]
tests/test_ci_policy.py::test_ci_defers_non_linux_runtime_smoke_for_3_6_2 PASSED [  4%]
tests/test_ci_policy.py::test_docs_build_covers_release_workflow_changes PASSED [  4%]
tests/test_ci_policy.py::test_ci_aggregates_all_supported_ubuntu_reports PASSED [  4%]
tests/test_ci_policy.py::test_current_python_support_starts_at_3_11 PASSED [  4%]
tests/test_ci_policy.py::test_workflow_actions_are_pinned_to_immutable_commits PASSED [  4%]
tests/test_ci_policy.py::test_release_workflow_publishes_sbom_and_attestation PASSED [  4%]
tests/test_ci_policy.py::test_web_runtime_dependency_lock_is_hash_bound_and_consumed_by_docker PASSED [  4%]
tests/test_ci_policy.py::test_release_package_sbom_scans_the_wheel_as_a_file PASSED [  4%]
tests/test_ci_policy.py::test_release_publish_is_blocked_by_a_tag_validation_job PASSED [  4%]
tests/test_ci_policy.py::test_release_harness_and_publication_guards_are_tag_bound PASSED [  4%]
tests/test_ci_policy.py::test_every_checkout_disables_persisted_credentials PASSED [  5%]
tests/test_ci_policy.py::test_release_runner_context_is_scoped_to_steps PASSED [  5%]
tests/test_ci_policy.py::test_release_does_not_require_private_phase8_secrets PASSED [  5%]
tests/test_ci_policy.py::test_ci_uses_locked_dependencies_and_clean_package_smoke PASSED [  5%]
tests/test_ci_policy.py::test_quarantined_fleet_docs_and_helper_forbid_live_cache_transfer PASSED [  5%]
tests/test_ci_policy.py::test_mandatory_neural_contract_is_explicit_and_zero_skip PASSED [  5%]
tests/test_cli.py::test_windows_cli_configures_utf8_streams PASSED       [  5%]
tests/test_cli.py::test_init_creates_vault PASSED                        [  5%]
tests/test_cli.py::test_init_fails_on_nonempty PASSED                    [  5%]
tests/test_cli.py::test_control_plane_can_materialize_and_remove_optional_base PASSED [  5%]
tests/test_cli.py::test_doctor_json_uses_machine_contract PASSED         [  5%]
tests/test_cli.py::test_lint_valid_vault PASSED                          [  5%]
tests/test_cli.py::test_lint_issues_return_nonzero PASSED                [  5%]
tests/test_cli.py::test_lint_missing_vault PASSED                        [  5%]
tests/test_cli.py::test_index_generates_files PASSED                     [  6%]
tests/test_cli.py::test_index_missing_vault PASSED                       [  6%]
tests/test_cli.py::test_index_strict_reports_invalid_notes PASSED        [  6%]
tests/test_cli.py::test_index_strict_reports_foreign_nested_catalog PASSED [  6%]
tests/test_cli.py::test_sync_clean_vault_has_zero_exit_and_coverage_ledger PASSED [  6%]
tests/test_cli.py::test_sync_default_fails_closed_and_names_excluded_note PASSED [  6%]
tests/test_cli.py::test_sync_strict_fails_closed_and_allow_partial_is_explicit PASSED [  6%]
tests/test_cli.py::test_sync_rejects_contradictory_coverage_flags PASSED [  6%]
tests/test_cli.py::test_sync_dirty_vault_has_no_silent_omissions PASSED  [  6%]
tests/test_cli.py::test_ingest_creates_note PASSED                       [  6%]
tests/test_cli.py::test_ingest_with_tags PASSED                          [  6%]
tests/test_cli.py::test_ingest_routes_to_domain_template PASSED          [  6%]
tests/test_cli.py::test_ingest_missing_vault PASSED                      [  6%]
tests/test_cli.py::test_search_returns_results PASSED                    [  6%]
tests/test_cli.py::test_memory_propose_rejects_content_in_argv PASSED    [  7%]
tests/test_cli.py::test_memory_propose_reads_content_from_file PASSED    [  7%]
tests/test_cli.py::test_memory_apply_rejects_proposal_json_in_argv PASSED [  7%]
tests/test_cli.py::test_search_uses_canonical_default_mode PASSED        [  7%]
tests/test_cli.py::test_search_passes_shared_temporal_contract PASSED    [  7%]
tests/test_cli.py::test_search_no_results PASSED                         [  7%]
tests/test_cli.py::test_search_missing_vault PASSED                      [  7%]
tests/test_cli.py::test_version_flag PASSED                              [  7%]
tests/test_cli.py::test_no_command_shows_help PASSED                     [  7%]
tests/test_cli.py::test_ingest_duplicate_returns_1 PASSED                [  7%]
tests/test_cli.py::test_memory_apply_cli_publishes_search_projection PASSED [  7%]
tests/test_cli.py::test_handoff_cli_persists_and_resumes_packet PASSED   [  7%]
tests/test_cli.py::test_task_cli_create_list_read_transition_and_events PASSED [  7%]
tests/test_cli.py::test_task_cli_rejects_missing_guards_and_stale_inputs PASSED [  7%]
tests/test_cli.py::TestFtsOnlyDenseGuard::test_fts_only_refuses_to_discard_an_existing_dense_index PASSED [  8%]
tests/test_cli.py::TestFtsOnlyDenseGuard::test_explicit_opt_in_still_allows_the_downgrade PASSED [  8%]
tests/test_cli.py::TestFtsOnlyDenseGuard::test_fts_only_is_unaffected_when_there_is_no_dense_index PASSED [  8%]
tests/test_cli.py::TestCachePrune::test_cache_dir_records_its_source_vault PASSED [  8%]
tests/test_cli.py::TestCachePrune::test_live_vault_is_never_pruned PASSED [  8%]
tests/test_cli.py::TestCachePrune::test_deleted_vault_is_pruned PASSED   [  8%]
tests/test_cli.py::TestCachePrune::test_unattributable_namespace_is_kept_unless_asked PASSED [  8%]
tests/test_cli.py::TestCachePrune::test_malformed_source_is_unknown_without_touching_vault PASSED [  8%]
tests/test_cli.py::TestCachePrune::test_missing_vault_identity_is_unknown_without_creating_one PASSED [  8%]
tests/test_complexity_dashboard.py::test_complexity_dashboard_reports_frozen_metrics PASSED [  8%]
tests/test_complexity_dashboard.py::test_complexity_dashboard_cli_require_budget_passes PASSED [  8%]
tests/test_complexity_dashboard.py::test_core_import_does_not_eagerly_load_experimental_adapters PASSED [  8%]
tests/test_connect.py::test_json_connect_is_hash_bound_and_idempotent PASSED [  8%]
tests/test_connect.py::test_additional_json_clients_round_trip_without_touching_foreign_entries[opencode-mcp] PASSED [  8%]
tests/test_connect.py::test_additional_json_clients_round_trip_without_touching_foreign_entries[claude-mcpServers] PASSED [  9%]
tests/test_connect.py::test_connect_refuses_foreign_entry_and_stale_plan PASSED [  9%]
tests/test_connect.py::test_connect_rejects_unmanaged_launcher PASSED    [  9%]
tests/test_connect.py::test_connect_refuses_symlinked_client_config PASSED [  9%]
tests/test_connect.py::test_codex_toml_connection_round_trip PASSED      [  9%]
tests/test_connect.py::test_connect_cli_writes_read_only_plan PASSED     [  9%]
tests/test_continuity_benchmark.py::test_continuity_benchmark_uses_independent_processes PASSED [  9%]
tests/test_control_plane.py::test_control_plane_is_visible_and_idempotent PASSED [  9%]
tests/test_control_plane.py::test_control_plane_refuses_manual_file_overwrite PASSED [  9%]
tests/test_control_plane.py::test_control_plane_render_is_deterministic PASSED [  9%]
tests/test_control_plane.py::test_obsidian_base_is_valid_optional_asset_and_idempotent PASSED [  9%]
tests/test_control_plane.py::test_obsidian_base_conflict_and_uninstall_never_touch_user_notes PASSED [  9%]
tests/test_cpu_throttling.py::test_get_cpu_worker_limit_scales_with_cores PASSED [  9%]
tests/test_cpu_throttling.py::test_get_cpu_worker_limit_respects_max_cap PASSED [  9%]
tests/test_cpu_throttling.py::test_enforce_cpu_throttling_env_clamps_all_vars PASSED [ 10%]
tests/test_cpu_throttling.py::test_link_rot_checker_respects_cpu_throttling PASSED [ 10%]
tests/test_crash_recovery.py::TestVaultMutationBoundary::test_repeated_sync_releases_lock PASSED [ 10%]
tests/test_crash_recovery.py::TestVaultMutationBoundary::test_sync_lock_does_not_block_reads PASSED [ 10%]
tests/test_crash_recovery.py::TestDbIntegrity::test_integrity_check_passes_after_cli_sync PASSED [ 10%]
tests/test_crash_recovery_decision.py::test_resolve_crash_without_receipt_rolls_back PASSED [ 10%]
tests/test_crash_recovery_decision.py::test_decision_happy_path_leaves_no_manifest PASSED [ 10%]
tests/test_crash_recovery_memory.py::test_memory_apply_crash_without_receipt_rolls_back PASSED [ 10%]
tests/test_crash_recovery_memory.py::test_memory_happy_path_leaves_no_manifest PASSED [ 10%]
tests/test_crash_recovery_task.py::test_prepared_orphan_snapshot_is_rolled_back PASSED [ 10%]
tests/test_crash_recovery_task.py::test_committed_leftover_loses_no_data PASSED [ 10%]
tests/test_crash_recovery_task.py::test_recovery_runs_on_next_process_lock_and_allows_retry PASSED [ 10%]
tests/test_crash_recovery_task.py::test_no_manifest_leftover_on_happy_path PASSED [ 10%]
tests/test_cross_process_mutation.py::test_parallel_cli_processes_preserve_one_canonical_vault_state PASSED [ 10%]
tests/test_decision_service.py::test_decision_resolution_binds_task_revision_actor_authority_and_proposal PASSED [ 11%]
tests/test_decision_service.py::test_decision_rejects_stale_task_revision PASSED [ 11%]
tests/test_decision_service.py::test_structured_input_requires_exact_allowed_schema PASSED [ 11%]
tests/test_decision_service.py::test_decision_revalidates_persisted_ids_and_bounds_input PASSED [ 11%]
tests/test_decision_service.py::test_expired_decision_fails_closed PASSED [ 11%]
tests/test_decision_service.py::test_decision_pending_before_expiry_and_terminal_not_rewritten PASSED [ 11%]
tests/test_decision_service.py::test_decision_rejects_naive_expires_at PASSED [ 11%]
tests/test_doc_drift.py::test_current_docs_match_the_executable_retrieval_contract PASSED [ 11%]
tests/test_doc_drift.py::test_global_skill_discovery_includes_agent_and_opencode_roots PASSED [ 11%]
tests/test_doc_drift.py::test_retrieval_gate_rejects_a_missing_canonical_row PASSED [ 11%]
tests/test_doc_drift.py::test_retrieval_gate_rejects_unscoped_historical_token_claim PASSED [ 11%]
tests/test_doc_drift.py::test_current_docs_match_executable_interfaces_and_safe_onboarding PASSED [ 11%]
tests/test_doc_drift.py::test_current_client_onboarding_matches_native_mcp_shapes PASSED [ 11%]
tests/test_doc_drift.py::test_client_onboarding_gate_rejects_legacy_wrapper PASSED [ 11%]
tests/test_doc_drift.py::test_current_migration_guides_match_versioned_runtime_facts PASSED [ 11%]
tests/test_doc_drift.py::test_migration_gate_rejects_stale_runtime_claims PASSED [ 12%]
tests/test_doc_drift.py::test_interface_gate_rejects_stale_architecture_count PASSED [ 12%]
tests/test_doc_drift.py::test_interface_gate_rejects_stale_readme_mcp_count PASSED [ 12%]
tests/test_doc_drift.py::test_interface_gate_rejects_stale_getting_started_count PASSED [ 12%]
tests/test_doc_drift.py::test_interface_gate_rejects_incomplete_mcp_risk_contract PASSED [ 12%]
tests/test_doc_drift.py::test_skill_body_gate_rejects_wrong_index_workflow PASSED [ 12%]
tests/test_doc_drift.py::test_skill_gate_covers_workspace_references_and_readme_ua PASSED [ 12%]
tests/test_doc_drift.py::test_onboarding_gate_rejects_unsafe_windows_launcher PASSED [ 12%]
tests/test_doc_drift.py::test_link_gate_rejects_missing_local_target PASSED [ 12%]
tests/test_doc_drift.py::test_skill_gate_rejects_missing_references PASSED [ 12%]
tests/test_doc_drift.py::test_skill_body_gate_rejects_missing_workflow_markers PASSED [ 12%]
tests/test_doc_drift.py::test_skill_body_gate_rejects_incomplete_okf_required_fields PASSED [ 12%]
tests/test_doc_drift.py::test_skill_gate_rejects_stale_reference_facts PASSED [ 12%]
tests/test_doc_drift.py::test_fresh_agent_contract_exposes_safe_full_workflow PASSED [ 12%]
tests/test_doc_drift.py::test_skill_references_do_not_claim_type_only_okf_requirements PASSED [ 13%]
tests/test_doc_drift.py::test_release_onboarding_uses_the_hash_bound_native_lock PASSED [ 13%]
tests/test_doc_drift.py::test_global_skill_discovery_checks_both_opencode_paths PASSED [ 13%]
tests/test_doc_drift.py::test_global_skill_discovery_respects_explicit_env_override PASSED [ 13%]
tests/test_doc_drift.py::test_global_skill_discovery_accepts_explicit_skill_file PASSED [ 13%]
tests/test_doctor.py::test_json_report_is_versioned_and_machine_readable PASSED [ 13%]
tests/test_doctor.py::test_lightweight_discovery_skips_embedding_probe_and_cache_state PASSED [ 13%]
tests/test_doctor.py::test_lightweight_doctor_p95_stays_below_half_second PASSED [ 13%]
tests/test_doctor.py::test_doctor_bootstrap_is_bounded_and_content_free PASSED [ 13%]
tests/test_doctor.py::test_capability_manifest_is_read_only PASSED       [ 13%]
tests/test_doctor.py::test_vault_report_keeps_complete_exclusion_ledger PASSED [ 13%]
tests/test_doctor.py::test_model_cache_probe_uses_only_existing_snapshot_files PASSED [ 13%]
tests/test_doctor.py::test_vault_probe_does_not_create_identity_or_cache_namespace PASSED [ 13%]
tests/test_doctor.py::test_file_path_is_rejected_as_vault PASSED         [ 13%]
tests/test_doctor.py::test_cached_binding_probe_forces_offline_manager_and_restores_environment PASSED [ 14%]
tests/test_domains.py::test_registry_routes_and_resolves_priority PASSED [ 14%]
tests/test_domains.py::test_auto_without_domain_is_deferred_to_runtime_readiness PASSED [ 14%]
tests/test_domains.py::test_registry_default_priority_is_fts_first PASSED [ 14%]
tests/test_domains.py::test_registry_rejects_unsafe_paths_and_unknown_modes PASSED [ 14%]
tests/test_domains.py::test_template_path_and_placeholder_rendering PASSED [ 14%]
tests/test_domains.py::test_explicit_config_path_is_supported PASSED     [ 14%]
tests/test_egress.py::test_remote_egress_denies_all_operations_by_default[embeddings] PASSED [ 14%]
tests/test_egress.py::test_remote_egress_denies_all_operations_by_default[reranking] PASSED [ 14%]
tests/test_egress.py::test_remote_egress_denies_all_operations_by_default[query_expansion] PASSED [ 14%]
tests/test_egress.py::test_remote_egress_denies_all_operations_by_default[rot] PASSED [ 14%]
tests/test_egress.py::test_sensitive_egress_requires_the_explicit_sensitive_policy PASSED [ 14%]
tests/test_egress.py::test_query_expansion_does_not_open_network_when_policy_denies PASSED [ 14%]
tests/test_egress.py::test_link_rot_does_not_open_network_when_policy_denies PASSED [ 14%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://127.0.0.1/metadata] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://169.254.169.254/latest/meta-data] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://[::1]/metadata] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://[fe80::1]/metadata] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://[fc00::1]/metadata] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://[::ffff:127.0.0.1]/metadata] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[file:///etc/passwd] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_unsafe_literal_urls[http://user:password@example.com/] PASSED [ 15%]
tests/test_egress.py::test_endpoint_policy_rejects_dns_failure_and_private_dual_stack PASSED [ 15%]
tests/test_egress.py::test_llm_custom_origin_requires_exact_explicit_allowlist PASSED [ 15%]
tests/test_egress.py::test_openrouter_endpoint_requires_exact_api_v1_path[/api/v1evil] PASSED [ 15%]
tests/test_egress.py::test_openrouter_endpoint_requires_exact_api_v1_path[/api/v10] PASSED [ 15%]
tests/test_egress.py::test_openrouter_endpoint_requires_exact_api_v1_path[/api/v1evil/private] PASSED [ 15%]
tests/test_egress.py::test_openrouter_endpoint_allows_paths_below_api_v1 PASSED [ 15%]
tests/test_egress.py::test_bearer_requires_explicit_origin_allowlist PASSED [ 16%]
tests/test_egress.py::test_local_ollama_loopback_endpoints_remain_supported[http://127.0.0.1:11434] PASSED [ 16%]
tests/test_egress.py::test_local_ollama_loopback_endpoints_remain_supported[http://[::1]:11434] PASSED [ 16%]
tests/test_egress.py::test_local_ollama_loopback_endpoints_remain_supported[http://localhost:11434] PASSED [ 16%]
tests/test_egress.py::test_bearer_is_not_reintroduced_after_cross_origin_redirect PASSED [ 16%]
tests/test_egress.py::test_redirect_to_private_is_rejected_before_second_request PASSED [ 16%]
tests/test_egress.py::test_cross_origin_redirect_drops_bearer_header PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_dense_readiness_is_read_only_and_reports_missing_snapshot PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_dense_readiness_accepts_complete_local_snapshot PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_auto_device_prefers_cuda_and_keeps_cpu_fallback PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_explicit_unavailable_device_fails_closed PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_preload_dlls_runs_before_provider_probe PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_missing_preload_dlls_does_not_break_cpu PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_rocm_provider_name_is_resolved_case_insensitively PASSED [ 16%]
tests/test_embeddings.py::TestEmbeddingManager::test_directml_provider_can_be_selected_and_verified PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_preload_failure_is_visible_but_not_fatal_for_cpu PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_ollama_attempt_does_not_require_sigalrm PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_ollama_rejects_unsafe_configured_host PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_import_has_no_hardcoded_env_file_side_effect PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embed_single_text PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embed_batch PASSED  [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embed_empty_string PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embed_batch_empty PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embedding_deterministic PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_embedding_different_texts PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_canonical_identity_contains_immutable_revision PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_sha256_verification_fails_closed PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_unknown_provider_fails_closed PASSED [ 17%]
tests/test_embeddings.py::TestEmbeddingManager::test_explicit_gpu_binding_must_match_requested_provider PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_auto_cpu_fallback_is_visible_but_allowed PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_explicit_gpu_binding_is_case_insensitive PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_explicit_cpu_binding_is_checked PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_explicit_gpu_empty_binding_fails_closed PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_requested_device_inherits_embedding_mode_for_reranker PASSED [ 18%]
tests/test_embeddings.py::TestEmbeddingManager::test_failed_binding_does_not_retain_an_unsafe_embedder_session PASSED [ 18%]
tests/test_exports.py::test_top_level_lazy_exports_resolve PASSED        [ 18%]
tests/test_exports.py::test_core_lazy_exports_resolve PASSED             [ 18%]
tests/test_fault_injection.py::test_fault_injection_task_create_rolls_back PASSED [ 18%]
tests/test_fault_injection.py::test_fault_injection_decision_resolve_rolls_back PASSED [ 18%]
tests/test_fault_injection.py::test_fault_injection_memory_apply_rolls_back PASSED [ 18%]
tests/test_fault_injection.py::test_fault_injection_is_inert_by_default PASSED [ 18%]
tests/test_fresh_agent_chaos.py::test_fresh_agent_chaos_suite_reaches_safety_and_success_targets PASSED [ 18%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_or_returns_partial_match_doc PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_and_rejects_partial_match_doc PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_and_returns_all_terms_doc PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_single_term_or_equals_and PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_invalid_operator_fails_loudly PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_fts_operator_env_scoped_restores PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_fts_operator_env_scoped_removes_when_absent PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestOperatorSemantics::test_no_env_leak_between_benchmark_variants PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestGroundTruthGuard::test_qrels_without_provenance_rejected PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestGroundTruthGuard::test_provenance_declaring_term_and_derivation_rejected PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestGroundTruthGuard::test_provenance_without_declaration_rejected PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestGroundTruthGuard::test_provenance_without_human_judged_flag_rejected PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestGroundTruthGuard::test_term_and_rule_would_mislabel_curated_relevance PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_ndcg_graded PASSED [ 19%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_ndcg_perfect_ranking_is_one PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_recall PASSED    [ 20%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_mrr PASSED       [ 20%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_precision_and_hit_rate PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestMetrics::test_first_relevant_rank PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_pair_rows_matched PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_pair_rows_missing_and_query_raises PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_delta_calculation PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_zero_result_diagnostics PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_win_tie_counts PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_bootstrap_deterministic_with_seed PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_bootstrap_empty_sample_reports_no_ci PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_bootstrap_unequal_samples_rejected PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_insufficient_sample_conclusion PASSED [ 20%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_conclusion_blocks_and_on_zero_result_penalty PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_conclusion_prefers_or_when_or_leads PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestPairedComparison::test_conclusion_prefers_and_when_and_leads_cleanly PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestQueryClassification::test_phrase_and_hyphen_and_stopwords PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestQueryClassification::test_ukrainian_words_kept PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestQueryClassification::test_cyrillic_classified_as_uk PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestEndToEndHermeticRun::test_run_produces_all_artifacts PASSED [ 21%]
tests/test_fts_operator_benchmark.py::TestEndToEndHermeticRun::test_run_rejects_missing_provenance_fixture PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_stale_build_reaper_removes_crash_artifacts_but_preserves_live_rows PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_publisher_rejects_a_reaped_build_lease PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_permanent_oom_at_any_batch_keeps_previous_generation[first] PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_permanent_oom_at_any_batch_keeps_previous_generation[middle] PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_permanent_oom_at_any_batch_keeps_previous_generation[last] PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_enospc_while_creating_staging_keeps_previous_generation PASSED [ 21%]
tests/test_generation_fault_matrix.py::test_enospc_during_generation_move_keeps_previous_generation PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_state_db_enospc_or_lock_keeps_previous_generation[error0-ENOSPC] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_state_db_enospc_or_lock_keeps_previous_generation[error1-database is locked] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_corrupt_staging_validation_keeps_previous_generation PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_source_add_or_delete_during_sync_keeps_previous_generation[add] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_source_add_or_delete_during_sync_keeps_previous_generation[delete] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_repeat_build_is_deterministic_at_query_layer PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_sigkill_at_publish_checkpoints_preserves_contract[before_move] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_sigkill_at_publish_checkpoints_preserves_contract[after_move] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_sigkill_at_publish_checkpoints_preserves_contract[after_pointer] PASSED [ 22%]
tests/test_generation_fault_matrix.py::test_versioned_failure_receipts_cover_the_complete_fault_matrix PASSED [ 22%]
tests/test_generation_index.py::test_snapshot_hash_matches_projection_for_prefix_colliding_paths PASSED [ 22%]
tests/test_generation_index.py::test_vault_identity_and_database_namespace_are_stable_and_isolated PASSED [ 22%]
tests/test_generation_index.py::test_read_only_generation_probe_does_not_create_vault_state_or_cache PASSED [ 22%]
tests/test_generation_index.py::test_resolve_active_generation_returns_verified_identity PASSED [ 22%]
tests/test_generation_index.py::test_failed_generation_keeps_the_previous_active_index PASSED [ 23%]
tests/test_generation_index.py::test_source_change_during_sync_keeps_previous_active_index PASSED [ 23%]
tests/test_generation_index.py::test_active_pointer_retains_current_and_previous_generations PASSED [ 23%]
tests/test_generation_index.py::test_new_generation_starts_from_active_db_for_incremental_reuse PASSED [ 23%]
tests/test_generation_index.py::test_missing_active_generation_file_fails_closed PASSED [ 23%]
tests/test_generation_index.py::test_cached_generation_rechecks_file_identity_before_reuse PASSED [ 23%]
tests/test_generation_index.py::test_publication_invalidates_generation_identity_cache PASSED [ 23%]
tests/test_generation_index.py::test_external_active_pointer_change_invalidates_cached_generation PASSED [ 23%]
tests/test_generation_index.py::test_invalid_sources_are_explicitly_recorded PASSED [ 23%]
tests/test_generation_index.py::test_generated_catalog_pages_are_outside_generation_coverage PASSED [ 23%]
tests/test_generation_index.py::test_sync_can_fail_closed_before_publishing_excluded_sources PASSED [ 23%]
tests/test_generation_index.py::test_excluded_source_change_during_sync_keeps_previous_active_index PASSED [ 23%]
tests/test_generation_index.py::test_legacy_search_database_is_imported_before_removal PASSED [ 23%]
tests/test_generation_index.py::test_stale_legacy_database_falls_back_to_source_rebuild PASSED [ 23%]
tests/test_generation_index.py::test_cleanup_failure_after_pointer_commit_keeps_new_generation_active PASSED [ 24%]
tests/test_generation_index.py::test_failure_after_generation_move_keeps_previous_pointer_and_search PASSED [ 24%]
tests/test_generation_index.py::test_state_transaction_setup_failure_keeps_previous_pointer_and_search PASSED [ 24%]
tests/test_generation_index.py::test_chunk_identity_is_content_addressed_and_path_independent PASSED [ 24%]
tests/test_generation_index.py::test_library_fts_only_requires_explicit_dense_loss_acceptance PASSED [ 24%]
tests/test_generation_index.py::test_legacy_dense_state_is_also_fail_closed PASSED [ 24%]
tests/test_graph_extraction.py::test_extracts_ua_is_a_triplet PASSED     [ 24%]
tests/test_graph_extraction.py::test_extracts_en_uses_triplet PASSED     [ 24%]
tests/test_graph_extraction.py::test_no_triplet_when_no_cue PASSED       [ 24%]
tests/test_graph_extraction.py::test_skips_trivial_self_loop PASSED      [ 24%]
tests/test_graph_extraction.py::test_store_triplets_persists_candidates_with_required_provenance PASSED [ 24%]
tests/test_graph_extraction.py::test_store_note_triplets_extracts_and_persists PASSED [ 24%]
tests/test_graph_extraction.py::test_candidate_review_is_deterministic_and_only_approval_creates_relation PASSED [ 24%]
tests/test_graph_extraction.py::test_legacy_relations_are_reclassified_as_unreviewed_candidates PASSED [ 24%]
tests/test_handoff.py::test_work_packet_resume_is_durable_and_idempotent PASSED [ 25%]
tests/test_handoff.py::test_work_packet_input_required_needs_approval_to_resume PASSED [ 25%]
tests/test_handoff.py::test_work_packet_recovers_latest_checkpoint_after_main_file_loss PASSED [ 25%]
tests/test_handoff.py::test_work_packet_rejects_corrupt_checkpoint_instead_of_skipping_it PASSED [ 25%]
tests/test_handoff.py::test_maintenance_packet_enforces_safe_phase_order_and_repair_approval PASSED [ 25%]
tests/test_handoff.py::test_retrieved_instruction_is_not_authority_or_execution PASSED [ 25%]
tests/test_handoff.py::test_list_work_packets_is_read_only_when_no_packets_exist PASSED [ 25%]
tests/test_healer.py::TestInferTitleFromFilename::test_snake_case PASSED [ 25%]
tests/test_healer.py::TestInferTitleFromFilename::test_kebab_case PASSED [ 25%]
tests/test_healer.py::TestInferTitleFromFilename::test_date_prefix PASSED [ 25%]
tests/test_healer.py::TestInferTitleFromFilename::test_already_title PASSED [ 25%]
tests/test_healer.py::TestInferTitleFromFilename::test_single_word PASSED [ 25%]
tests/test_healer.py::TestExtractFirstParagraph::test_basic PASSED       [ 25%]
tests/test_healer.py::TestExtractFirstParagraph::test_ignores_header PASSED [ 25%]
tests/test_healer.py::TestExtractFirstParagraph::test_no_frontmatter PASSED [ 26%]
tests/test_healer.py::TestExtractFirstParagraph::test_empty PASSED       [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_no_changes_needed PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_adds_missing_title PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_adds_missing_description PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_adds_missing_timestamp PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_infers_type_from_folder PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_fixes_type_casing PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_preserves_existing_fields PASSED [ 26%]
tests/test_healer.py::TestHealFrontmatter::test_no_frontmatter_at_all PASSED [ 26%]
tests/test_healer.py::TestHealVault::test_dry_run_reports_but_does_not_modify PASSED [ 26%]
tests/test_healer.py::TestHealVault::test_live_heals_and_backs_up PASSED [ 26%]
tests/test_healer.py::TestHealVault::test_noop_transform_does_not_create_backup_or_count_as_healed PASSED [ 26%]
tests/test_healer.py::TestHealVault::test_one_hundred_real_noop_heals_create_no_backups PASSED [ 26%]
tests/test_healer.py::test_generated_frontmatter_preserves_backslashes[mtext] PASSED [ 27%]
tests/test_healer.py::test_generated_frontmatter_preserves_backslashes[windows-path] PASSED [ 27%]
tests/test_healer.py::test_generated_frontmatter_preserves_backslashes[latex] PASSED [ 27%]
tests/test_healer.py::test_healer_quarantines_blocking_foreign_fields_before_cosmetic_fixes PASSED [ 27%]
tests/test_healer.py::test_heal_report_isolates_transform_failures_and_returns_nonzero PASSED [ 27%]
tests/test_healer.py::test_heal_failure_paths_use_posix_separators_on_windows PASSED [ 27%]
tests/test_healer.py::test_heal_report_isolates_invalid_frontmatter_as_validation_failure PASSED [ 27%]
tests/test_healer.py::test_heal_report_captures_read_failures_and_continues PASSED [ 27%]
tests/test_healer.py::test_write_failure_leaves_original_note_untouched PASSED [ 27%]
tests/test_healer.py::test_cli_heal_returns_nonzero_for_partial_failure PASSED [ 27%]
tests/test_health_loop.py::test_repeated_issue_is_deduplicated_with_exponential_backoff PASSED [ 27%]
tests/test_health_loop.py::test_recovery_emits_one_transition_and_resets_state PASSED [ 27%]
tests/test_health_loop.py::test_thirty_day_stream_has_no_duplicate_notifications_per_cycle PASSED [ 27%]
tests/test_health_loop.py::test_cheap_run_requests_no_provider_and_performs_no_write PASSED [ 27%]
tests/test_human_annotation_packet.py::test_valid_packet_hides_evaluation_contract PASSED [ 28%]
tests/test_human_annotation_packet.py::test_packet_rejects_journey_and_non_uk_text PASSED [ 28%]
tests/test_human_annotation_packet.py::test_packet_rejects_external_material PASSED [ 28%]
tests/test_human_annotation_packet.py::test_packet_rejects_unknown_top_level_field PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_perfect_v2_packet_passes_calibration PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_v2_has_no_manual_query_level_fields PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_v2_rejects_non_integer_relevance PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_v2_rejects_free_text_or_unknown_judgment_fields PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_v2_calibration_requires_temporal_field_agreement PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_v2_calibration_requires_query_citation_agreement PASSED [ 28%]
tests/test_human_retrieval_agreement.py::test_protocol_v1_is_diagnostic_only PASSED [ 28%]
tests/test_human_retrieval_evaluator.py::test_historical_v2_default_threshold_is_not_silently_lowered PASSED [ 28%]
tests/test_human_retrieval_evaluator.py::test_abstention_query_is_excluded_from_citation_denominator PASSED [ 28%]
tests/test_human_retrieval_evaluator.py::test_unjudged_top_result_is_not_dropped_before_scoring PASSED [ 28%]
tests/test_human_retrieval_evaluator.py::test_annotation_protocol_is_derived_from_frozen_qrel_fields PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_v2_group_qrels_rejects_string_citation_and_legacy_fields PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_runtime_receipt_records_latency_controls PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_current_fact_requires_one_jointly_current_acceptable_citation PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_inconsistent_v1_query_labels_fail_closed PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_misleading_relevance_is_supported_without_negative_dcg_gain PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_diagnostic_mode_failures_do_not_block_preregistered_gate PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_missing_preregistered_mode_is_fail_closed PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_custom_policy_gate_keeps_lexical_diagnostic PASSED [ 29%]
tests/test_human_retrieval_evaluator.py::test_pending_v2_1_policy_cannot_run_evaluator PASSED [ 29%]
tests/test_human_retrieval_evidence.py::test_development_manifest_is_valid_before_annotation PASSED [ 29%]
tests/test_human_retrieval_evidence.py::test_sealed_holdout_requires_explicit_release_review PASSED [ 29%]
tests/test_human_retrieval_evidence.py::test_adjudicated_manifest_requires_preregistered_thresholds PASSED [ 29%]
tests/test_human_retrieval_evidence.py::test_adjudicated_manifest_requires_canonical_threshold_values PASSED [ 29%]
tests/test_human_retrieval_evidence.py::test_v21_threshold_profile_is_explicit_and_separate PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_protocol_v2_starts_pending_and_requires_hash_bound_calibration PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_evidence_file_binds_each_artifact_to_its_declared_hash PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_v2_evidence_binds_calibration_receipt_bytes PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_v2_qrels_derive_answerability_and_reject_old_fields PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_v2_qrels_reject_non_boolean_citation PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_v2_qrels_reject_missing_temporal_status PASSED [ 30%]
tests/test_human_retrieval_evidence.py::test_adjudicated_qrels_reject_jointly_infeasible_current_fact PASSED [ 30%]
tests/test_importer.py::test_import_plan_is_write_free_and_policy_explicit PASSED [ 30%]
tests/test_importer.py::test_import_dry_run_does_not_mutate_vault PASSED [ 30%]
tests/test_importer.py::test_quarantine_import_is_searchable_and_idempotent PASSED [ 30%]
tests/test_indexer.py::TestScanVaultNotes::test_scan_valid_vault PASSED  [ 30%]
tests/test_indexer.py::TestScanVaultNotes::test_scan_counts PASSED       [ 30%]
tests/test_indexer.py::TestScanVaultNotes::test_scan_excludes_templates PASSED [ 30%]
tests/test_indexer.py::TestScanVaultNotes::test_scan_empty_vault PASSED  [ 31%]
tests/test_indexer.py::TestScanFolderNotes::test_scan_groups_by_folder PASSED [ 31%]
tests/test_indexer.py::TestScanFolderNotes::test_scan_folder_note_count PASSED [ 31%]
tests/test_indexer.py::TestScanFolderNotes::test_scan_nested_notes PASSED [ 31%]
tests/test_indexer.py::TestScanFolderNotes::test_scan_note_info_structure PASSED [ 31%]
tests/test_indexer.py::TestScanFolderNotes::test_scan_excludes_index_files PASSED [ 31%]
tests/test_indexer.py::TestGenerateIndexContent::test_generates_sections PASSED [ 31%]
tests/test_indexer.py::TestGenerateIndexContent::test_contains_frontmatter PASSED [ 31%]
tests/test_indexer.py::TestGenerateIndexContent::test_sorted_by_type_order PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_contains_navigation_table PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_contains_sub_index_links PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_indexes_protocols_and_root_daily_logs PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_contains_note_counts PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_contains_agent_protocol PASSED [ 31%]
tests/test_indexer.py::TestGenerateMainIndexContent::test_contains_frontmatter PASSED [ 32%]
tests/test_indexer.py::TestGenerateSubIndexContent::test_generates_detailed_entries PASSED [ 32%]
tests/test_indexer.py::TestGenerateSubIndexContent::test_contains_note_metadata PASSED [ 32%]
tests/test_indexer.py::TestGenerateSubIndexContent::test_contains_frontmatter PASSED [ 32%]
tests/test_indexer.py::TestGenerateSubIndexContent::test_empty_folder_generates_clean_index PASSED [ 32%]
tests/test_indexer.py::TestGenerateSubIndexContent::test_nested_catalog_link_is_explicitly_relative PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateIndex::test_creates_index_file PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateIndex::test_index_content_valid PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateIndex::test_overwrites_existing_index PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateSubIndex::test_creates_sub_index_file PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateSubIndex::test_sub_index_content_valid PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_creates_main_index PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_reports_invalid_notes_in_index_summary PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_incremental_scan_reuses_unchanged_metadata PASSED [ 32%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_creates_sub_indexes PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_recursive_catalogs_resolve_duplicate_nested_names PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_catalog_pages_obey_budget_and_partition_entries PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_renderer_migrates_legacy_cached_catalog PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_failed_render_invalidates_incremental_cache PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_deleted_nested_directory_removes_owned_catalog PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_foreign_nested_catalog_is_preserved_and_reported PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_foreign_top_level_catalog_is_preserved_and_reported PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_non_numeric_index_name_remains_a_note PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_large_catalog_renderer_profile_is_bounded PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_variable_width_catalog_stays_bounded PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_10k_variable_width_catalog_stays_bounded PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_main_index_links_to_sub_indexes PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_sub_index_contains_all_notes PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_unchanged_run_skips_sub_index_rendering PASSED [ 33%]
tests/test_indexer.py::TestRunGenerateHierarchicalIndex::test_overwrites_existing_indexes PASSED [ 34%]
tests/test_indexer.py::TestTruncateForCatalog::test_short_description_unchanged PASSED [ 34%]
tests/test_indexer.py::TestTruncateForCatalog::test_empty_description PASSED [ 34%]
tests/test_indexer.py::TestTruncateForCatalog::test_long_description_truncated_with_ellipsis PASSED [ 34%]
tests/test_indexer.py::TestTruncateForCatalog::test_custom_max_length PASSED [ 34%]
tests/test_indexer.py::TestTruncateForCatalog::test_long_description_preserved_in_note_but_truncated_in_catalog PASSED [ 34%]
tests/test_integration.py::test_full_cycle_init_ingest_lint_index PASSED [ 34%]
tests/test_integration.py::test_init_then_lint_broken_vault PASSED       [ 34%]
tests/test_integrations.py::test_packaged_skill_tree_is_content_addressed PASSED [ 34%]
tests/test_integrations.py::test_skill_install_is_dry_run_atomic_and_idempotent PASSED [ 34%]
tests/test_integrations.py::test_skill_install_ignores_generated_bytecode_cache PASSED [ 34%]
tests/test_integrations.py::test_skill_install_never_overwrites_nonmatching_target PASSED [ 34%]
tests/test_integrations.py::test_skill_install_can_upgrade_only_a_hash_bound_managed_tree PASSED [ 34%]
tests/test_integrations.py::test_mcp_config_integration_uses_public_launcher_and_is_hash_bound PASSED [ 34%]
tests/test_integrations.py::test_integrations_doctor_is_read_only PASSED [ 35%]
tests/test_legacy_mcp_wrapper.py::test_legacy_wrapper_does_not_load_host_environment_files PASSED [ 35%]
tests/test_legacy_mcp_wrapper.py::test_legacy_wrapper_preserves_canonical_preflight_failure PASSED [ 35%]
tests/test_lifecycle.py::test_all_four_events_are_portable_for_every_client PASSED [ 35%]
tests/test_lifecycle.py::test_lifecycle_events_are_read_only_and_bounded[session-start] PASSED [ 35%]
tests/test_lifecycle.py::test_lifecycle_events_are_read_only_and_bounded[post-write] PASSED [ 35%]
tests/test_lifecycle.py::test_lifecycle_events_are_read_only_and_bounded[pre-compact] PASSED [ 35%]
tests/test_lifecycle.py::test_lifecycle_events_are_read_only_and_bounded[stop] PASSED [ 35%]
tests/test_lifecycle.py::test_pre_compact_proposal_requires_separate_approval PASSED [ 35%]
tests/test_lifecycle.py::test_unknown_client_is_explicitly_rejected PASSED [ 35%]
tests/test_linter.py::TestRunLintVault::test_healthy_vault PASSED        [ 35%]
tests/test_linter.py::TestRunLintVault::test_detects_no_frontmatter PASSED [ 35%]
tests/test_linter.py::TestRunLintVault::test_detects_missing_type PASSED [ 35%]
tests/test_linter.py::TestRunLintVault::test_detects_invalid_okf_metadata PASSED [ 35%]
tests/test_linter.py::TestRunLintVault::test_detects_broken_links PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_detects_orphans PASSED      [ 36%]
tests/test_linter.py::TestRunLintVault::test_total_notes_count PASSED    [ 36%]
tests/test_linter.py::TestRunLintVault::test_generated_catalog_pages_are_not_counted_as_notes PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_generated_system_log_is_not_counted_or_linted PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_daily_logs_excluded_from_orphans PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_detects_stale_notes PASSED  [ 36%]
tests/test_linter.py::TestRunLintVault::test_no_stale_in_healthy_vault PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_protocol_path_link_resolves PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_gfm_links_resolve_relative_to_source_note PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_duplicate_basenames_are_reported_as_ambiguous PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_archive_and_root_daily_log_are_not_orphans PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_links_inside_fenced_markdown_examples_are_ignored PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_links_inside_inline_code_examples_are_ignored PASSED [ 36%]
tests/test_linter.py::TestRunLintVault::test_archived_status_is_not_orphan PASSED [ 37%]
tests/test_linter.py::TestOkfScope::test_para_and_brain_in_scope PASSED  [ 37%]
tests/test_linter.py::TestOkfScope::test_root_daily_log_in_scope PASSED  [ 37%]
tests/test_linter.py::TestOkfScope::test_system_index_files_not_in_scope PASSED [ 37%]
tests/test_linter.py::TestOkfScope::test_foreign_repo_out_of_scope PASSED [ 37%]
tests/test_linter.py::TestOkfScope::test_root_repo_meta_out_of_scope PASSED [ 37%]
tests/test_linter.py::TestOkfScope::test_foreign_md_not_flagged PASSED   [ 37%]
tests/test_linter.py::TestOkfScope::test_node_modules_doc_not_flagged PASSED [ 37%]
tests/test_linter.py::TestPowerignore::test_is_ignored_missing_returns_false PASSED [ 37%]
tests/test_linter.py::TestPowerignore::test_powerignore_excludes_matching_paths PASSED [ 37%]
tests/test_linter.py::TestPowerignore::test_powerignore_applied_by_linter PASSED [ 37%]
tests/test_linter.py::TestLintResult::test_no_issues PASSED              [ 37%]
tests/test_linter.py::TestLintResult::test_has_untyped PASSED            [ 37%]
tests/test_linter.py::TestLintResult::test_has_broken PASSED             [ 37%]
tests/test_linter.py::TestLintResult::test_has_orphans PASSED            [ 38%]
tests/test_linter.py::TestLintResult::test_has_stale PASSED              [ 38%]
tests/test_linter.py::TestLintReport::test_healthy_report PASSED         [ 38%]
tests/test_linter.py::TestLintReport::test_issues_report PASSED          [ 38%]
tests/test_linter.py::TestLintReport::test_report_contains_vault_path PASSED [ 38%]
tests/test_low_ram_sync.py::test_sync_uses_batch_not_per_item PASSED     [ 38%]
tests/test_low_ram_sync.py::test_sync_adaptive_batch_on_memory_error PASSED [ 38%]
tests/test_low_ram_sync.py::test_repeated_sections_get_distinct_chunk_ids PASSED [ 38%]
tests/test_low_ram_sync.py::test_stale_dense_manifest_rebuilds_chunk_identity_schema PASSED [ 38%]
tests/test_low_ram_sync.py::test_sync_fts_only_skips_embedding PASSED    [ 38%]
tests/test_low_ram_sync.py::test_fastembed_parallel_is_bounded_not_all_cores PASSED [ 38%]
tests/test_m2_candidate_pool.py::test_pool_is_deterministic_and_hash_bound PASSED [ 38%]
tests/test_m2_candidate_pool.py::test_pending_policy_is_fail_closed PASSED [ 38%]
tests/test_m2_candidate_pool.py::test_missing_comparator_is_rejected PASSED [ 38%]
tests/test_m2_preregistration.py::test_m2_v2_1_policy_is_valid PASSED    [ 39%]
tests/test_m2_preregistration.py::test_lexical_mode_is_diagnostic_and_cannot_be_tuned_after_qrels PASSED [ 39%]
tests/test_m2_preregistration.py::test_candidate_pool_requires_every_mode_and_random_negatives PASSED [ 39%]
tests/test_m2_receipt_recheck.py::test_recheck_lowers_only_effective_threshold_and_keeps_sealed_closed PASSED [ 39%]
tests/test_maintenance.py::test_maintenance_plan_is_read_only_and_apply_is_hash_bound PASSED [ 39%]
tests/test_maintenance.py::test_maintenance_apply_repairs_and_is_idempotent PASSED [ 39%]
tests/test_maintenance.py::test_retention_findings_remain_plan_only PASSED [ 39%]
tests/test_maintenance.py::test_maintenance_restores_prior_action_after_later_write_failure PASSED [ 39%]
tests/test_maintenance_faults.py::test_injected_disk_failure_restores_every_source[1] PASSED [ 39%]
tests/test_maintenance_faults.py::test_injected_disk_failure_restores_every_source[2] PASSED [ 39%]
tests/test_maintenance_faults.py::test_injected_disk_failure_restores_every_source[3] PASSED [ 39%]
tests/test_maintenance_faults.py::test_injected_permission_failure_is_write_free PASSED [ 39%]
tests/test_maintenance_faults.py::test_stale_writer_rejection_is_a_zero_write_transaction PASSED [ 39%]
tests/test_markdown_checks.py::TestTrailingWhitespace::test_detects_trailing_whitespace PASSED [ 39%]
tests/test_markdown_checks.py::TestTrailingWhitespace::test_clean_content PASSED [ 40%]
tests/test_markdown_checks.py::TestTrailingWhitespace::test_fix_removes_whitespace PASSED [ 40%]
tests/test_markdown_checks.py::TestListMarkers::test_detects_inconsistent_markers PASSED [ 40%]
tests/test_markdown_checks.py::TestListMarkers::test_consistent_markers_no_issue PASSED [ 40%]
tests/test_markdown_checks.py::TestListMarkers::test_fix_standardizes_to_dash PASSED [ 40%]
tests/test_markdown_checks.py::TestListMarkers::test_skips_code_blocks PASSED [ 40%]
tests/test_markdown_checks.py::TestHeaderJumps::test_detects_jump PASSED [ 40%]
tests/test_markdown_checks.py::TestHeaderJumps::test_no_jump PASSED      [ 40%]
tests/test_markdown_checks.py::TestHeaderJumps::test_multiple_jumps PASSED [ 40%]
tests/test_markdown_checks.py::TestCodeBlockLanguage::test_detects_missing_language PASSED [ 40%]
tests/test_markdown_checks.py::TestCodeBlockLanguage::test_with_language PASSED [ 40%]
tests/test_markdown_checks.py::TestCodeBlockLanguage::test_multiple_blocks PASSED [ 40%]
tests/test_markdown_checks.py::TestCheckAll::test_finds_all_issues PASSED [ 40%]
tests/test_markdown_checks.py::TestCheckAll::test_no_issues PASSED       [ 40%]
tests/test_markdown_checks.py::TestFixAll::test_fixes_whitespace_and_list_markers PASSED [ 41%]
tests/test_markdown_checks.py::TestFixAll::test_no_changes_needed PASSED [ 41%]
tests/test_mcp_application_boundary.py::test_mcp_mutations_do_not_import_or_call_core_implementation_details PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_documented_client_shapes_are_native_and_consistent PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_ukrainian_onboarding_keeps_the_same_client_shapes PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_each_documented_shape_reaches_golden_stdio_workflow[claude-desktop] PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_each_documented_shape_reaches_golden_stdio_workflow[codex] PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_each_documented_shape_reaches_golden_stdio_workflow[gemini-cli] PASSED [ 41%]
tests/test_mcp_client_onboarding.py::test_each_documented_shape_reaches_golden_stdio_workflow[opencode] PASSED [ 41%]
tests/test_mcp_server.py::test_mcp_tools_publish_standard_and_power_risk_annotations PASSED [ 41%]
tests/test_mcp_server.py::test_mcp_wire_discovery_preserves_tool_contract_and_empty_collections PASSED [ 41%]
tests/test_mcp_server.py::test_mcp_server_advertises_truthful_package_version PASSED [ 41%]
tests/test_mcp_server.py::test_get_server_info_is_read_only_and_does_not_probe_by_default PASSED [ 41%]
tests/test_mcp_server.py::test_get_server_info_can_request_the_no_download_provider_probe PASSED [ 41%]
tests/test_mcp_server.py::test_mcp_stdio_process_preserves_wire_contract[legacy] PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_stdio_process_preserves_wire_contract[auto] PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_stdio_process_restarts_without_read_only_state_mutation PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_live_tool_error_is_safe_and_protocol_framed PASSED [ 42%]
tests/test_mcp_server.py::test_destructive_mcp_tools_require_explicit_approval PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_read_tools_ignore_caller_selected_search_database PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_rot_remote_egress_requires_explicit_approval PASSED [ 42%]
tests/test_mcp_server.py::test_mcp_search_excludes_symlinked_external_note PASSED [ 42%]
tests/test_mcp_server.py::test_power_mcp_preflight_rejects_legacy_vault_environment PASSED [ 42%]
tests/test_mcp_server.py::test_power_mcp_startup_keeps_stdout_protocol_only PASSED [ 42%]
tests/test_mcp_server.py::test_read_sub_index_existing_category PASSED   [ 42%]
tests/test_mcp_server.py::test_read_sub_index_can_select_declared_page PASSED [ 42%]
tests/test_mcp_server.py::test_read_sub_index_rejects_invalid_or_stale_page PASSED [ 42%]
tests/test_mcp_server.py::test_read_sub_index_ignores_body_metadata_and_rejects_malformed_frontmatter PASSED [ 42%]
tests/test_mcp_server.py::test_read_sub_index_wraps_invalid_utf8_in_tool_error PASSED [ 43%]
tests/test_mcp_server.py::test_ensure_sub_index_can_return_requested_page PASSED [ 43%]
tests/test_mcp_server.py::test_read_sub_index_invalid_category PASSED    [ 43%]
tests/test_mcp_server.py::test_read_sub_index_nonexistent_folder PASSED  [ 43%]
tests/test_mcp_server.py::test_search_vault_finds_notes PASSED           [ 43%]
tests/test_mcp_server.py::test_transactional_memory_tools_share_approval_and_history PASSED [ 43%]
tests/test_mcp_server.py::test_handoff_work_is_cross_agent_and_does_not_execute_next_action PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_empty_query PASSED           [ 43%]
tests/test_mcp_server.py::test_search_vault_uses_canonical_default_mode PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_keeps_explicit_fts_mode_compatible PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_uses_shared_temporal_contract PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_rejects_unknown_mode PASSED  [ 43%]
tests/test_mcp_server.py::test_search_vault_rejects_result_budget_overrides[0] PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_rejects_result_budget_overrides[21] PASSED [ 43%]
tests/test_mcp_server.py::test_search_vault_no_matches PASSED            [ 44%]
tests/test_mcp_server.py::test_lint_vault_on_sample PASSED               [ 44%]
tests/test_mcp_server.py::test_generate_index_tool PASSED                [ 44%]
tests/test_mcp_server.py::test_ingest_note_tool PASSED                   [ 44%]
tests/test_mcp_server.py::test_mcp_write_search_loop_survives_a_fresh_process PASSED [ 44%]
tests/test_mcp_server.py::test_sync_vault_fails_closed_and_can_explicitly_allow_partial PASSED [ 44%]
tests/test_mcp_server.py::test_sync_vault_dense_loss_requires_explicit_acceptance PASSED [ 44%]
tests/test_mcp_server.py::test_synthesize_session_serializes_write_and_stores_candidate_triplets PASSED [ 44%]
tests/test_mcp_server.py::test_mcp_write_tools_reject_path_traversal[ingest] PASSED [ 44%]
tests/test_mcp_server.py::test_mcp_write_tools_reject_path_traversal[synthesize] PASSED [ 44%]
tests/test_mcp_server.py::test_mcp_tools_reject_vault_root_substitution PASSED [ 44%]
tests/test_mcp_server.py::test_mcp_run_uses_stdio_only PASSED            [ 44%]
tests/test_mcp_server.py::test_run_rejects_non_stdio_transport PASSED    [ 44%]
tests/test_mcp_server.py::test_run_requires_configured_vault_root PASSED [ 44%]
tests/test_memory_api.py::test_memory_transaction_requires_approval_and_records_history PASSED [ 44%]
tests/test_memory_api.py::test_memory_apply_replay_with_same_idempotency_key_is_not_a_duplicate PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_stale_proposal PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_invalid_content_without_writing PASSED [ 45%]
tests/test_memory_api.py::test_memory_proposal_is_durable_and_content_addressed PASSED [ 45%]
tests/test_memory_api.py::test_memory_apply_rejects_missing_durable_proposal PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_malformed_proposal_schema[path-42] PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_malformed_proposal_schema[content-None] PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_malformed_proposal_schema[before_sha256-short] PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_rejects_malformed_proposal_schema[after_sha256-short] PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_note_when_write_fails PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_note_and_log_when_log_fails PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_partial_index_write PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_note_and_projections_when_index_fails PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_note_when_blocking_lint_fails PASSED [ 45%]
tests/test_memory_api.py::test_memory_transaction_restores_note_when_sync_fails PASSED [ 46%]
tests/test_memory_api.py::test_memory_transaction_preserves_previous_search_on_later_sync_failure PASSED [ 46%]
tests/test_memory_api.py::test_memory_transaction_restores_search_when_receipt_fails PASSED [ 46%]
tests/test_memory_benchmarks.py::TestMemoryAgentBench::test_accurate_retrieval PASSED [ 46%]
tests/test_memory_benchmarks.py::TestMemoryAgentBench::test_test_time_learning PASSED [ 46%]
tests/test_memory_benchmarks.py::TestMemoryAgentBench::test_long_range_understanding PASSED [ 46%]
tests/test_memory_benchmarks.py::TestMemoryAgentBench::test_conflict_resolution PASSED [ 46%]
tests/test_memory_benchmarks.py::TestLoCoMo::test_single_hop_recall PASSED [ 46%]
tests/test_memory_benchmarks.py::TestLoCoMo::test_multi_hop_reasoning PASSED [ 46%]
tests/test_memory_benchmarks.py::TestLoCoMo::test_temporal_inference PASSED [ 46%]
tests/test_memory_benchmarks.py::TestLongMemEval::test_lost_in_the_middle PASSED [ 46%]
tests/test_memory_benchmarks.py::TestLongMemEval::test_abstention PASSED [ 46%]
tests/test_memory_benchmarks.py::TestBEAM::test_preference_decay_and_policy_update PASSED [ 46%]
tests/test_memory_benchmarks.py::TestCrossLingualSearch::test_cross_lingual_english_query_ukrainian_note PASSED [ 46%]
tests/test_memory_benchmarks.py::TestCrossLingualSearch::test_cross_lingual_ukrainian_query_english_note PASSED [ 47%]
tests/test_memory_contract.py::test_memory_contract_round_trips_and_preserves_unknown_fields PASSED [ 47%]
tests/test_memory_contract.py::test_agent_memory_requires_provenance_and_valid_dates PASSED [ 47%]
tests/test_memory_contract.py::test_healer_preserves_memory_and_unknown_fields PASSED [ 47%]
tests/test_memory_contract.py::test_temporal_chain_uses_inclusive_dates_and_preserves_history PASSED [ 47%]
tests/test_memory_contract.py::test_competing_supersession_is_explicitly_conflicted PASSED [ 47%]
tests/test_memory_contract.py::test_incomplete_temporal_projection_fails_closed_to_disk_fallback PASSED [ 47%]
tests/test_memory_contract.py::test_temporal_projection_with_same_count_but_wrong_path_fails_closed PASSED [ 47%]
tests/test_memory_contract.py::test_temporal_projection_updates_when_a_note_changes PASSED [ 47%]
tests/test_migration_recovery.py::test_migration_is_idempotent_and_reversible PASSED [ 47%]
tests/test_migration_recovery.py::test_migration_manifest_retains_original_bytes PASSED [ 47%]
tests/test_models.py::TestNoteType::test_all_types_exist PASSED          [ 47%]
tests/test_models.py::TestNoteType::test_type_count PASSED               [ 47%]
tests/test_models.py::TestNoteStatus::test_all_statuses_exist PASSED     [ 47%]
tests/test_models.py::TestNoteStatus::test_status_count PASSED           [ 48%]
tests/test_models.py::TestNoteFile::test_note_file_properties PASSED     [ 48%]
tests/test_models.py::TestNoteFile::test_note_file_no_metadata PASSED    [ 48%]
tests/test_models.py::TestOKFMetadata::test_valid_minimal PASSED         [ 48%]
tests/test_models.py::TestOKFMetadata::test_valid_full PASSED            [ 48%]
tests/test_models.py::TestOKFMetadata::test_invalid_type PASSED          [ 48%]
tests/test_models.py::TestOKFMetadata::test_empty_title_rejected PASSED  [ 48%]
tests/test_models.py::TestOKFMetadata::test_empty_description_rejected PASSED [ 48%]
tests/test_models.py::TestOKFMetadata::test_description_long_accepted PASSED [ 48%]
tests/test_models.py::TestOKFMetadata::test_description_very_long_accepted PASSED [ 48%]
tests/test_models.py::TestOKFMetadata::test_title_too_long PASSED        [ 48%]
tests/test_models.py::TestOKFMetadata::test_invalid_resource_url PASSED  [ 48%]
tests/test_models.py::TestOKFMetadata::test_valid_resource_urls PASSED   [ 48%]
tests/test_models.py::TestOKFMetadata::test_tags_stripped PASSED         [ 48%]
tests/test_models.py::TestOKFMetadata::test_extra_fields_ignored PASSED  [ 49%]
tests/test_models.py::TestOKFMetadata::test_title_whitespace_stripped PASSED [ 49%]
tests/test_models.py::TestOKFMetadata::test_related_field PASSED         [ 49%]
tests/test_models.py::TestOKFMetadata::test_related_empty_by_default PASSED [ 49%]
tests/test_models.py::TestOKFMetadata::test_related_typed_direct PASSED  [ 49%]
tests/test_models.py::TestOKFMetadata::test_related_mixed_strings_and_typed PASSED [ 49%]
tests/test_models.py::TestOKFMetadata::test_related_strips_whitespace PASSED [ 49%]
tests/test_models.py::TestOKFMetadata::test_owner_field PASSED           [ 49%]
tests/test_models.py::TestOKFMetadata::test_status_field PASSED          [ 49%]
tests/test_models.py::TestOKFMetadata::test_invalid_status_rejected PASSED [ 49%]
tests/test_models.py::TestOKFMetadata::test_expiry_field PASSED          [ 49%]
tests/test_models.py::TestOKFMetadata::test_all_governance_fields PASSED [ 49%]
tests/test_mutation.py::test_same_vault_mutations_are_serialized PASSED  [ 49%]
tests/test_mutation.py::test_different_vault_mutations_remain_parallel PASSED [ 49%]
tests/test_mutation.py::test_lock_is_released_after_failure PASSED       [ 50%]
tests/test_mutation.py::test_mutation_lock_has_strict_permissions PASSED [ 50%]
tests/test_mutation.py::test_os_lock_serializes_another_process PASSED   [ 50%]
tests/test_mutation.py::test_run_blocking_joins_file_backed_work PASSED  [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--index-url https://example.invalid/simple] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--extra-index-url https://example.invalid/simple] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--trusted-host example.invalid] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--find-links /tmp/packages] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[-r other-requirements.txt] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--requirement other-requirements.txt] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[-c constraints.txt] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_rejects_top_level_pip_directives[--constraint constraints.txt] PASSED [ 50%]
tests/test_native_installer.py::test_native_dependency_lock_accepts_hashed_requirement PASSED [ 50%]
tests/test_native_installer.py::test_native_install_fresh_upgrade_and_noop PASSED [ 50%]
tests/test_native_installer.py::test_native_install_failure_preserves_previous_runtime PASSED [ 51%]
tests/test_native_installer.py::test_native_install_post_activation_failure_rolls_back_launchers_and_pointer PASSED [ 51%]
tests/test_native_installer.py::test_native_install_rejects_release_slot_symlink_race PASSED [ 51%]
tests/test_native_installer.py::test_native_install_rejects_interleaved_release_slot_symlink PASSED [ 51%]
tests/test_native_installer.py::test_native_install_noop_requires_matching_current_slot PASSED [ 51%]
tests/test_native_installer.py::test_native_plan_accepts_documented_explicit_process_home PASSED [ 51%]
tests/test_native_installer.py::test_native_install_rejects_foreign_launcher_without_overwrite PASSED [ 51%]
tests/test_native_installer.py::test_native_plan_rejects_root_alias_and_external_current PASSED [ 51%]
tests/test_neural_hermetic_contract.py::test_embedding_manager_contract_uses_fake_tokenizer_and_session PASSED [ 51%]
tests/test_neural_hermetic_contract.py::test_embedding_manager_batch_contract_is_deterministic PASSED [ 51%]
tests/test_neural_hermetic_contract.py::test_dedup_contract_accepts_injected_embedder PASSED [ 51%]
tests/test_neural_hermetic_contract.py::test_contradiction_contract_accepts_injected_embedder PASSED [ 51%]
tests/test_neural_hermetic_contract.py::test_rot_report_contract_executes_dedup_and_contradiction_paths PASSED [ 51%]
tests/test_normalize_sdist.py::test_normalize_sdist_is_order_and_metadata_independent PASSED [ 51%]
tests/test_normalize_sdist.py::test_normalize_sdist_canonicalizes_modes PASSED [ 52%]
tests/test_normalize_sdist.py::test_normalize_sdist_defaults_to_epoch_zero PASSED [ 52%]
tests/test_normalize_sdist.py::test_source_date_epoch_rejects_invalid_values[not-an-integer-must be an integer] PASSED [ 52%]
tests/test_normalize_sdist.py::test_source_date_epoch_rejects_invalid_values[-1-must be between] PASSED [ 52%]
tests/test_normalize_sdist.py::test_normalize_sdist_rejects_special_files PASSED [ 52%]
tests/test_okf_schema.py::test_public_okf_schema_matches_runtime_model PASSED [ 52%]
tests/test_outcome_benchmark.py::test_outcome_benchmark_compares_twenty_workflows_without_raw_content PASSED [ 52%]
tests/test_packaging_contract.py::test_base_dependencies_are_free_of_optional_runtime_stacks PASSED [ 52%]
tests/test_packaging_contract.py::test_optional_profiles_are_explicit PASSED [ 52%]
tests/test_packaging_contract.py::test_fts_path_runs_when_optional_neural_imports_are_blocked PASSED [ 52%]
tests/test_parser.py::TestExtractFrontmatterRaw::test_valid_frontmatter PASSED [ 52%]
tests/test_parser.py::TestExtractFrontmatterRaw::test_no_frontmatter PASSED [ 52%]
tests/test_parser.py::TestExtractFrontmatterRaw::test_malformed_frontmatter PASSED [ 52%]
tests/test_parser.py::TestExtractFrontmatterRaw::test_windows_line_endings PASSED [ 52%]
tests/test_parser.py::TestParseFrontmatter::test_valid_yaml PASSED       [ 53%]
tests/test_parser.py::TestParseFrontmatter::test_invalid_yaml PASSED     [ 53%]
tests/test_parser.py::TestParseFrontmatter::test_no_frontmatter PASSED   [ 53%]
tests/test_parser.py::TestParseFrontmatter::test_list_as_frontmatter PASSED [ 53%]
tests/test_parser.py::TestValidateMetadata::test_valid_metadata PASSED   [ 53%]
tests/test_parser.py::TestValidateMetadata::test_invalid_metadata_missing_type PASSED [ 53%]
tests/test_parser.py::TestValidateMetadata::test_no_frontmatter PASSED   [ 53%]
tests/test_parser.py::TestHasFrontmatter::test_has_frontmatter PASSED    [ 53%]
tests/test_parser.py::TestHasFrontmatter::test_no_frontmatter PASSED     [ 53%]
tests/test_parser.py::TestHasTypeField::test_has_type PASSED             [ 53%]
tests/test_parser.py::TestHasTypeField::test_missing_type PASSED         [ 53%]
tests/test_parser.py::TestHasTypeField::test_no_frontmatter PASSED       [ 53%]
tests/test_parser.py::TestBuildFrontmatter::test_build_minimal PASSED    [ 53%]
tests/test_parser.py::TestBuildFrontmatter::test_build_full PASSED       [ 53%]
tests/test_parser.py::TestBuildFrontmatter::test_escape_quotes PASSED    [ 54%]
tests/test_parser.py::TestBuildFrontmatter::test_build_with_governance PASSED [ 54%]
tests/test_parser.py::TestBuildFrontmatter::test_build_with_related PASSED [ 54%]
tests/test_parser.py::TestBuildFrontmatter::test_typed_related_round_trip_is_lossless PASSED [ 54%]
tests/test_parser.py::TestBuildFrontmatter::test_mixed_related_round_trip_preserves_legacy_and_typed_forms PASSED [ 54%]
tests/test_parser.py::TestBuildFrontmatter::test_build_with_all_new_fields PASSED [ 54%]
tests/test_perf_optimizations.py::TestExplicitIndexing::test_search_does_not_block_on_sync PASSED [ 54%]
tests/test_perf_optimizations.py::TestExplicitIndexing::test_coverage_reports_counts PASSED [ 54%]
tests/test_perf_optimizations.py::TestExplicitIndexing::test_coverage_reads_published_generation PASSED [ 54%]
tests/test_perf_optimizations.py::TestExplicitIndexing::test_coverage_excludes_paginated_catalog_pages PASSED [ 54%]
tests/test_perf_optimizations.py::TestSemanticNumpy::test_semantic_search_rejects_fts_only_index PASSED [ 54%]
tests/test_perf_optimizations.py::TestSemanticNumpy::test_semantic_search_rejects_missing_index PASSED [ 54%]
tests/test_perf_optimizations.py::TestBoundedRerank::test_rerank_limit_constant PASSED [ 54%]
tests/test_perf_optimizations.py::TestBoundedRerank::test_hybrid_reranked_uses_hermetic_reranker PASSED [ 54%]
tests/test_perf_optimizations.py::TestBoundedRerank::test_reranker_receives_body_centered_text PASSED [ 55%]
tests/test_perf_optimizations.py::TestBoundedRerank::test_reranker_cannot_erase_three_source_candidate_consensus PASSED [ 55%]
tests/test_perf_optimizations.py::TestPragmaTuning::test_pragmas_applied PASSED [ 55%]
tests/test_perf_optimizations.py::TestCoverageFooter::test_footer_present_when_indexed PASSED [ 55%]
tests/test_perf_optimizations.py::TestCoverageFooter::test_no_footer_without_vault PASSED [ 55%]
tests/test_perf_optimizations.py::TestEmbeddingCacheDir::test_embedding_cache_dir_persistent PASSED [ 55%]
tests/test_perf_optimizations.py::TestSemanticFailClosed::test_does_not_load_embedder_without_dense_index PASSED [ 55%]
tests/test_perf_optimizations.py::TestSemanticFailClosed::test_empty_vault_reports_missing_dense_index PASSED [ 55%]
tests/test_performance_v3.py::test_tf_vectors_caching PASSED             [ 55%]
tests/test_performance_v3.py::test_query_expansion_deduplication PASSED  [ 55%]
tests/test_phase8_contract.py::test_phase8_contract_snapshot_is_json_compatible_and_complete PASSED [ 55%]
tests/test_phase8_evidence.py::test_real_receipt_requires_all_four_experiments PASSED [ 55%]
tests/test_phase8_evidence.py::test_technical_receipts_are_content_free_and_complete PASSED [ 55%]
tests/test_phase8_evidence.py::test_technical_receipts_reject_stale_release_or_source PASSED [ 55%]
tests/test_phase8_evidence.py::test_phase8_json_hash_is_stable_for_crlf_manifest PASSED [ 55%]
tests/test_phase8_evidence.py::test_real_receipt_rejects_unblinded_or_non_improving_claim PASSED [ 56%]
tests/test_phase8_evidence.py::test_real_receipt_reports_malformed_numeric_and_comparator_fields PASSED [ 56%]
tests/test_phase8_evidence.py::test_phase8_validation_rejects_non_adjudicated_human_manifest PASSED [ 56%]
tests/test_phase8_evidence.py::test_phase8_validation_fails_closed_when_receipts_are_missing PASSED [ 56%]
tests/test_phase8_evidence.py::test_phase8_validation_accepts_formatted_human_manifest_hash PASSED [ 56%]
tests/test_phase8_evidence.py::test_phase8_validation_accepts_standard_python_dumps_hash PASSED [ 56%]
tests/test_phase8_evidence.py::test_phase8_validation_accepts_ascii_escaped_unicode_hash PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_preserves_validated_bytes_and_private_modes PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_validates_both_secrets_before_creating_output PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_fails_closed_when_a_secret_is_missing[POWER36_REAL_VAULT_RECEIPT_JSON] PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_fails_closed_when_a_secret_is_missing[POWER36_HUMAN_MANIFEST_JSON] PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_writes_referenced_embedded_artifacts_privately PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_rejects_missing_embedded_artifact_before_writing PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_rejects_embedded_path_escape PASSED [ 56%]
tests/test_phase8_provisioning.py::test_materializer_rejects_embedded_artifact_sha256_mismatch PASSED [ 57%]
tests/test_power_mcp_entrypoint.py::test_console_script_points_to_public_entrypoint PASSED [ 57%]
tests/test_power_mcp_entrypoint.py::test_mcp_extra_is_explicit_and_official_sdk_is_not_fastmcp PASSED [ 57%]
tests/test_power_mcp_entrypoint.py::test_preflight_requires_an_explicit_existing_vault PASSED [ 57%]
tests/test_power_mcp_entrypoint.py::test_console_preflight_is_available_in_a_subprocess PASSED [ 57%]
tests/test_profile_acceptance.py::test_prepare_vault_uses_privileged_shared_mount_permissions PASSED [ 57%]
tests/test_profile_acceptance.py::test_prepare_vault_fallback_keeps_host_access_after_restrictive_app_write PASSED [ 57%]
tests/test_provenance.py::test_provenance_round_trip_and_tamper_detection PASSED [ 57%]
tests/test_provenance.py::test_provenance_file_capture_is_bounded_and_rejects_unavailable_sources PASSED [ 57%]
tests/test_provenance.py::test_provenance_rejects_naive_time_and_negative_age PASSED [ 57%]
tests/test_provenance.py::test_opt_in_capture_is_exact_deduplicated_and_tamper_evident PASSED [ 57%]
tests/test_provenance.py::test_opt_in_capture_fails_closed_when_blob_is_unavailable PASSED [ 57%]
tests/test_prxmx_power_runtime_audit.py::test_parse_version_semver_and_pep440 PASSED [ 57%]
tests/test_prxmx_power_runtime_audit.py::test_compare_versions_prerelease_and_postrelease_ordering PASSED [ 57%]
tests/test_prxmx_power_runtime_audit.py::test_has_jsonc_comments_tokenizer PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_strip_jsonc_comments_tokenizer PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_default_mcp_configs_matches_prxmx_canonical_paths PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_read_pyproject_version_from_text PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_aggregate_tree_hash_is_deterministic PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_tree_from_directory_ignores_bytecode_and_symlinks PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_sha256_file PASSED         [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_redact_secrets PASSED      [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_local_release_supports_agents_skills_power PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_local_release_prerelease_for_latest_fails_closed PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_local_release_manifest_schema_mismatch_fails_closed PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_local_release_candidate_template_does_not_bind_final_artifacts PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_local_release_wheel_hash_mismatch_fails_closed PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_api_failure_fails_closed PASSED [ 58%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_rejects_non_release_ref_before_network PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_rejects_prerelease_on_latest PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_wheel_asset_mismatch_fails_closed PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_wheel_asset_digest_manifest_mismatch_fails_closed PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_wheel_asset_digest_matching_succeeds PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_without_published_manifest_fails_closed PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_extract_wheel_skill_tree_path_traversal_protection PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_download_and_verify_wheel PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_download_and_verify_wheel_digest_mismatch_fails_closed PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_download_and_verify_wheel_rejects_noncanonical_url PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_download_and_verify_wheel_rejects_oversized_response PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_is_system_prefix PASSED    [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_discover_bounded_venvs_with_python3_and_pip3 PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_audit_venv_system_prefix_guard PASSED [ 59%]
tests/test_prxmx_power_runtime_audit.py::test_get_venv_power_framework_version_system_prefix_exclusion PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_apply_venv_update_prohibits_unverified_pypi PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_via_shebang PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_via_which PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_outdated_runtime PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_missing_runtime PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_foreign_entry_marked_mismatch PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_is_python_interpreter_matrix PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_shell_wrapper_with_exec_resolves_venv_python PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_shell_wrapper_variants_quoted_and_multiline PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_extract_exec_python_from_wrapper_unit PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_shell_wrapper_never_treats_bin_sh_as_python PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_extract_exec_target_from_wrapper_unit PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_nested_two_level_wrapper_prxmx PASSED [ 60%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_wrapper_relative_two_level_wrapper PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_cyclic_wrappers_fail_closed PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_depth_limit_fail_closed PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_nonexistent_exec_target_fails_closed PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_non_regular_file_exec_target_fails_closed PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_with_shell_wrapper PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_extract_and_validate_structure PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_is_safe_skill_relative_path_rules PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_is_allowed_skill_target_protection PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_audit_skill_and_extract_metadata PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_apply_skill_update_path_traversal_fails PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_apply_skill_update_outside_allowed_roots_fails PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_process_lock_prevents_concurrency PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_persist_state_report_unique_filenames PASSED [ 61%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_release_failure_persists_state_and_log PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_fail_on_drift_detects_manual_review_and_missing PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_record_brain_log_distinguishes_audit_and_apply PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_record_failure_is_not_reported_as_success PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_format_human_report PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_pipeline_reads_back_updated_version PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_main_cli_json_output PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_apply_requires_verified_wheel PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_fetch_from_github_apply_missing_wheel_digest_fails_closed PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_github_fetch_uses_published_manifest_asset_not_raw_source PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_apply_updates_mcp_backed_venv_and_retains_comment_guard PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_root_var_run_guards_discovery_and_audit PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_extract_skill_version_quoted_and_unquoted PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/usr/bin/env python3\n] PASSED [ 62%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/usr/bin/env -S python3\n] PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/usr/bin/env -S python3 -u\n] PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/usr/bin/env -S python3 -B -u\n] PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/usr/bin/env -Spython3\n] PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_resolve_mcp_runtime_env_shebang_variants[#!/bin/env -S python3\n] PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_fail_on_drift_missing_mcp_config_file PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_apply_skill_update_post_write_hash_failure_rolls_back PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_run_audit_state_report_persist_failure_is_redacted_and_truthful PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_commented_opencode_jsonc_canonical_entry PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_commented_opencode_jsonc_nested_shell_wrapper PASSED [ 63%]
tests/test_prxmx_power_runtime_audit.py::test_audit_mcp_config_commented_opencode_jsonc_outdated_version PASSED [ 63%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--index-url https://example.invalid/simple] PASSED [ 63%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--extra-index-url https://example.invalid/simple] PASSED [ 63%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--trusted-host example.invalid] PASSED [ 63%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--find-links /tmp/packages] PASSED [ 64%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[-r other-requirements.txt] PASSED [ 64%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--requirement other-requirements.txt] PASSED [ 64%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[-c constraints.txt] PASSED [ 64%]
tests/test_public_release_bindings.py::test_public_lock_validator_rejects_top_level_pip_directives[--constraint constraints.txt] PASSED [ 64%]
tests/test_public_release_bindings.py::test_public_lock_validator_accepts_hashed_requirement PASSED [ 64%]
tests/test_public_release_bindings.py::test_valid_frozen_release_binding_passes PASSED [ 64%]
tests/test_public_release_bindings.py::test_strict_release_provenance_binds_tag_and_workflow_context PASSED [ 64%]
tests/test_public_release_bindings.py::test_required_manifest_filename_cannot_be_omitted PASSED [ 64%]
tests/test_public_release_bindings.py::test_release_receipt_schema_must_be_v2 PASSED [ 64%]
tests/test_public_release_bindings.py::test_release_receipt_must_be_inside_public_asset_directory PASSED [ 64%]
tests/test_public_release_bindings.py::test_manifest_wheel_sha_mismatch_fails_closed PASSED [ 64%]
tests/test_public_release_bindings.py::test_manifest_sdist_sha_mismatch_fails_closed PASSED [ 64%]
tests/test_public_release_bindings.py::test_manifest_commit_mismatch_from_signed_tag_fails_closed PASSED [ 64%]
tests/test_public_release_bindings.py::test_sha256sums_correct_but_manifest_sha_wrong_fails_closed PASSED [ 65%]
tests/test_public_release_bindings.py::test_correct_filename_with_wrong_public_content_fails_closed PASSED [ 65%]
tests/test_public_release_bindings.py::test_recovery_same_tag_with_different_package_bytes_fails_closed PASSED [ 65%]
tests/test_public_release_bindings.py::test_attestation_subject_mismatch_from_final_digest_fails_closed PASSED [ 65%]
tests/test_public_release_bindings.py::test_attestation_subject_roles_cannot_be_swapped PASSED [ 65%]
tests/test_public_release_bindings.py::test_workflow_attestation_ids_must_match_manifest_and_receipt PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_synonym_expand_simple PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_synonym_expand_docker_to_container PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_synonym_expand_uk_to_en PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_synonym_expand_backup PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_empty_query PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_no_synonyms PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_deduplication PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_multi_word_query_partial_synonyms PASSED [ 65%]
tests/test_query_expansion.py::TestQueryExpander::test_case_preserved_in_variants PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderLLM::test_llm_skipped_when_no_api_key PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderLLM::test_llm_graceful_on_network_error PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderLLM::test_llm_graceful_on_bad_json PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderLLM::test_llm_adds_variants_on_success PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderLLM::test_llm_uses_env_var_when_no_key_arg PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderInit::test_default_no_llm PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderInit::test_explicit_llm_and_key PASSED [ 66%]
tests/test_query_expansion.py::TestQueryExpanderInit::test_api_key_from_env PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_1_manifest_wrong_wheel_hash_while_sha256sums_correct PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_1_manifest_wrong_sdist_hash_while_sha256sums_correct PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_2_tampered_wheel_bytes_same_filename PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_2_tampered_wheel_local_prxmx_fetch PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_3_manifest_commit_mismatch PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_3_receipt_commit_mismatch PASSED [ 66%]
tests/test_red_team_adversarial_suite.py::test_attack_4_candidate_template_passed_as_final_manifest PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_4_receipt_attestation_roles_swapped PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_4_receipt_attestation_role_invalid_string PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_5_package_attestation_subject_digest_tampered PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_5_package_attestation_missing_sdist_subject PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_6_web_attestation_subject_tampered PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_6_profile_evidence_image_digest_mismatch PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_7_source_manifest_rejected_as_final_manifest PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_7_prxmx_refuses_source_template_as_public_proof PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_7_source_manifest_template_missing_candidate_authority_fails PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_8_recovery_rebuild_differs_fails_closed PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_9_prxmx_github_fetch_missing_published_manifest_fails_closed PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_9_prxmx_github_fetch_manifest_bytes_hash_mismatch PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_10_all_filenames_present_but_wheel_hash_tampered_in_receipt PASSED [ 67%]
tests/test_red_team_adversarial_suite.py::test_attack_10_unexpected_extra_file_in_public_dir_fails_closed PASSED [ 68%]
tests/test_red_team_adversarial_suite.py::test_attack_10_missing_file_from_public_dir_fails_closed PASSED [ 68%]
tests/test_red_team_adversarial_suite.py::test_attack_10_receipt_missing_hash_binding_fails_closed PASSED [ 68%]
tests/test_relations.py::TestExtractKeywords::test_extracts_meaningful_words PASSED [ 68%]
tests/test_relations.py::TestExtractKeywords::test_filters_stop_words PASSED [ 68%]
tests/test_relations.py::TestExtractKeywords::test_empty_text PASSED     [ 68%]
tests/test_relations.py::TestExtractKeywords::test_unicode_support PASSED [ 68%]
tests/test_relations.py::TestComputeOverlapScore::test_identical_keywords PASSED [ 68%]
tests/test_relations.py::TestComputeOverlapScore::test_no_overlap PASSED [ 68%]
tests/test_relations.py::TestComputeOverlapScore::test_tag_boost PASSED  [ 68%]
tests/test_relations.py::TestSuggestRelated::test_healthy_vault PASSED   [ 68%]
tests/test_relations.py::TestSuggestRelated::test_specific_target PASSED [ 68%]
tests/test_relations.py::TestSuggestRelated::test_no_target_for_nonexistent PASSED [ 68%]
tests/test_relations.py::TestSuggestRelated::test_empty_vault PASSED     [ 68%]
tests/test_relations.py::TestSuggestRelated::test_max_results PASSED     [ 69%]
tests/test_relations.py::TestRelationSuggestion::test_creation PASSED    [ 69%]
tests/test_relations.py::TestKnowledgeGraphIntegrity::test_from_notes_quarantines_missing_relation_target PASSED [ 69%]
tests/test_relations.py::TestFormatRelationSuggestions::test_empty PASSED [ 69%]
tests/test_relations.py::TestFormatRelationSuggestions::test_with_suggestions PASSED [ 69%]
tests/test_relations.py::TestSemanticSuggestions::test_cosine_helper PASSED [ 69%]
tests/test_relations.py::TestSemanticSuggestions::test_semantic_ranks_closest_note PASSED [ 69%]
tests/test_relations.py::TestSemanticSuggestions::test_semantic_falls_back_to_keyword_without_embeddings PASSED [ 69%]
tests/test_release_baseline.py::test_default_template_skips_candidate_baseline PASSED [ 69%]
tests/test_release_baseline.py::test_generated_baseline_binds_current_release_tag SKIPPED [ 69%]
tests/test_release_baseline.py::test_final_baseline_clears_candidate_publication_scope PASSED [ 69%]
tests/test_release_contract.py::test_release_manifest_has_one_native_profile_and_web_adapter PASSED [ 69%]
tests/test_release_contract.py::test_native_install_requires_exact_release_inputs PASSED [ 69%]
tests/test_release_contract.py::test_integrations_doctor_does_not_require_retired_gui_launcher PASSED [ 69%]
tests/test_release_receipt.py::test_receipt_binds_tag_tree_workflow_and_asset_digest PASSED [ 70%]
tests/test_release_receipt.py::test_receipt_normalizes_attestation_ids_and_binds_subjects PASSED [ 70%]
tests/test_release_validation.py::test_validation_receipt_uses_junit_and_coverage_counts PASSED [ 70%]
tests/test_release_validation.py::test_validation_receipt_marks_failed_tests PASSED [ 70%]
tests/test_release_validation.py::test_validation_receipt_rejects_missing_test_cases PASSED [ 70%]
tests/test_release_validation.py::test_validation_receipt_counts_missing_mandatory_gate PASSED [ 70%]
tests/test_release_validation.py::test_validation_receipt_records_unexecuted_mandatory_gates_as_pending PASSED [ 70%]
tests/test_release_validation.py::test_validation_cli_writes_prepublication_receipt PASSED [ 70%]
tests/test_rename.py::test_propagate_rename_dry_run PASSED               [ 70%]
tests/test_rename.py::test_propagate_rename_live PASSED                  [ 70%]
tests/test_rename.py::test_cli_rename_command PASSED                     [ 70%]
tests/test_reranker.py::TestRerankerManager::test_rerank_returns_scores PASSED [ 70%]
tests/test_reranker.py::TestRerankerManager::test_rerank_orders_by_relevance PASSED [ 70%]
tests/test_reranker.py::TestRerankerManager::test_rerank_single_document PASSED [ 70%]
tests/test_reranker.py::TestRerankerManager::test_rerank_empty_documents PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_lazy_init_does_not_load_on_construction PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_jina_requires_explicit_noncommercial_opt_in PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_rerank_calls_model_rerank_with_args PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_colbert_helpers PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_colbert_reranker_exceptions PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_lazy_init_already_initialized PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_get_reranker_default_is_bge PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_bge_default_uses_a_pinned_snapshot_and_complete_file_hashes PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_jina_opt_in_requires_both_flags PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_lexical_reranker_ranks_by_overlap PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_qwen3_reranker_import_error PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_fastembed_reranker_import_error PASSED [ 71%]
tests/test_reranker.py::TestRerankerManager::test_colbert_rerank_with_mock_model PASSED [ 71%]
tests/test_reranker.py::test_bge_reranker_omits_token_type_ids_when_model_does_not_accept_it PASSED [ 72%]
tests/test_reranker.py::test_bge_reranker_includes_token_type_ids_when_model_accepts_it PASSED [ 72%]
tests/test_reranker_batch.py::test_reranker_cache_none_is_unavailable PASSED [ 72%]
tests/test_reranker_batch.py::test_reranker_cached_no_exist_is_unavailable PASSED [ 72%]
tests/test_reranker_batch.py::test_reranker_cached_model_path_is_available PASSED [ 72%]
tests/test_reranker_batch.py::test_default_batch_size_env PASSED         [ 72%]
tests/test_reranker_batch.py::test_reranker_implements_protocol PASSED   [ 72%]
tests/test_retention_soak.py::test_retention_soak_emits_exact_manifest_and_restores_newest_backup PASSED [ 72%]
tests/test_retrieval_fixture.py::test_fts_retrieval_fixture_returns_expected_document[test project-01_Projects/TestProject.md] PASSED [ 72%]
tests/test_retrieval_fixture.py::test_fts_retrieval_fixture_returns_expected_document[sample resource-03_Resources/TestResource.md] PASSED [ 72%]
tests/test_retrieval_fixture.py::test_fts_retrieval_fixture_returns_expected_document[Weby QRank architecture-01_Projects/Weby-QRank/Architecture.md] PASSED [ 72%]
tests/test_retrieval_latency_benchmark.py::test_percentile_is_nearest_rank PASSED [ 72%]
tests/test_retrieval_latency_benchmark.py::test_summary_contains_only_timings_and_counts PASSED [ 72%]
tests/test_retrieval_latency_benchmark.py::test_provider_receipt_is_sanitized PASSED [ 72%]
tests/test_retrieval_latency_benchmark.py::test_resource_snapshot_can_omit_device_probe PASSED [ 73%]
tests/test_retrieval_latency_benchmark.py::test_index_identity_encodes_special_database_path PASSED [ 73%]
tests/test_retrieval_latency_benchmark.py::test_receipt_errors_are_content_free PASSED [ 73%]
tests/test_rot.py::TestROTResult::test_no_issues PASSED                  [ 73%]
tests/test_rot.py::TestROTResult::test_has_redundant PASSED              [ 73%]
tests/test_rot.py::TestROTResult::test_has_outdated PASSED               [ 73%]
tests/test_rot.py::TestROTResult::test_has_trivial PASSED                [ 73%]
tests/test_rot.py::TestTitleSimilarity::test_identical PASSED            [ 73%]
tests/test_rot.py::TestTitleSimilarity::test_partial_overlap PASSED      [ 73%]
tests/test_rot.py::TestTitleSimilarity::test_no_overlap PASSED           [ 73%]
tests/test_rot.py::TestTitleSimilarity::test_empty_titles PASSED         [ 73%]
tests/test_rot.py::TestGetBodyContent::test_with_frontmatter PASSED      [ 73%]
tests/test_rot.py::TestGetBodyContent::test_without_frontmatter PASSED   [ 73%]
tests/test_rot.py::TestRunRotAudit::test_healthy_vault_has_only_trivial PASSED [ 73%]
tests/test_rot.py::TestRunRotAudit::test_detects_stale_notes PASSED      [ 74%]
tests/test_rot.py::TestRunRotAudit::test_detects_trivial_note PASSED     [ 74%]
tests/test_rot.py::TestArchiveStaleNotes::test_dry_run_does_not_move PASSED [ 74%]
tests/test_rot.py::TestArchiveStaleNotes::test_live_move_stale_note PASSED [ 74%]
tests/test_rot.py::TestArchiveStaleNotes::test_no_stale_in_healthy PASSED [ 74%]
tests/test_rot.py::TestRotReport::test_healthy_report PASSED             [ 74%]
tests/test_rot.py::TestRotReport::test_issues_report PASSED              [ 74%]
tests/test_rot_scoring.py::TestContentDedupDetector::test_detects_similar_content PASSED [ 74%]
tests/test_rot_scoring.py::TestContentDedupDetector::test_different_content_not_deduped PASSED [ 74%]
tests/test_rot_scoring.py::TestFreshnessScorer::test_recent_note_is_fresh PASSED [ 74%]
tests/test_rot_scoring.py::TestFreshnessScorer::test_old_daily_log_is_stale PASSED [ 74%]
tests/test_rot_scoring.py::TestFreshnessScorer::test_resource_ages_slower PASSED [ 74%]
tests/test_rot_scoring.py::TestUsageTracker::test_read_all_counts_is_read_only_when_database_is_missing PASSED [ 74%]
tests/test_rot_scoring.py::TestUsageTracker::test_track_and_count PASSED [ 74%]
tests/test_rot_scoring.py::TestUsageTracker::test_read_all_counts_reads_existing_database_without_reinitializing PASSED [ 75%]
tests/test_rot_scoring.py::TestUsageTracker::test_get_all_counts PASSED  [ 75%]
tests/test_rot_scoring.py::TestUsageTracker::test_get_all_usage PASSED   [ 75%]
tests/test_searcher.py::test_search_temporal_views_filter_one_shared_corpus PASSED [ 75%]
tests/test_searcher.py::test_temporal_filter_uses_complete_indexed_metadata_projection PASSED [ 75%]
tests/test_searcher.py::test_search_timing_collector_records_content_free_components PASSED [ 75%]
tests/test_searcher.py::test_dense_matrix_cache_reuses_exact_rows_for_verified_generation PASSED [ 75%]
tests/test_searcher.py::test_dense_matrix_cache_rebuilds_after_generation_publication PASSED [ 75%]
tests/test_searcher.py::test_search_request_resolves_active_generation_once PASSED [ 75%]
tests/test_searcher.py::test_preindexed_legacy_search_resolves_database_once PASSED [ 75%]
tests/test_searcher.py::test_search_request_fails_closed_on_corrupt_active_generation PASSED [ 75%]
tests/test_searcher.py::test_legacy_request_context_keeps_vector_index_writable PASSED [ 75%]
tests/test_searcher.py::TestTokenize::test_simple_words PASSED           [ 75%]
tests/test_searcher.py::TestTokenize::test_unicode PASSED                [ 75%]
tests/test_searcher.py::TestTokenize::test_punctuation_removed PASSED    [ 76%]
tests/test_searcher.py::TestTokenize::test_lowercase PASSED              [ 76%]
tests/test_searcher.py::test_semantic_lexical_guard_breaks_only_a_close_dense_tie PASSED [ 76%]
tests/test_searcher.py::test_semantic_lexical_guard_does_not_override_a_clear_dense_winner PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_default_mode_is_canonical PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_auto_without_dense_generation_falls_back_to_fts PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_auto_empty_result_preserves_fallback_contract PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_sparse_search_without_generation_does_not_publish_state PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_normalize_mode_accepts_case_and_legacy_alias PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_normalize_mode_keeps_explicit_legacy_compatible_mode PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_graph_assisted_mode_is_sparse_and_canonical PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_normalize_mode_rejects_unknown_value PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_dense_index_validation_fails_closed_when_missing PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_semantic_search_validates_index_before_loading_model PASSED [ 76%]
tests/test_searcher.py::TestSearchModeContract::test_dense_index_manifest_schema_is_created PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_dense_scan_ranks_by_cosine_and_preserves_winner_snippets PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_dense_index_validation_requires_matching_manifest PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_dense_index_validation_accepts_matching_manifest PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_semantic_with_fallback_env_downgrades_to_fts PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_semantic_without_index_and_without_fallback_fails_closed PASSED [ 77%]
tests/test_searcher.py::TestSearchModeContract::test_embedding_manifest_identity_uses_provider_and_model PASSED [ 77%]
tests/test_searcher.py::TestScoreNote::test_title_match_high_score PASSED [ 77%]
tests/test_searcher.py::TestScoreNote::test_title_weight_higher_than_body PASSED [ 77%]
tests/test_searcher.py::TestScoreNote::test_tag_match PASSED             [ 77%]
tests/test_searcher.py::TestScoreNote::test_no_match_returns_zero PASSED [ 77%]
tests/test_searcher.py::TestMakeSnippet::test_basic_snippet PASSED       [ 77%]
tests/test_searcher.py::TestMakeSnippet::test_returns_content_when_no_match PASSED [ 77%]
tests/test_searcher.py::TestMakeSnippet::test_snippet_trimmed PASSED     [ 77%]
tests/test_searcher.py::TestMakeSnippet::test_matched_text_strips_context_and_frontmatter PASSED [ 77%]
tests/test_searcher.py::TestFormatSearchResults::test_empty_results PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_single_result PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_envelope_has_provenance_and_data_boundary PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_envelope_reports_verified_generation_provenance PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_envelope_marks_manual_results_without_request_provenance PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_envelope_cannot_take_provenance_from_note_content PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_envelope_preserves_red_team_payloads_as_bounded_data PASSED [ 78%]
tests/test_searcher.py::TestFormatSearchResults::test_untrusted_payload_cannot_escalate_authority PASSED [ 78%]
tests/test_searcher.py::TestSearchVault::test_search_on_empty_vault PASSED [ 78%]
tests/test_searcher.py::TestSearchVault::test_search_finds_match PASSED  [ 78%]
tests/test_searcher.py::TestSearchVault::test_fts_matched_text_uses_body_not_metadata PASSED [ 78%]
tests/test_searcher.py::TestSearchVault::test_auto_domain_policy_scopes_results PASSED [ 78%]
tests/test_searcher.py::TestSearchVault::test_search_by_tag PASSED       [ 78%]
tests/test_searcher.py::TestSearchVault::test_search_by_type_metadata PASSED [ 78%]
tests/test_searcher.py::TestSearchVault::test_search_nonexistent_query PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_reranked_score_scale_is_not_overwritten_by_dense_fallback PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_reranked_mode_scores_only_the_original_query PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_max_results PASSED         [ 79%]
tests/test_searcher.py::TestSearchVault::test_results_ordered_by_score PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_quoted_phrase_search PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_natural_language_fts_falls_back_to_or_when_and_has_no_match PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_fts_defaults_to_or_with_explicit_and_override PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_fts_filters_function_words_from_or_queries PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_search_vault_fallback_on_sqlite_error PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_vector_mode PASSED         [ 79%]
tests/test_searcher.py::TestSearchVault::test_vector_mode_empty_query PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_vector_mode_no_match PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_vector_mode_results_ordered PASSED [ 79%]
tests/test_searcher.py::TestSearchVault::test_hybrid_mode PASSED         [ 80%]
tests/test_searcher.py::TestSearchVault::test_hybrid_uses_dense_candidates_when_available PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_hybrid_mode_empty_query PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_hybrid_mode_no_match PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_hybrid_mode_results_ordered PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_graph_assisted_mode_returns_provenance_bound_results PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_all_modes_return_same_content_type PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_vector_mode_tag_sensitivity PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_hybrid_mode_outperforms_vector_on_phrase PASSED [ 80%]
tests/test_searcher.py::TestSearchVault::test_format_search_results_with_mode PASSED [ 80%]
tests/test_searcher.py::TestTFVector::test_simple_tokens PASSED          [ 80%]
tests/test_searcher.py::TestTFVector::test_repeated_tokens PASSED        [ 80%]
tests/test_searcher.py::TestTFVector::test_empty_tokens PASSED           [ 80%]
tests/test_searcher.py::TestTFVector::test_single_token PASSED           [ 80%]
tests/test_searcher.py::TestCosineSimilarity::test_identical_vectors PASSED [ 81%]
tests/test_searcher.py::TestCosineSimilarity::test_orthogonal_vectors PASSED [ 81%]
tests/test_searcher.py::TestCosineSimilarity::test_partial_overlap PASSED [ 81%]
tests/test_searcher.py::TestCosineSimilarity::test_both_empty PASSED     [ 81%]
tests/test_searcher.py::TestCosineSimilarity::test_one_empty PASSED      [ 81%]
tests/test_searcher.py::TestVectorSearch::test_fts_only_change_invalidates_stale_dense_manifest PASSED [ 81%]
tests/test_searcher.py::TestVectorSearch::test_generated_catalog_pages_never_enter_the_index PASSED [ 81%]
tests/test_searcher.py::TestVectorSearch::test_finds_relevant_note PASSED [ 81%]
tests/test_searcher.py::TestVectorSearch::test_empty_vault PASSED        [ 81%]
tests/test_searcher.py::TestVectorSearch::test_vector_search_rejects_symlinked_db_path PASSED [ 81%]
tests/test_searcher.py::TestVectorSearch::test_max_results PASSED        [ 81%]
tests/test_searcher.py::TestRRFMerge::test_identical_lists PASSED        [ 81%]
tests/test_searcher.py::TestRRFMerge::test_different_lists PASSED        [ 81%]
tests/test_searcher.py::TestRRFMerge::test_results_ordered_by_rrf_score PASSED [ 81%]
tests/test_searcher.py::TestRRFMerge::test_shared_document_gets_higher_score PASSED [ 82%]
tests/test_searcher.py::TestRRFMerge::test_many_lists_preserve_candidates_from_each_source PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_valid_path PASSED    [ 82%]
tests/test_security.py::TestValidateVaultPath::test_nonexistent_path PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_file_not_directory PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_allowed_root_within PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_allowed_root_escape PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_filesystem_root_is_not_a_vault PASSED [ 82%]
tests/test_security.py::TestValidateVaultPath::test_symlinked_control_directory_is_rejected PASSED [ 82%]
tests/test_security.py::TestResolveVaultPath::test_explicit_argument PASSED [ 82%]
tests/test_security.py::TestResolveVaultPath::test_env_variable PASSED   [ 82%]
tests/test_security.py::TestResolveVaultPath::test_fallback_cwd PASSED   [ 82%]
tests/test_security.py::TestResolveVaultPath::test_argument_takes_priority PASSED [ 82%]
tests/test_security.py::TestAtomicWrite::test_creates_file PASSED        [ 82%]
tests/test_security.py::TestAtomicWrite::test_overwrites_existing PASSED [ 83%]
tests/test_security.py::TestAtomicWrite::test_creates_parent_dirs PASSED [ 83%]
tests/test_security.py::TestAtomicWrite::test_no_temp_file_left PASSED   [ 83%]
tests/test_security.py::test_vault_markdown_iterator_excludes_symlink_escapes PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_allows_existing_nested_markdown_path PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[../../outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[01_Projects/../outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[%2e%2e/outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[C:\\outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[01_Projects\\outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_unsafe_untrusted_paths[01_Projects/outside.txt] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_absolute_path PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_symlinked_parent_that_escapes_vault PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[../outside.md] PASSED [ 83%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[../../etc/passwd] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[%2e%2e/outside.md] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[/etc/passwd] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[C:\\Windows\\system.ini] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[..\\outside.md] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[01_Projects/../../outside.md] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_resolve_path_rejects_escape[01_Projects/\x00note.md] PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_symlink_parent_escape PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_rejects_symlink_target_to_external_file PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_atomic_write_rejects_symlinked_note_without_changing_sentinel PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_atomic_write_creates_note_inside_vault PASSED [ 84%]
tests/test_security.py::TestVaultRelativeWritePaths::test_atomic_write_windows_path_avoids_dir_fd PASSED [ 84%]
tests/test_security.py::TestCreateBackup::test_creates_backup PASSED     [ 84%]
tests/test_security.py::TestCreateBackup::test_nonexistent_source PASSED [ 84%]
tests/test_security.py::TestCreateBackup::test_custom_backup_dir PASSED  [ 85%]
tests/test_security.py::TestCreateBackup::test_prune_is_dry_run_by_default_and_ignores_unmanaged_files PASSED [ 85%]
tests/test_security.py::TestCreateBackup::test_prune_and_restore_are_explicit_and_atomic PASSED [ 85%]
tests/test_security.py::TestCleanNoteName::test_removes_extension PASSED [ 85%]
tests/test_security.py::TestCleanNoteName::test_strips_whitespace PASSED [ 85%]
tests/test_security.py::TestCleanNoteName::test_lowercase PASSED         [ 85%]
tests/test_security.py::TestCleanNoteName::test_complex_name PASSED      [ 85%]
tests/test_security.py::TestExclusionHelpers::test_excluded_dirs PASSED  [ 85%]
tests/test_security.py::TestExclusionHelpers::test_excluded_orphan_files PASSED [ 85%]
tests/test_security.py::TestExclusionHelpers::test_excluded_orphan_files_normalizes_windows_paths PASSED [ 85%]
tests/test_security.py::test_atomic_write_exception PASSED               [ 85%]
tests/test_security.py::test_resolve_path_in_vault_extra_checks PASSED   [ 85%]
tests/test_security_policy.py::test_security_policy_is_current_and_covers_runtime_boundaries PASSED [ 85%]
tests/test_semantic_rot.py::TestDenseCosineSimilarity::test_identical_vectors PASSED [ 85%]
tests/test_semantic_rot.py::TestDenseCosineSimilarity::test_orthogonal_vectors PASSED [ 86%]
tests/test_semantic_rot.py::TestDenseCosineSimilarity::test_partial_similarity PASSED [ 86%]
tests/test_semantic_rot.py::TestDenseCosineSimilarity::test_zero_vector PASSED [ 86%]
tests/test_semantic_rot.py::TestContentDedupDetectorEmbedding::test_detects_similar_content PASSED [ 86%]
tests/test_semantic_rot.py::TestContentDedupDetectorEmbedding::test_different_content_not_deduped PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorMetadataFallback::test_conflicting_status PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorMetadataFallback::test_different_owners PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorMetadataFallback::test_opposite_expiry PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorMetadataFallback::test_conflicting_priorities PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorMetadataFallback::test_no_false_positive PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorLLM::test_llm_detects_contradiction PASSED [ 86%]
tests/test_semantic_rot.py::TestContradictionDetectorLLM::test_llm_no_contradiction PASSED [ 86%]
tests/test_semantic_rot.py::TestRotReportSemanticContradictions::test_report_contains_contradictions_section PASSED [ 86%]
tests/test_source_projection.py::test_sync_builds_rebuildable_source_projection_and_truthful_stats PASSED [ 86%]
tests/test_source_projection.py::test_active_reads_use_projection_and_exact_read_is_direct PASSED [ 87%]
tests/test_source_projection.py::test_no_generation_fallback_is_bounded_and_has_no_identity_or_cache_side_effects PASSED [ 87%]
tests/test_source_projection.py::test_graph_focus_and_depth_are_deterministic_bfs_slices PASSED [ 87%]
tests/test_source_projection.py::test_ambiguous_stem_is_typed_and_never_first_match PASSED [ 87%]
tests/test_source_projection.py::test_corrupt_or_missing_projection_fails_closed PASSED [ 87%]
tests/test_source_projection.py::test_active_projection_staleness_fails_closed_after_source_edit PASSED [ 87%]
tests/test_state_migration.py::test_state_plan_is_bounded_content_free_and_idempotent PASSED [ 87%]
tests/test_state_migration.py::test_state_plan_marks_symlink_for_manual_review PASSED [ 87%]
tests/test_state_migration.py::test_state_plan_apply_is_fail_closed PASSED [ 87%]
tests/test_surface_inventory.py::test_surface_inventory_matches_current_runtime_and_packaging PASSED [ 87%]
tests/test_synthesize.py::test_synthesize_session_ingest_success PASSED  [ 87%]
tests/test_synthesize.py::test_synthesize_session_ingest_keeps_legacy_related_compact PASSED [ 87%]
tests/test_synthesize.py::test_synthesize_session_ingest_exists_error PASSED [ 87%]
tests/test_synthesize.py::test_synthesize_session_ingest_adds_md_extension PASSED [ 87%]
tests/test_task_service.py::test_task_creation_and_events PASSED         [ 88%]
tests/test_task_service.py::test_task_ids_reject_filesystem_metacharacters[../escape] PASSED [ 88%]
tests/test_task_service.py::test_task_ids_reject_filesystem_metacharacters[nested/task] PASSED [ 88%]
tests/test_task_service.py::test_task_ids_reject_filesystem_metacharacters[nested\\task] PASSED [ 88%]
tests/test_task_service.py::test_task_ids_reject_filesystem_metacharacters[.hidden] PASSED [ 88%]
tests/test_task_service.py::test_task_ids_reject_filesystem_metacharacters[task id] PASSED [ 88%]
tests/test_task_service.py::test_task_store_revalidates_ids_at_filesystem_boundary PASSED [ 88%]
tests/test_task_service.py::test_malformed_task_event_journal_fails_closed PASSED [ 88%]
tests/test_task_service.py::test_malformed_task_snapshot_fails_closed PASSED [ 88%]
tests/test_task_service.py::test_task_snapshot_rolls_back_when_event_append_fails PASSED [ 88%]
tests/test_task_service.py::test_task_state_transitions PASSED           [ 88%]
tests/test_task_service.py::test_completion_rejects_fabricated_or_missing_artifacts PASSED [ 88%]
tests/test_task_service.py::test_optimistic_concurrency_conflict PASSED  [ 88%]
tests/test_task_service.py::test_task_transition_idempotency_replays_exact_result PASSED [ 88%]
tests/test_task_service.py::test_event_hash_chaining PASSED              [ 88%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[payload] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[payload_digest] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[prev_event_digest] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[duplicate_sequence] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[skipped_sequence] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[wrong_task_id] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[truncated_final_line] PASSED [ 89%]
tests/test_task_service.py::test_event_hash_chain_rejects_tampering[unexpected_schema_field] PASSED [ 89%]
tests/test_task_service.py::test_migrated_task_uses_event_cursor_not_revision PASSED [ 89%]
tests/test_task_service.py::test_task_values_cannot_mutate_invariants[task_id] PASSED [ 89%]
tests/test_task_service.py::test_task_values_cannot_mutate_invariants[revision] PASSED [ 89%]
tests/test_task_service.py::test_task_values_cannot_mutate_invariants[state] PASSED [ 89%]
tests/test_task_service.py::test_task_values_cannot_mutate_invariants[authority] PASSED [ 89%]
tests/test_task_service.py::test_task_values_cannot_mutate_invariants[attempt] PASSED [ 89%]
tests/test_task_service.py::test_task_values_are_revalidated_before_persistence PASSED [ 90%]
tests/test_task_service.py::test_task_values_reject_malformed_refs_and_unknown_state PASSED [ 90%]
tests/test_task_service.py::test_v1_work_packet_migration PASSED         [ 90%]
tests/test_task_service.py::test_direct_backlog_to_working_transition PASSED [ 90%]
tests/test_threat_model.py::test_threat_model_covers_m1_security_boundaries PASSED [ 90%]
tests/test_timing.py::test_timing_receipt_is_stable_and_content_free PASSED [ 90%]
tests/test_timing.py::test_timing_span_is_noop_without_a_collector PASSED [ 90%]
tests/test_typed_relations.py::TestTypedRelation::test_default_relation PASSED [ 90%]
tests/test_typed_relations.py::TestTypedRelation::test_custom_relation PASSED [ 90%]
tests/test_typed_relations.py::TestTypedRelation::test_confidence_bounds PASSED [ 90%]
tests/test_typed_relations.py::TestTypedRelation::test_extra_fields_preserved PASSED [ 90%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_string_list_auto_converts PASSED [ 90%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_mixed_strings_and_typed PASSED [ 90%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_mapping_list_accepts_typed_relations_from_yaml PASSED [ 90%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_empty_list PASSED [ 91%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_string_whitespace_stripped PASSED [ 91%]
tests/test_typed_relations.py::TestBackwardCompatibility::test_backward_serialize_to_related_paths PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_empty_graph PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_single_note_no_relations PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_direct_relations PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_multi_hop_bfs PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_typed_relations_in_graph PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_bfs_from_unreachable_node PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_from_notes_skips_none_metadata PASSED [ 91%]
tests/test_typed_relations.py::TestKnowledgeGraph::test_add_relation_deduplicates_nodes PASSED [ 91%]
tests/test_typed_relations.py::TestMermaidExport::test_empty_graph_returns_minimal_mermaid PASSED [ 91%]
tests/test_typed_relations.py::TestMermaidExport::test_basic_mermaid_output PASSED [ 91%]
tests/test_typed_relations.py::TestMermaidExport::test_mermaid_with_center_path PASSED [ 91%]
tests/test_typed_relations.py::TestMermaidExport::test_mermaid_with_custom_relation PASSED [ 92%]
tests/test_typed_relations.py::TestMermaidExport::test_mermaid_center_path_no_relations PASSED [ 92%]
tests/test_typed_relations.py::TestMermaidExport::test_mermaid_multiple_edges PASSED [ 92%]
tests/test_typed_relations.py::TestMermaidExport::test_suggest_related PASSED [ 92%]
tests/test_udcg.py::test_discounted_lexical_gain_monotonic_in_utility PASSED [ 92%]
tests/test_udcg.py::test_discounted_lexical_gain_position_discount PASSED [ 92%]
tests/test_udcg.py::test_discounted_lexical_gain_empty PASSED            [ 92%]
tests/test_udcg.py::test_normalized_discounted_lexical_gain_perfect_ranking PASSED [ 92%]
tests/test_udcg.py::test_normalized_discounted_lexical_gain_reversed PASSED [ 92%]
tests/test_udcg.py::test_udcg_aliases_emit_deprecation_warning PASSED    [ 92%]
tests/test_udcg.py::test_utilities_from_relevance_bounds PASSED          [ 92%]
tests/test_udcg.py::test_frozen_gt_fixture_loads PASSED                  [ 92%]
tests/test_udcg_real.py::TestDcgAtK::test_empty_returns_zero PASSED      [ 92%]
tests/test_udcg_real.py::TestDcgAtK::test_basic_dcg_value PASSED         [ 92%]
tests/test_udcg_real.py::TestDcgAtK::test_multiple_ranks PASSED          [ 93%]
tests/test_udcg_real.py::TestDcgAtK::test_dcg_penalizes_lower_rank PASSED [ 93%]
tests/test_udcg_real.py::TestDcgAtK::test_k_truncation PASSED            [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_empty_returns_zero PASSED     [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_perfect_ranking_is_one PASSED [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_imperfect_ranking_less_than_one PASSED [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_all_zero_relevance PASSED     [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_single_relevant_doc_at_top PASSED [ 93%]
tests/test_udcg_real.py::TestNdcgAtK::test_single_relevant_doc_at_rank_two PASSED [ 93%]
tests/test_udcg_real.py::TestComputeNdcg::test_perfect_run PASSED        [ 93%]
tests/test_udcg_real.py::TestComputeNdcg::test_imperfect_run PASSED      [ 93%]
tests/test_udcg_real.py::TestComputeNdcg::test_missing_doc_is_zero_relevance PASSED [ 93%]
tests/test_udcg_real.py::TestComputeNdcg::test_empty_qrels_returns_zero PASSED [ 93%]
tests/test_udcg_real.py::TestComputeNdcg::test_multiple_queries_averaged PASSED [ 93%]
tests/test_udcg_real.py::TestLoadSemanticGt::test_loads_semantic_gt_file PASSED [ 94%]
tests/test_udcg_real.py::TestLoadSemanticGt::test_all_queries_have_at_least_one_relevant PASSED [ 94%]
tests/test_udcg_real.py::TestLoadSemanticGt::test_includes_bilingual_queries PASSED [ 94%]
tests/test_udcg_real.py::TestComputeSemanticUdcg::test_uses_real_gt_and_returns_valid PASSED [ 94%]
tests/test_upgrade_matrix.py::test_local_upgrade_matrix_proves_safe_boundaries PASSED [ 94%]
tests/test_upgrade_matrix.py::test_unexecuted_platforms_are_not_silently_green PASSED [ 94%]
tests/test_upgrade_matrix.py::test_upgrade_matrix_aggregation_requires_supported_platforms PASSED [ 94%]
tests/test_upgrade_matrix.py::test_upgrade_matrix_aggregation_rejects_duplicate_platform PASSED [ 94%]
tests/test_utils.py::TestAtomicWrite::test_write_is_byte_identical_to_content PASSED [ 94%]
tests/test_utils.py::TestAtomicWrite::test_written_catalog_page_respects_the_declared_limit PASSED [ 94%]
tests/test_write_queue.py::test_same_vault_mutations_execute_sequentially PASSED [ 94%]
tests/test_write_queue.py::test_mutation_exceptions_propagate_to_caller PASSED [ 94%]
tests/test_write_queue.py::test_concurrent_mutations_never_race_on_shared_resource PASSED [ 94%]
tests/test_write_queue.py::test_different_vaults_can_run_in_parallel PASSED [ 94%]
tests/web/contract/test_app_routes.py::test_dashboard_route_and_headers PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_notes_listing_and_read PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_notes_edit_and_proposal_flow PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_notes_empty_path_redirect PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_search_and_graph_routes PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_task_manager_cockpit PASSED  [ 95%]
tests/web/contract/test_app_routes.py::test_decisions_and_receipts PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_authentication_enforcement_and_login PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_language_switch_and_defaults PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_theme_switch_and_defaults PASSED [ 95%]
tests/web/contract/test_app_routes.py::test_arbitrary_custom_categories_and_vault_paths PASSED [ 95%]
tests/web/contract/test_read_only_and_e2e.py::test_read_only_mode_rejects_mutations_with_405 PASSED [ 95%]
tests/web/contract/test_read_only_and_e2e.py::test_notes_propose_apply_by_id_receipt_and_readback PASSED [ 95%]
tests/web/contract/test_read_only_and_e2e.py::test_task_completion_evidence_creates_canonical_tcr_receipt PASSED [ 95%]
tests/web/contract/test_read_only_and_e2e.py::test_task_sse_resume_cursor_starts_after_requested_sequence PASSED [ 96%]
tests/web/contract/test_read_only_and_e2e.py::test_decision_resolve_via_gui_updates_canonical_decision PASSED [ 96%]
tests/web/contract/test_read_only_and_e2e.py::test_claims_files_do_not_advertise_a2a_agent_ready PASSED [ 96%]
tests/web/contract/test_readiness.py::test_healthz_is_cheap_liveness_only PASSED [ 96%]
tests/web/contract/test_readiness.py::test_readiness_returns_identity_and_custom_vault PASSED [ 96%]
tests/web/contract/test_readiness.py::test_readiness_fails_closed_for_missing_auth_configuration PASSED [ 96%]
tests/web/contract/test_readiness.py::test_readiness_fails_closed_for_missing_vault PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_healthz_unauthenticated_probe PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_fail_closed_on_unconfigured_auth PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_login_rate_limiting_and_lockout PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_hashed_password_authentication PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_csrf_rejection_on_missing_or_tampered_token PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_csp_header_security PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_secure_cookie_defaults_and_https_login PASSED [ 96%]
tests/web/contract/test_security_hardening.py::test_logout_requires_csrf_token PASSED [ 97%]
tests/web/contract/test_security_hardening.py::test_request_body_and_sse_limits PASSED [ 97%]
tests/web/e2e/test_two_browser_idempotency.py::test_auth_csrf_gate_fail_closed SKIPPED [ 97%]
tests/web/e2e/test_two_browser_idempotency.py::test_two_browser_idempotent_transition SKIPPED [ 97%]
tests/web/e2e/test_two_browser_idempotency.py::test_readonly_gate_405 SKIPPED [ 97%]
tests/web/unit/test_auth.py::test_session_manager_lifecycle PASSED       [ 97%]
tests/web/unit/test_auth.py::test_session_manager_tamper_and_expiry PASSED [ 97%]
tests/web/unit/test_auth.py::test_csrf_token_verification PASSED         [ 97%]
tests/web/unit/test_contract_boundaries.py::test_public_exception_mapping_never_reflects_secret_details PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_offload_uses_bounded_limiter_and_timeout PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_offload_never_exceeds_shared_worker_bound PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_unified_plan_is_machine_readable PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_route_inventory_offloads_power_calls PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_web_application_service_boundary_has_no_direct_backend_bypass PASSED [ 97%]
tests/web/unit/test_contract_boundaries.py::test_async_routes_have_public_error_handler PASSED [ 98%]
tests/web/unit/test_contract_boundaries.py::test_sse_limits_are_configured_and_connection_semaphore_is_bounded PASSED [ 98%]
tests/web/unit/test_contract_boundaries.py::test_sse_source_contract_has_disconnect_sleep_and_bounded_power_polling PASSED [ 98%]
tests/web/unit/test_contract_boundaries.py::test_http_exception_handler_redacts_route_detail PASSED [ 98%]
tests/web/unit/test_i18n.py::test_normalize_lang PASSED                  [ 98%]
tests/web/unit/test_i18n.py::test_normalize_theme PASSED                 [ 98%]
tests/web/unit/test_i18n.py::test_translate_lookup PASSED                [ 98%]
tests/web/unit/test_i18n.py::test_get_request_lang PASSED                [ 98%]
tests/web/unit/test_i18n.py::test_get_request_theme PASSED               [ 98%]
tests/web/unit/test_markdown_render.py::test_basic_markdown_rendering PASSED [ 98%]
tests/web/unit/test_markdown_render.py::test_wikilinks_processing PASSED [ 98%]
tests/web/unit/test_markdown_render.py::test_adversarial_xss_prevention PASSED [ 98%]
tests/web/unit/test_security_auth.py::test_csrf_fails_closed_for_missing_or_malformed_settings[None] PASSED [ 98%]
tests/web/unit/test_security_auth.py::test_csrf_fails_closed_for_missing_or_malformed_settings[settings1] PASSED [ 98%]
tests/web/unit/test_security_auth.py::test_csrf_fails_closed_for_missing_or_malformed_settings[settings2] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_csrf_fails_closed_for_missing_or_malformed_settings[settings3] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_csrf_fails_closed_for_missing_or_malformed_settings[settings4] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_csrf_accepts_valid_session_token PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_csrf_rejects_missing_or_invalid_token[-token] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_csrf_rejects_missing_or_invalid_token[session=other-token] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_request_settings_and_jinja_helpers_fail_closed_without_app_state PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_settings_reject_invalid_cookie_names[session_cookie_name-bad name] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_settings_reject_invalid_cookie_names[csrf_cookie_name-bad/name] PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_password_fail_closed_unconfigured PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_password_plaintext_verification PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_password_pbkdf2_hash_and_verification PASSED [ 99%]
tests/web/unit/test_security_auth.py::test_rate_limiter_lockout_lifecycle PASSED [ 99%]
tests/web/unit/test_suite_profile.py::test_accessibility_profile_has_focus_motion_and_form_guardrails PASSED [ 99%]
tests/web/unit/test_suite_profile.py::test_deployment_profiles_keep_web_only_docker_and_shared_vault_contract PASSED [100%]

================================ tests coverage ================================
_______________ coverage: platform linux, python 3.14.6-final-0 ________________

Name                                                          Stmts   Miss  Cover   Missing
-------------------------------------------------------------------------------------------
src/power_framework/__init__.py                                  23      0   100%
src/power_framework/core/__init__.py                             35      0   100%
src/power_framework/core/application.py                         363     53    85%   78, 80, 151-156, 160-165, 172-173, 176, 181-186, 227, 229, 267, 311, 328, 354, 358, 360, 365, 574-575, 597-598, 627, 629, 637, 640, 659, 671, 674, 678, 686, 690, 694, 696, 704, 714-716, 735, 760, 844, 897, 915, 948, 981
src/power_framework/core/application_models.py                  158      0   100%
src/power_framework/core/benchmark_resources.py                   5      0   100%
src/power_framework/core/capabilities.py                         97      9    91%   53-54, 68, 72, 78, 114-115, 140-141
src/power_framework/core/chunker.py                              58      0   100%
src/power_framework/core/cli.py                                 903    236    74%   124-126, 133-136, 253-255, 257-258, 293-295, 322-324, 336, 340-341, 343, 352-353, 355-356, 360-362, 364-365, 367-368, 393-395, 401-406, 427-428, 439, 461, 484-485, 503-511, 572-579, 584-598, 603-612, 619-620, 628-631, 637-647, 652-658, 663-688, 698-699, 705, 718-719, 729-730, 738-740, 759, 767-794, 799-812, 817-837, 842-863, 873, 882-884, 900-901, 904-906, 912-979, 986, 993, 996-999, 1018, 1021-1024, 1040-1043, 1087, 1089, 1114-1123
src/power_framework/core/colbert_reranker.py                      5      0   100%
src/power_framework/core/connect.py                             249     72    71%   25-38, 45-50, 54-62, 69, 71, 85, 87, 91, 95, 97-98, 110, 135, 140-141, 143, 165-166, 168, 181, 198, 209, 215-217, 236, 245, 247, 256-262, 264-266, 278, 282, 284, 288, 379, 381, 384, 412, 421-427
src/power_framework/core/constants.py                            15      0   100%
src/power_framework/core/control_plane.py                       109     16    85%   58, 205, 221-226, 234, 237-247
src/power_framework/core/coverage.py                             34      5    85%   33, 35-36, 50-51
src/power_framework/core/db.py                                   57      0   100%
src/power_framework/core/decision_models.py                     109      9    92%   56, 68, 75, 82, 90, 92, 94, 116, 123
src/power_framework/core/decision_service.py                    166     25    85%   56, 59, 63, 82, 98, 102-103, 115, 117, 119, 127, 131, 149, 153, 176, 187, 235, 238, 241-242, 264, 267, 287, 293-294
src/power_framework/core/doctor.py                              244     74    70%   51, 56, 60-65, 80-85, 98, 170-179, 185-196, 209-210, 220-222, 297-320, 325-326, 328, 330-333, 339-341, 350-351, 356-363, 430, 451-452, 527, 596-631
src/power_framework/core/domains.py                             154     24    84%   71, 79, 90, 93, 99, 105-106, 108, 110, 131-132, 134, 137, 143, 146, 149, 155, 159, 163, 166, 191, 233, 254-255
src/power_framework/core/egress.py                              261     77    70%   78-79, 84-86, 110, 117, 119, 127, 129, 132-133, 137, 144, 150-151, 159, 181, 202, 206-207, 211-213, 220-221, 224-235, 249-279, 297, 317, 319, 342, 345, 347, 386, 390, 407, 409, 412, 414, 416, 420, 423-424, 426, 432-433, 437, 439, 444-448
src/power_framework/core/embeddings.py                            5      0   100%
src/power_framework/core/errors.py                                5      0   100%
src/power_framework/core/fault_injection.py                      26      5    81%   49, 54-57, 60
src/power_framework/core/generation_index.py                    466     49    89%   133-134, 175, 258-260, 417, 426-427, 429, 443, 471-472, 484, 520-521, 523, 534-535, 537, 545-546, 586, 589-590, 592, 607, 611-616, 618-619, 637-638, 659, 711-712, 717, 750-751, 756, 762, 764, 766, 771, 779, 784, 792, 873-874
src/power_framework/core/graph_extraction.py                      5      0   100%
src/power_framework/core/handoff.py                             351     90    74%   87, 94, 138-145, 147-154, 209, 211, 235, 239, 249, 256, 263, 265, 269, 274-287, 295-296, 342-346, 351-353, 355, 369, 377, 382, 403, 405, 414-419, 423, 435-439, 523-537, 553-556, 560-563, 568, 571-572, 574, 577-578, 585, 587, 592, 595-596, 605, 616-617, 619, 622, 632
src/power_framework/core/healer.py                              303     43    86%   122-123, 156-157, 219, 223-226, 268, 297-301, 330-331, 333-338, 346-347, 388, 390, 402, 419, 422, 428-433, 472, 478-480, 484, 488, 492, 520-522
src/power_framework/core/health_loop.py                          76      4    95%   30, 52, 82, 141
src/power_framework/core/ignore.py                               71     11    85%   58, 61, 87-88, 93-94, 116-120
src/power_framework/core/importer.py                            187     28    85%   105, 116, 119, 129-130, 154, 178, 186, 195-197, 201-202, 205-206, 220-221, 223, 241, 245, 247-253, 283
src/power_framework/core/index_sync.py                          245     42    83%   32-34, 120-122, 137-138, 179-180, 204-206, 254-256, 268-285, 362-372, 444, 452-457, 463, 475, 497-505, 530-531
src/power_framework/core/indexer.py                             476     48    90%   61, 71-72, 94, 104-106, 132-133, 182, 185, 211-212, 220, 236, 243-246, 260, 273-274, 353, 361-362, 511, 513, 515, 517-518, 582, 604, 611, 628-629, 686, 739, 749, 760, 764-765, 786-787, 789, 796-797, 844, 937
src/power_framework/core/integrations.py                        571    126    78%   64-73, 87-90, 92, 124, 127, 132, 164, 166, 172, 174, 176, 179, 194-198, 215-216, 219-220, 311, 321, 333, 342-343, 349, 352, 354, 356, 362, 367, 378, 381, 384-385, 387, 389, 403, 405, 407, 409, 411, 415, 417, 419, 427, 434, 438, 441, 443, 446, 449, 451, 456, 463, 465, 467, 471, 474, 479, 543, 545, 548, 550, 559, 578, 586, 603, 628, 648, 658, 669, 673, 684-685, 694, 696, 778, 787-788, 790, 793-794, 806, 808, 827, 837, 844, 846, 852, 855-858, 864, 866, 873, 876-877, 893, 973, 977, 996-999, 1002-1003, 1032, 1034, 1039, 1047, 1055-1058
src/power_framework/core/lifecycle.py                            74      5    93%   32, 54, 91, 170-171
src/power_framework/core/linter.py                              463    131    72%   113-116, 207-215, 220-223, 232-238, 241, 283-285, 319-320, 324, 330-331, 374-375, 405-407, 478-479, 488, 490, 494-495, 514-516, 535, 554-555, 563-564, 567-571, 576-577, 581-582, 629, 631, 635, 639-640, 654-656, 666-667, 692-694, 705-841
src/power_framework/core/maintenance.py                         132     12    91%   87, 111, 194, 196, 212, 215, 238, 252-253, 255, 263, 279
src/power_framework/core/markdown_checks.py                      96      0   100%
src/power_framework/core/memory_api.py                          300     44    85%   65, 85, 130, 135, 143, 228-229, 234-235, 248-249, 251, 255, 259, 277, 291, 294, 296, 298, 306, 309, 312, 316, 337, 355, 364, 386-387, 389, 393, 395, 405, 416, 418, 430, 457, 491, 501, 507-508, 511, 515, 525, 543
src/power_framework/core/metrics/__init__.py                      0      0   100%
src/power_framework/core/metrics/discounted_lexical_gain.py      22      3    86%   24, 36, 38
src/power_framework/core/metrics/udcg.py                         10      0   100%
src/power_framework/core/metrics/udcg_real.py                    51      2    96%   28-31
src/power_framework/core/models.py                              153      3    98%   230, 245, 254
src/power_framework/core/mutation.py                             67      5    93%   54, 81, 128, 132-133
src/power_framework/core/parser.py                               75      0   100%
src/power_framework/core/provenance.py                          150     25    83%   61, 65, 69, 71, 73, 75, 77, 79, 81, 104, 108, 123-124, 175, 223-226, 250, 252, 255, 275, 286-287, 289
src/power_framework/core/query_expansion.py                       5      0   100%
src/power_framework/core/relations.py                             5      0   100%
src/power_framework/core/reranker.py                              5      0   100%
src/power_framework/core/rot_scoring.py                           5      0   100%
src/power_framework/core/searcher.py                            885    137    85%   63-65, 70-72, 117-121, 265, 427-428, 475, 488, 504, 514, 517-518, 524, 530, 532, 591, 593, 599, 619-620, 629-680, 734, 740-751, 808-816, 831, 853, 866, 896-899, 913, 939-940, 1043-1044, 1053, 1061, 1086, 1103, 1128, 1137-1138, 1141, 1151, 1170, 1195-1196, 1206, 1211, 1226-1227, 1249, 1258-1259, 1261, 1267, 1354-1355, 1366-1369, 1513, 1542, 1588, 1686, 1705-1708, 1766, 1784-1787, 1805, 1818-1819, 1828-1832, 1884, 1911, 1967-1968
src/power_framework/core/source_projection.py                   145      7    95%   87, 109, 117, 141, 144, 150-151
src/power_framework/core/source_service.py                      260     47    82%   101, 111, 116-117, 164, 209, 211, 213, 215, 218, 230, 234-235, 245, 250-251, 255-256, 293, 295, 313-332, 340, 369-370, 387, 394-399, 411, 418, 424, 476, 478
src/power_framework/core/state_migration.py                      80     14    82%   79, 85, 88, 92, 140, 155-157, 159, 165-169
src/power_framework/core/synthesize.py                           35      2    94%   109-110
src/power_framework/core/task_models.py                         125      4    97%   139, 159, 237, 244
src/power_framework/core/task_service.py                        203     21    90%   90, 184, 198, 203-207, 229, 233, 235, 311, 327, 332, 339, 343-344, 346, 407, 483-485, 498-499
src/power_framework/core/task_store.py                          357     68    81%   41, 44, 69, 79, 82, 86-88, 103, 105-106, 132, 142, 144, 150, 175-182, 192, 198-207, 225-230, 251-252, 270, 273, 275, 277, 279, 297, 324, 333, 353-356, 402, 444, 447, 480, 482, 486, 489-490, 493-503, 506-516, 536-537
src/power_framework/core/temporal.py                            132     16    88%   52-54, 67-68, 77, 80-81, 108, 121-122, 133-134, 181, 198-199
src/power_framework/core/timing.py                               35      0   100%
src/power_framework/core/utils.py                               313     70    78%   61, 75, 77-78, 105, 107, 111, 274-279, 305-306, 315, 346, 362, 364, 380, 382, 387, 400-404, 415, 453, 458-462, 496-504, 553-554, 559-599
src/power_framework/core/vault_storage.py                       173     27    84%   40-41, 44-45, 47, 83, 123-124, 126, 141-142, 144, 180, 191, 210, 213-214, 227, 232, 243-252, 260-261, 268, 289-290, 308
src/power_framework/core/write_queue.py                           8      1    88%   21
src/power_framework/experimental/__init__.py                      2      0   100%
src/power_framework/experimental/benchmark_resources.py          55     24    56%   17-48, 54-55, 57, 66, 75-76, 78, 83-84
src/power_framework/experimental/colbert_reranker.py             52      8    85%   79-91, 109-110
src/power_framework/experimental/embeddings.py                  455    216    53%   88, 94-97, 100, 106-111, 212, 259-260, 278-282, 286-322, 328-332, 347-349, 352-372, 375-395, 399, 411-419, 425-426, 433-442, 445-458, 471-478, 481-507, 510-517, 541-543, 547, 550-580, 583-587, 590-600, 652, 657-658, 692-697, 699, 712-723, 760-761, 783-794, 804-812, 815-818, 820-831, 833-836
src/power_framework/experimental/graph_extraction.py            121      9    93%   97, 101, 113, 129, 133, 152, 210, 212, 220
src/power_framework/experimental/query_expansion.py              91     20    78%   127-141, 144, 175, 181-191
src/power_framework/experimental/relations.py                   320     43    87%   103, 153, 155, 159-160, 164, 200, 410, 420, 450, 452, 455-456, 459, 496, 500-508, 549, 556, 567-572, 583, 605-608, 621, 623, 626-627, 635, 640-642
src/power_framework/experimental/reranker.py                    212     70    67%   59-65, 100-101, 108, 144-245, 253, 260-261, 276-278, 301, 309, 314, 317, 327, 356-357, 386
src/power_framework/experimental/rot_scoring.py                 331     76    77%   111, 113, 117-119, 123, 128-130, 140, 155, 196, 198, 202-204, 208, 214-216, 224, 263-269, 272, 303, 309-319, 334, 337-338, 369-371, 378, 386, 406, 408, 412-414, 418, 461-471, 477-492, 500-527
src/power_framework/mcp/__init__.py                               3      0   100%
src/power_framework/mcp/contract.py                              35      2    94%   62-63
src/power_framework/mcp/entrypoint.py                            28      4    86%   61-64, 68
src/power_framework/mcp/power_server.py                         372    106    72%   94, 103-107, 141-149, 153-155, 186-187, 194, 213-214, 221, 226, 234, 237-240, 244, 258, 265-266, 268, 282, 345-346, 390-391, 437, 443, 467-475, 502-503, 682, 713, 715-717, 720, 750-760, 822, 858-859, 890, 923, 954-961, 982-994, 1014-1021, 1037-1077, 1090
src/power_framework/mcp/preflight.py                             12      2    83%   21-22
src/power_framework/phase8_contract.py                           15      0   100%
src/power_framework/web/__init__.py                               2      0   100%
src/power_framework/web/app.py                                  165     21    87%   58, 69, 150-151, 276-294, 298
src/power_framework/web/auth/__init__.py                          5      0   100%
src/power_framework/web/auth/csrf.py                             54      3    94%   34, 89-90
src/power_framework/web/auth/password.py                         73     34    53%   37, 50-52, 57-72, 77-86, 115-121
src/power_framework/web/auth/rate_limiter.py                     56      0   100%
src/power_framework/web/auth/session.py                          19      0   100%
src/power_framework/web/clients/__init__.py                       2      0   100%
src/power_framework/web/clients/idempotency.py                    8      0   100%
src/power_framework/web/clients/power.py                         82      4    95%   111, 184, 207, 244
src/power_framework/web/config.py                                80     16    80%   31, 33, 36, 101, 128-141
src/power_framework/web/errors.py                                72     12    83%   75-77, 79, 85, 94, 137, 145, 154-161
src/power_framework/web/i18n.py                                  54      3    94%   332-334
src/power_framework/web/offload.py                               19      1    95%   33
src/power_framework/web/routes/__init__.py                       10      0   100%
src/power_framework/web/routes/auth.py                           64      3    95%   56, 80-81
src/power_framework/web/routes/dashboard.py                      16      0   100%
src/power_framework/web/routes/decisions.py                      20      0   100%
src/power_framework/web/routes/federation.py                     55     10    82%   58-63, 77-80
src/power_framework/web/routes/graph.py                          17      0   100%
src/power_framework/web/routes/notes.py                          45      0   100%
src/power_framework/web/routes/receipts.py                       13      0   100%
src/power_framework/web/routes/search.py                         35      0   100%
src/power_framework/web/routes/tasks.py                          68      9    87%   216, 219, 234-244, 248-255
src/power_framework/web/view_models/__init__.py                   2      0   100%
src/power_framework/web/view_models/markdown_render.py           26      2    92%   70, 79
-------------------------------------------------------------------------------------------
TOTAL                                                         13362   2388    82%
Required test coverage of 70% reached. Total coverage: 82.13%
========== 1405 passed, 4 skipped, 17 deselected in 96.43s (0:01:36) ===========
