[INFO] cloning repository https://github.com/jtmckay/decree
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jtmckay/decree" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtmckay%2Fdecree", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtmckay%2Fdecree'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 96fb1d9b52ed1e57250649d68a96d61e3bfa921b
[INFO] testing jtmckay/decree against 1.98.0-beta.1 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtmckay%2Fdecree" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jtmckay/decree
[INFO] finished tweaking git repo https://github.com/jtmckay/decree
[INFO] tweaked toml for git repo https://github.com/jtmckay/decree written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jtmckay/decree on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jtmckay/decree 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" "+1.98.0-beta.1" "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/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d
[INFO] running `Command { std: "docker" "start" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling winnow v0.6.26
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling newline-converter v0.3.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling cron v0.15.0
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling decree v0.4.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.38s
[INFO] running `Command { std: "docker" "inspect" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling decree v0.4.2 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 23.24s
[INFO] running `Command { std: "docker" "inspect" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/decree-7dc7840a4ffd00d9)
[INFO] [stdout] running 294 tests
[INFO] [stdout] test commands::cron_list::tests::test_find_last_run_no_match ... ok
[INFO] [stdout] test commands::cron_list::tests::test_find_last_run_no_dir ... ok
[INFO] [stdout] test commands::cron_list::tests::test_find_last_run_stem_must_match ... ok
[INFO] [stdout] test commands::cron_list::tests::test_find_last_run_picks_alphabetically_last ... ok
[INFO] [stdout] test commands::cron_list::tests::test_relative_ago ... ok
[INFO] [stdout] test commands::cron_list::tests::test_find_last_run_with_matching_dir ... ok
[INFO] [stdout] test commands::cron_list::tests::test_run_empty_cron_dir ... ok
[INFO] [stdout] test commands::daemon::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test commands::cron_list::tests::test_run_with_cron_file ... ok
[INFO] [stdout] test commands::daemon::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test commands::daemon::tests::test_format_bytes ... ok
[INFO] [stdout] test commands::daemon::tests::test_clear_outbox_no_dir ... ok
[INFO] [stdout] test commands::daemon::tests::test_collect_outbox_empty ... ok
[INFO] [stdout] test commands::daemon::tests::test_collect_outbox_depth_limit ... ok
[INFO] [stdout] done
[INFO] [stdout] done
[INFO] [stdout] test commands::daemon::tests::test_clear_outbox ... ok
[INFO] [stdout] test commands::daemon::tests::test_collect_outbox_preserves_custom_fields ... ok
[INFO] [stdout] test commands::daemon::tests::test_collect_outbox_multiple_files ... ok
[INFO] [stdout] test commands::daemon::tests::test_dead_letter ... ok
[INFO] [stdout] test commands::daemon::tests::test_dead_letter_nonexistent ... ok
[INFO] [stdout] test commands::daemon::tests::test_fire_due_cron_jobs ... ok
[INFO] [stdout] test commands::daemon::tests::test_collect_outbox_creates_inbox_messages ... ok
[INFO] [stdout] test commands::cron_list::tests::test_countdown ... ok
[INFO] [stdout] test commands::daemon::tests::test_process_marks_migration_processed ... ok
[INFO] [stdout] test commands::daemon::tests::test_shell_escape ... ok
[INFO] [stdout] test commands::daemon::tests::test_truncate_log_disabled ... ok
[INFO] [stdout] test commands::init::tests::test_ai_invoke_prefix ... ok
[INFO] [stdout] test commands::daemon::tests::test_value_as_env_string_mapping ... ok
[INFO] [stdout] test commands::daemon::tests::test_value_as_env_string_array ... ok
[INFO] [stdout] test commands::daemon::tests::test_truncate_log_under_limit ... ok
[INFO] [stdout] test commands::daemon::tests::test_value_as_env_string ... ok
[INFO] [stdout] test commands::daemon::tests::test_truncate_log_over_limit ... ok
[INFO] [stdout] test commands::init::tests::test_generate_config_with_git_hooks ... ok
[INFO] [stdout] test commands::init::tests::test_develop_template_has_description_header ... ok
[INFO] [stdout] test commands::init::tests::test_ai_placeholder_replacement ... ok
[INFO] [stdout] test commands::init::tests::test_generate_config_with_shared_routines ... ok
[INFO] [stdout] test commands::init::tests::test_develop_template_references_message_dir ... ok
[INFO] [stdout] test commands::init::tests::test_generate_config_without_git_hooks ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_has_description_header ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_has_parameters ... ok
[INFO] [stdout] test commands::init::tests::test_develop_template_has_precheck ... ok
[INFO] [stdout] test commands::init::tests::test_generate_config_includes_alternatives ... ok
[INFO] [stdout] test commands::init::tests::test_command_exists_true ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_has_precheck ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_named_stashes ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_no_destructive_commands ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_restores_on_final_retry ... ok
[INFO] [stdout] test commands::init::tests::test_git_baseline_uses_env_vars ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_has_description_header ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_named_stashes ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_no_destructive_commands ... ok
[INFO] [stdout] test commands::init::tests::test_gitignore_content ... ok
[INFO] [stdout] test commands::init::tests::test_precheck_prints_to_stderr ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_has_parameters ... ok
[INFO] [stdout] test commands::init::tests::test_router_has_placeholders ... ok
[INFO] [stdout] test commands::init::tests::test_rust_develop_template_references_message_dir ... ok
[INFO] [stdout] test commands::init::tests::test_rust_develop_template_has_precheck ... ok
[INFO] [stdout] test commands::daemon::tests::test_process_single_message_writes_run_json ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_has_precheck ... ok
[INFO] [stdout] test commands::init::tests::test_command_exists_false ... ok
[INFO] [stdout] test commands::process::tests::test_clear_outbox ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_restores_baseline_on_exhaustion ... ok
[INFO] [stdout] test commands::init::tests::test_rust_develop_template_has_description_header ... ok
[INFO] [stdout] test commands::init::tests::test_git_stash_changes_uses_env_vars ... ok
[INFO] [stdout] test commands::process::tests::test_detect_token_exhaustion_positive ... ok
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_collect_outbox_empty ... ok
[INFO] [stdout] test commands::daemon::tests::test_process_single_message_failure_dead_letters ... ok
[INFO] [stdout] test commands::process::tests::test_detect_token_exhaustion_negative ... ok
[INFO] [stdout] test commands::process::tests::test_clear_outbox_no_dir ... ok
[INFO] [stdout] done
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_collect_outbox_depth_limit ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_adds_24h_when_past ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_no_time_in_log ... ok
[INFO] [stdout] test commands::process::tests::test_dead_letter_nonexistent ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_parseable_am ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_parseable_pm ... ok
[INFO] [stdout] test commands::process::tests::test_collect_outbox_creates_inbox_messages ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_resets_variant ... ok
[INFO] [stdout] test commands::process::tests::test_extract_seq ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_multiline ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_case_insensitive ... ok
[INFO] [stdout] test commands::process::tests::test_dead_letter ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_plain ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_short_form ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_stops_at_non_alphanum ... ok
[INFO] [stdout] test commands::process::tests::test_format_bytes ... ok
[INFO] [stdout] test commands::process::tests::test_format_ai_call_log_contains_literal_prompt ... ok
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test commands::process::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test commands::process::tests::test_ai_router_fallback_on_empty_config ... ok
[INFO] [stdout] test commands::process::tests::test_dry_run_no_migrations ... ok
[INFO] [stdout] test commands::process::tests::test_ai_router_fallback_on_failure ... ok
[INFO] [stdout] test commands::process::tests::test_array_frontmatter_field_passed_to_routine_as_json ... ok
[INFO] [stdout] done
[INFO] [stdout] test commands::daemon::tests::test_process_single_message_success ... ok
[INFO] [stdout] test commands::process::tests::test_drain_inbox_dead_lettered_on_exhaustion ... ok
[INFO] [stdout] test commands::process::tests::test_drain_inbox_not_dead_lettered_on_success ... ok
[INFO] [stdout] test commands::daemon::tests::test_per_routine_max_attempts ... ok
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_invoke_ai_router_failure ... ok
[INFO] [stdout] test commands::process::tests::test_invoke_ai_router_success ... ok
[INFO] [stdout] test commands::process::tests::test_on_dead_letter_hook_does_not_fire_on_before_each_failure ... ok
[INFO] [stdout] test commands::process::tests::test_extract_session_id_none_when_absent ... done
[INFO] [stdout] ok
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_hook_failure_output_in_log ... ok
[INFO] [stdout] test commands::process::tests::test_ai_router_used_in_normalize ... ok
[INFO] [stdout] test commands::process::tests::test_inbox_file_renamed_after_normalize ... ok
[INFO] [stdout] test commands::process::tests::test_extract_reset_time_no_ampm ... ok
[INFO] [stdout] test commands::process::tests::test_invoke_ai_router_with_prompt_placeholder ... ok
[INFO] [stdout] test commands::process::tests::test_drain_inbox_inbox_only_dead_lettered_flag_is_set ... ok
[INFO] [stdout] test commands::daemon::tests::test_process_single_message_retries ... ok
[INFO] [stdout] test commands::process::tests::test_migration_not_marked_processed_on_exhaustion ... ok
[INFO] [stdout] test commands::process::tests::test_select_next_message_lifo ... ok
[INFO] [stdout] test commands::process::tests::test_select_next_message_prefer_chain ... ok
[INFO] [stdout] test commands::process::tests::test_select_next_message_prefer_chain_not_found ... ok
[INFO] [stdout] some normal error
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_hook_no_output_no_log_block ... ok
[INFO] [stdout] test commands::process::tests::test_hook_output_captured_in_log ... ok
[INFO] [stdout] no session info
[INFO] [stdout] test commands::process::tests::test_normal_failure_still_dead_letters_with_exhaustion_env_set ... ok
[INFO] [stdout] test commands::process::tests::test_shell_escape ... ok
[INFO] [stdout] test commands::process::tests::test_migration_not_marked_processed_on_before_each_failure ... ok
[INFO] [stdout] test commands::process::tests::test_process_marks_migration_processed ... ok
[INFO] [stdout] test commands::process::tests::test_session_id_not_written_when_absent_from_log ... ok
[INFO] [stdout] done
[INFO] [stdout] test commands::process::tests::test_previous_session_id_env_set_on_token_exhaustion_retry ... ok
[INFO] [stdout] test commands::process::tests::test_previous_session_id_not_set_on_normal_retry ... ok
[INFO] [stdout] test commands::process::tests::test_truncate_log_disabled ... ok
[INFO] [stdout] usage limit reached. Limits reset at 11:59 PM
[INFO] [stdout] test commands::process::tests::test_truncate_log_over_limit ... ok
[INFO] [stdout] Session ID: ses-exhaust-1
[INFO] [stdout] usage limit reached. Limits reset at 11:59 PM
[INFO] [stdout] test commands::process::tests::test_token_exhaustion_no_token_session_when_no_session_id ... ok
[INFO] [stdout] test commands::process::tests::test_value_as_env_string ... ok
[INFO] [stdout] test commands::process::tests::test_value_as_env_string_mapping ... ok
[INFO] [stdout] test commands::process::tests::test_write_hook_log_empty_no_write ... ok
[INFO] [stdout] test commands::process::tests::test_truncate_log_under_limit ... ok
[INFO] [stdout] test commands::process::tests::test_write_hook_log_with_output ... ok
[INFO] [stdout] done
[INFO] [stdout] usage limit reached. Limits reset at 11:59 PM
[INFO] [stdout] Claude AI usage limit reached. Limits reset at 11:59 PM
[INFO] [stdout] test commands::routine_sync::tests::test_discover_marks_deprecated ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_discover_no_changes ... ok
[INFO] [stdout] test commands::process::tests::test_value_as_env_string_array ... ok
[INFO] [stdout] test commands::process::tests::test_token_exhaustion_writes_token_session_file ... ok
[INFO] [stdout] test commands::process::tests::test_process_single_message_success ... ok
[INFO] [stdout] test commands::process::tests::test_on_dead_letter_hook_fires_on_exhaustion ... ok
[INFO] [stdout] test commands::process::tests::test_token_exhaustion_inbox_message_removed ... ok
[INFO] [stdout] test commands::process::tests::test_run_json_written_on_success ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_entry_status ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_discover_project_routines ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_discover_undeprecates ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_discover_preserves_enabled ... ok
[INFO] [stdout] test commands::process::tests::test_token_exhaustion_does_not_dead_letter ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_discover_shared_routines ... ok
[INFO] [stdout] test commands::skill::tests::test_bundled_decree_skill_not_empty ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skill_covers_day_sized ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skill_covers_immutability ... ok
[INFO] [stdout] test commands::process::tests::test_process_single_message_failure_dead_letters ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skill_covers_migrations_location ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_scan_routine_names_nonexistent ... ok
[INFO] [stdout] test commands::skill::tests::test_bundled_sow_skill_not_empty ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_scan_routine_names_empty_dir ... ok
[INFO] [stdout] test commands::skill::tests::test_bundled_reference_files_not_empty ... ok
[INFO] [stdout] test commands::routine_sync::tests::test_scan_routine_names ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skills_registry_has_two_entries ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skill_covers_splitting ... ok
[INFO] [stdout] test commands::skill::tests::test_sow_skill_has_required_content ... ok
[INFO] [stdout] test commands::skill::tests::test_decree_skill_has_routine_authoring_content ... ok
[INFO] [stdout] test commands::skill::tests::test_sow_skill_has_one_file ... ok
[INFO] [stdout] test config::tests::test_resolved_routine_source ... ok
[INFO] [stdout] test config::tests::test_expand_tilde_with_home ... ok
[INFO] [stdout] test config::tests::test_deserialize_config_with_routines ... ok
[INFO] [stdout] test config::tests::test_deserialize_legacy_max_retries_alias ... ok
[INFO] [stdout] test config::tests::test_expand_tilde ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_deserialize_minimal_config ... ok
[INFO] [stdout] test commands::skill::tests::test_decree_skill_has_five_files ... ok
[INFO] [stdout] test config::tests::test_routine_entry_deprecated_overrides_enabled ... ok
[INFO] [stdout] test config::tests::test_routine_entry_serialization_skips_deprecated_false ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_basic ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_invalid_expression ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_no_frontmatter ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_no_cron_field ... ok
[INFO] [stdout] test config::tests::test_routine_entry_defaults ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_custom_fields ... ok
[INFO] [stdout] test cron::tests::test_cron_to_inbox_message_no_routine ... Session ID: sess-ok-1
[INFO] [stdout] ok
[INFO] [stdout] test cron::tests::test_cron_tracker_prevents_duplicate ... ok
[INFO] [stdout] test cron::tests::test_cron_to_inbox_message ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_no_routine ... ok
[INFO] [stdout] test cron::tests::test_parse_cron_file_strips_cron_field ... ok
[INFO] [stdout] test cron::tests::test_scan_cron_files_no_dir ... ok
[INFO] [stdout] test cron::tests::test_scan_cron_files_empty ... ok
[INFO] [stdout] test commands::skill::tests::test_claude_skill_covers_given_when_then ... ok
[INFO] [stdout] test hooks::tests::test_configured_hook_names_empty ... ok
[INFO] [stdout] test hooks::tests::test_configured_hook_names_includes_on_dead_letter ... ok
[INFO] [stdout] test hooks::tests::test_hook_error_display ... ok
[INFO] [stdout] test hooks::tests::test_hook_context_default ... ok
[INFO] [stdout] test hooks::tests::test_configured_hook_names_partial ... ok
[INFO] [stdout] test hooks::tests::test_hook_routine_name_empty ... ok
[INFO] [stdout] test hooks::tests::test_hook_routine_name_configured ... ok
[INFO] [stdout] Claude AI usage limit reached. Limits reset at 11:59 PM
[INFO] [stdout] test cron::tests::test_various_cron_expressions ... ok
[INFO] [stdout] test hooks::tests::test_hook_type_as_str ... ok
[INFO] [stdout] test config::tests::test_deserialize_config ... ok
[INFO] [stdout] test cron::tests::test_scan_cron_files_sorted ... ok
[INFO] [stdout] test cron::tests::test_scan_cron_files_skips_invalid ... ok
[INFO] [stdout] test hooks::tests::test_hook_type_display ... ok
[INFO] [stdout] test commands::process::tests::test_run_json_written_on_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_captures_stderr ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_after_each_exit_code_env ... ok
[INFO] [stdout] test commands::process::tests::test_session_id_written_after_successful_attempt ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure_includes_output ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_final_attempt_env ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_final_attempt_not_set_when_false ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_captures_stdout ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_missing_script ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_no_hook_configured ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_on_dead_letter_not_configured ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_no_output_returns_empty ... ok
[INFO] [stdout] test message::tests::test_build_chain_id ... ok
[INFO] [stdout] test message::tests::test_chain_seq_from_filename_empty_chain ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_success ... ok
[INFO] [stdout] test message::tests::test_build_router_prompt ... ok
[INFO] [stdout] test commands::process::tests::test_per_routine_max_attempts ... ok
[INFO] [stdout] test message::tests::test_build_router_prompt_no_description ... ok
[INFO] [stdout] test message::tests::test_chain_seq_from_filename_followup ... ok
[INFO] [stdout] test message::tests::test_chain_seq_from_filename_no_md ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_trigger_env ... ok
[INFO] [stdout] test message::tests::test_chain_seq_from_filename_no_seq ... ok
[INFO] [stdout] test message::tests::test_chain_seq_from_filename_valid ... ok
[INFO] [stdout] test message::tests::test_display ... ok
[INFO] [stdout] test message::tests::test_extract_day_counter ... ok
[INFO] [stdout] test message::tests::test_extract_hhmm ... ok
[INFO] [stdout] test message::tests::test_extract_routine_description_multiline ... ok
[INFO] [stdout] test message::tests::test_extract_routine_description_no_desc ... ok
[INFO] [stdout] test message::tests::test_extract_routine_description_no_shebang ... ok
[INFO] [stdout] test message::tests::test_extract_routine_description_standard ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_bare_message ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_empty_body_valid ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_entirely_empty ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_custom_fields ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_full_message ... ok
[INFO] [stdout] test message::tests::test_inbox_parse_partial_frontmatter ... ok
[INFO] [stdout] test hooks::tests::test_run_hook_sets_env_vars ... ok
[INFO] [stdout] test commands::process::tests::test_token_exhaustion_detected_on_first_attempt ... ok
[INFO] [stdout] test message::tests::test_list_inbox_messages_empty ... ok
[INFO] [stdout] test message::tests::test_list_routines_no_dir ... ok
[INFO] [stdout] test message::tests::test_list_migration_files_empty ... ok
[INFO] [stdout] test message::tests::test_normalize_from_filename ... ok
[INFO] [stdout] test message::tests::test_normalize_generates_chain_when_missing ... ok
[INFO] [stdout] test message::tests::test_list_migration_files_no_dir ... ok
[INFO] [stdout] test message::tests::test_mark_processed ... ok
[INFO] [stdout] test message::tests::test_normalize_complete_message_not_modified ... ok
[INFO] [stdout] test message::tests::test_list_migration_files_sorted ... ok
[INFO] [stdout] test message::tests::test_list_inbox_messages_sorted ... ok
[INFO] [stdout] test message::tests::test_normalize_migration_field_preserved ... ok
[INFO] [stdout] test message::tests::test_normalize_custom_fields_preserved ... ok
[INFO] [stdout] test message::tests::test_list_routines ... ok
[INFO] [stdout] test commands::process::tests::test_process_single_message_retries ... ok
[INFO] [stdout] test message::tests::test_normalize_preserves_frontmatter_over_filename ... ok
[INFO] [stdout] test message::tests::test_normalize_trigger_defaults_to_inbox ... ok
[INFO] [stdout] test message::tests::test_list_routines_nested ... ok
[INFO] [stdout] test message::tests::test_normalize_routine_ai_invalid_falls_back ... ok
[INFO] [stdout] test message::tests::test_normalize_routine_ai_selection ... ok
[INFO] [stdout] test message::tests::test_normalize_routine_fallback_config_default ... ok
[INFO] [stdout] test message::tests::test_normalize_routine_ultimate_fallback ... ok
[INFO] [stdout] test message::tests::test_normalize_trigger_preserved_when_set ... ok
[INFO] [stdout] test message::tests::test_normalize_filename_stem_as_chain_fallback ... ok
[INFO] [stdout] test message::tests::test_normalize_migration_stem_takes_priority_over_filename ... ok
[INFO] [stdout] test message::tests::test_normalize_trigger_defaults_on_complete_message ... ok
[INFO] [stdout] test message::tests::test_parse_followup ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_custom_fields ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_empty_body ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_none ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_preserves_body_whitespace ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_with_fields ... ok
[INFO] [stdout] test message::tests::test_parse_message_id ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_empty ... ok
[INFO] [stdout] test message::tests::test_parse_migration_without_frontmatter ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_no_closing ... ok
[INFO] [stdout] test message::tests::test_serialize_empty_body ... ok
[INFO] [stdout] test message::tests::test_parse_invalid ... ok
[INFO] [stdout] test message::tests::test_parse_migration_empty_body ... ok
[INFO] [stdout] test message::tests::test_read_processed_creates_if_missing ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_no_trailing_newline ... ok
[INFO] [stdout] test message::tests::test_parse_migration_with_frontmatter ... ok
[INFO] [stdout] test message::tests::test_value_as_string ... ok
[INFO] [stdout] test message::tests::test_serialize_roundtrip ... ok
[INFO] [stdout] test message::tests::test_serialize_with_custom_fields ... ok
[INFO] [stdout] test message::tests::test_serialize_full_message ... ok
[INFO] [stdout] test routine::tests::test_discover_custom_params_basic ... ok
[INFO] [stdout] test message::tests::test_unprocessed_migrations_all_processed ... ok
[INFO] [stdout] test message::tests::test_write_and_read_inbox ... ok
[INFO] [stdout] test routine::tests::test_levenshtein ... ok
[INFO] [stdout] test routine::tests::test_discover_custom_params_stops_at_non_matching ... ok
[INFO] [stdout] test routine::tests::test_discover_custom_params_excludes_standard ... ok
[INFO] [stdout] test message::tests::test_unprocessed_migrations ... ok
[INFO] [stdout] test message::tests::test_read_processed_with_entries ... ok
[INFO] [stdout] test routine::tests::test_parse_param_assignment ... ok
[INFO] [stdout] test routine::tests::test_extract_descriptions_empty ... ok
[INFO] [stdout] test routine::tests::test_extract_descriptions_no_shebang ... ok
[INFO] [stdout] test routine::tests::test_extract_descriptions_standard ... ok
[INFO] [stdout] test message::tests::test_read_processed_empty ... ok
[INFO] [stdout] test message::tests::test_value_as_u32 ... ok
[INFO] [stdout] test message::tests::test_parse_frontmatter_full_message ... ok
[INFO] [stdout] test routine::tests::test_find_closest_routine ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/decree-239972eb26af45fb)
[INFO] [stdout] test commands::process::tests::test_per_routine_timeout_kills_process ... ok
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-737f15c87b2d02cd)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 294 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.29s
[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] [stdout] 
[INFO] [stdout] running 59 tests
[INFO] [stdout] test test_bare_decree_without_project_fails ... ok
[INFO] [stdout] test test_init_config_has_required_fields ... ok
[INFO] [stdout] test test_init_config_has_commented_alternatives ... ok
[INFO] [stdout] test test_init_gitignore_content ... ok
[INFO] [stdout] test test_init_routines_use_ai_cmd_placeholder ... ok
[INFO] [stdout] test test_init_processed_md_is_empty ... ok
[INFO] [stdout] test test_init_config_is_valid_yaml ... ok
[INFO] [stdout] test test_init_routines_have_precheck ... ok
[INFO] [stdout] test test_init_precheck_prints_to_stderr ... ok
[INFO] [stdout] test test_init_routines_have_description_headers ... ok
[INFO] [stdout] test test_init_router_md_placement_and_content ... ok
[INFO] [stdout] test test_init_routines_are_executable ... ok
[INFO] [stdout] test test_routine_named_non_tty_shows_detail ... ok
[INFO] [stdout] test test_init_creates_directory_structure ... ok
[INFO] [stdout] test test_init_routines_reference_message_dir ... ok
[INFO] [stdout] test test_no_color_flag_accepted ... ok
[INFO] [stdout] test test_log_with_specific_id ... ok
[INFO] [stdout] test test_log_multiple_attempts ... ok
[INFO] [stdout] test test_log_shows_most_recent_non_tty ... ok
[INFO] [stdout] test test_init_rerun_non_tty_overwrites ... ok
[INFO] [stdout] test test_skill_all_installs_two_claude_skills ... ok
[INFO] [stdout] test test_log_not_found ... ok
[INFO] [stdout] test test_skill_already_up_to_date_copilot ... ok
[INFO] [stdout] test test_log_no_runs ... ok
[INFO] [stdout] test test_skill_claude_project_creates_file ... ok
[INFO] [stdout] test test_routine_unknown_no_close_match ... ok
[INFO] [stdout] test test_routine_no_args_non_tty_lists_routines ... ok
[INFO] [stdout] test test_routine_unknown_with_close_match ... ok
[INFO] [stdout] test test_skill_claude_user_scope ... ok
[INFO] [stdout] test test_routine_no_routines ... ok
[INFO] [stdout] test test_skill_claude_content_has_required_sections ... ok
[INFO] [stdout] test test_routine_custom_params_shown_in_detail ... ok
[INFO] [stdout] test test_skill_conflict_no_force_exits_nonzero ... ok
[INFO] [stdout] test test_skill_already_up_to_date_claude ... ok
[INFO] [stdout] test test_skill_skill_flag_installs_specific_skill ... ok
[INFO] [stdout] test test_unknown_subcommand_exit_code_2 ... ok
[INFO] [stdout] test test_skill_copilot_content_has_required_sections ... ok
[INFO] [stdout] test test_skill_copilot_project_creates_file ... ok
[INFO] [stdout] test test_skill_installed_content_matches_bundled_template_claude ... ok
[INFO] [stdout] test test_status_dead_letter_no_timestamp_when_empty ... ok
[INFO] [stdout] test test_skill_no_prompts_when_flags_provided ... ok
[INFO] [stdout] test test_skill_conflict_with_force_overwrites ... ok
[INFO] [stdout] test test_skill_user_copilot_unsupported ... ok
[INFO] [stdout] test test_routine_detail_shows_description ... ok
[INFO] [stdout] test test_skill_installed_content_matches_bundled_template_copilot ... ok
[INFO] [stdout] test test_skill_preserves_unrelated_files_in_claude_dir ... ok
[INFO] [stdout] test test_routine_nested_directory ... ok
[INFO] [stdout] test test_skill_non_tty_without_skill_flag_errors ... ok
[INFO] [stdout] test test_status_dead_letter_shows_oldest_timestamp ... ok
[INFO] [stdout] test test_version_flag ... ok
[INFO] [stdout] test test_status_empty_project ... ok
[INFO] [stdout] test test_verify_hooks_missing_routine ... ok
[INFO] [stdout] test test_verify_all_pass ... ok
[INFO] [stdout] test test_verify_some_fail ... ok
[INFO] [stdout] test test_status_with_migrations ... ok
[INFO] [stdout] test test_verify_hooks_pass ... ok
[INFO] [stdout] test test_verify_shows_fail_reason ... ok
[INFO] [stdout] test test_verify_no_routines ... ok
[INFO] [stderr]    Doc-tests decree
[INFO] [stdout] test test_verify_no_hooks_configured_no_hook_section ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 59 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
[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" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d", kill_on_drop: false }`
[INFO] [stdout] d8a76995ee80eeba448a1897d0dcab38224f082c145db633a657b62106f1157d
