feat: allow production event parameter capture - #35
Conversation
Co-authored-by: Chinmay Kabi <chinmay@blend.to>
Make allowAllInProduction a first-class TugboatParameterCaptureMode so policy.mode stays truthful, delete the private boolean/constructor split, and restore mode-only effectiveFor / value-decision dispatch. Co-authored-by: Chinmay Kabi <chinmay@blend.to>
|
@copilot please review this pull request. |
|
Blocked on requesting Copilot Code Review from this agent: the available GitHub token cannot call Please click Request next to Copilot in the Reviewers sidebar (or run locally: Once Copilot comments land, I will address them and re-request until clean. Thermo-nuclear follow-up already applied in |
There was a problem hiding this comment.
Pull request overview
Adds an explicit production opt-in for retaining bounded external-event parameter values while preserving privacy-safe defaults.
Changes:
- Adds
allowAllInProductionwith the existingallow_allwire value. - Adds production-policy tests and privacy guidance.
- Bumps
tugboatandtugboat_dioto0.7.0.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
packages/tugboat/lib/src/external_event.dart |
Implements the production parameter policy. |
packages/tugboat/lib/src/sdk_version.dart |
Updates the SDK version. |
packages/tugboat/test/external_event_and_network_test.dart |
Tests production and exploration policy behavior. |
packages/tugboat/pubspec.yaml |
Bumps tugboat to 0.7.0. |
packages/tugboat/example/pubspec.yaml |
Updates the example dependency. |
packages/tugboat/README.md |
Documents usage and privacy implications. |
packages/tugboat/CHANGELOG.md |
Records the new policy. |
packages/tugboat_dio/pubspec.yaml |
Bumps the adapter and core dependency. |
packages/tugboat_dio/README.md |
Updates installation versions. |
packages/tugboat_dio/CHANGELOG.md |
Records the compatibility release. |
docs/README.md |
Updates the current package version. |
docs/integration/production-replay-acceptance.md |
Updates the acceptance-test release version. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
TugboatParameterPolicy.allowAllInProductionas an explicit production opt-in.namesOnlyas the default.allowAllpolicy exploration-only.allow_allwire value and all JSON and payload limits.tugboatandtugboat_dioto0.7.0.Why
Production integrations need Tugboat and ClickHouse to retain external-event parameter values. The prior production policy kept parameter names only.
This change provides an explicit opt-in. It does not weaken the default production privacy policy.
Impact and privacy
The new policy can retain feedback, search terms, URLs, IDs, and other user content. Hosts must confirm consent, privacy, access, and retention rules before they enable it.
Validation
flutter analyzefortugboat: passed.flutter analyzefortugboat_dio: passed.flutter test test/sdk_version_test.dart test/external_event_and_network_test.dart: 24 passed.tugboat_diotest suite: passed.dart pub get --enforce-lockfile: passed. The lock file did not change.git diff --check: passed.allow_all. ClickHouse stored the values. No parameter values were truncated or dropped.Known full-suite failures
The complete core suite reached 347 passing tests and 2 failures. Both failures are existing route-pop timing tests outside this diff:
modal_capture_visual_test.dart:dismiss restores base-route pixels for action, barrier, and backreplay_overlay_nested_navigation_matrix_test.dart:dialog and modal bottom sheet retain their own route evidenceBoth timed out while waiting for
route_pop /root. This draft does not claim that the full production release gate is complete.