# Gift Graph Feature Backlog > Gift Graph - what v0.1 left out on purpose, what the live demo surfaced, and the order I would build it in > Last Updated: 2026-10-08 · Mirrors `docs/feature-backlog.md` in the repo, with priorities added here ## Legend - **Status:** `[ ]` Not Started | `[~]` In Progress | `[x]` Complete - **Priority:** P0 (Critical) | P1 (High) | P2 (Medium) | P3 (Nice-to-have) - **Links:** [[Project - Gift Graph/Build & Iterate/Technical Decisions|Technical Decisions]], [[Project - Gift Graph/Build & Iterate/Bug Tracker|Bug Tracker]], [[Project - Gift Graph/Discovery & Planning/Product Plan|Product Plan]] ## P0 - Critical (Proves the Privacy Model) - [ ] **One account per person across domains** - P0 - *Goal:* A sign-in on any of Gift Graph's domains reaches the same account - *Plan:* Key accounts on the Clerk user alone and fold the empty account giftgraph.aleksandar.app made into the real one, rehearsed on a branch of production first - *See:* [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-023|Bug Tracker > BUG-023]], [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-039|Technical Decisions > TDR-039]] - [x] **Three levels, with labels on the hint** - 2026-10-03 - *Shipped:* Secret · Hint · Silent, up to two labels from a public vocabulary, and a line the server checks against the secret - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-021|Technical Decisions > TDR-021]] - [x] **Requests by email with one answer either way** - 2026-10-07 - *Shipped:* A keyed hash of each verified sign-in address, the request held on the owner's side until they answer, and the same reply whether or not an account matches; agent-only for now - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-036|Technical Decisions > TDR-036]], [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-020|Bug Tracker > BUG-020]] - [x] **Consent handshake** - 2026-09-30 - *Goal:* A requester asks, an owner approves once with a default tier, and either side can see where the connection stands - *Shipped:* `request_connection` · `approve_connection` · `set_default_tier` · `revoke_connection` · `list_connections` - [x] **Tier-limited drop and pull** - 2026-09-30 - *Goal:* A pull returns only the text the tier allows; silent drops never surface; matching never touches withheld text - *Shipped:* `drop` and `pull` over Streamable HTTP, filter in the query, 12 integration tests - [~] **Semantic matching built from disclosed text only** - P2 - *Goal:* Natural prompts match ("gift ideas about fonts" finds "type and lettering") without reopening the leak literal matching closes - *Constraint:* Embeddings computed from category and vibe text only; verbatim text never enters the index - *2026-10-03:* Hearing returns everything allowed, ranked, and the asking agent reasons about fit ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-022|Technical Decisions > TDR-022]]). Local embeddings for the website's labels wait until they beat the word list on a blind set - *See:* [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-003|Bug Tracker > BUG-003]] - [x] **Drop scope decision** - 2026-10-01 - *Shipped:* Both. Owner-wide preferences choose all approved connections and a ceiling; legacy requester-scoped drops convert with confirmation - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-011|Technical Decisions > TDR-011]] - [x] **Revocation semantics** - 2026-10-01 - *Shipped:* Withdrawal is permanent and survives reapproval; nothing retracts what was already received - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-013|Technical Decisions > TDR-013]] ## P1 - High (From Prototype to Product) - [~] **Registration ladder** - P1 - *Shipped:* Sign-up through Clerk; OAuth for agents, each agent a row, 2026-10-05 ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-029|Technical Decisions > TDR-029]]); the seeded identities retired 2026-10-07 ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-034|Technical Decisions > TDR-034]]). The enterprise rung is next - *Preview, 2026-10-02:* Per-account IDs and a self-issued MCP token from the dashboard, no sign-in provider yet ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-017|Technical Decisions > TDR-017]]) - *v0.2:* Sign-up and login through Clerk (Google or email); first login creates the user row; a settings page issues that user's MCP token; connection invites by email or handle - *v0.3:* OAuth for MCP clients in place of static tokens, the way Replit's own MCP server works, with the user approving access in a browser - *Enterprise:* SSO and SCIM through the customer's identity provider; a SCIM removal also revokes that user's connections and drops - [x] **Owner review screen** - 2026-10-01 - *Shipped:* The `/owner` dashboard with a six-hour session, showing originals, disclosures, audiences, connection limits, and withdrawal state - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-014|Technical Decisions > TDR-014]] - [x] **Run v0.2 in production** - 2026-10-03 - *Shipped:* Production followed every release from v0.4 on; the app migrates itself at start ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-024|Technical Decisions > TDR-024]]), and v0.6.2 runs at schema 011 - *See:* [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-011|Bug Tracker > BUG-011]] - [ ] **Enterprise SSO through Clerk with Microsoft Entra ID** - P1 - *Goal:* The customer-infra story in one evening; Entra or Okta over OIDC or SAML - *Note:* Replit's free SSO window through Clerk closed October 1, 2026 - [ ] **Anti-inference engine** - P1 - *Goal:* 48-hour release delay, a three-drop minimum per category before anything at category or vibe tier is served, jitter on top, which keeps "something design-related" from being triangulated back to "he mentioned a font on Tuesday" - [x] **Re-run tests in the multi-artifact layout, then republish** - 2026-10-03 - *Shipped:* 97 tests in Agent's rebuild; 85 API, 26 web, and 21 routing tests in the local round of 2026-10-07 - *See:* [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-009|Bug Tracker > BUG-009]] - [x] **Invites** - 2026-10-03 - *Shipped:* A single-use link at a level, shown once and stored as a hash, with a lifetime, a new link for a lost one, and the open links in a person's name closed when I remove them ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-023|Technical Decisions > TDR-023]]) - [x] **The web app from the design handoff** - 2026-10-05, v0.5 - *Shipped:* Whisper a secret, Your secrets with a Silent drawer, Connections at one direction per card, Invite, the home page in two states, the demo, and refusals beside their controls - [x] **An agent gets the web app's guidance** - 2026-10-05, then 2026-10-07 - *Shipped:* `next` in every result, previews that wait for my yes, the account line at connect, `help`, three prompts, and one vocabulary in plain technical English ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-032|Technical Decisions > TDR-032]], [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-035|Technical Decisions > TDR-035]]) - [ ] **Grants and circles** - P1, v0.7 - *Goal:* One-to-many, with circles, per-secret exclusions, and reveal requests, in one migration designed once - *See:* `docs/architecture.md`, section 6 - [ ] **An account page** - P1, v0.7 or a v0.6.3 - *Goal:* My name as Clerk gives it, the sign-in email and whether it is verified, Your agents, sign out, and deleting the account with everything in its name ## P2 - Medium (Field Assets and Reach) - [x] **Teal ember** - 2026-10-07 - *Shipped:* The dark palette from the design handoff, read through semantic tokens ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-037|Technical Decisions > TDR-037]]) - [x] **A domain of my own** - 2026-10-07 - *Shipped:* giftgraph.aleksandar.app on the published app; the account bug it exposed sits at P0 - [x] **The release record** - 2026-10-05 - *Shipped:* The README's Versions section and a git tag per publish ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-031|Technical Decisions > TDR-031]]) - [ ] **A public list behind one link** - P2, pending my call - *Goal:* The live-stream case, one posted link anyone holding it can read, Hints by default, with grants as one more kind of audience - [ ] **The web control for requests by email** - P2 - [ ] **The audit's second half** - P2 - *Goal:* One session gate for the signed-in pages, the radiogroups with arrow keys, the connect sheet's tabs wired to their panels, the dashboard's command state in a hook, and the vestigial columns dropped - [ ] **The twenty-word cap** - P2, pending my call - *Goal:* Raise it, retire it, or enforce it; real secrets ran twenty-five to thirty-five words - [ ] **Gifting through agents** - P2, v0.8 - *Goal:* A buyer's agent buys a secret it may hear and ships it to the holder's address without the buyer ever reading it - [x] **Demo page** - 2026-10-02 - *Shipped:* Theo and Mira, three whispers, four prompts, a reset, in the preview ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-018|Technical Decisions > TDR-018]]) - [ ] **Probe 3 shape, chosen from the Beyond Gifts table** - P2 - *Goal:* Pick the enterprise row to pilot first; support across a wall is the reachable one ([[Project - Gift Graph/Discovery & Planning/Product Plan#Beyond Gifts|Product Plan > Beyond Gifts]]) - [ ] **Replit Skill packaging the SSO setup** - P2 - *Goal:* The "turn field patterns into templates and playbooks" line from the posting, built in Replit's own format and shareable from the repo - [x] **Per-drop editing and tier changes** - 2026-10-01 - *Shipped:* Edits with confirmation; a tier increase previews for five minutes and waits for a second call; decreases apply at once - *See:* [[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-012|Technical Decisions > TDR-012]] - [ ] **Pull history and an activity indicator** - P2 - *Goal:* Let an owner see that a pull happened without revealing the prompt; v0.2 ships neither on purpose, and the asymmetric notification design on the concept page is the starting point - [ ] **Notifications, the owner's dial** - P2 - *Goal:* Push (rare, opt in), passive (the requester's agent simply knows more when asked), or seasonal (a nudge before a birthday, only if enabled) - [ ] **Black-box pen test against the live URL** - P2 - *Goal:* The outside-in result from Replit's Security Center to sit beside the clean static scan - [ ] **Review deck in a separate project** - P2 - *Goal:* The five-slide engineer-review deck from the three docs, built where it cannot touch the live server ## P3 - Nice-to-have - [ ] **Codex as one row** - P3 - *See:* [[Project - Gift Graph/Build & Iterate/Bug Tracker#BUG-024|Bug Tracker > BUG-024]] - [ ] **Email hashes that go stale** - P3 - *Goal:* A re-hash at sign-in when the key or the primary address changes - [x] **Feedback widget, once a human-facing page exists** - 2026-10-02 - *Shipped:* On, with the v0.2 landing page - *Why:* Feedback capture, data, and sentiment analysis are areas I have worked in deeply as a partner to product teams, and the widget is a ready surface for it - [ ] **Automated screen-size checks** - P3 - *Goal:* Replace the three-viewport manual check once pages change often enough to need it ([[Project - Gift Graph/Build & Iterate/Technical Decisions#TDR-020|Technical Decisions > TDR-020]]) - [ ] **PSI-based tombstones for purchases** - P3 - *Goal:* Mark a hint as bought without either side revealing purchase history - [ ] **The business pilot** - P3 - *Goal:* One vendor and one customer support team who already share context badly over email; measure whether tier-reduced context resolves a real ticket faster than the wall did ([[Project - Gift Graph/Discovery & Planning/Product Plan|Product Plan]])