# Gift Graph Research Inventory
Every row is checked against v0.7.4, where an Idea is a Hint with an optional Secret and each Connection hears Secrets or Hints.
The repo's `docs/research/inventory.md` is canonical, and this note mirrors it.
## Disclosure and information flow
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Consent-gated context between agents | A sliver of context lent at an agreed depth, and revocable | The product; v0.1 left the batcher, PSI tombstones, the owner review screen, and SSO for later | adopted |
| Denning's lattice | Levels in a lattice, where a move down is declassification | A hearer gets the stricter of the cap and the depth, and a widening previews | adopted |
| Saltzer and Schroeder | Separation of privilege and least privilege | A Secret needs the cap and the depth both; new Connections lead with Hints | adopted |
| Quantitative information flow | A finite vocabulary bounds what a label reveals | 64 kinds; the Hint line is the one open channel, and the server checks it | adopted |
| k-anonymity and the batcher | A release waits for k items, a delay, and jitter | 48 hours and three Ideas, set per domain; unbuilt | pending |
| Reconstruction attacks | Enough accurate answers rebuild a secret, the Fundamental Law of Information Recovery | Budgets on Ask and Act, and canonical guesses for any game | considered |
| A refusal is an answer | A denial must read the same for every guess | No ref for an unheard Idea, and one answer to an email request | adopted |
| The data-processing inequality | A function of a projection reveals no more than the projection | `hear` returns all the asker may hear, ranked over heard text alone | adopted |
| Where the guarantee lives | The server withholds, and no hearer's agent is trusted with discretion | Surprise-safe went; the fishing test of 2026-09-30 found nothing for "Söhne" | adopted |
| Heard stays heard, with no record | A narrowing recalls nothing, and the owner never learns what was heard | Live consent on every hear, and the line at the foot of Ideas | adopted |
| Sealed fields | AES-256-GCM, one key, a context per field | The address and the birthday; a Secret's own row, split additively, waits | adopted |
## Ideas, depth, and sharing
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| An Idea is a Hint with an optional Secret | The Secret exists only when there is a thing to protect | `whisper` takes `hint` first (017), from Justin's camping case (2026-10-16) and my framing (2026-10-18) | adopted |
| Depth on the Connection | Secrets or Hints per person, and Pause is the nothing | The only level control, on the Connection row | adopted |
| The disclosure rule | First match wins, from hushed to the rule | `disclosure()`, and `hears` with a `why` | adopted |
| Hint only | A cap that keeps a Secret from everyone, heir to the v0.2 ceiling | `hintOnly`, with `level` accepted one more release; the lock or the gift on a tile; Revoke the Secret | adopted |
| The one-off share | One Idea, one person, a depth of its own, a capability | Stored only as a difference; a removal clears the person's shares | adopted |
| An Idea tagged for a person | A plan for someone, kept Unshared | `for`, heard by no one, that person included | adopted |
| Unshared | The one word for an Idea no one hears | Unshare on the pages, `hush_secret` in the API | adopted |
| Social penetration and granularity | Depth follows closeness, and people share useful detail or nothing | Two heard forms and depth per person | adopted |
| Google Docs, calendars, and Close Friends | A level per person, and one mark for the inner group | No level on an Idea; teal marks the people who hear Secrets | adopted |
| Grants and circles | One record of who may do what, absorbing `sharing_mode` | Shares and asks first (014); circles a beta behind a server flag | adapted |
| The old ladders | Four tiers, then Secret · Hint · Silent, the old model | Category leaked the ham, and Silent left on 2026-10-18 | rejected |
## Consent and the preview
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| The preview and the second call | A widening waits for a `confirmationId`, and a narrowing applies at once | Every widening (2026-10-01, framed on Denning 2026-10-03) | adopted |
| The request is the yes | A request for a change confirms it | The agent confirms after the preview and asks first when the preview reaches further | adopted |
| `show` | The preview lines an agent shows as written | Idea first, a For line, the Secret and the Hint, and No one | adopted |
| The notice | Waiting on you · Since last time, said first | Any result with something waiting, IDs included | adopted |
| Who hears what, and why | Facebook settings matched intent 37 percent of the time | `hears` and `why`, and the readout in the sheet | adopted |
| A control sits with what it changes | One surface, one question, and a refusal at its field | Depth on the row, an Idea on its tile | adopted |
| One way, with no level in a request | Each direction its own yes, the depth set at approval (2026-10-09) | `reverse` offers to ask back | adopted |
| Invites and Ask by email | A named single-use link, and a keyed email hash with one answer | A stale hash after a key change sits in the backlog | adopted |
| Ask to hear | A request that waits for a yes, after Ask to Buy, three a day | `ask_to_hear`; Not now tells the asker nothing | adopted |
| The founder connection | Every new account hears the founder at Hint, one way | The Founder tag; an offer form waits | adopted |
## Hints, labels, and play
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| A versioned public vocabulary | Kinds at a shop department's grain, after Etsy's buyer list, audited on blind sets | `gifts-v2`, 64 kinds with "home" (2026-10-19) | adopted |
| The agent picks the label | The server suggests and checks | Up to two on the wire, one in the sheet | adopted |
| The overlap check | A Hint line on feeling, origin, and occasion | Refuses the Secret's distinctive words and any number | adopted |
| No inferred summaries | The server writes no Hint | Agent's choice where the spec was open; a server drafter and embeddings wait behind a flag | adopted |
| Sensitive kinds | Purchase categories predict gender and diabetes | Health, intimacy, religion, and money left out; the handoff's and memo 1's sensitive flag waits | adapted |
| Question games and oracles | Twenty Questions, Wordle, Knuth's Mastermind, hot and cold, trilateration | A hearer's agent plays to win, and answers stop at the kind | considered |
| Progressive disclosure and choice overload | Two steps at most, and more options slow the choice | Two heard forms since 2026-10-03 | adopted |
| Play, a middle level, and a cap | Options A to D for play, a derived middle level, and a Secret of one breath | All open; the form takes 10,000 characters | pending |
| Surprise-safe | A plea to the hearer's agent | Retired 2026-10-03; its need moved to Act | rejected |
## Agents and the protocol
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Stateless Streamable HTTP | A fresh server per request, with state in Postgres | Autoscale over Reserved VM; a first connect and hear from 319 to 153 ms | adopted |
| MCP 2026-07-28 | Instructions moved to `server/discover` | A legacy server on purpose; SDK 2 waits | pending |
| Instruction limits | 2,048 characters in Claude Code, 512 in Codex | Short instructions; the Claude apps and ChatGPT unconfirmed | adopted |
| OAuth for agents | RFC 9728, 8414, 7591, 8707, and PKCE | Gift Graph's own server, since Replit runs Clerk; Client ID Metadata Documents next | adopted |
| `help`, the prompts, and `next` | The flows as data, in ASD-STE100 | Five prompts, `whats-waiting` the newest, and a page at `/mcp` | adopted |
| The judge | Scenario runs scored 0 to 2 | S1 to S7 and P1 to P13; a privacy 0 stops a release | adopted |
| The name check | A Connection named without `for` gets a question | First names match, and the save goes ahead | adopted |
| Tool grouping | 21 tools cost about 3,240 tokens a connect | Fifteen tools; more grouping waits | adapted |
| Agent Skills | A folder loaded by name until it triggers | `skills/gift-graph`, with the weekly routine | adopted |
| Plugins and SEP-2640 | Manifests, and skills served over MCP | Held for the skill text and a public repo with the origin story reworded; Claude support for Agent Plugins unconfirmed | pending |
| The avoid list | `.mcpb`, tokens in plugins, a server that schedules, long instructions | Held | adopted |
| Routines that only read | The host schedules on a yes | `whats-coming-up`, with `list_connections` and `hear` only | adopted |
| Agents and clients | One row per agent, with Muse, Claude, Claude Code, and Codex | Codex matched by name and host (2026-10-08); Muse shaped `help` | adopted |
## Build and operations
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Identity from the credential | The caller read from the credential alone, and codes kept as hashes | Every request; Clerk sign-ups only since 2026-10-07 | adopted |
| Clerk under Replit | No OAuth setup, and names behind Pro | One account per Clerk user, over a host map; the name set on Your Profile | adapted |
| The plan gate | A plan in `replit.md` waits for a yes | Bent once, on revise text that opened "Approved" | adopted |
| Replit Publish and AI Integrations | A schema review each publish, and a judge on credits | A self-migrating start; gpt-5.4 judges, cross-family independence unknown | adapted |
| Neon and the local build | A production branch in seconds, and Claude Code in WSL | Rehearsals; the token-rich side does the token-heavy work | adopted |
| Schema parity | Fresh and migrated databases compared | Born of BUG-026, which failed every production whisper from v0.6.2 | adopted |
| The release record and the audit | A date and a tag per version, and plain wins in one pass | The version at connect; the audit's second half waits | adopted |
| The isolated demo | A fixed story on the shared pure function, with no API call | `/demo`, rebuilt 2026-10-19; Mira, Theo, and Cal in every mock and test | adopted |
| The three probes | One pair, a circle, then a vendor | Probe 1 with Justin since 2026-10-05 | adopted |
## Words
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Gift Graph speaks in hearing | Whisper, carry, hear | Every line; the v0.1 `drop` and `pull` became `whisper` and `hear` on 2026-10-07 | adopted |
| Idea, Hint, Secret, Connection | Four nouns, capitalised since 2026-10-19 | Idea became the object on 2026-10-17, the evening "details" became Secret | adapted |
| Depth words over trust words | Hears Secrets, hears Hints | Trust words cut | adopted |
| Front stage and back stage | Goffman, and Twitter Circle, 2022 to 2023 | The Hint in front, the Secret behind | adopted |
| Contextual integrity and banned words | A flow that fits its context | Rules in a friend's terms; a test fails if ceiling, verbatim, tier, or drop reaches a page | adopted |
| Product words over plan words | Share over grant, ask over reveal | Unshare on the pages, hush in the API | adopted |
| Wish and proximity rings | Gift-native names, and Confidant · Close · Far, my favourite | Wish strains on a gift for someone else; the rings saved for circles | rejected |
| The handoff's terms | Reach, hearing level, exception, lane, travels | Now `hintOnly`, `level`, the share, and one-way Connections; travels cut | adapted |
| The mantra | "Share the hint, keep the secret." | Each Product Log entry, and the home headline | adopted |
## Pages and the look
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Airbnb's cordoned views | One view per activity | Ideas and Connections as folder tabs (2026-10-19) | adapted |
| Teal and ember | Teal for the Secret, ember for the Hint | Dark from 2026-10-07, Light since 2026-10-19 | adopted |
| Radix, OKLCH, and WCAG | Scales by role around chosen anchors | AA for every text pair on Light | adapted |
| Glyphs, tags, and rings | Gift, bulb, lock, muted speaker, twin spark, and a ring only on a button | Secret, Hint, Unshared Secret, Unshared, Idea; the gift-box set and the stack retired | adopted |
## Domains beyond gifts
| Name | What it is | Where Gift Graph uses it | Status |
| --- | --- | --- | --- |
| Hear, Ask, Act, and Mark | Four operations, with PSI and tombstones for marks | Hear and Ask live; Act and Mark wait for an executor | adapted |
| The confused deputy and address-blind delivery | Act goes to an executor, and a merchant ships blind | Gifts through agents, scoped for v0.8; the sealed address is ready | pending |
| Domains as configuration | A new domain as rows and a vocabulary | The tools took the pages' words on 2026-10-07; nothing built | pending |
| Need to know beyond gifts | A coach agent, milestone gifts, performance reviews | One backlog item; personas beyond the pair open | pending |
| Links and affiliate paths | Skimlinks, Associates, and Shopify Catalog | Opt-in, off by default, disclosed, heard with the Secret, and never swapped for a better-paying product | pending |
| Friction people value | Wanted friction, and delight between agents | Stances only | considered |
## Sources
- **Information flow** · Denning, CACM, 1976, added from memory · Saltzer and Schroeder, 1975 · Smith, FoSSaCS 2009 · Samarati and Sweeney, SRI, 1998 · Dinur and Nissim, PODS 2003 · Dwork and Roth, 2014 · Rahimian, Orekondy, Fritz, https://arxiv.org/abs/2009.00395 · Canfora and Cavallo, 2009 · Birgisson et al., NDSS 2014
- **People and disclosure** · Altman and Taylor, 1973 · Consolvo et al., CHI 2005 · Tang et al., Ubicomp 2010 · Benisch et al., 2011 · Liu et al., IMC 2011 · Korff and Böhme, SOUPS 2014 · Knijnenburg, Kobsa, Jin, CHI 2013 · Thayer et al., CSCW 2012 · Nissenbaum, 2004 · Goffman, 1959
- **Play and labels** · Knuth, 1976, added from memory · Bischoff, Scientific American, 2023 · https://ccl.northwestern.edu/papers/treasureworld/treasure.html · https://arxiv.org/abs/1604.07850 · Aron et al., 1997 · Nielsen, 2006 · https://arxiv.org/abs/2502.18774
- **Protocol** · https://modelcontextprotocol.io/specification/2026-07-28/changelog · https://modelcontextprotocol.io/seps/2640-skills-extension · RFC 9728, 8414, 7591, 8707, and 7636 · agentskills.io · https://code.claude.com/docs/en/mcp · https://learn.chatgpt.com/docs/extend/mcp · https://claude.com/docs/plugins/platform-support
- **Repo and vault** · `docs/platform-direction.md`, the memos in `docs/research/`, `docs/vocabulary-audit.md`, `docs/handoff/`, `docs/architecture.md`, `docs/technical-decisions.md`, `docs/build-log.md`, and the vault's Technical Decisions and Product Plan
The docs cite nothing for the data-processing inequality, object capabilities, l-diversity, Yao's problem, AES-256-GCM, ASD-STE100, Radix, OKLCH, WCAG, or Client ID Metadata Documents. Five PDFs did not parse, two pages were blocked, no study counts the levels people set correctly, and the bit counts are the agent's inference.