Scope & Promotion
Private by Default
Everything you and your agents learn is private to you. Your projects, your memories, your discoveries — nobody else sees them unless you explicitly choose to share.
The current system scopes memories by userId and projectId. The target architecture extends this into a three-level hierarchy:
- Project scope — specific to one project. “This app uses Tailwind 4.”
- User scope — shared across all your projects. “I prefer TypeScript.”
- Hive scope — shared with the whole team. “We deploy to DigitalOcean.”
Each level would inherit from the one above. When your agent is working on a project, it could read project memories, your user memories, and hive memories — but only write to the project or user level.
Domains — Cross-Cutting Organisation
Knowledge doesn’t fit neatly into a hierarchy. A pricing decision spans business and engineering. A deployment pattern spans engineering and marketing (for landing pages). So in the planned design, domains are tags, not scope levels.
Each domain would have a steward — someone who reviews promoted content for that area. Stewards advise, they don’t gate. A memory can belong to multiple domains.
- business — pricing, fundraising, strategy
- product — features, UX, user research
- engineering — stack, infra, patterns
- marketing — content, positioning, growth
The Promotion Bridge
Moving knowledge from user scope to hive scope would be treated as a security boundary. The planned design uses two isolated memory systems with a carefully controlled bridge. None of this is implemented yet — it describes the target architecture.
- Candidate emerges — a memory is validated by 2 or more distinct users (not just reused by one person). High-sensitivity memories are ineligible.
- User notification — the originating user is notified: “A learning from your session is being considered for sharing.” They can approve, reject, or edit.
- Source-blind review — the domain steward sees the memory without attribution. Is this generic enough to share? An adversarial LLM check screens for harmful or misleading content.
- Promotion — the memory enters hive scope. Attribution is stripped (replaced with a system identifier). Domain tags are assigned.
- Retroactive withdrawal — you can view and withdraw your promoted memories at any time. Downstream briefings regenerate.
Technical Detail — Scope Hierarchy
hive (global)
└── user_alice
├── project_alpha
└── project_beta
└── user_bob
└── project_gamma
Read inherits down. Write to own scope only. Promotion requires review.
The planned promotion queue would use a separate Convex table:
// promotionCandidates table — planned, not yet implemented
{
source_fact: Id<"facts">,
status: "pending" | "approved" | "rejected" | "withdrawn",
distinct_user_validations: number, // must be >= 2
sensitivity_check: "pass" | "flagged",
adversarial_check: "pass" | "flagged" | "pending",
originator_consent: "approved" | "rejected" | "pending",
reviewer: Id<"users"> | null, // domain steward
}
Why domains aren’t a scope layer: a founder owns business AND product. A project spans marketing AND engineering. Forcing domains into a hierarchy creates artificial single-parent assignments. Tags with stewards handles reality.