From b349af0ae3d2f45ba1c61df19998906b08f05891 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Fri, 28 Aug 2026 14:11:50 -0700 Subject: [PATCH] Update briefing and backlog for P3 poll-actions handoff By specifier. --- specifier-prompt.md | 6 +++--- specs/feature-backlog.md | 33 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/specifier-prompt.md b/specifier-prompt.md index 082dfa3..77582e6 100644 --- a/specifier-prompt.md +++ b/specifier-prompt.md @@ -169,7 +169,7 @@ Goal: reach feature parity with [memo.cash](https://memo.cash). | **P0** | Post, Set name, Reply, Efficient pagination | ✅ shipped | | **P1** | Like counts (read side) ✅; client display ✅; Set profile text ✅; Set profile picture ✅; Follow/Unfollow ✅ | ✅ shipped | | **P2** | Topics (list ✅, feed ✅, post/follow/unfollow) | next | -| **P3** | Polls (create, add option, vote) | later | +| **P3** | Polls (create, add option, vote) | 🔄 specs written, handed off (task `poll-actions`) | | **P4** | Mute / unmute user | later | | **P5** | Send money memo action, MIP-0009 token exchange | later | | **P6** | Repost, ranked feed, notifications, search, tags, following feed | later | @@ -368,5 +368,5 @@ At the end of each session, update this file: - Note the current `master` HEAD commit. - State the next feature to work on. -Current `master` HEAD: `61616eb` (task `topic-actions` — topic post/follow/unfollow — merged from architect and verified: client build/test/lint/acceptance and DB test/lint/acceptance all pass). -Next action: **spec P3.1/P3.2/P3.3** — Polls (create a poll / add an option / vote). +Current `master` HEAD: `5d7ce7601b` (task `poll-actions` — P3 poll specs committed and handed off to the coder). +Next action: **await the coder → refactorer → architect pipeline for `poll-actions`**, then merge the architect branch into `master` and verify the affected components (client, indexer, db). diff --git a/specs/feature-backlog.md b/specs/feature-backlog.md index 5e81a4f..a4527aa 100644 --- a/specs/feature-backlog.md +++ b/specs/feature-backlog.md @@ -171,9 +171,9 @@ Polls require a new data model and rendering. The indexer has no handler yet. | # | Feature | Memo action | Components | Status | |---|---------|-------------|------------|--------| -| 3.1 | Create a poll | `0x6d10` | C, I, D | 🔴 missing | -| 3.2 | Add a poll option | `0x6d13` | C, I, D | 🔴 missing | -| 3.3 | Vote in a poll | `0x6d14` | C, I, D | 🔴 missing | +| 3.1 | Create a poll | `0x6d10` | C, I, D | 🔄 specs written (task `poll-actions`) | +| 3.2 | Add a poll option | `0x6d13` | C, I, D | 🔄 specs written (task `poll-actions`) | +| 3.3 | Vote in a poll | `0x6d14` | C, I, D | 🔄 specs written (task `poll-actions`) | --- @@ -213,22 +213,23 @@ Polls require a new data model and rendering. The indexer has no handler yet. ## Suggested next spec -**Post a topic message / Follow a topic / Unfollow a topic** (P2.3 / P2.4 / P2.5): -- `psf-memo-client`: add a topic post composer and topic follow/unfollow buttons - on the topic feed page that broadcast `0x6d0c` / `0x6d0d` / `0x6d0e`. -- `psf-memo-db`: expose topic follow state and a topic's followers list. -- The indexer already stores topic messages and follows in `roomsDb`; the - missing pieces are the client write path and the DB read side for follows. +**Polls (P3.1 / P3.2 / P3.3)** — create a poll / add an option / vote: +- `psf-memo-client`: a poll composer that broadcasts `0x6d10` (create poll), + an add-option composer that broadcasts `0x6d13`, and a vote composer that + broadcasts `0x6d14`. +- `psf-memo-indexer`: new handlers that parse and store create-poll, add-option, + and vote transactions (no poll handler exists yet). +- `psf-memo-db`: expose the read side — poll question/options/votes via + `/polls/:txid`, `/polls/:txid/options`, `/polls/:txid/votes`. -### Topic payloads (UTF-8, no cashaddr conversion) +### Poll payloads -Unlike follow/unfollow user, topic actions carry plain UTF-8 text (the topic -name and, for `0x6d0c`, the message). No bch-js cashaddr conversion is needed -for topics. The `0x6d0c` topic message payload is `topic_name + message` with a -combined limit of 214 bytes; `0x6d0d` / `0x6d0e` carry only the topic name. +- `0x6d10` create poll: `poll_type` (1 byte) + `option_count` (1 byte) + `question` (≤ 209 bytes). +- `0x6d13` add option: `poll_txhash` (32 bytes) + `option` (≤ 184 bytes). +- `0x6d14` vote: `poll_txhash` (32 bytes) + `comment` (≤ 184 bytes). -This is the next smallest end-to-end win after the topic list/feed read side -closed. +The poll txid is a 32-byte binary hash reversed to hex, like other Memo txid +payloads. Specs are written (task `poll-actions`, handed off to the coder). ---