Synthesize
You are writing the synthesis that closes an inquiry. This is the moment the isolation invariant releases: read every submitted exploration, reconcile them against the framing, and produce the inquiry's resolved take.
Before writing — verify the barrier has released
- Ask the user for the inquiry id if not given.
- Call
vault_searchwithtype: inquiryto locate it, orvault_edgeson the id. - Check status:
open→ do not synthesize. The inquiry owner needs to transition it toready_for_synthesis(after verifying the barrier condition) before synthesis is legitimate. Tell the user and stop.ready_for_synthesis→ proceed.resolved→ a synthesis already exists; offer to read it instead.abandoned→ the inquiry was explicitly set aside; do not synthesize.
- List all explorations under
inquiries/<id>/explorations/. Group by status:submitted→ included in synthesiswithdrawn→ mention in synthesis (explain why they were withdrawn if the author noted it), but do not weigh their contentdraft→ problem. The inquiry should not be inready_for_synthesiswhile any participant is still in draft. Flag to the user and stop unless they explicitly confirm.
Frontmatter shape (synthesis.md)
---
id: <inquiry-id>-synthesis
type: synthesis
status: draft # transitions to accepted on sign-off
author: <who wrote it>
inquiry: <inquiry-id>
created: <YYYY-MM-DD>
cites: [<exploration-id>, <exploration-id>, ...]
---
cites: must include every submitted exploration (not the
withdrawn ones). The synthesis is accountable to each one — it
doesn't have to agree, but it must engage.
Filename
Write to inquiries/<inquiry-id>/synthesis.md.
Body
A synthesis is not a tournament bracket. Structure:
- The resolved take. Lead with the answer — what the inquiry concludes, in a paragraph. A reader who stops here knows where the inquiry landed.
- How the explorations lined up. For each submitted exploration, one paragraph: what it argued, where it agreed with others, where it diverged. Cite by id.
- Where the synthesis differs from each. The take isn't any one exploration — say where it borrows, where it rejects, where it goes beyond. Be specific; if the synthesis matches one exploration wholesale, ask whether the inquiry was actually needed.
- Withdrawn or absent voices. Name explorations that were withdrawn and why. Name participants who never submitted. The synthesis should make the gaps visible, not paper over them.
- What this resolves — and what it doesn't. Explicitly close the inquiry's question. Note any follow-on problems that the inquiry surfaced and couldn't resolve — those may warrant new briefs or inquiries.
Quote sparingly. The explorations are in the vault; reference them rather than excerpt.
Drafting workflow
- Verify the barrier has released (above). Abort if not.
- Read every
submittedexploration. Take notes — this step is irreversible; you'll have read them whether you commit or not. - Draft the synthesis. Start with the resolved take, then fill in the exploration-by-exploration discussion.
- Propose frontmatter + body as a diff.
- Write on approval.
- Commit:
git add inquiries/<id>/synthesis.md && git commit -m "Synthesize: <one-line>".
After the synthesis
- Offer to transition the inquiry from
ready_for_synthesis→resolved. Invokevault_check_transitionon the inquiry id withnew_status: resolvedto check for blockers. - On transition, update the inquiry's frontmatter:
status: resolved,closed: <today>. Commit. - If the synthesis points at follow-up artifacts (new problem brief, new inquiry, a design brief to pursue), name them as candidate next steps for the user — do not auto-draft them.
Do not
- Do not synthesize an
openinquiry. The isolation invariant depends on the barrier being explicit. - Do not produce a synthesis that is identical to one of the explorations. If that's the outcome, the inquiry didn't need parallel exploration — note that honestly.
- Do not silently drop withdrawn explorations from the narrative. Their withdrawal is itself information.