[INFO] cloning repository https://github.com/xwings/kerness
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/xwings/kerness" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxwings%2Fkerness", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxwings%2Fkerness'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 446b56376e0de89c75b028531e4aa860e1dd9a27
[INFO] testing xwings/kerness against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxwings%2Fkerness" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/xwings/kerness
[INFO] finished tweaking git repo https://github.com/xwings/kerness
[INFO] tweaked toml for git repo https://github.com/xwings/kerness written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/xwings/kerness on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/xwings/kerness 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unindent v0.2.4
[INFO] [stderr]   Downloaded pyo3-macros v0.23.5
[INFO] [stderr]   Downloaded pyo3-macros-backend v0.23.5
[INFO] [stderr]   Downloaded memoffset v0.9.1
[INFO] [stderr]   Downloaded webpki-roots v0.26.11
[INFO] [stderr]   Downloaded bit-set v0.8.0
[INFO] [stderr]   Downloaded indoc v2.0.7
[INFO] [stderr]   Downloaded shell-words v1.1.1
[INFO] [stderr]   Downloaded bit-vec v0.8.0
[INFO] [stderr]   Downloaded pyo3-build-config v0.23.5
[INFO] [stderr]   Downloaded zerovec-derive v0.11.6
[INFO] [stderr]   Downloaded icu_provider v2.3.1
[INFO] [stderr]   Downloaded target-lexicon v0.12.16
[INFO] [stderr]   Downloaded yaml-rust2 v0.11.1
[INFO] [stderr]   Downloaded rustls-webpki v0.103.15
[INFO] [stderr]   Downloaded log v0.4.34
[INFO] [stderr]   Downloaded pyo3-ffi v0.23.5
[INFO] [stderr]   Downloaded fancy-regex v0.14.0
[INFO] [stderr]   Downloaded ureq v2.12.1
[INFO] [stderr]   Downloaded cc v1.4.4
[INFO] [stderr]   Downloaded zerovec v0.11.8
[INFO] [stderr]   Downloaded syn v3.0.4
[INFO] [stderr]   Downloaded pyo3 v0.23.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed
[INFO] running `Command { std: "docker" "start" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", 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" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", 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" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling target-lexicon v0.12.16
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling litemap v0.8.3
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.11
[INFO] [stderr]    Compiling writeable v0.6.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling cc v1.4.4
[INFO] [stderr]    Compiling icu_normalizer_data v2.3.0
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.3.0
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling pyo3-build-config v0.23.5
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling aho-corasick v1.1.5
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling pyo3-macros-backend v0.23.5
[INFO] [stderr]    Compiling pyo3-ffi v0.23.5
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling hashlink v0.11.1
[INFO] [stderr]    Compiling pyo3 v0.23.5
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling arraydeque v0.5.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling yaml-rust2 v0.11.1
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling unindent v0.2.4
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.8
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling fancy-regex v0.14.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling potential_utf v0.1.6
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling icu_collections v2.3.0
[INFO] [stderr]    Compiling icu_provider v2.3.1
[INFO] [stderr]    Compiling pyo3-macros v0.23.5
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling kerness v0.1.2 (/opt/rustwide/workdir/crates/kerness)
[INFO] [stderr]    Compiling kerness-py v0.1.2 (/opt/rustwide/workdir/bindings/python)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 44s
[INFO] running `Command { std: "docker" "inspect" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", 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" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling kerness v0.1.2 (/opt/rustwide/workdir/crates/kerness)
[INFO] [stderr]    Compiling kerness-py v0.1.2 (/opt/rustwide/workdir/bindings/python)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 45.84s
[INFO] running `Command { std: "docker" "inspect" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", 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" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/kerness-e2d36e550cade66b)
[INFO] [stdout] 
[INFO] [stdout] running 415 tests
[INFO] [stdout] test access::tests::a_bare_policy_allows_nothing_but_trusts_skill_bundles ... ok
[INFO] [stdout] test access::tests::a_bare_star_allows_every_command ... ok
[INFO] [stdout] test access::tests::a_command_glob_is_anchored_at_both_ends ... ok
[INFO] [stdout] test access::tests::a_command_naming_no_url_is_not_narrowed_by_the_host_list ... ok
[INFO] [stdout] test access::tests::a_host_list_narrows_a_command_that_was_otherwise_allowed ... ok
[INFO] [stdout] test access::tests::a_host_pattern_is_an_anchored_glob_over_the_hostname ... ok
[INFO] [stdout] test access::tests::a_yes_saying_approver_cannot_widen_the_path_boundary ... ok
[INFO] [stdout] test access::tests::a_refused_path_is_named_by_where_it_lands_not_by_what_was_typed ... ok
[INFO] [stdout] test access::tests::a_symlink_out_of_an_allowed_dir_is_denied ... ok
[INFO] [stdout] test access::tests::a_workspace_grants_its_contents_and_names_itself_when_it_refuses ... ok
[INFO] [stdout] test access::tests::a_command_pattern_searches_rather_than_matches ... ok
[INFO] [stdout] test access::tests::a_home_relative_allowlist_is_expanded ... ok
[INFO] [stdout] test access::tests::a_host_list_narrows_an_auto_approved_prefix_too ... ok
[INFO] [stdout] test access::tests::an_allowed_file_grants_that_file_and_no_sibling ... ok
[INFO] [stdout] test access::tests::an_empty_host_list_leaves_a_permitted_command_alone ... ok
[INFO] [stdout] test access::tests::an_unmatched_command_rests_entirely_on_the_prompt ... ok
[INFO] [stdout] test access::tests::an_unset_workspace_is_the_current_directory_not_the_filesystem ... ok
[INFO] [stdout] test access::tests::an_approval_authorizes_one_request_and_not_the_next ... ok
[INFO] [stdout] test access::tests::an_invalid_pattern_is_skipped_not_raised ... ok
[INFO] [stdout] test access::tests::every_url_on_the_line_is_checked_not_only_the_first ... ok
[INFO] [stdout] test access::tests::allow_dirs_widens_a_live_manager_and_the_policy_behind_it ... ok
[INFO] [stdout] test access::tests::each_command_mechanism_admits_on_its_own ... ok
[INFO] [stdout] test access::tests::the_console_prompt_takes_yes_an_empty_line_and_nothing_else ... ok
[INFO] [stdout] test access::tests::an_allowed_dir_covers_itself_and_everything_under_it ... ok
[INFO] [stdout] test access::tests::the_host_is_read_past_userinfo_a_port_and_a_path ... ok
[INFO] [stdout] test access::tests::the_prompt_is_told_what_it_is_approving ... ok
[INFO] [stdout] test access::tests::an_allowlist_reaches_outside_the_workspace ... ok
[INFO] [stdout] test access::tests::an_agent_workspace_narrows_the_sessions_and_cannot_widen_it ... ok
[INFO] [stdout] test access::tests::traversal_out_of_an_allowed_dir_is_denied ... ok
[INFO] [stdout] test access::tests::no_prompt_at_all_still_denies_and_names_the_way_back_in ... ok
[INFO] [stdout] test access::tests::the_console_prompt_names_the_agent_and_denies_without_a_terminal ... ok
[INFO] [stdout] test access::tests::the_sessions_own_files_are_confined_by_the_same_check ... ok
[INFO] [stdout] test access::tests::traversal_and_symlinks_cannot_step_out_of_the_root ... ok
[INFO] [stdout] test agent::tests::a_missing_persona_file_fails_and_names_what_it_tried ... ok
[INFO] [stdout] test agent::tests::a_model_named_nowhere_is_an_error_that_says_both_places_to_set_it ... ok
[INFO] [stdout] test agent::tests::an_agent_with_its_own_provider_must_bring_its_own_model ... ok
[INFO] [stdout] test agent::tests::an_undecorated_agent_gets_the_prompt_it_was_given ... ok
[INFO] [stdout] test access::tests::an_empty_command_is_denied_before_any_allowlist ... ok
[INFO] [stdout] test agent::tests::a_plain_prose_persona_is_untouched ... ok
[INFO] [stdout] test agent::tests::a_session_that_pins_nothing_leaves_the_agent_pinning_nothing ... ok
[INFO] [stdout] test agent::tests::an_unset_option_takes_the_sessions_and_a_set_one_keeps_its_own ... ok
[INFO] [stdout] test agent::tests::a_persona_file_is_loaded_and_formatted ... ok
[INFO] [stdout] test agent::tests::a_named_role_is_kept_verbatim_until_the_session_reads_it ... ok
[INFO] [stdout] test agent::tests::every_decoration_is_appended_to_the_base ... ok
[INFO] [stdout] test agent::tests::placeholders_carry_the_agents_own_identity ... ok
[INFO] [stdout] test agent::tests::the_two_positions_are_exclusive_and_participant_is_the_default ... ok
[INFO] [stdout] test agent::tests::the_system_prompt_leads_and_history_follows_in_order ... ok
[INFO] [stdout] test agent::tests::show_reasoning_says_yes_no_or_nothing_at_all ... ok
[INFO] [stdout] test agent_runtime::tests::a_failed_opening_call_returns_a_placeholder ... ok
[INFO] [stdout] test agent_runtime::tests::a_fenced_call_still_works_under_a_native_dialect ... ok
[INFO] [stdout] test agent_runtime::tests::a_failed_followup_returns_a_placeholder ... ok
[INFO] [stdout] test agent_runtime::tests::a_model_stuck_on_invalid_json_does_not_loop_forever ... ok
[INFO] [stdout] test agent_runtime::tests::a_recovering_model_is_not_penalised_for_an_earlier_bad_block ... ok
[INFO] [stdout] test agent_runtime::tests::a_model_repeating_one_failing_call_does_not_loop_forever ... ok
[INFO] [stdout] test agent_runtime::tests::a_reply_without_tool_calls_is_returned_as_is ... ok
[INFO] [stdout] test agent_runtime::tests::a_native_call_round_trips_through_the_response_not_the_text ... ok
[INFO] [stdout] test agent_runtime::tests::a_failing_call_the_model_varies_is_left_alone ... ok
[INFO] [stdout] test agent_runtime::tests::schemas_are_sent_natively_and_never_under_text ... ok
[INFO] [stdout] test agent_runtime::tests::recording_captures_the_whole_exchange_when_asked ... ok
[INFO] [stdout] test agent_runtime::tests::an_error_result_is_fed_back_rather_than_re_prompted ... ok
[INFO] [stdout] test agent_runtime::tests::anthropic_results_ride_in_a_user_message ... ok
[INFO] [stdout] test agent_runtime::tests::a_tool_that_keeps_succeeding_is_never_cut_off ... ok
[INFO] [stdout] test agent_runtime::tests::the_instruction_is_appended_after_the_history ... ok
[INFO] [stdout] test assets::tests::a_directory_that_is_not_there_lists_as_empty ... ok
[INFO] [stdout] test agent_runtime::tests::the_agents_own_effort_rides_along_on_every_call_of_the_turn ... ok
[INFO] [stdout] test assets::tests::the_repository_copy_is_found_without_any_wiring ... ok
[INFO] [stdout] test agent_runtime::tests::the_loop_runs_more_than_one_round ... ok
[INFO] [stdout] test assets::tests::stems_are_listed_from_disk_and_sorted ... ok
[INFO] [stdout] test channel::tests::console_lines_are_composed_here_and_delivered_through_the_writer ... ok
[INFO] [stdout] test channel::tests::timestamps_render_the_way_python_renders_them ... ok
[INFO] [stdout] test channel::tests::the_file_channel_appends_a_line_per_message ... ok
[INFO] [stdout] test agent_runtime::tests::the_tool_iteration_bound_stops_the_loop ... ok
[INFO] [stdout] test channel::tests::the_log_channel_writes_one_typed_event_per_line ... ok
[INFO] [stdout] test agent_runtime::tests::tool_output_is_fed_back_and_the_final_text_returned ... ok
[INFO] [stdout] test compaction::tests::a_single_oversized_turn_is_left_alone ... ok
[INFO] [stdout] test compaction::tests::a_conversation_that_fits_is_left_alone ... ok
[INFO] [stdout] test channel::tests::a_failing_channel_does_not_starve_the_others ... ok
[INFO] [stdout] test compaction::tests::an_empty_summary_leaves_the_conversation_intact ... ok
[INFO] [stdout] test compaction::tests::estimates_count_the_rendered_form ... ok
[INFO] [stdout] test compaction::tests::the_summary_request_carries_the_prompt_and_the_dropped_prose ... ok
[INFO] [stdout] test conversation::tests::an_agent_turn_regains_its_speaker_prefix ... ok
[INFO] [stdout] test conversation::tests::a_directive_is_rendered_unchanged ... ok
[INFO] [stdout] test compaction::tests::the_topic_and_the_latest_turn_always_survive ... ok
[INFO] [stdout] test conversation::tests::replacing_turns_leaves_the_transcript_whole ... ok
[INFO] [stdout] test conversation::tests::directives_never_reach_the_transcript_and_notes_never_reach_the_model ... ok
[INFO] [stdout] test error::tests::a_refusal_about_length_is_told_apart_from_every_other_refusal ... ok
[INFO] [stdout] test context::tests::a_closure_is_a_context_source ... ok
[INFO] [stdout] test agent_runtime::tests::concurrent_fallback_preserves_an_in_flight_native_tool_response ... ok
[INFO] [stdout] test error::tests::an_overflow_is_still_a_provider_error ... ok
[INFO] [stdout] test channel::tests::leap_days_and_century_boundaries_land_on_the_right_date ... ok
[INFO] [stdout] test exec::tests::a_command_that_splits_to_no_program_is_refused_rather_than_panicking ... ok
[INFO] [stdout] test exec::tests::listing_a_file_says_so_rather_than_returning_nothing ... ok
[INFO] [stdout] test exec::tests::reads_and_listings_go_through_the_policy ... ok
[INFO] [stdout] test exec::tests::the_policy_is_consulted_before_anything_is_spawned ... ok
[INFO] [stdout] test exec::tests::a_failing_command_reports_its_code_and_stderr ... ok
[INFO] [stdout] test exec::tests::unbalanced_quoting_is_refused_before_the_policy_check ... ok
[INFO] [stdout] test gameplan::tests::a_file_with_no_frontmatter_loads_on_harness_defaults ... ok
[INFO] [stdout] test gameplan::tests::a_missing_gameplan_is_named_in_the_error ... ok
[INFO] [stdout] test exec::tests::an_allowed_command_returns_its_stdout ... ok
[INFO] [stdout] test gameplan::tests::a_custom_gameplan_loads_from_an_absolute_path ... ok
[INFO] [stdout] test gameplan::tests::an_undeclared_name_falls_back_to_the_filename ... ok
[INFO] [stdout] test gameplan::tests::debates_bounds_terminators_and_result_shape_are_read ... ok
[INFO] [stdout] test gameplan::tests::discussion_has_no_consensus_terminator ... ok
[INFO] [stdout] test exec::tests::cwd_is_where_the_command_runs ... ok
[INFO] [stdout] test gameplan::tests::invalid_yaml_reports_the_file ... ok
[INFO] [stdout] test harness::tests::a_bare_spec_is_usable ... ok
[INFO] [stdout] test harness::tests::a_malformed_phase_list_is_rejected ... ok
[INFO] [stdout] test harness::tests::a_name_is_optional_but_must_be_a_slug_when_given ... ok
[INFO] [stdout] test harness::tests::a_passing_session_returns_what_it_may_use ... ok
[INFO] [stdout] test harness::tests::a_reserved_tool_name_is_rejected_at_load ... ok
[INFO] [stdout] test harness::tests::a_result_field_takes_the_shorthand_or_the_long_form ... ok
[INFO] [stdout] test harness::tests::a_scalar_of_the_wrong_type_is_rejected_not_coerced ... ok
[INFO] [stdout] test harness::tests::a_single_terminator_is_wrapped_and_none_at_all_is_refused ... ok
[INFO] [stdout] test exec::tests::there_is_no_shell_so_metacharacters_are_arguments ... ok
[INFO] [stdout] test harness::tests::a_name_clash_with_the_orchestrator_is_a_problem_too ... ok
[INFO] [stdout] test harness::tests::an_unknown_tool_is_an_error_not_a_silent_drop ... ok
[INFO] [stdout] test harness::tests::loop_defaults_include_the_judges_rethink ... ok
[INFO] [stdout] test harness::tests::every_problem_with_the_roster_is_reported_at_once ... ok
[INFO] [stdout] test harness::tests::participant_bounds_default_open_and_parse_when_given ... ok
[INFO] [stdout] test harness::tests::phase_fields_default_to_one_round_and_no_rethink ... ok
[INFO] [stdout] test harness::tests::the_consensus_keyword_is_recognised_only_when_declared ... ok
[INFO] [stdout] test harness::tests::the_context_key_narrows_what_was_registered ... ok
[INFO] [stdout] test harness::tests::the_orchestrator_key_takes_two_shapes_and_refuses_a_third ... ok
[INFO] [stdout] test harness::tests::the_roster_must_fit_the_declared_bounds ... ok
[INFO] [stdout] test harness::tests::the_skills_key_unions_with_the_session_and_dedupes ... ok
[INFO] [stdout] test gameplan::tests::the_body_is_the_prose_and_raw_text_is_the_whole_file ... ok
[INFO] [stdout] test harness::tests::an_unknown_context_source_is_an_error_and_says_how_to_register_one ... ok
[INFO] [stdout] test harness::tests::the_tools_key_narrows_what_was_registered ... ok
[INFO] [stdout] test jsonschema::tests::a_boolean_is_not_a_number ... ok
[INFO] [stdout] test jsonschema::tests::a_non_object_schema_is_refused ... ok
[INFO] [stdout] test jsonschema::tests::a_ref_with_siblings_is_inlined_and_the_siblings_win ... ok
[INFO] [stdout] test jsonschema::tests::a_single_element_all_of_is_inlined ... ok
[INFO] [stdout] test harness::tests::unsatisfiable_bounds_are_rejected ... ok
[INFO] [stdout] test jsonschema::tests::enum_failures_quote_the_choices_the_way_python_would ... ok
[INFO] [stdout] test jsonschema::tests::a_closed_empty_object_rejects_every_argument ... ok
[INFO] [stdout] test jsonschema::tests::required_and_type_failures_read_as_instructions ... ok
[INFO] [stdout] test jsonschema::tests::strict_closes_objects_and_requires_every_property ... ok
[INFO] [stdout] test gameplan::tests::every_gameplan_has_think_and_rethink ... ok
[INFO] [stdout] test memory::tests::a_blank_entry_writes_nothing ... ok
[INFO] [stdout] test memory::tests::a_failed_consolidation_keeps_the_notes_as_they_were_written ... ok
[INFO] [stdout] test memory::tests::a_curated_scope_survives_the_store_that_wrote_it ... ok
[INFO] [stdout] test memory::tests::a_file_written_now_is_zero_days_old_and_an_absent_one_has_no_age ... ok
[INFO] [stdout] test memory::tests::a_hand_edited_file_loads_as_the_entries_it_visibly_holds ... ok
[INFO] [stdout] test memory::tests::a_fragment_matching_none_or_several_changes_nothing_and_names_which ... ok
[INFO] [stdout] test memory::tests::a_curated_scope_is_a_key_and_never_a_path_out_of_the_root ... ok
[INFO] [stdout] test http::tests::response_errors_are_distinct_from_network_failures ... ok
[INFO] [stdout] test memory::tests::a_revision_past_the_ceiling_is_refused_and_the_entry_survives ... ok
[INFO] [stdout] test memory::tests::a_reload_sees_what_was_written ... ok
[INFO] [stdout] test gameplan::tests::every_discovered_gameplan_loads_under_its_own_name ... ok
[INFO] [stdout] test memory::tests::a_scope_is_a_key_and_never_a_path_out_of_the_root ... ok
[INFO] [stdout] test memory::tests::a_curated_scope_is_dated_by_its_file_and_undated_before_there_is_one ... ok
[INFO] [stdout] test memory::tests::a_store_with_no_ceiling_refuses_to_revise_and_says_so ... ok
[INFO] [stdout] test memory::tests::a_store_writing_no_file_answers_the_defaults_and_leaves_no_trace ... ok
[INFO] [stdout] test memory::tests::a_scope_is_dated_by_its_file_and_undated_before_there_is_one ... ok
[INFO] [stdout] test memory::tests::an_append_past_the_ceiling_is_refused_and_says_what_is_stored ... ok
[INFO] [stdout] test memory::tests::a_scope_never_opened_still_reads_what_is_on_disk ... ok
[INFO] [stdout] test exec::tests::output_larger_than_a_pipe_buffer_still_completes ... ok
[INFO] [stdout] test memory::tests::a_scope_survives_the_store_that_wrote_it ... ok
[INFO] [stdout] test memory::tests::entries_read_back_verbatim_until_something_consolidates_them ... ok
[INFO] [stdout] test memory::tests::entries_read_back_behind_a_line_saying_how_full_the_scope_is ... ok
[INFO] [stdout] test memory::tests::entries_are_separated_by_a_blank_line_and_nothing_else_is_added ... ok
[INFO] [stdout] test memory::tests::revising_replaces_the_whole_entry_a_fragment_addresses ... ok
[INFO] [stdout] test memory::tests::loading_an_absent_file_reads_empty_and_creates_nothing ... ok
[INFO] [stdout] test memory::tests::a_note_already_stored_word_for_word_is_accepted_and_not_stored_twice ... ok
[INFO] [stdout] test memory::tests::the_default_store_keeps_one_file_per_scope ... ok
[INFO] [stdout] test memory::tests::writing_creates_the_parent_directory ... ok
[INFO] [stdout] test memory::tests::the_default_store_reports_its_path_and_the_age_of_the_file ... ok
[INFO] [stdout] test memory::tests::a_second_consolidation_is_given_the_first_one_to_build_on ... ok
[INFO] [stdout] test orchestrator::tests::a_harness_that_declares_no_keyword_ignores_the_word ... ok
[INFO] [stdout] test orchestrator::tests::a_recovering_retry_continues_the_session ... ok
[INFO] [stdout] test orchestrator::tests::a_phase_less_run_briefs_nobody ... ok
[INFO] [stdout] test orchestrator::tests::a_headless_loop_takes_no_turns ... ok
[INFO] [stdout] test orchestrator::tests::a_saved_index_past_the_end_of_an_edited_gameplan_is_clamped ... ok
[INFO] [stdout] test orchestrator::tests::a_rethink_phase_says_so_in_the_turn_itself ... ok
[INFO] [stdout] test memory::tests::revising_to_nothing_removes_the_entry ... ok
[INFO] [stdout] test orchestrator::tests::a_phase_less_harness_is_briefed_nothing_and_reports_no_phase ... ok
[INFO] [stdout] test orchestrator::tests::advancing_past_the_last_phase_ends_the_run ... ok
[INFO] [stdout] test memory::tests::closing_folds_everything_past_the_kept_entries_into_one_summary ... ok
[INFO] [stdout] test orchestrator::tests::a_terminator_still_exits_early ... ok
[INFO] [stdout] test orchestrator::tests::declared_fields_are_named_in_the_prompt_and_nothing_else_is ... ok
[INFO] [stdout] test orchestrator::tests::a_resumed_run_carries_its_predecessors_turn_count_and_phase ... ok
[INFO] [stdout] test orchestrator::tests::an_at_mention_routes_only_to_a_participant_the_loop_knows ... ok
[INFO] [stdout] test orchestrator::tests::interrupted_and_host_batches_keep_only_completed_durable_replies ... ok
[INFO] [stdout] test orchestrator::tests::hitting_max_turns_during_retries_is_not_a_forced_end ... ok
[INFO] [stdout] test orchestrator::tests::every_declared_type_and_alias_is_coerced ... ok
[INFO] [stdout] test orchestrator::tests::every_orchestrator_turn_carries_the_briefing_as_it_stands ... ok
[INFO] [stdout] test orchestrator::tests::max_rounds_bounds_a_phase_less_harness ... ok
[INFO] [stdout] test orchestrator::tests::explicit_batches_preserve_instructions_and_order_across_checkpoints ... ok
[INFO] [stdout] test orchestrator::tests::max_rounds_caps_a_single_phase ... ok
[INFO] [stdout] test orchestrator::tests::it_runs_the_declared_number_of_rounds_and_stops ... ok
[INFO] [stdout] test orchestrator::tests::only_the_consensus_keyword_sets_the_consensus_flag ... ok
[INFO] [stdout] test orchestrator::tests::result_fields_are_asked_for_again_and_taken_from_the_second_pass ... ok
[INFO] [stdout] test orchestrator::tests::retries_answer_to_max_turns_too ... ok
[INFO] [stdout] test orchestrator::tests::it_takes_the_last_straggler_and_not_a_repeat_to_close_one ... ok
[INFO] [stdout] test orchestrator::tests::max_turns_still_outranks_max_rounds ... ok
[INFO] [stdout] test orchestrator::tests::retries_exhaust_into_a_forced_end_and_zero_means_none ... ok
[INFO] [stdout] test orchestrator::tests::max_rounds_is_not_a_total_across_phases ... ok
[INFO] [stdout] test orchestrator::tests::max_turns_stops_a_loop_that_never_ends ... ok
[INFO] [stdout] test orchestrator::tests::phases_arrive_in_declared_order ... ok
[INFO] [stdout] test orchestrator::tests::the_briefing_names_who_still_owes_a_turn_and_is_reissued ... ok
[INFO] [stdout] test orchestrator::tests::the_declared_fields_alone_decide_what_comes_back ... ok
[INFO] [stdout] test orchestrator::tests::the_draft_is_revised_and_only_the_revision_is_kept ... ok
[INFO] [stdout] test orchestrator::tests::the_hint_quotes_the_declared_keywords ... ok
[INFO] [stdout] test orchestrator::tests::the_declared_keyword_ends_it_and_an_undeclared_one_does_not ... ok
[INFO] [stdout] test orchestrator::tests::the_keyword_advances_the_phase_whether_or_not_it_routes ... ok
[INFO] [stdout] test orchestrator::tests::the_loop_uses_the_declared_shape ... ok
[INFO] [stdout] test orchestrator::tests::invalid_batches_retry_without_executing_embedded_text_controls ... ok
[INFO] [stdout] test orchestrator::tests::the_json_block_is_stripped_from_the_summary ... ok
[INFO] [stdout] test orchestrator::tests::the_retry_budget_comes_from_the_harness ... ok
[INFO] [stdout] test orchestrator::tests::the_loop_records_the_stripped_text ... ok
[INFO] [stdout] test orchestrator::tests::the_verdict_rethink_is_on_by_default_and_a_harness_can_turn_it_off ... ok
[INFO] [stdout] test orchestrator::tests::the_last_phase_running_out_stops_the_loop_and_still_closes ... ok
[INFO] [stdout] test orchestrator::tests::the_object_is_read_fenced_or_bare ... ok
[INFO] [stdout] test persona::tests::a_bare_name_resolves_to_the_built_ins ... ok
[INFO] [stdout] test persona::tests::a_search_directory_is_tried_before_the_built_ins ... ok
[INFO] [stdout] test persona::tests::every_section_is_parsed_and_the_title_wins_over_the_stem ... ok
[INFO] [stdout] test orchestrator::tests::the_re_ask_names_the_participant_still_owed_a_turn ... ok
[INFO] [stdout] test orchestrator::tests::the_rethink_prompt_carries_the_draft_and_asks_for_exactly_what_is_declared ... ok
[INFO] [stdout] test orchestrator::tests::the_phase_rides_every_routed_turn_without_displacing_the_ask ... ok
[INFO] [stdout] test prompting::tests::a_participants_persona_and_language_survive ... ok
[INFO] [stdout] test prompting::tests::a_stale_file_carries_a_caveat_and_a_fresh_one_does_not ... ok
[INFO] [stdout] test prompting::tests::a_participants_memory_rides_with_its_skills_before_the_tools ... ok
[INFO] [stdout] test prompting::tests::a_native_dialect_drops_the_prose_tools_block ... ok
[INFO] [stdout] test prompting::tests::context_precedes_the_skills_it_is_background_for ... ok
[INFO] [stdout] test prompting::tests::an_agents_own_system_prompt_overrides_the_default ... ok
[INFO] [stdout] test prompting::tests::context_with_nothing_in_it_renders_nothing ... ok
[INFO] [stdout] test prompting::tests::memory_is_quoted_as_participant_notes_and_not_as_instruction ... ok
[INFO] [stdout] test prompting::tests::memory_with_nothing_in_it_renders_nothing ... ok
[INFO] [stdout] test prompting::tests::messages_for_routes_by_position ... ok
[INFO] [stdout] test prompting::tests::no_resolver_means_text ... ok
[INFO] [stdout] test persona::tests::the_built_ins_are_enumerated_from_disk ... ok
[INFO] [stdout] test prompting::tests::every_context_block_arrives_under_its_own_name ... ok
[INFO] [stdout] test prompting::tests::history_follows_the_system_message_and_is_not_mutated ... ok
[INFO] [stdout] test persona::tests::the_not_found_error_names_every_directory_tried ... ok
[INFO] [stdout] test prompting::tests::no_skills_no_tools_and_no_memory_is_just_the_base ... ok
[INFO] [stdout] test persona::tests::a_file_with_no_title_is_named_for_itself ... ok
[INFO] [stdout] test persona::tests::only_the_sections_that_are_set_reach_the_prompt ... ok
[INFO] [stdout] test prompting::tests::only_a_writable_session_invites_notes ... ok
[INFO] [stdout] test prompting::tests::the_dialect_is_resolved_per_agent ... ok
[INFO] [stdout] test provider::tests::a_400_naming_tools_latches_down_to_text_for_good ... ok
[INFO] [stdout] test provider::tests::a_chat_that_cannot_carry_tools_falls_back_to_text ... ok
[INFO] [stdout] test prompting::tests::show_reasoning_reaches_the_participant_prompt ... ok
[INFO] [stdout] test prompting::tests::the_freshness_caveat_rides_with_the_memory_age_source ... ok
[INFO] [stdout] test prompting::tests::the_orchestrator_order_is_base_skills_tools_memory ... ok
[INFO] [stdout] test provider::tests::a_400_naming_the_effort_parameter_latches_it_off_for_good ... ok
[INFO] [stdout] test provider::tests::a_declared_dialect_wins_when_chat_can_carry_tools ... ok
[INFO] [stdout] test prompting::tests::the_tools_block_reflects_the_currently_permitted_set ... ok
[INFO] [stdout] test provider::tests::a_custom_endpoint_is_a_bearer_token_and_a_joined_url ... ok
[INFO] [stdout] test provider::tests::a_plain_openai_turn_is_untouched ... ok
[INFO] [stdout] test provider::tests::a_rejected_endpoint_retries_once_without_tools ... ok
[INFO] [stdout] test provider::tests::a_reply_that_is_not_json_is_reported_with_the_response_shape ... ok
[INFO] [stdout] test provider::tests::a_tool_call_with_null_content_is_a_turn ... ok
[INFO] [stdout] test provider::tests::a_valid_reply_is_parsed_and_the_text_is_kept_beside_it ... ok
[INFO] [stdout] test provider::tests::a_second_refusal_is_reported_rather_than_retried ... ok
[INFO] [stdout] test provider::tests::a_failure_that_is_not_about_the_effort_parameter_does_not_latch ... ok
[INFO] [stdout] test provider::tests::a_failure_that_is_not_about_tools_does_not_latch ... ok
[INFO] [stdout] test provider::tests::an_extra_body_outranks_the_effort_key_it_shares_a_name_with ... ok
[INFO] [stdout] test provider::tests::an_oauth_credential_replaces_the_api_key_header ... ok
[INFO] [stdout] test provider::tests::an_unnamed_schema_is_still_named ... ok
[INFO] [stdout] test provider::tests::a_model_with_no_reasoning_mode_retries_once_without_the_level ... ok
[INFO] [stdout] test provider::tests::an_explicit_max_tokens_outranks_the_model_config ... ok
[INFO] [stdout] test provider::tests::claude_takes_the_system_prompt_as_its_own_field ... ok
[INFO] [stdout] test provider::tests::claude_reads_every_block_in_the_content_list ... ok
[INFO] [stdout] test provider::tests::each_dialect_sends_its_own_schema_shape ... ok
[INFO] [stdout] test provider::tests::each_backend_spells_the_effort_level_its_own_way ... ok
[INFO] [stdout] test provider::tests::only_content_is_required ... ok
[INFO] [stdout] test provider::tests::every_provider_refuses_a_body_it_cannot_read ... ok
[INFO] [stdout] test provider::tests::every_system_message_is_lifted_out_and_none_is_lost ... ok
[INFO] [stdout] test provider::tests::it_is_the_tool_call_and_not_the_text_that_makes_a_turn_real ... ok
[INFO] [stdout] test provider::tests::no_tools_key_when_there_is_nothing_to_send ... ok
[INFO] [stdout] test provider::tests::structured_output_builds_a_response_format ... ok
[INFO] [stdout] test pyfmt::tests::dumps_escapes_non_ascii ... ok
[INFO] [stdout] test provider::tests::structured_output_is_skipped_on_a_tool_calling_turn ... ok
[INFO] [stdout] test provider::tests::openrouter_sends_its_attribution_and_reports_the_model_that_answered ... ok
[INFO] [stdout] test pyfmt::tests::dumps_uses_python_separators ... ok
[INFO] [stdout] test pyfmt::tests::repr_matches_python ... ok
[INFO] [stdout] test pyfmt::tests::str_unwraps_only_strings ... ok
[INFO] [stdout] test pyfmt::tests::truthiness_follows_python ... ok
[INFO] [stdout] test role::tests::a_file_with_no_frontmatter_is_a_participant_named_for_itself ... ok
[INFO] [stdout] test provider::tests::strict_mode_is_what_rewrites_the_schema ... ok
[INFO] [stdout] test role::tests::a_bare_name_finds_a_file_and_prose_does_not ... ok
[INFO] [stdout] test role::tests::a_missing_path_is_an_error_rather_than_prose ... ok
[INFO] [stdout] test provider::tests::extra_headers_and_body_are_merged_not_replaced ... ok
[INFO] [stdout] test role::tests::a_position_that_is_nearly_right_is_still_rejected ... ok
[INFO] [stdout] test role::tests::a_search_directory_is_tried_before_the_built_ins ... ok
[INFO] [stdout] test role::tests::a_position_round_trips_through_its_written_name ... ok
[INFO] [stdout] test provider::tests::the_budget_is_spent_only_on_failure_and_then_reported ... ok
[INFO] [stdout] test role::tests::the_built_ins_are_enumerated_from_disk ... ok
[INFO] [stdout] test role::tests::frontmatter_and_body_are_both_read ... ok
[INFO] [stdout] test role::tests::both_built_ins_load_by_bare_name ... ok
[INFO] [stdout] test provider::tests::explicit_refusals_and_filters_are_errors_even_beside_content_or_tools ... ok
[INFO] [stdout] test role::tests::an_unknown_position_names_the_file_it_came_from ... ok
[INFO] [stdout] test session::tests::a_missing_persona_stops_the_run_before_it_costs_anything ... ok
[INFO] [stdout] test session::tests::a_gameplan_naming_an_unregistered_tool_fails_the_session ... ok
[INFO] [stdout] test session::tests::a_filter_rewrites_or_drops_what_an_agent_writes ... ok
[INFO] [stdout] test session::tests::a_provider_that_names_no_window_leaves_the_session_figure_alone ... ok
[INFO] [stdout] test session::tests::a_prompt_over_the_limit_before_any_turns_fails_loudly ... ok
[INFO] [stdout] test session::tests::a_second_orchestrator_is_refused_by_name ... ok
[INFO] [stdout] test session::tests::a_request_the_provider_calls_too_long_is_compacted_and_sent_again ... ok
[INFO] [stdout] test session::tests::a_named_actor_puts_both_verdicts_on_the_channel ... ok
[INFO] [stdout] test session::tests::a_second_refusal_reaches_the_caller ... ok
[INFO] [stdout] test session::tests::a_phase_less_gameplan_keeps_the_orchestrator_in_charge_of_the_flow ... ok
[INFO] [stdout] test session::tests::add_tool_refuses_a_name_it_could_not_honour ... ok
[INFO] [stdout] test session::tests::a_generous_limit_leaves_the_conversation_alone ... ok
[INFO] [stdout] test session::tests::a_store_that_names_no_file_is_checked_against_no_workspace ... ok
[INFO] [stdout] test session::tests::an_explicit_orchestrator_prompt_replaces_the_gameplan_one ... ok
[INFO] [stdout] test session::tests::a_store_that_cannot_open_stops_the_run_before_the_first_turn ... ok
[INFO] [stdout] test session::tests::a_marker_is_always_stripped_and_only_sometimes_saved ... ok
[INFO] [stdout] test session::tests::each_missing_piece_of_a_run_is_named_by_the_error ... ok
[INFO] [stdout] test session::tests::edit_memory_is_offered_only_where_the_store_sets_a_ceiling ... ok
[INFO] [stdout] test session::tests::edit_memory_revises_through_the_filter_and_removes_without_it ... ok
[INFO] [stdout] test session::tests::read_memory_returns_the_file_or_says_there_is_none ... ok
[INFO] [stdout] test session::tests::max_turns_stops_the_session ... ok
[INFO] [stdout] test session::tests::no_session_file_writes_nothing ... ok
[INFO] [stdout] test exec::tests::a_command_that_overruns_its_deadline_is_killed ... ok
[INFO] [stdout] test session::tests::either_half_alone_is_fine ... ok
[INFO] [stdout] test session::tests::an_installed_store_is_opened_read_written_and_closed ... ok
[INFO] [stdout] test session::tests::the_filter_runs_before_an_installed_store_sees_a_note ... ok
[INFO] [stdout] test session::tests::the_orchestrator_prompt_is_built_from_the_gameplan ... ok
[INFO] [stdout] test session::tests::the_smaller_of_the_session_and_the_provider_window_is_the_ceiling ... ok
[INFO] [stdout] test session::tests::the_exec_setter_replaces_the_command_patterns ... ok
[INFO] [stdout] test session::tests::the_counters_carry_what_their_names_say ... ok
[INFO] [stdout] test session::tests::the_roster_names_the_character_never_the_path ... ok
[INFO] [stdout] test session::tests::the_tools_key_decides_what_the_prompt_advertises ... ok
[INFO] [stdout] test session::tests::tool_history_is_refused_against_a_native_provider ... ok
[INFO] [stdout] test sessionfile::tests::a_mismatch_is_refused_named_and_recoverable ... ok
[INFO] [stdout] test sessionfile::tests::a_missing_file_is_not_an_error_and_is_not_created ... ok
[INFO] [stdout] test session::tests::zero_is_a_max_rounds_the_caller_can_set_and_omitting_it_is_not ... ok
[INFO] [stdout] test sessionfile::tests::an_unknown_schema_version_is_refused_naming_both ... ok
[INFO] [stdout] test session::tests::the_closing_keyword_decides_how_the_session_ends ... ok
[INFO] [stdout] test session::tests::write_memory_is_offered_only_to_a_writing_session ... ok
[INFO] [stdout] test session::tests::unparseable_output_is_retried_and_then_forced_to_an_end ... ok
[INFO] [stdout] test sessionfile::tests::the_same_run_passes_however_it_was_registered ... ok
[INFO] [stdout] test sessionfile::tests::every_kind_of_record_survives ... ok
[INFO] [stdout] test skill::loader::tests::a_builtin_loads_by_bare_name_or_by_file ... ok
[INFO] [stdout] test sessionfile::tests::it_writes_readable_json ... ok
[INFO] [stdout] test skill::loader::tests::a_comma_separated_string_is_split ... ok
[INFO] [stdout] test sessionfile::tests::a_save_lands_at_the_path_it_was_given_and_leaves_nothing_else ... ok
[INFO] [stdout] test skill::loader::tests::a_custom_skill_loads_from_a_path ... ok
[INFO] [stdout] test skill::loader::tests::a_missing_skill_is_a_file_not_found_either_way ... ok
[INFO] [stdout] test skill::loader::tests::a_name_must_be_a_slug_and_must_match_its_directory ... ok
[INFO] [stdout] test skill::loader::tests::a_pathless_skill_has_no_bundles ... ok
[INFO] [stdout] test skill::loader::tests::inline_and_block_lists_both_parse ... ok
[INFO] [stdout] test skill::loader::tests::a_non_list_and_malformed_yaml_are_both_reported ... ok
[INFO] [stdout] test skill::loader::tests::absent_narrows_nothing_and_an_empty_list_narrows_to_nothing ... ok
[INFO] [stdout] test sessionfile::tests::unparseable_json_names_the_file ... ok
[INFO] [stdout] test skill::loader::tests::both_name_and_description_are_required ... ok
[INFO] [stdout] test session::tests::tool_exchanges_are_private_unless_the_switch_reverses_it ... ok
[INFO] [stdout] test skill::runtime::tests::a_required_tool_comes_back_past_both_narrowings ... ok
[INFO] [stdout] test skill::loader::tests::the_builtins_are_enumerated_from_disk_and_sorted ... ok
[INFO] [stdout] test skill::runtime::tests::an_explicit_empty_list_permits_nothing ... ok
[INFO] [stdout] test skill::runtime::tests::an_unavailable_skill_names_what_is_available ... ok
[INFO] [stdout] test skill::loader::tests::only_builtin_skills_are_marked_builtin ... ok
[INFO] [stdout] test skill::runtime::tests::apply_gate_is_restrictive_only ... ok
[INFO] [stdout] test skill::runtime::tests::no_manifest_when_there_is_no_bundle ... ok
[INFO] [stdout] test skill::runtime::tests::an_untrusted_bundle_is_listed_but_not_granted ... ok
[INFO] [stdout] test skill::runtime::tests::no_skills_renders_nothing ... ok
[INFO] [stdout] test skill::runtime::tests::no_tool_when_the_agent_has_no_skills ... ok
[INFO] [stdout] test skill::runtime::tests::only_a_skill_declaring_allowed_tools_narrows ... ok
[INFO] [stdout] test skill::runtime::tests::the_body_is_served_once_per_turn ... ok
[INFO] [stdout] test skill::runtime::tests::the_enum_is_this_agents_skills_and_the_handler_loads_them ... ok
[INFO] [stdout] test skill::loader::tests::requires_tools_reads_the_same_shapes_and_defaults_to_none_required ... ok
[INFO] [stdout] test skill::runtime::tests::the_index_names_the_bodies_without_carrying_them ... ok
[INFO] [stdout] test skill::runtime::tests::the_registry_resolves_per_agent ... ok
[INFO] [stdout] test skill::runtime::tests::the_skill_tool_is_never_gated_out ... ok
[INFO] [stdout] test skill::runtime::tests::two_skills_union_rather_than_intersect ... ok
[INFO] [stdout] test tooling::tests::a_bare_object_counts_only_with_the_exact_key ... ok
[INFO] [stdout] test tooling::tests::a_mislabeled_json_fence_counts_only_when_it_mentions_tool_calls ... ok
[INFO] [stdout] test tooling::tests::a_tool_calls_fence_is_parsed ... ok
[INFO] [stdout] test tooling::tests::malformed_batches_come_back_as_readable_errors ... ok
[INFO] [stdout] test tooling::tests::an_empty_toolkit_produces_no_prompt_block ... ok
[INFO] [stdout] test tooling::tests::unparseable_arguments_are_preserved_under_raw ... ok
[INFO] [stdout] test skill::loader::tests::only_existing_bundle_dirs_are_reported ... ok
[INFO] [stdout] test toolkit::tests::absent_is_everything_empty_is_nothing_and_order_is_registration ... ok
[INFO] [stdout] test toolkit::tests::a_successful_call_returns_the_handler_text ... ok
[INFO] [stdout] test toolkit::tests::arguments_are_checked_against_the_schema ... ok
[INFO] [stdout] test toolkit::tests::the_actor_reaches_only_handlers_that_asked_for_it ... ok
[INFO] [stdout] test toolschema::tests::a_content_free_tool_turn_sends_null_rather_than_an_empty_string ... ok
[INFO] [stdout] test toolschema::tests::a_request_with_no_tools_to_send_carries_no_tools_key ... ok
[INFO] [stdout] test toolkit::tests::every_failure_is_a_result_the_model_can_read ... ok
[INFO] [stdout] test toolschema::tests::anthropic_arguments_arrive_as_an_object_and_other_blocks_are_ignored ... ok
[INFO] [stdout] test toolschema::tests::each_dialect_puts_the_schema_where_its_api_expects_it ... ok
[INFO] [stdout] test toolschema::tests::malformed_openai_arguments_are_preserved_rather_than_dropped ... ok
[INFO] [stdout] test toolschema::tests::only_the_dialects_without_an_error_flag_mark_failures_inline ... ok
[INFO] [stdout] test toolschema::tests::openai_arguments_arrive_as_a_json_string ... ok
[INFO] [stdout] test skill::runtime::tests::a_builtin_bundle_is_listed_and_granted ... ok
[INFO] [stdout] test toolschema::tests::the_assistant_turn_is_replayed_in_each_apis_own_shape ... ok
[INFO] [stdout] test usage::tests::collector_attributes_compaction_closing_and_opaque_overrides ... ok
[INFO] [stdout] test usage::tests::normalization_preserves_unknown_zero_and_vendor_subsets ... ok
[INFO] [stdout] test usage::tests::concurrent_retries_reserve_capacity_and_record_in_flight_results ... ok
[INFO] [stdout] test usage::tests::unknown_measurements_stop_metered_runs_and_checkpoints_keep_budget_spent ... ok
[INFO] [stdout] test usage::tests::prices_are_host_supplied_checked_and_rounded_up ... ok
[INFO] [stdout] test utils::tests::keyword_matches_only_as_a_standalone_token ... ok
[INFO] [stdout] test skill::runtime::tests::a_required_tool_nobody_registered_is_not_invented_here ... ok
[INFO] [stdout] test utils::tests::mention_parsing_strips_leading_punctuation ... ok
[INFO] [stdout] test utils::tests::terminator_priority_follows_declaration_order ... ok
[INFO] [stdout] test yaml::tests::a_single_letter_is_not_a_boolean ... ok
[INFO] [stdout] test yaml::tests::a_stream_with_two_documents_is_refused ... ok
[INFO] [stdout] test yaml::tests::an_empty_document_is_null ... ok
[INFO] [stdout] test usage::tests::concurrent_calls_keep_nested_attempts_and_opaque_attribution ... ok
[INFO] [stdout] test yaml::tests::an_explicit_tag_overrides_the_resolver ... ok
[INFO] [stdout] test yaml::tests::an_unsigned_exponent_is_not_a_number ... ok
[INFO] [stdout] test yaml::tests::anchors_are_reused_and_merges_lose_to_explicit_keys ... ok
[INFO] [stdout] test yaml::tests::malformed_yaml_reports_where_it_broke ... ok
[INFO] [stdout] test yaml::tests::nested_structures_come_through_whole ... ok
[INFO] [stdout] test yaml::tests::nulls_are_spelled_four_ways_and_an_absent_value_is_one ... ok
[INFO] [stdout] test utils::tests::memory_markers_are_stripped_and_collected ... ok
[INFO] [stdout] test utils::tests::retry_returns_the_last_error_after_exhausting_attempts ... ok
[INFO] [stdout] test usage::tests::budgets_gate_next_actions_and_reject_unprovable_hard_limits ... ok
[INFO] [stdout] test yaml::tests::numbers_follow_the_one_point_one_rules ... ok
[INFO] [stdout] test yaml::tests::quoting_is_what_keeps_a_word_a_word ... ok
[INFO] [stdout] test yaml::tests::yaml_one_point_one_booleans_are_still_booleans ... ok
[INFO] [stdout] test session::tests::a_file_written_for_another_topic_refuses_to_resume ... ok
[INFO] [stdout] test usage::tests::scopes_restore_on_return_and_unwind_without_cross_run_attribution ... ok
[INFO] [stdout] test session::tests::a_second_run_picks_up_where_the_first_stopped ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 415 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.62s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/access_e2e.rs (/opt/rustwide/target/debug/deps/access_e2e-41d691de9ab3fe99)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test an_allowed_dir_covers_its_files_and_nothing_above_them ... ok
[INFO] [stdout] [System] [Command:denied] Alice: echo hello
[INFO] [stdout] test a_command_is_denied_by_default_and_the_refusal_says_how_to_allow_it ... ok
[INFO] [stdout] [System] [Command:denied] Alice: echo hello world
[INFO] [stdout] test an_exact_command_does_not_admit_a_longer_one ... ok
[INFO] [stdout] [System] [Command:approved] Alice: echo https://ok.test/page
[INFO] [stdout] [System] [Command:denied] Alice: echo https://evil.test/
[INFO] [stdout] test an_allowed_command_is_still_held_to_the_hosts_it_names ... ok
[INFO] [stdout] test a_symlink_out_of_an_allowed_dir_is_denied ... ok
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] [System] [Command:approved] Alice: pwd
[INFO] [stdout] test a_workspace_confines_a_read_a_write_and_a_commands_working_directory ... ok
[INFO] [stdout] [System] [Command:denied] Alice: echo hello
[INFO] [stdout] test an_approver_is_consulted_for_anything_unlisted_and_its_answer_stands ... ok
[INFO] [stdout] [System] [Command:denied] Alice: echo hello
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] test a_listed_command_is_not_put_to_the_approver ... ok
[INFO] [stdout] test listing_is_governed_by_the_same_policy_as_reading ... ok
[INFO] [stdout] test the_sessions_own_write_paths_are_confined_too ... ok
[INFO] [stdout] [System] [Command:approved] P0: echo approved
[INFO] [stdout] [System] [Command:denied] P0: echo another
[INFO] [stdout] [System] [Command:denied] P0: echo approved
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [P0] Command handled.
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] test traversal_out_of_an_allowed_dir_is_denied_after_resolution ... ok
[INFO] [stdout] [P0] Finished tools.
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] Orchestrator output unparseable after retries. Forcing END_SESSION.
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] [System] [Command:denied] Alice: echo hello
[INFO] [stdout] test set_exec_replaces_the_patterns_and_takes_effect_at_once ... ok
[INFO] [stdout] test an_agent_workspace_narrows_the_sessions_and_a_wider_one_names_the_agent ... ok
[INFO] [stdout] [P0] Command handled.
[INFO] [stdout] [P0] Finished tools.
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] test a_denied_tool_call_becomes_a_tool_result_and_a_channel_notice ... ok
[INFO] [stdout] [P0] Command handled.
[INFO] [stdout] test external_approval_freezes_a_native_call_and_only_its_decision_can_execute_it ... ok
[INFO] [stdout] test command_preflight_checks_hard_denials_and_grants_only_the_frozen_command_once ... ok
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] [System] [Command:approved] Alice: echo hello
[INFO] [stdout] test each_command_allow_list_admits_its_own_shape ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/compaction_e2e.rs (/opt/rustwide/target/debug/deps/compaction_e2e-fe70e8d0ce712fd9)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test the_estimate_counts_characters_rather_than_bytes ... ok
[INFO] [stdout] test a_ceiling_the_prompt_alone_exceeds_is_refused_with_the_numbers ... ok
[INFO] [stdout] test a_batch_overflow_compacts_private_history_without_replaying_tools_or_siblings ... ok
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Alice, go.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Alice] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [Mod] @Bob, go.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Bob] position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position position
[INFO] [stdout] [System] Compacted conversation: 522 of 2000 estimated tokens are prompt overhead, leaving 1478 for the conversation.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test the_topic_survives_compaction ... ok
[INFO] [stdout] test an_ordinary_run_under_the_default_ceiling_never_compacts ... ok
[INFO] [stdout] test the_summary_replaces_the_dropped_turns_under_its_own_label ... ok
[INFO] [stdout] test the_session_file_records_how_often_it_compacted ... ok
[INFO] [stdout] test an_empty_summary_leaves_the_history_alone ... ok
[INFO] [stdout] test a_conversation_over_the_ceiling_is_compacted ... ok
[INFO] [stderr]      Running tests/harness_contract.rs (/opt/rustwide/target/debug/deps/harness_contract-559e75aafce5490b)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.34s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test a_gameplan_that_is_not_there_names_what_it_looked_for ... ok
[INFO] [stdout] test a_gameplan_claiming_a_reserved_tool_name_fails_to_load ... ok
[INFO] [stdout] test a_context_source_that_fails_stops_the_run_before_any_provider_call ... ok
[INFO] [stdout] test a_declared_context_source_that_is_not_registered_is_refused_with_the_list ... ok
[INFO] [stdout] test a_declared_tool_that_is_not_registered_is_refused_with_the_list ... ok
[INFO] [stdout] test duplicate_participant_names_are_refused ... ok
[INFO] [stdout] test every_unmet_requirement_is_reported_at_once ... ok
[INFO] [stdout] test the_reserved_tool_name_and_duplicates_are_refused ... ok
[INFO] [stdout] test too_many_participants_is_refused_and_they_are_named ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] END_SESSION
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] Session ended: DONE
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] Session ended: DONE
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] Session ended: DONE
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Read it.
[INFO] [stdout] [Mod] DONE
[INFO] [stdout] [System] Session ended: DONE
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_phase_cannot_outlast_max_rounds ... ok
[INFO] [stdout] test only_the_declared_terminator_ends_the_session ... ok
[INFO] [stdout] test a_gameplan_narrows_the_registered_tools ... ok
[INFO] [stdout] test consensus_is_only_reported_when_the_harness_declares_a_keyword ... ok
[INFO] [stdout] test a_gameplan_narrows_the_registered_context_sources ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test gameplan_skills_union_with_the_sessions ... ok
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_phaseless_harness_is_bounded_by_max_rounds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/public_api.rs (/opt/rustwide/target/debug/deps/public_api-5426201dbe687479)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test the_crate_version_is_the_one_cargo_built ... ok
[INFO] [stdout] test the_documented_constants_hold_their_documented_values ... ok
[INFO] [stdout] test the_root_re_exports_all_resolve ... ok
[INFO] [stdout] test the_shared_request_defaults_hold ... ok
[INFO] [stdout] test a_reasoning_effort_is_read_and_written_as_its_name ... ok
[INFO] [stdout] test a_provider_written_outside_the_crate_is_a_provider ... ok
[INFO] [stdout] test every_bundled_role_loads_and_carries_a_prompt ... ok
[INFO] [stdout] test every_bundled_persona_and_skill_loads ... ok
[INFO] [stdout] test every_bundled_gameplan_loads_and_declares_a_terminator ... ok
[INFO] [stderr]      Running tests/resume.rs (/opt/rustwide/target/debug/deps/resume-ddd91dc78ce6eee1)
[INFO] [stdout] test a_session_assembles_from_the_public_api_alone ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_session_without_a_file_persists_nothing ... ok
[INFO] [stdout] test a_file_that_is_not_a_snapshot_is_refused_with_a_reason ... ok
[INFO] [stdout] [P0] Earlier committed turn.
[INFO] [stdout] test a_failed_intent_write_prevents_the_tool_side_effect ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-indeterminate-11/run.json: 0 turns, 0 recorded messages.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [P0] Recorded.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 1 recorded messages.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-indeterminate-11/run.json: 0 turns, 0 recorded messages.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 2 recorded messages.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-approval-resume-4/run.json: 1 turns, 2 recorded messages.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-indeterminate-15/run.json: 0 turns, 0 recorded messages.
[INFO] [stdout] [P0] Both recorded.
[INFO] [stdout] test a_file_written_for_a_different_run_is_refused_by_name ... ok
[INFO] [stdout] test a_file_written_for_a_different_roster_is_refused ... ok
[INFO] [stdout] test a_missing_file_is_the_first_run_and_says_nothing ... ok
[INFO] [stdout] test a_saved_native_approval_resumes_after_completed_tools_without_replaying_them ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] Recorded.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-indeterminate-15/run.json: 0 turns, 0 recorded messages.
[INFO] [stdout] test no_temporary_file_is_left_behind ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] test an_intent_without_completion_requires_reconciliation_and_never_replays_the_handler ... ok
[INFO] [stdout] [P0] My position.
[INFO] [stdout] test batch_approvals_and_partial_delivery_resume_without_replaying_siblings ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test the_state_is_written_after_every_turn ... ok
[INFO] [stdout] test the_file_carries_its_version_and_the_run_it_belongs_to ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2529-resume-v1-18/run.json: 2 turns, 3 recorded messages.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_second_run_continues_where_the_first_stopped ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/session_run.rs (/opt/rustwide/target/debug/deps/session_run-84f252a1a724064f)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test a_missing_role_file_is_refused_where_it_was_named ... ok
[INFO] [stdout] test a_run_with_no_provider_names_the_agents_that_needed_one ... ok
[INFO] [stdout] test a_second_orchestrator_is_refused_by_name ... ok
[INFO] [stdout] test a_model_named_nowhere_says_where_to_write_one ... ok
[INFO] [stdout] test a_role_seats_an_agent_by_declaration_and_never_by_prose ... ok
[INFO] [stdout] test an_agent_on_a_second_provider_must_name_its_own_model ... ok
[INFO] [stdout] test a_run_with_no_topic_no_participants_or_no_orchestrator_is_refused ... ok
[INFO] [stdout] test batch_prompt_memory_reads_share_the_actor_provider_budget ... ok
[INFO] [stdout] [Mod] @Alice, open the case.
[INFO] [stdout] [Alice] Write-through, for the invalidation story.
[INFO] [stdout] [Mod] @Bob, answer that.
[INFO] [stdout] [Bob] Write-through, for the invalidation story.
[INFO] [stdout] [Mod] @Alice, open the case.
[INFO] [stdout] [Alice] Write-through, obviously.
[INFO] [stdout] [Mod] END_SESSION
[INFO] [stdout] [System] Session ended: END_SESSION
[INFO] [stdout] test an_unroutable_orchestrator_is_retried_and_then_forced ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_host_selects_an_agent_and_finishes_without_a_judge_call ... ok
[INFO] [stdout] test an_agent_provider_overrides_the_session_one ... ok
[INFO] [stdout] [Mod] CONSENSUS_REACHED
[INFO] [stdout] [System] Session ended: CONSENSUS_REACHED
[INFO] [stdout] test a_terminator_ends_the_run_and_says_so ... ok
[INFO] [stdout] [Mod] They converged on write-through.
[INFO] [stdout] test a_session_default_fills_every_agent_that_named_nothing ... ok
[INFO] [stdout] test an_unreported_result_field_defaults_rather_than_going_missing ... ok
[INFO] [stdout] test batch_tool_exchanges_stay_private_until_optional_shared_commit ... ok
[INFO] [stdout] test independent_batches_bound_overlap_freeze_context_and_commit_in_assignment_order ... ok
[INFO] [stdout] test memory_markers_never_reach_the_transcript_or_the_channel ... ok
[INFO] [stdout] test the_declared_result_fields_come_back_typed ... ok
[INFO] [stdout] test the_gameplan_body_reaches_the_orchestrator_prompt ... ok
[INFO] [stdout] test the_non_consensus_terminator_ends_without_agreement ... ok
[INFO] [stdout] [Mod] @Alice, open the case.
[INFO] [stdout] [Alice] My position.
[INFO] [stdout] test each_phase_instruction_reaches_the_participant_it_governs ... ok
[INFO] [stdout] [Mod] @Bob, answer that.
[INFO] [stdout] [Mod] They converged on write-through.
[INFO] [stdout] test the_turn_budget_stops_the_loop ... ok
[INFO] [stdout] [Mod] They converged on write-through.
[INFO] [stdout] test zero_rounds_goes_straight_to_the_closing_turn ... ok
[INFO] [stdout] test the_transcript_and_the_channel_agree ... ok
[INFO] [stdout] [System] Resumed from /tmp/kerness-test-2547-maintenance-retry-budget-18/run.json: 0 turns, 0 recorded messages.
[INFO] [stdout] test memory_maintenance_is_stepped_metered_and_skipped_during_cleanup ... ok
[INFO] [stdout] test the_phase_list_running_out_ends_the_session ... ok
[INFO] [stdout] test interrupted_batches_preserve_successful_peers_before_termination ... ok
[INFO] [stdout] test terminal_failures_cancellation_and_budgets_preserve_committed_work ... ok
[INFO] [stdout] test cancelled_batch_keeps_paid_replies_when_its_first_commit_checkpoint_fails ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/skills_e2e.rs (/opt/rustwide/target/debug/deps/skills_e2e-1863b9acd68fae74)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test a_required_tool_nobody_registered_is_refused_before_the_run ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Checked.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Narrowed.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Read it.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Read it.
[INFO] [stdout] [P0] Fine.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Fine.
[INFO] [stdout] [P0] Read it.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] Quiet.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Narrowed.
[INFO] [stdout] [P0] Read it.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Quiet.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] Checked.
[INFO] [stdout] test a_required_tool_comes_back_past_the_gameplans_own_list ... ok
[INFO] [stdout] test a_skill_from_a_path_lists_its_bundle_without_opening_it ... ok
[INFO] [stdout] test a_skill_the_agent_does_not_have_is_answered_with_the_ones_it_does ... ok
[INFO] [stdout] test an_agents_own_list_replaces_the_sessions ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test an_empty_allowed_tools_leaves_only_the_skill_tool ... ok
[INFO] [stdout] test allowed_tools_narrows_what_the_rest_of_the_turn_is_offered ... ok
[INFO] [stdout] test a_second_load_in_the_same_turn_says_so_instead_of_repeating ... ok
[INFO] [stdout] test an_agent_with_no_skills_is_offered_no_skill_tool ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Both.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [left] left completed
[INFO] [stdout] [right] right completed
[INFO] [stdout] [P0] My position.
[INFO] [stdout] test batch_turns_keep_their_skills_tools_and_contextual_identity_separate ... ok
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] My position.
[INFO] [stdout] [P0] Both.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test the_skill_tool_is_offered_beside_the_others ... ok
[INFO] [stdout] test two_skills_in_one_turn_union_their_gates ... ok
[INFO] [stdout] [P0] Checked.
[INFO] [stdout] [Mod] @P0, go.
[INFO] [stdout] [P0] Still checked.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test only_the_name_and_the_description_reach_the_system_prompt ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test the_body_arrives_for_the_turn_that_asked_and_no_later_one ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/tools_e2e.rs (/opt/rustwide/target/debug/deps/tools_e2e-f7160eb61ac08db5)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test an_agent_with_no_provider_anywhere_is_named ... ok
[INFO] [stdout] test an_agent_cannot_grant_itself_a_tool_the_session_withheld ... ok
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Just talk.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Nothing to look up.
[INFO] [stdout] [P0] Fine, no.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] ```tool_calls
[INFO] [stdout] {bad
[INFO] [stdout] ```
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test an_agent_declaring_its_own_tools_is_offered_those_alone ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_schema_violation_is_answered_rather_than_raised ... ok
[INFO] [stdout] test an_empty_list_leaves_an_agent_with_no_tools_at_all ... ok
[INFO] [stdout] test a_model_stuck_on_invalid_json_gives_up_instead_of_looping ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test a_tool_the_agent_gave_up_is_not_callable_either ... ok
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] test a_failing_handler_is_answered_rather_than_raised ... ok
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Nothing to look up.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] test the_built_in_tools_are_offered_alongside_registered_ones ... ok
[INFO] [stdout] test a_fenced_call_is_dispatched_and_its_result_fed_back ... ok
[INFO] [stdout] test tool_results_in_history_is_refused_against_a_native_provider ... ok
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test tool_exchanges_stay_private_to_the_turn_that_made_them ... ok
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] test an_unknown_tool_is_answered_rather_than_raised ... ok
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test tool_results_in_history_shows_the_exchange_to_the_next_agent ... ok
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] test the_openai_dialect_carries_the_call_and_the_result_natively ... ok
[INFO] [stdout] [P0] Worth it.
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [P0] ```tool_calls
[INFO] [stdout] {
[INFO] [stdout]   "tool_calls": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "lookup",
[INFO] [stdout]       "arguments": {
[INFO] [stdout]         "ticker": "KER"
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }
[INFO] [stdout] ```
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] test the_anthropic_dialect_returns_the_result_in_a_user_message ... ok
[INFO] [stdout] test the_tool_iteration_bound_stops_the_loop ... ok
[INFO] [stdout] [System] [Command:approved] P0: echo scoped
[INFO] [stdout] [P0] Done
[INFO] [stdout] [Mod] Done.
[INFO] [stdout] [Mod] @P0, what is it worth?
[INFO] [stdout] [System] [Command:approved] P0: echo scoped
[INFO] [stdout] test contextual_tools_keep_actor_scope_and_expire_after_the_invocation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/_core-e094b077885f08fe)
[INFO] [stderr]    Doc-tests kerness
[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 1 test
[INFO] [stdout] test crates/kerness/src/access.rs - access::prompt_on_console (line 131) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed", kill_on_drop: false }`
[INFO] [stdout] 73dc19e075563c262709327ac7ff1618436a1be79f1b26d49bf52ccf27c21eed
