Skip to content

Add private product feedback sidecar#1857

Merged
wesbillman merged 2 commits into
mainfrom
pinky/product-feedback-sidecar
Jul 14, 2026
Merged

Add private product feedback sidecar#1857
wesbillman merged 2 commits into
mainfrom
pinky/product-feedback-sidecar

Conversation

@wesbillman

Copy link
Copy Markdown
Collaborator

Summary

  • accept signed kind 42000 product-feedback events through normal authenticated relay ingest
  • validate feedback content/category, then persist it in a private operator-global sidecar with source-community provenance
  • keep feedback out of ordinary event storage and subscription fan-out
  • add bounded JSON retrieval via buzz-admin product-feedback list

Testing

  • cargo test -p buzz-relay product_feedback
  • cargo test -p buzz-db product_feedback
  • migration tests
  • cargo check -p buzz-admin
  • local relay E2E following TESTING.md against isolated Postgres/Redis:
    • valid feedback accepted
    • duplicate submission accepted idempotently with exactly one DB row
    • empty body and unsupported category rejected
    • no live fan-out and no ordinary kind-42000 query result
    • sidecar row returned by buzz-admin product-feedback list

A broader relay test run completed 578 tests; 3 unrelated integration failures were caused by that test database missing the pre-existing communities table.

Accept a dedicated signed feedback kind into a deployment-wide private
sidecar, preserving source provenance and attachment metadata without event
storage or fan-out. Add bounded operator JSON retrieval through buzz-admin.

Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
@wesbillman wesbillman requested a review from a team as a code owner July 14, 2026 16:03
Emit the modeled host-resolved write action for accepted feedback so the
conformance guard cannot report a coverage breach. Bound serialized tag
metadata and lock deployment-wide duplicate provenance semantics with a
Postgres regression test.

Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
@wesbillman

Copy link
Copy Markdown
Collaborator Author

Addressed the review findings in e5f8ce62f:

  • accepted feedback now emits the modeled host-resolved WriteInsertGlobal action, with an EmitGuard regression test proving no ImplBug coverage breach
  • deployment-wide event-ID dedupe is now explicit: the first community keeps provenance, cross-community replay returns the same row/success; a migrated-Postgres regression test locks this behavior
  • serialized feedback tags are capped at 64 KiB, with boundary coverage

Focused verification:

  • relay feedback tests: 4 passed
  • ingest conformance regression: passed
  • cross-community duplicate Postgres regression: passed
  • cargo test -p buzz-conformance: 22 passed
  • cargo check -p buzz-admin: passed

@wesbillman wesbillman merged commit af190c9 into main Jul 14, 2026
54 of 55 checks passed
@wesbillman wesbillman deleted the pinky/product-feedback-sidecar branch July 14, 2026 17:41
brow pushed a commit that referenced this pull request Jul 14, 2026
…image-paste

* origin/main:
  refactor(clients): standardize product naming on community (#1858)
  fix(desktop): retain live rows after window exhaustion (#1810)
  Add private product feedback sidecar (#1857)
  fix(desktop): resolve Doctor install shell and command detection on Windows (#1854)
  fix(desktop): navigate to channel from inbox thread header (#1847)
  feat(desktop): surface needsRestart badge on live UI surfaces (#1853)
  fix(desktop): prevent menu-to-dialog UI lockups (#1839)
  feat(relay): add durable community archival (#1834)
  feat(desktop): add conversation-style DM composer (#1768)
  feat(push): add public APNs gateway (#1770)
  feat(relay): add atomic community ownership transfer (#1845)
  fix(desktop): stabilize agent identity restore (#1831)
  fix(buzz-acp): distinguish idle vs hard-cap timeout, dead-letter hard kills immediately (#1844)
  fix(observer): align scroll-anchor ids with transcript display-block keys (#1849)
  [codex] Add view activity label to agent popover (#1748)
  ci(desktop): surface flaky E2E tests instead of retry-masking them (#1838)
  fix(desktop): treat channel creator as member before 39002 provisioning (#1830)
  fix(mobile): mirror app bar title padding when actions are empty (#1832)

Co-authored-by: npub1shglkdhngx3hrnhf4gf8vhpqdrmeludctechdvpwd3988zzs7ncq2cmtxu <85d1fb36f341a371cee9aa12765c2068f79ff1b85e7176b02e6c4a738850f4f0@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1shglkdhngx3hrnhf4gf8vhpqdrmeludctechdvpwd3988zzs7ncq2cmtxu <85d1fb36f341a371cee9aa12765c2068f79ff1b85e7176b02e6c4a738850f4f0@sprout-oss.stage.blox.sqprod.co>
tlongwell-block pushed a commit that referenced this pull request Jul 14, 2026
* origin/main:
  Add private product feedback sidecar (#1857)
  fix(desktop): resolve Doctor install shell and command detection on Windows (#1854)

Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>

# Conflicts:
#	crates/buzz-db/src/migration.rs
tlongwell-block pushed a commit that referenced this pull request Jul 14, 2026
* origin/main:
  Add private product feedback sidecar (#1857)
  fix(desktop): resolve Doctor install shell and command detection on Windows (#1854)

Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>

# Conflicts:
#	crates/buzz-db/src/migration.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants