mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-16 00:52:27 +00:00
956f5749d6
Privacy: provider-streamed RawInput overrides on tool_progress events are unredacted model output; for exposure-restricted tools they are now discarded instead of replacing the projected form (the override was reintroducing exactly the values the projector removed). Proven with a progress event carrying a secret in the raw override. Schema validation: proposal acceptance now validates through the planner's exported canonical rules - FindCapability's exact-name matching (the capture previously matched case-insensitively while planning matched exactly) and ValidateParams for declared, required, typed, enum, pattern, and malformed-schema cases - so a proposal that validates is exactly a proposal the planner will accept. The sensitive-parameter rejection remains a proposal-specific ratchet on top. Fail-closed ratchets: params and evidence identity are deep-cloned on capture and again on outcome, so caller-side mutation after validation can never alter the actionable proposal; fingerprint serialization failures return errors rather than a shared sentinel value; an investigation run refuses to start without finding and investigation identity (before any provider call or session exists); and any run error nils the proposal while preserving simultaneous proposal errors via errors.Join - a non-nil proposal exists only from a completely successful run.