refactor(view-state): silence allow-path decision echoes#144
Merged
Conversation
PermissionDecided allow and QuestionDecided were pushing a system msg
on every tool call ("[permission allowed] Edit: ... (XXXms)"),
re-echoing the LLM's self-justification on the success path with no
diagnostic value. Deny stays visible; AskUser folds into the
non-rendering group (wire payload doesn't carry answered/cancelled
kind, and the dialog already gives visual feedback).
Events still emit on the wire — telemetry, IPC broadcast, and the
classifier `info!` log are untouched. Only the view-state mutator
stops rendering them. Drops `question_decided` mutator entirely since
its body becomes a no-op equivalent of the existing non-rendering arm.
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.
Summary
question_decidedmutator and foldsQuestionDecidedinto the existing non-rendering arm next toMessageRouted | InboxConsumed | TurnDiffSummary | SessionResumeWarningsinfo!log are untouched — only the view-state renderer stops echoing the success pathWhy
Every tool call in Classifier-decision mode was producing
[permission allowed] Edit: ... (2469ms)-style lines that re-echoed the LLM's self-justification with no actionable value. Manual mode produced(0ms)echoes right after the user clicked allow. Deny information is still surfaced; if you want allow-path traces, look at the tracing log.Changes
crates/loopal-view-state/src/mutators/interactive.rs—permission_decidedearly-returnsfalseonallow; deny/unknown still push;question_decidedremovedcrates/loopal-view-state/src/mutators/mod.rs—QuestionDecided { .. }joined the=> falsenon-rendering groupcrates/loopal-view-state/tests/suite/decided_mutators_test.rs— allow / allquestion_decidedpaths now assertbumped.is_none()+ no msg pushed; deny + unknown coverage retainedcrates/loopal-view-state/tests/suite/e2e_resolve_source_propagation_test.rs— rewritten: three sources assert silence; serde wire contract preservedTest plan
bazel test //crates/loopal-view-state:loopal-view-state_testPASSEDbazel test //...58/58 PASSEDbazel build //... --config=clippyzero warningsbazel build //... --config=rustfmtclean