Repository navigation
Funnel host-effect traces through gunbc.output_policy (kill the [file] read floor spam) - #5881
Merged
Merged
Conversation
…e] read floor spam) The [file] read / [file] write / [rest] / [hermetic:mock] trace sites were unconditional eprintln!s — [file] read alone floods the CI floor log with hundreds of source-file reads (doubled by the within-run double-resolve). #5874's deferred slice: route them through the .dag output policy instead of suppressing in Rust. - gunbc.output_policy gains ChannelPolicy + resolve_channel_policy(verbose, quiet): it enumerates the channels and calls channel_decision once each, so the seed can evaluate the whole policy in one .dag call. channel_decision stays the single authority for channel x verbosity -> decision. - The seed (cli_run::install_output_policy) evaluates resolve_channel_policy from the .dag authority at the current cli_verbosity and installs the per-channel verdicts into a process-global (set once before discovery threads spawn). It only TRANSPORTS the evaluated OutputDecision variants across the boundary -- no Rust re-derivation of the policy logic. - v1_interpreter routes the four trace sites through trace_emit(channel, line): reads/mocks -> Instrumentation (Verbose-only), writes/rest -> ShellTrace (condensed at Normal). render_shell_trace now CONSUMES output_decision(ShellTrace) too, dissolving the cli_verbosity mirror #5860 left in it. - claim_executor + claim_batch install the policy at startup. Unset (other bins) falls back to Full = pre-funnel behavior, so nothing else regresses. Verified by execution: a WET filesystem_read witness prints 0 [file] read lines at Normal and 1 at Verbose, and still passes. output_policy_witness covers resolve_channel_policy. fmt + clippy --all-targets clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gunbai-bot
Bot
force-pushed
the
host-trace-funnel
branch
from
June 27, 2026 23:31
93c5730 to
9d246e3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up slice to #5874 (the deferred host-trace funnel).
Problem
[file] read/[file] write/[rest]/[hermetic:mock]were unconditionaleprintln!s.[file] readalone floods the CI floor log with hundreds ofsource-file reads (doubled by the within-run double-resolve) — the spam the original
"CI output is a horror" report called out.
Fix — consume the .dag output policy (no Rust re-derivation)
gunbc.output_policygainsChannelPolicy+resolve_channel_policy(verbose, quiet):it enumerates the channels and calls
channel_decisiononce each, so the seedevaluates the whole policy in one
.dagcall.channel_decisionstays the singleauthority for
channel × verbosity → decision.cli_run::install_output_policyevaluatesresolve_channel_policyfrom the.dagauthority at the current
cli_verbosityand installs the per-channel verdicts into aprocess-global (set once before discovery threads spawn). It only transports the
evaluated
OutputDecisionvariants across the boundary — the policy logic is notmirrored in Rust.
v1_interpreterroutes the four trace sites throughtrace_emit(channel, line):reads/mocks →
Instrumentation(Verbose-only), writes/rest →ShellTrace(condensedat Normal).
render_shell_tracenow consumesoutput_decision(ShellTrace)too,dissolving the
cli_verbositymirror terminal output modeling for CI/interactive #5860 left in it.claim_executor+claim_batchinstall the policy at startup. Unset (other bins)falls back to
Full= pre-funnel behavior, so nothing else regresses.Verified
A WET
filesystem_readwitness prints 0[file] readlines at Normal and 1 atVerbose, and still passes.
output_policy_witnesscoversresolve_channel_policy(Normal: Instrumentation=Suppressed / ShellTrace=Condensed / Diagnostic=Full; Verbose:
all Full).
cargo fmt --all --check+clippy --all-targetsclean.