Adds the deliberation primitive: a panel of lens-prompted architect agents writes positions on a topic, a synthesizer merges into a verdict (FOLLOW / ITERATE / ALTERNATIVE / NEED-MORE-INPUT), persisted as queryable graph nodes plus optional ADR. Major version bump reflects scope; every change is strictly additive.
Highlights
Three new preserved node types survive reparse:
- `Deliberation { id, topic, projectIds[], mode, status, synthesisVerdict?, ts, ... }` — `projectIds` is an array; cross-project deliberations are first-class.
- `Position { id, deliberationId, role, content, claims[], evidence[], counterArgs[], status: 'asserted' | 'abstained', ... }` — structured claim/evidence/counter-arg artifact (MetaGPT-style), guards against dominant-voice anchoring.
- `Verdict { id, deliberationId, verdict, rationale, ts, recordedIn?, ... }`
Edges: `HAS_POSITION`, `RESULTED_IN`, `ABOUT`, `SCOPED_TO` (fans out for multi-project), `CITES` (cross-project safe via global unique node IDs). Future-proofing: `SUPERSEDES`, `CITED_BY`, `RESPONDS_TO`, `CONTRADICTS` defined but populated lazily.
Deliberation JSONL ingestor — new `src/ingestors/deliberate/` package + `ingest_deliberate_session` MCP tool (one-shot + watch modes). Watch mode debounces ~500ms and re-runs idempotent MERGEs.
ADR writer — `src/utils/adr-writer.ts` writes ADRs to `~/develop/decisions/NNNN-.md` only for `ALTERNATIVE` / `NEED-MORE-INPUT` verdicts. Keeps the decisions/ dir signal-dense.
`/deliberate` skill at `~/.claude/skills/deliberate/` — user-invokable. Spawns architect agent three times in parallel with pragmatist/perfectionist/operations lens prompts (anti-flip clauses per CAMEL findings; `ABSTAIN-NO-UNIQUE-POSITION` as a valid output), collects structured Positions, runs synth pass, persists.
Cursordiff deliberation viewer (separate cursordiff.nvim repo) — fs-watches the same `deliberation.jsonl`, renders a jury-dashboard floating window. `:CursorDiffDeliberation [id]` user command.
Why this matters
The deliberation layer closes a quality loop on the reasoning process, mirroring how v4.2.0's lineage closes it on agent output. Combined with v4.4.0's QueryOutcome, the substrate now captures user judgment on three independent axes (Decision / QueryOutcome / Verdict). Cross-project deliberations are first-class.
Breaking changes
None. Major bump reflects scope, not compatibility.
Deferred to follow-ups
- Mandatory baseline comparison (single-agent four-lens self-critique vs multi-agent panel) — recommended evaluation work, not blocking ship.
- Rounds mode (`--rounds N` back-and-forth dialogue) and auto-fire on architect-ALTERNATIVE — v2.
See `CHANGELOG.md` for full per-change detail.