@medicine-wheel/brainstorming
v0.5.8
Published
Idea into committed design through approval gates a human holds. Every outcome it emits — including its own multiple-choice questions — passes the orientation question before it is spoken. Brainstorming, ideation, requirements gathering, design review.
Readme
@medicine-wheel/brainstorming
Idea into committed design, through approval gates a human holds. Ideation, requirements gathering, design review — the convergent half of creative problem solving.
Every outcome this package emits passes one question before it is spoken — including its own multiple-choice options:
Is there a prior state you are restoring?
Yes. The option is describing a repair, and
@medicine-wheel/gap-analysis
is the instrument for it.
No. Then an option phrased as removing something is aiming at a list of known failures rather than at the state you want — and the moment of speaking is the only point where that is still catchable, because once a human selects it, it stops looking like the agent's proposal and starts looking like the requirement.
[!WARNING] Experimental alpha. Part of the Medicine Wheel Developer Suite, which is under active development. APIs change between patch versions and all packages move in lockstep — pin exact versions. See ALPHA.md.
Why it exists
Convergence has a shape: read the ground, ask one question at a time, offer two or three approaches with trade-offs, present the design in sections each approved before the next, write the spec, let the human read it, then plan. This package holds that shape as data rather than as advice, so it cannot be forgotten under load.
The part that matters
It routes every outcome statement it emits through
@medicine-wheel/creative-orientation — including its own questions.
That is not decoration. An outcome phrased as elimination inside a multiple-choice option becomes the human's selected answer, and from that moment it stops looking like the agent's bias and starts looking like a requirement. The moment of speaking is the only point where that is still catchable.
import { openSession, checkOptions, ask, suspendedOn, advance } from '@medicine-wheel/brainstorming';
const session = openSession('every cross-repository change arrives verified against its consumers');
checkOptions(session, [
'Catch cross-service contract breaks',
'Every change arrives already verified',
]);
// → one finding, on the first option: phrased as removing something,
// while nothing is being restored.Gates are suspended states, not pauses
ask() suspends the session on a question. advance() refuses while a gate
is unanswered.
This is the one place refusal is correct. Everywhere else in this suite a check advises and lets the caller proceed — but a gate is a question addressed to a person, and answering it on their behalf is not a shortcut. It is a substitution.
const waiting = ask(session, 'thin convention, or a framework?');
suspendedOn(waiting); // the gate, holding
advance(waiting); // throws — the question belongs to someone elsePhases
explore → clarify → approaches → design → spec → review → plan
Four of them are gated: clarify, approaches, design, review. Those are
the points where a half-finished creative process waits for its human — and
where, today, we still have nowhere good to put that suspended state when the
connection drops.
Where it sits
creative-orientation ......... the gate
├── gap-analysis ......... the fire path
└── structural-tension ... the advancing path
brainstorming ................ calls the gate on everything it saysStatus
First release. The protocol is expressed; the surface for holding a suspended session across a dropped connection is not solved here and is named as open.
License
MIT
