0.2.0
tagged this
25 Jul 14:49
The engine side of Council 1.2. - Guest seat: a pasted external answer joins a round under a reserved id and is blind-reviewed as one more anonymous advisor. It never calls a model, so it never rebuts; one real advisor plus a guest is a council of two. - Selective deliberation: Round.includedSeatIDs picks which answers enter peer review / divergence / synthesis; changing it invalidates stale analysis. - Neutral chair: an out-of-band seat that authors divergence and synthesis and closes a debate with a summary, without answering the question. If it can't run, an advisor stands in and the round says so rather than failing. - Outcome reminders: Session.remindAt + dueReminders, and a journal that can be searched, filtered to open loops, and exported on its own. - Keychain generations: ad-hoc builds can't read the previous build's items, so items are namespaced and the app suppresses macOS's own password dialogs; stale keys are detected silently and re-asked once, in-app. - Stall watchdog: a backend that goes quiet no longer holds the whole round. A slow one that keeps streaming is never cut off. - Divergence and its verdict come back in one call on frontier backends, and fall back to the separate judge call everywhere else. - Attachments are kept on the round (size-capped), so Regenerate re-asks the same question instead of refusing. - De-anonymization tolerates the label spellings models actually produce. 37 tests.