summaryrefslogtreecommitdiff
path: root/SCOPE.txt
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-08-02 15:29:33 -0500
committerChristian Cleberg <[email protected]>2026-08-02 15:35:23 -0500
commitfbcb4113f110a7db9cf21d18510cb59c2e90ba23 (patch)
tree5a4afda3920f88f61698329c89771bda75fb8ced /SCOPE.txt
parent04fae8d7fb3726b4d1b4c2576ece04766d2afe74 (diff)
downloadhutch-main.tar.gz
hutch-main.tar.bz2
hutch-main.zip
convert readme to nfo; convert docs to txt; relicense to 0bsdHEADmain
Diffstat (limited to 'SCOPE.txt')
-rw-r--r--SCOPE.txt49
1 files changed, 49 insertions, 0 deletions
diff --git a/SCOPE.txt b/SCOPE.txt
new file mode 100644
index 0000000..6a4f180
--- /dev/null
+++ b/SCOPE.txt
@@ -0,0 +1,49 @@
+# Out of Scope Features
+
+- Universal links (requires Sourcehut to host an apple-app-site-association
+ file)
+- Push notifications for builds and tickets (requires a backend relay server)
+ - ref: https://git.sr.ht/~ccleberg/hutch-notify
+- Explore / search (hub.sr.ht) (no public discovery API)
+- ~~Pronouns on profile (not in GraphQL schema)~~ — **stale**. sr.ht added
+ pronouns (see the Q1 2026 "What's cooking"), and Hutch already queries them in
+ `AppState` and shows them in `UserProfileView`. Left here struck through as
+ evidence for the ingestion task in ROADMAP.txt: this entry spent months telling
+ people not to build something that was already built.
+- Revoke personal access tokens (`@internal` in schema, inaccessible)
+- Archive a message to a list (`archiveMessage` is `@internal`, inaccessible)
+- Ticket activity feed (todo.sr.ht's root `events` query is broken upstream and
+ returns an empty list for every user). `event.participant_id` references
+ `participant(id)`, but the resolver joins it against `participant.user_id`:
+
+ ```sql
+ FROM event ev
+ JOIN participant p ON p.user_id = ev.participant_id -- id space vs user id space
+ WHERE p.user_id = <viewer>
+ ```
+
+ The rows exist — the writer inserts `participant.ID` for the submitter and for
+ every subscriber — but that join cannot find them. `Ticket.events` is
+ unaffected because it filters on `ev.ticket_id`, which is why ticket timelines
+ work. Nothing a client can do fixes this; revisit only if sr.ht changes the
+ resolver.
+- Subscribe to a mailing list (`mailingListSubscribe` exists, but `MailingList`
+ has no `subscription` field and sr.ht has no discovery API, so there is no way
+ to find a list you are not already subscribed to — see hub.sr.ht above)
+- Submitting patches (a `git send-email` flow, not a GraphQL mutation; Hutch
+ reviews patchsets but cannot send them)
+
+## Declined rather than blocked
+
+These are reachable in the API. They are left out on judgement, not capability.
+
+- **Webhook management** (24 fields across five services). A webhook needs an
+ HTTPS endpoint you control to receive POSTs. Without the relay above, this
+ only serves someone already running their own endpoint, and that person is not
+ managing it from a phone. Reconsider if `hutch-notify` ever ships.
+- **`shareSecret`.** Shares a build secret — an SSH key or PAT — with another
+ user. A mistap grants someone else a credential, and nothing in the app can
+ take it back. That belongs on the web behind a full-size confirmation. The
+ read-only `secrets` list would be fine on its own.
+- **Build groups** (`createGroup`, `startGroup`). Multi-job pipelines are
+ authored in `.build.yml`, not composed on a phone.