Socrates
Details
Socrates orchestrates four sub-skills: wonder, reflect, refine, and restate. It does not rewrite their internals; it calls them in order and checks whether the Seed is closed.
Scratch Contract
Use .symposium/scratch/socrates.md.
Cycles accumulate:
## User Input
<original request>
## Cycle 1
### Wonder
...
### Reflect
...
### Refine
shared meaning: ...
### Restate
goal: ...
The canonical latest Seed is always a top-level section:
## Seed
> Source: /socrates Cycle N
```yaml
goal: ...
constraints:
- ...
acceptance_criteria:
- ...
```
Replace the top-level ## Seed section on each closed Seed. Do not append multiple canonical Seeds.
Seed Gate
After each cycle, check:
goal: current cycle's### Restatehas one goal.constraints: at least one user-stated constraint or boundary exists.acceptance_criteria: at least one verifiable criterion exists.
If all three are filled and the user says the current goal is not materially different from the previous cycle's goal, stop.
If a slot is empty, narrow the next Wonder question toward that slot:
- Missing goal: "What result do you actually want from this request?"
- Missing constraints: "What must not happen, or what boundary must not be crossed?"
- Missing acceptance criteria: "How will you know this result is good enough?"
Ask narrowed questions as multiple choice when possible. Provide 3 plausible options and one Other / edit in your own words option. The options are only scaffolding; do not fill Seed slots unless the user selects, confirms, or writes the content.
Do not fill empty slots by guessing.
Safety Valve
Maximum 5 cycles. If a slot is still missing after 5 cycles, write empty for that slot and stop.
Output
The final output is the top-level ## Seed YAML block.