Skip to content

feat: experimental signed interaction prompts and responses - #7483

Draft
kaykayyali wants to merge 3 commits into
block:mainfrom
kaykayyali:feat/experimental-interactions
Draft

feat: experimental signed interaction prompts and responses#7483
kaykayyali wants to merge 3 commits into
block:mainfrom
kaykayyali:feat/experimental-interactions

Conversation

@kaykayyali

@kaykayyali kaykayyali commented Sep 8, 2026

Copy link
Copy Markdown

Summary

Agents currently need to parse prose or reactions to obtain a structured decision.
This draft introduces opt-in, signed interaction prompts and responses with
relay-authored state, so the responder and the resulting decision remain attributable.

  • Add bounded button, poll and non-secret form schemas; prompt/response/close kinds
    40010/40011/40012 and relay-only addressable state kind 39010.
  • Gate relay writes and advertisement with BUZZ_EXPERIMENTAL_INTERACTIONS=false
    by default, requiring a persistent BUZZ_RELAY_PRIVATE_KEY when enabled.
  • Validate and authorize using the writer's current membership/roles, serialize
    decisions under a prompt-row lock, and commit source/state/outbox together.
    Support replacements, first/quorum/manual/deadline closure and durable delivery.
  • Project ordinary messages for older clients and attribute exact text answers
    to their original signed message, with explicit relay provenance.
  • Add signed HTTP-bridge CLI ask/poll/answer/get/wait/close commands and desktop
    cards behind the separate, default-off Interaction cards experimental toggle.
  • Preserve the original asker in the ACP author gate for verified relay text
    projections, so the relay signer cannot confer its own allowlist authority.
  • Add documented behavioral controls based on Slack, Discord, Teams and GroupMe,
    including selection limits, pending/error recovery, keyboard use, draft retention
    and idle deadline handling. Provide a separate browser preview build entry point.

This is a first experimental slice. It does not add durable workflow suspension,
workflow approval migration, ACP question/permission and Hermes adapters,
composer commands, private ballots, secret fields, interaction push navigation or native mobile cards.
Unsupported privacy modes are rejected. Kind allocation, retention, key rotation,
and unified prompt/projection moderation need maintainer review before promotion.
See docs/experimental-interactions.md and docs/interaction-controls.md.

Related issue

Refs #3261. Searched existing issues and PRs for interaction prompts; #3261 is the
closest feature request. No duplicate implementation was found in that search.

Testing

Draft status is intentional: full CI is not green in the available environment.
Native PostgreSQL and supported-platform CI results are required before promotion.

  • All 6,452 desktop unit tests pass.
  • All 10 interaction browser controls pass against the production timeline/card
    with the repository's mock transport. Their vendor expectations are emulated
    from primary documentation; no live Slack/Discord/Teams tenant was exercised.
  • Final just test-unit passes all 14 groups, including 261 core, 466 CLI,
    123 DB and 917 ACP unit tests. The ACP tests exercise the connected author gate
    and reject an unlisted asker even when the relay signer is allowlisted.
  • Desktop frontend, web, preview and Linux CLI/relay/admin/ACP builds pass.
    The packaged preview verifies approval, form, vote, manual close and reset without page errors.
  • Native PostgreSQL/Redis and relay integration gates remain blocked. Seven
    interaction PostgreSQL tests are included, covering first-answer races,
    authorization/isolation, attribution, rollback, expiry and outbox pruning.
  • just ci reaches the Tauri gate and fails on unavailable GTK/GIO system libraries.
    Mobile dependency resolution is blocked; macOS/Windows platform jobs were not run.
  • Complete desktop smoke run (1,414 cases): 1,329 passed, 82 failed, 3 skipped, 0 flaky.
    All 10 interaction controls pass in that run. This environment used Chromium
    149, six workers and video disabled, so supported-runner verification is required.
  • A six-case comparison against unmodified upstream produced the same four passes
    and two failures on both versions. Other failures remain untriaged; this result
    does not establish that every failure is pre-existing.

UI evidence prepared: text fallback, closed approval, required-fields form and
three-card preview screenshots. GitHub screenshot upload remains blocked: the required
scripts/post-screenshots.sh needs authenticated gh and upstream branch-write
access, which this environment does not have. Screenshots are included in the
contribution package supplied to the contributor.

Published source

Published through the GitHub connector with Codex co-author attribution and DCO
trailers. Commit IDs differ from the local build because GitHub supplies author/time
metadata; every uploaded source tree was checked against its corresponding local
commit. Final source tree: 17834844f3da37b9c0841f3c29faa854746c0f2a.
The branch is based on 3c7f288c60d67df78577b237e27c3dfc8831aaa1;
a merge-tree check against upstream 86c189e8571d4254726f4d0519a500df9b9d947e
reported no conflicts. The combined upstream merge has not been retested locally.

GitHub checks after publication

DCO Check passed. CI,
Desktop Release Candidate
and Docker image
currently report action_required for this fork contribution; maintainer approval
is needed before their results can be evaluated. These are not passing test results.

kaykayyali and others added 3 commits September 8, 2026 10:11
Let people and agents ask for typed decisions with a Nostr prompt schema
and attributable signed answers. Gate relay acceptance and workers behind
BUZZ_EXPERIMENTAL_INTERACTIONS, and desktop cards behind Experimental Features.

Add transactional acceptance, author/role checks, replacement and close
rules, bounded expiry, relay state and a durable Redis outbox. Preserve
older clients through an ordinary-message projection and exact text reply
matching that retains the responder's original signed event.

Add the ask/poll/answer/get/wait/close CLI commands and desktop button,
form and poll cards. Document the source review, the separate deadline
instead of NIP-40 expiration, and remaining workflow/harness/privacy work.

Validation: 260 core, 466 CLI and 122 DB unit tests pass; the desktop unit
suite and four interaction browser flows pass. Targeted all-targets Clippy,
TypeScript, Biome and the file-size/discovery policies pass. Four SQL paths
were also smoke-tested with single-connection embedded PostgreSQL.
Native PostgreSQL/Redis races remain a merge gate. Full local CI is blocked
by the existing voice-library TLS download and unavailable Docker services.

Refs: block#3261
Signed-off-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: Kaysser Kayyali <kaykayyali@gmail.com>
…view

Signed-off-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: Kaysser Kayyali <kaykayyali@gmail.com>
Signed-off-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: Kaysser Kayyali <kaykayyali@gmail.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Status: review required for the current range.

The current range is 86c189e8571d4254726f4d0519a500df9b9d947e...8c2b21f37e644d7232e194ee0261cb3ac4f11571.
A new review must complete for this exact range. When manual authorization
is required, a Block organization member must comment exactly
@buzz-security-review 8c2b21f37e644d7232e194ee0261cb3ac4f11571 to authorize a new review.
Any previous review applies only to its recorded range.

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.

1 participant