docHub bootstrap
A Mavis (or operator) waking up in a new session and needing to get up to speed fast.
TL;DR
- Fetch
_meta/bootstrap.json— single call, full state snapshot. - Read this README — orientation (5 minutes).
- Read the doctrine section — only the parts relevant to your lane.
- Read the recent reports — what happened in the last 48 hours.
- Look at
dangerous/— what's known to be unsafe. - Check
open-questions.md— what the operator is waiting on.
If you only have 60 seconds, just fetch _meta/bootstrap.json. That alone tells you where things are.
Read order (full bootstrap, ~15 minutes)
| Step | What | Why |
|---|---|---|
| 1 | bootstrap/_meta/bootstrap.json | Machine-readable state snapshot |
| 2 | bootstrap/README.md (this file) | Orientation |
| 3 | bootstrap/lane-map.md | Who owns what, how to reach them |
| 4 | bootstrap/mavis-protocols.md | How Mavises coordinate |
| 5 | bootstrap/open-questions.md | Operator's waiting list |
| 6 | decisions/D-056..D-062 | Constitutional decisions (skim) |
| 7 | dangerous/ | Known-bad patterns (must read before destructive ops) |
| 8 | doctrine/fvw-v8.md + relevant doctrine | Per-lane doctrine |
| 9 | Recent reports/ (last 3-5) | What's been happening |
| 10 | plans/phase-N-current.md | What's being built |
After step 1, you can skip steps 2-5 if your task is bounded. For destructive work, step 7 is mandatory. For cross-session coordination, step 3 + 4 are mandatory.
The substrate contract
docHub is a doc-substrate (D-060). It mirrors FreshCards' workspace-substrate shape with two extensions:
type: "doc-substrate"(vs FreshCards'"workspace-substrate")faces: { user, dev, mavis }— the three-audience split (peruser/concepts/three-faces.md)
If you know how to consume a FreshCards substrate, you know how to consume docHub. Read the canonical module.json at the repo root.
The three faces
| Face | Path | Audience | Auth |
|---|---|---|---|
user | user/ | End-users of FVS apps | Public (no auth) |
dev | dev/ | Operator, AI agents | Cloudflare Access (email allowlist) |
mavis | mavis/ | Operator, Helper Mavis, lane Mavises | Cloudflare Access (email allowlist) |
Dev face is where you work (doctrine). Reports, decisions, plans, doctrine, dangerous lessons, lane maps — all in dev/. Auth-gated so it doesn't leak.
Mavis face is where we coordinate. Lanes, prompts, plans, internal reports, Mavis-specific dangerous lessons, the operator's waiting-on list — all in mavis/. Same Cloudflare Access as dev, but the content is Mavis-team-only.
User face is what FVS apps embed. The web component, the JSON manifest, the project pages — all in user/. Public so any FVS app can pull it without a key.
Memory vs docHub
Memory is cross-session recall. docHub is the long-term work surface. Differences:
| Aspect | Memory | docHub |
|---|---|---|
| Scope | One agent, all projects | Project-scoped, deep |
| Lifetime | Until eviction | Permanent (until archived) |
| Use | "What did I do last session?" | "What was decided and why?" |
| Format | Free-form | Frontmatter + structured body |
| Cross-Mavis | No | Yes (lane attribution in every doc) |
Memory is for fast recall. docHub is for work product. If a Mavis discovers something in a session, the durable home is docHub, not memory.
Open questions for a new Mavis
Before starting any task, ask:
- What lane am I? (helper / cards / chrome / fvre / doctrine / operator)
- Is the relevant plan still active? Check
plans/. - Are there recent reports that change the plan? Check
reports/. - Is this destructive work? If yes, read
dangerous/first. - Am I about to violate a known decision? Skim
decisions/D-056..D-062.
If any of these is "I don't know" — stop, fetch bootstrap.json, find out.
The single most important rule
Before you do anything destructive, read dangerous/. Every Mavis that has caused damage in the past did so by skipping this step. The case-variant-dup incident on 2026-06-22 is the canonical example. The fix is the protocol in dangerous/destructive-ops-checklist.md.
Read it. Every session. Every time. Non-negotiable.