[INFO] fetching crate retro-core 2.3.0...
[INFO] testing retro-core-2.3.0 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate retro-core 2.3.0 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate retro-core 2.3.0
[INFO] finished tweaking crates.io crate retro-core 2.3.0
[INFO] tweaked toml for crates.io crate retro-core 2.3.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate retro-core 2.3.0 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate retro-core 2.3.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b62a706f43faa6ff54f286b029df9dd5c463f8f3df6a5f766bc32da627504c46
[INFO] running `Command { std: "docker" "start" "-a" "b62a706f43faa6ff54f286b029df9dd5c463f8f3df6a5f766bc32da627504c46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b62a706f43faa6ff54f286b029df9dd5c463f8f3df6a5f766bc32da627504c46", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b62a706f43faa6ff54f286b029df9dd5c463f8f3df6a5f766bc32da627504c46", kill_on_drop: false }`
[INFO] [stdout] b62a706f43faa6ff54f286b029df9dd5c463f8f3df6a5f766bc32da627504c46
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0e8dd64d86644945303245b175efcfb920d07317a04cac18452ce34951b3d9b7
[INFO] running `Command { std: "docker" "start" "-a" "0e8dd64d86644945303245b175efcfb920d07317a04cac18452ce34951b3d9b7", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling uuid v1.20.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling retro-core v2.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.40s
[INFO] running `Command { std: "docker" "inspect" "0e8dd64d86644945303245b175efcfb920d07317a04cac18452ce34951b3d9b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0e8dd64d86644945303245b175efcfb920d07317a04cac18452ce34951b3d9b7", kill_on_drop: false }`
[INFO] [stdout] 0e8dd64d86644945303245b175efcfb920d07317a04cac18452ce34951b3d9b7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 278fcc91b060955aac3492b62d3c238237fd02e8af70dc5cf592d7dedf48db09
[INFO] running `Command { std: "docker" "start" "-a" "278fcc91b060955aac3492b62d3c238237fd02e8af70dc5cf592d7dedf48db09", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling retro-core v2.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/db.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.22s
[INFO] running `Command { std: "docker" "inspect" "278fcc91b060955aac3492b62d3c238237fd02e8af70dc5cf592d7dedf48db09", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "278fcc91b060955aac3492b62d3c238237fd02e8af70dc5cf592d7dedf48db09", kill_on_drop: false }`
[INFO] [stdout] 278fcc91b060955aac3492b62d3c238237fd02e8af70dc5cf592d7dedf48db09
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] f6d77734a5dc825a8c7e06715407e79ae9798e1018aeb6891699c03bbdaf2eca
[INFO] running `Command { std: "docker" "start" "-a" "f6d77734a5dc825a8c7e06715407e79ae9798e1018aeb6891699c03bbdaf2eca", kill_on_drop: false }`
[INFO] [stderr] warning: constant `SCHEMA_VERSION` is never used
[INFO] [stderr]   --> src/db.rs:13:7
[INFO] [stderr]    |
[INFO] [stderr] 13 | const SCHEMA_VERSION: u32 = 5;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `retro-core` (lib) generated 1 warning
[INFO] [stderr] warning: `retro-core` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/retro_core-acc2f2be3421fec9)
[INFO] [stdout] 
[INFO] [stdout] running 245 tests
[INFO] [stdout] test analysis::merge::tests::test_completely_different ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_none_present ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_no_full_management ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_empty ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_with_context ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_without_context ... ok
[INFO] [stdout] test analysis::merge::tests::test_identical_strings ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_all_present ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_budget_cap ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_full ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_audit_prompt_partial ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_analysis_prompt_full_management ... ok
[INFO] [stdout] test analysis::merge::tests::test_similar_strings ... ok
[INFO] [stdout] test analysis::merge::tests::test_empty_strings ... ok
[INFO] [stdout] test analysis::merge::tests::test_case_insensitive ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_curate_prompt_empty_claude_md ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_empty ... ok
[INFO] [stdout] test analysis::tests::test_analysis_response_schema_is_valid_json ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_json ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_missing_reasoning_defaults_empty ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_with_pending ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_with_applied ... ok
[INFO] [stdout] test analysis::tests::test_full_management_analysis_schema_is_valid_json ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_context_summary_no_managed_section ... ok
[INFO] [stdout] test analysis::tests::test_full_management_analysis_schema_contains_claude_md_edits ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_custom ... ok
[INFO] [stdout] test config::tests::test_hooks_config_max_sessions_default ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_absent ... ok
[INFO] [stdout] test config::tests::test_hooks_config_partial_deserialize ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_null_fields ... ok
[INFO] [stdout] test analysis::tests::test_full_management_schema_claude_md_edits_not_required ... ok
[INFO] [stdout] test analysis::prompts::tests::test_build_curate_prompt ... ok
[INFO] [stdout] test config::tests::test_hooks_config_max_sessions_custom ... ok
[INFO] [stdout] test analysis::tests::test_full_management_schema_preserves_base_patterns ... ok
[INFO] [stdout] test config::tests::test_knowledge_config_defaults ... ok
[INFO] [stdout] test analysis::tests::test_parse_analysis_response_pure_prose_fails ... ok
[INFO] [stdout] test config::tests::test_hooks_config_defaults ... ok
[INFO] [stdout] test config::tests::test_retro_dir_default ... ok
[INFO] [stdout] test analysis::tests::test_graph_analysis_schema_is_valid_json ... ok
[INFO] [stdout] test config::tests::test_hooks_config_new_fields_deserialize ... ok
[INFO] [stdout] test briefing::tests::test_generate_briefing_empty ... ok
[INFO] [stdout] test config::tests::test_claude_md_config_defaults ... ok
[INFO] [stdout] test analysis::tests::test_parse_graph_response ... ok
[INFO] [stdout] test config::tests::test_runner_config_defaults ... ok
[INFO] [stdout] test config::tests::test_trust_config_defaults ... ok
[INFO] [stdout] test config::tests::test_v1_config_still_loads ... ok
[INFO] [stdout] test db::tests::test_generate_project_slug ... ok
[INFO] [stdout] test config::tests::test_retro_dir_override ... ok
[INFO] [stdout] test db::tests::test_auto_apply_data_triggers_full_flow ... ok
[INFO] [stdout] test config::tests::test_v2_config_deserialize ... ok
[INFO] [stdout] test db::tests::test_clear_node_pr ... ok
[INFO] [stdout] test db::tests::test_existing_projections_default_to_applied ... ok
[INFO] [stdout] test db::tests::test_get_nodes_by_scope_and_status ... ok
[INFO] [stdout] test curator::tests::test_audit_response_schema_is_valid_json ... ok
[INFO] [stdout] test db::tests::test_apply_graph_operations_update ... ok
[INFO] [stdout] test db::tests::test_dismiss_nodes_for_pr ... ok
[INFO] [stdout] test db::tests::test_get_last_nudge_at_empty ... ok
[INFO] [stdout] test db::tests::test_apply_graph_operations ... ok
[INFO] [stdout] test db::tests::test_get_patterns_by_status ... ok
[INFO] [stdout] test db::tests::test_get_projections_with_pr_url ... ok
[INFO] [stdout] test db::tests::test_get_project_by_remote_url ... ok
[INFO] [stdout] test db::tests::test_get_all_projects ... ok
[INFO] [stdout] test db::tests::test_get_pending_review_projections ... ok
[INFO] [stdout] test db::tests::test_analyzed_session_tracking ... ok
[INFO] [stdout] test db::tests::test_delete_projection ... ok
[INFO] [stdout] test db::tests::test_get_projected_nodes_for_scope_global ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_empty ... ok
[INFO] [stdout] test db::tests::test_insert_and_check_projection ... ok
[INFO] [stdout] test db::tests::test_get_nodes_by_status ... ok
[INFO] [stdout] test db::tests::test_get_projected_nodes_for_scope_project ... ok
[INFO] [stdout] test db::tests::test_get_projected_pattern_ids_by_status ... ok
[INFO] [stdout] test db::tests::test_get_unprojected_nodes ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_after_analysis ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_generation_failed ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_dbonly ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_after_projection ... ok
[INFO] [stdout] test db::tests::test_has_unanalyzed_sessions_with_new_session ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_dismissed ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_with_discovered ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_node ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_excludes_pending_review ... ok
[INFO] [stdout] test db::tests::test_last_applied_at_empty ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_pattern ... ok
[INFO] [stdout] test db::tests::test_insert_and_get_edges ... ok
[INFO] [stdout] test db::tests::test_last_applied_at_returns_max ... ok
[INFO] [stdout] test db::tests::test_mark_node_projected_with_pr ... ok
[INFO] [stdout] test db::tests::test_has_unprojected_patterns_empty ... ok
[INFO] [stdout] test db::tests::test_migrate_patterns_to_nodes ... ok
[INFO] [stdout] test db::tests::test_projection_status_column_exists ... ok
[INFO] [stdout] test db::tests::test_migrate_v4_to_v5_adds_projection_columns ... ok
[INFO] [stdout] test git::tests::test_install_hooks_only_post_commit ... ok
[INFO] [stdout] test git::tests::test_install_hooks_preserves_non_retro_post_merge ... ok
[INFO] [stdout] test db::tests::test_projections_nudged_column_defaults_to_zero ... ok
[INFO] [stdout] test git::tests::test_install_hooks_removes_old_post_merge ... ok
[INFO] [stdout] test db::tests::test_pattern_merge_update ... ok
[INFO] [stdout] test git::tests::test_install_hooks_up_to_date ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_basic ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_multiple_markers ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_no_marker ... ok
[INFO] [stdout] test git::tests::test_remove_hook_lines_preserves_other_hooks ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_missing_description ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_missing_name ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_no_frontmatter ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_quoted ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_single_quoted ... ok
[INFO] [stdout] test db::tests::test_supersede_node_archives_old ... ok
[INFO] [stdout] test ingest::context::tests::test_read_plugin_skills_no_file ... ok
[INFO] [stdout] test ingest::tests::test_encode_project_path ... ok
[INFO] [stdout] test db::tests::test_sessions_for_analysis ... ok
[INFO] [stdout] test git::tests::test_install_hooks_updates_old_redirect ... ok
[INFO] [stdout] test git::tests::test_install_hooks_updates_preserves_other_hooks ... ok
[INFO] [stdout] test models::tests::test_analysis_response_without_edits ... ok
[INFO] [stdout] test models::tests::test_analysis_response_with_edits ... ok
[INFO] [stdout] test models::tests::test_claude_md_edit_type_display ... ok
[INFO] [stdout] test models::tests::test_claude_md_edit_type_serde ... ok
[INFO] [stdout] test ingest::context::tests::test_parse_skill_frontmatter_standard ... ok
[INFO] [stdout] test models::tests::test_knowledge_node_struct ... ok
[INFO] [stdout] test models::tests::test_knowledge_edge_struct ... ok
[INFO] [stdout] test models::tests::test_node_scope_display_and_from_str ... ok
[INFO] [stdout] test ingest::tests::test_naive_decode_project_path ... ok
[INFO] [stdout] test models::tests::test_node_status_display_and_from_str ... ok
[INFO] [stdout] test models::tests::test_node_type_display_and_from_str ... ok
[INFO] [stdout] test models::tests::test_projection_status_display ... ok
[INFO] [stdout] test models::tests::test_projection_status_from_str ... ok
[INFO] [stdout] test observer::tests::test_encode_project_path ... ok
[INFO] [stdout] test models::tests::test_edge_type_display_and_from_str ... ok
[INFO] [stdout] test db::tests::test_set_generation_failed ... ok
[INFO] [stdout] test db::tests::test_v4_migration_creates_tables ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_empty_paths_scans_all ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_detects_new_files ... ok
[INFO] [stdout] test db::tests::test_update_node_confidence ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_skips_unregistered ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_remove ... ok
[INFO] [stdout] test db::tests::test_v4_migration_from_v3 ... ok
[INFO] [stdout] test observer::tests::test_find_modified_sessions_skips_unchanged ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_reword ... ok
[INFO] [stdout] test db::tests::test_update_node_status ... ok
[INFO] [stdout] test db::tests::test_upsert_and_get_project ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_reword_first_only ... ok
[INFO] [stdout] test projection::claude_md::tests::test_build_managed_section ... ok
[INFO] [stdout] test db::tests::test_update_projection_status ... ok
[INFO] [stdout] test db::tests::test_update_pattern_status ... ok
[INFO] [stdout] test projection::claude_md::tests::test_dissolve_managed_section ... ok
[INFO] [stdout] test db::tests::test_unanalyzed_session_count ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_remove_multiline ... ok
[INFO] [stdout] test projection::claude_md::tests::test_read_managed_section_none ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_empty_file ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_no_existing_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_update_claude_md_replace_existing ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_invalid ... ok
[INFO] [stdout] test projection::claude_md::tests::test_dissolve_no_managed_section ... ok
[INFO] [stdout] test projection::skill::tests::test_build_agentic_skill_prompt_with_instructions ... ok
[INFO] [stdout] test projection::claude_md::tests::test_has_managed_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edits_batch ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_quoted ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_no_frontmatter ... ok
[INFO] [stdout] test projection::global_agent::tests::test_parse_agent_name_valid ... ok
[INFO] [stdout] test projection::global_agent::tests::test_agent_path ... ok
[INFO] [stdout] test projection::skill::tests::test_find_created_skill_ignores_preexisting ... ok
[INFO] [stdout] test projection::skill::tests::test_find_created_skill_finds_new_file ... ok
[INFO] [stdout] test projection::skill::tests::test_build_agentic_skill_prompt_without_instructions ... ok
[INFO] [stdout] test projection::skill::tests::test_generate_skill_slug_already_kebab ... ok
[INFO] [stdout] test projection::skill::tests::test_find_writing_skills_in_dir_missing ... ok
[INFO] [stdout] test projection::skill::tests::test_find_created_skill_returns_none_when_empty ... ok
[INFO] [stdout] test projection::skill::tests::test_generate_skill_slug_basic ... ok
[INFO] [stdout] test projection::skill::tests::test_find_writing_skills_in_dir ... ok
[INFO] [stdout] test projection::skill::tests::test_generate_skill_slug_uppercase ... ok
[INFO] [stdout] test projection::skill::tests::test_generate_skill_slug_single_char_filtered ... ok
[INFO] [stdout] test projection::skill::tests::test_has_valid_frontmatter ... ok
[INFO] [stdout] test projection::skill::tests::test_is_superpowers_installed_missing_file ... ok
[INFO] [stdout] test projection::skill::tests::test_is_superpowers_installed_invalid_json ... ok
[INFO] [stdout] test projection::skill::tests::test_generate_skill_slug_short_words ... ok
[INFO] [stdout] test projection::skill::tests::test_is_superpowers_installed_with_valid_json ... ok
[INFO] [stdout] test projection::skill::tests::test_node_to_pattern ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_no_frontmatter ... ok
[INFO] [stdout] test projection::skill::tests::test_is_superpowers_installed_no_superpowers ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_invalid_chars ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_valid ... ok
[INFO] [stdout] test projection::skill::tests::test_find_writing_skills_picks_latest_version ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_validation_invalid ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_skill_name_quoted ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_path ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_target_dir_project ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_target_dir_global ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_validation_schema_is_valid_json ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_does_not_exist_at_target ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_no_file ... ok
[INFO] [stdout] test projection::skill::tests::test_skill_already_exists_at_target ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_with_managed ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_json_without_edit_type ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_plain_rule ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_empty ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_invalid_edit_type_returns_none ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_move ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_plain_text_returns_none ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_remove ... ok
[INFO] [stdout] test projection::tests::test_dissolve_if_needed_without_managed ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_add ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_reword ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_remove ... ok
[INFO] [stdout] test projection::tests::test_is_edit_action_with_whitespace ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_missing_edit_type_returns_none ... ok
[INFO] [stdout] test projection::tests::test_parse_edit_reword ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_archives_removed_rules ... ok
[INFO] [stdout] test projection::skill::tests::test_parse_validation_valid ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_claude_md_missing_file ... ok
[INFO] [stdout] test db::tests::test_set_and_get_last_nudge_at ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_no_file_ok ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_imports_missing_rules ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_claude_md_reads_file ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_claude_md_no_managed_section ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_skips_small_file ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_no_duplicates ... ok
[INFO] [stdout] test runner::tests::test_ai_calls_today_same_day ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_bidirectional ... ok
[INFO] [stdout] test reconcile::tests::test_reconcile_project_scope ... ok
[INFO] [stdout] test runner::tests::test_last_run_time_returns_timestamp ... ok
[INFO] [stdout] test db::tests::test_mark_node_projected ... ok
[INFO] [stdout] test runner::tests::test_last_run_time_none_when_not_set ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_overwrites_old_backup ... ok
[INFO] [stdout] test runner::tests::test_rotate_log_rotates_large_file ... ok
[INFO] [stdout] test trust::tests::test_auto_mode_respects_type_config ... ok
[INFO] [stdout] test trust::tests::test_review_mode_never_auto_approves ... ok
[INFO] [stdout] test util::tests::test_shorten_path_replaces_home ... ok
[INFO] [stdout] test util::tests::test_shorten_path_no_home_prefix ... ok
[INFO] [stdout] test util::tests::test_strip_json_fences ... ok
[INFO] [stdout] test trust::tests::test_auto_mode_respects_scope_config ... ok
[INFO] [stdout] test util::tests::test_truncate_str_empty ... ok
[INFO] [stdout] test util::tests::test_truncate_str_no_truncation ... ok
[INFO] [stdout] test util::tests::test_truncate_str_utf8_boundary ... ok
[INFO] [stdout] test util::tests::test_whitespace_trimmed ... ok
[INFO] [stdout] test util::tests::test_shorten_path_buf_works ... ok
[INFO] [stdout] test util::tests::test_strip_bare_fences ... ok
[INFO] [stdout] test scrub::tests::test_scrub_aws_key ... ok
[INFO] [stdout] test scrub::tests::test_scrub_github_token ... ok
[INFO] [stdout] test scrub::tests::test_no_scrub_normal_text ... ok
[INFO] [stdout] test scrub::tests::test_scrub_bearer ... ok
[INFO] [stdout] test models::tests::test_graph_analysis_response_deserialize ... ok
[INFO] [stdout] test projection::claude_md::tests::test_apply_edit_add ... ok
[INFO] [stdout] test util::tests::test_no_fences ... ok
[INFO] [stdout] test util::tests::test_strip_yaml_fences ... ok
[INFO] [stdout] test util::tests::test_truncate_str_ascii ... ok
[INFO] [stdout] test runner::tests::test_ai_calls_today_new_day_resets ... ok
[INFO] [stdout] test projection::claude_md::tests::test_read_managed_section ... ok
[INFO] [stdout] test projection::claude_md::tests::test_project_rule_to_claude_md ... ok
[INFO] [stderr]    Doc-tests retro_core
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 245 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f6d77734a5dc825a8c7e06715407e79ae9798e1018aeb6891699c03bbdaf2eca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f6d77734a5dc825a8c7e06715407e79ae9798e1018aeb6891699c03bbdaf2eca", kill_on_drop: false }`
[INFO] [stdout] f6d77734a5dc825a8c7e06715407e79ae9798e1018aeb6891699c03bbdaf2eca
