Capture feature requests from chat as scoped forge issues #77

Open AtlantisPleb opened this 23h ago

Outcome

Let a user turn one sentence in any OpenAgents chat into a scoped forge issue and subscribe to its delivery outcome.

Current behavior

The forge has a public tracker, and #2 plans notifications, but chat cannot record an unmet request as a canonical issue. Requests can remain trapped in conversation history or be copied by hand without their authority and privacy context.

Source: docs/episode-triage.md, episodes 211, 251, and the claim station.

Contract

  • Expose one chat tool and matching authenticated API operation.
  • Accept the user's problem statement and derive a draft with problem, scope, acceptance criteria, and success metrics.
  • Require repository selection and write authority before filing.
  • Show a preview before a public external effect unless policy grants a revocable standing permission.
  • Preserve source conversation and message identifiers in a private receipt, not in public issue prose.
  • Deduplicate likely repeats and let the user link or update an existing issue.
  • Subscribe the requester to state changes and shipment evidence through #2.
  • Never turn a private conversation into a public issue by default.

Acceptance criteria

  • A user can file a valid issue from one chat turn without leaving the conversation.
  • The issue becomes the canonical work record and appears through the normal API and project views.
  • Public issue text contains no private prompt, trace, credential, or repository metadata.
  • A retry returns the same filed issue.
  • When verified delivery closes the issue, the requester receives the configured notification and evidence link.

Verification

Test preview, consent, repository authority, deduplication, idempotency, private-source redaction, notification subscription, and browser/API parity. Run mix precommit.

Dependencies

Depends on #2, #9, #35, and the accepted-outcome contract in project 3.

  1. AtlantisPleb opened this issue 23h ago
Sign in with GitHub to comment on this issue.