πŸ—ΊοΈ Delibera β€” Multi-Version Roadmap

Current stable: 10.5.1
Active branch: feat/v10.5.1
Document date: October 2026
Versioning: NET_MAJOR.FEATURE.PATCH β€” first digit matches the target .NET runtime (10 = .NET 10, 11 = .NET 11). Breaking changes are allowed at .NET-major boundaries only.

Note on 10.5.1. This release carried six features in a PATCH slot, which does not match the convention above β€” FEATURE work normally lands in a FEATURE version. It was chosen deliberately, and the no-breaking-change rule is what keeps the SemVer contract consumers depend on intact. The features originally planned for 10.4.0 and 10.5.0 therefore all shipped in 10.5.1, which is why both of those rows below read as released.


πŸ“‹ Version Overview#

Version Theme Key Deliverables Status
10.2.6 Feature Bundle F-01 Streaming, F-02 Voting, F-03 Persistence, F-04 Memory, F-05 Structured Output, F-07 Templates, F-08 OpenTelemetry, F-09 Adaptive Strategy, F-10 Quick Wins βœ… Released
10.2.7 Multi-Modal F-06 Vision + Document Attachments βœ… Released
10.3.0 Platform Release Breaking-change cleanup, Distributed Debates, Result Caching, Delibera.Server, Delibera.Redis βœ… Released
10.4.0 Measured Round SSE defect fixes, context compression wired up, correctness pass β€” 9 defects fixed βœ… Released
10.5.0 Scale & Reliability Measured round published; W2-15 index duplication measured but not yet fixed βœ… Released
10.5.1 Close the Loop Tool use (#14), debate diff (#15), CLI (#16), cost gates (#18), gRPC (#11), NuGet GA (#13), W2-15 fixed, W2-16 documented βœ… Released
10.6.0 Harden the Edges Vector pruning (filter-delete on IVectorStore), bounded round channels (W4-10), W2-13/W2-14 product decisions πŸ”· Planned
11.0.0 .NET 11 Migration Target .NET 11, C# 14 idioms, performance tuning for new runtime πŸ”Ά Future (.NET 11 GA)

βœ… v10.2.6 β€” Feature Bundle#

Theme: Core debate engine β€” streaming, voting, memory, observability, and DX

Released 2026-07-06. Nine features in one coordinated release (F-06 deferred to v10.2.7).

F-01 Β· Async Streaming Council#

IAsyncEnumerable<DebateRound> StreamDebateAsync(CancellationToken) on ICouncilExecutor.
DebateRound gains Total, Duration, IsFinal. ExecuteAsync() backward-compatible.
Example: StreamingCouncilExample.cs

F-02 Β· Pluggable Vote / Consensus Engine#

IVotingStrategy + MajorityVotingStrategy, BordaCountStrategy, WeightedVotingStrategy.
Chairman.CreateVoting(IVotingStrategy) factory. DebateResult.VotingTally.
Example: VotingExample.cs

F-03 Β· Debate Persistence & Resume#

IDebateStore, FileDebateStore (atomic JSON write-then-rename), InMemoryDebateStore.
CouncilBuilder.WithPersistence(IDebateStore) + .ResumeFrom(debateId). DebateResult.DebateId.
Example: PersistenceExample.cs

F-04 Β· Agent Memory & Long-Term Context#

IAgentMemory β€” StoreAsync / RecallAsync / DeleteAsync.
Built-in: InMemoryAgentMemory, QdrantAgentMemory, PgVectorAgentMemory.
CouncilBuilder.WithAgentMemory(IAgentMemory).
Example: AgentMemoryExample.cs

F-05 Β· Structured Output / JSON Schema Enforcement#

ICouncilExecutor.ExecuteTypedAsync<T>() + CouncilBuilder.WithStructuredOutput<T>().
JsonSchemaOutputSerializer with automatic retry on deserialization failure.
Example: StructuredOutputExample.cs

F-07 Β· Debate Templates & Presets Library#

DebateTemplate static class β€” ArchitectureReview, RiskAssessment, CodeReview, ProductDecision, SecurityAudit, DataArchitecture + Custom() escape hatch.
Example: TemplatesExample.cs

F-08 Β· OpenTelemetry Observability#

DeliberaActivitySource + DeliberaMeter + DeliberaTelemetry facade.
Spans: CouncilExecute, CouncilRound, MemberRespond, RagQuery, Compression, OperatorExecute, ChairmanSynthesize, ChairmanOpen, PersistenceSaveCheckpoint, PersistenceLoadCheckpoint.
Metrics: DebateDuration, RoundDuration, TokensTotal, DebatesCompleted, CompressionRatio.
CouncilBuilder.WithTelemetry(TelemetryOptions).
Example: TelemetryExample.cs

F-09 Β· Dynamic Strategy Switching#

IStrategySelector with SelectNextAsync(DebateProgress, CancellationToken).
Built-in: AdaptiveStrategySelector (stalemate β†’ escalate). DebateRound.StrategyUsed audit trail.
Example: AdaptiveStrategyExample.cs

F-10 Β· Quick Wins Bundle#

Feature Description
F-10a HTML Export DebateResult.ToHtml() / SaveToHtmlAsync() β€” Dark/Light themes, collapsible rounds, embedded CSS
F-10b WithTimeout(TimeSpan) CouncilBuilder.WithTimeout(TimeSpan) β€” internal CancellationTokenSource linked to caller's token
F-10c Persona Presets Persona static class β€” Expert, DevilsAdvocate, CautiousOptimist, DataDrivenAnalyst, RiskManager, Pragmatist
F-10d Benchmark Mode CouncilBenchmark β€” AddConfiguration, WithQuestion, RunAsync() β†’ BenchmarkReport.SaveComparisonAsync()
β€” CouncilBuilder.WithParticipantLimit(int) β€” guard misconfiguration

βœ… v10.2.7 β€” Multi-Modal#

Theme: Bring images, diagrams, and documents into the debate

Released 2026-07-07.

F-06 Β· Multi-Modal Council (Vision + Documents)#

MemberCapabilities flags enum (Text, Vision). FileAttachment + BinaryAttachment.
IFileContentReader + FileContentReaderRegistry with built-in PlainTextFileReader, ImageFileReader, FallbackFileReader.
CouncilBuilder.WithAttachment() + WithFileReader(). Vision auto-detection via ModelContextWindowRegistry.SupportsVision().
Example: MultiModalExample.cs


βœ… v10.3.0 β€” Platform Release#

Theme: Delibera as a platform, not just a library

Released 2026-07-17.

P-01 Β· Breaking-Change Cleanup#

  • Rename Moderator β†’ Chairman across all public APIs
  • Remove IDebateStrategyWithOptions β€” unified IDebateStrategy.ExecuteAsync signatures
  • ModelCapabilities is now non-nullable; use ModelCapabilities.IsUnknown sentinel
  • Rename RagProviderFactory β†’ VectorStoreFactory
  • Fix WeightedVotingStrategy.ResolveWeight edge case
  • Remove DebateStatus.Paused and DebateOrchestrationStatus.Pending
  • Fix DebateRecord.Label default value
  • Rewrite SseDebateStreamWriter to use IDebateOrchestrator.StreamAsync()
  • Remove DebateRecord._channel, RoundWriter, RoundReader
  • Rewrite DebateOrchestrationService to use event-driven streaming
  • Fix FakeLLMProvider + TemplateRegistryTests for new API surface

S-01 Β· Distributed Debates#

  • IDebateOrchestrator interface β€” assign rounds to workers, collect results
  • LocalDebateOrchestrator β€” single-process orchestrator for local execution
  • RedisDebateOrchestrator β€” Redis pub/sub for round dispatch + result collection
  • DebateHandle β€” opaque handle for tracking debate execution
  • DebateOrchestrationStatus β€” status enum for orchestration lifecycle
  • DebateRoundEvent β€” event model for round completion notifications
  • DebateWorkerService β€” background worker that picks up and processes debate rounds
  • RedisOrchestratorOptions β€” configuration for Redis-based orchestration
  • RedisOrchestratorExtensions β€” DI registration helpers for Redis orchestration
  • ICouncilBuilder.WithOrchestrator(IDebateOrchestrator) fluent API

S-03 Β· Result Caching#

  • IDebateCache interface β€” GetAsync(CacheKey) / SetAsync(CacheKey, DebateResult)
  • CacheBehavior enum: UseCache, BypassCache, RefreshCache
  • DebateCacheKeyGenerator β€” deterministic key from question + config + model versions
  • InMemoryDebateCache β€” in-process LRU cache
  • FileDebateCache β€” file-system cache with atomic writes
  • RedisDebateCache β€” Redis-backed distributed cache
  • Cache metadata on DebateResult (CacheHit, CacheKey, CachedAt)
  • ICouncilBuilder.WithCacheBehavior(CacheBehavior) / WithCache(IDebateCache, CacheBehavior)
  • DI extension methods for cache registration
  • OpenTelemetry counter: delibera.cache.hits / delibera.cache.misses

P-02 Β· Delibera.Server β€” ASP.NET Core Minimal API#

New project: Delibera.Server

  • ASP.NET Core 10 Minimal API hosting Delibera over HTTP
  • REST API: POST /api/debates (start), GET /api/debates/{id} (status), DELETE /api/debates/{id} (cancel)
  • SSE endpoint: GET /api/debates/{id}/stream β€” powered by IDebateOrchestrator.StreamAsync()
  • Background queue via IHostedService + System.Threading.Channels
builder.Services.AddDeliberaServer(options =>
{
    options.MaxConcurrentDebates = 5;
    options.RequireAuthentication = true;
});
app.MapDeliberaEndpoints();

P-04 Β· NuGet GA Milestone#

  • Stable 10.3.0 on NuGet (exit preview)
  • Delibera.Core β€” core library (no ASP.NET dep)
  • Delibera.Server β€” ASP.NET Core Minimal API
  • Delibera.Redis β€” Redis orchestration + caching
  • Delibera.Templates β€” presets library (optional)
  • Symbol packages + source link for all packages

P-05 Β· Performance & Integrity#

  • Memory leak fixes: eviction timers on LocalDebateOrchestrator, DebateOrchestrationService, RedisDebateOrchestrator; using var ProviderFactory in all server templates
  • IDisposable on CompressionCache and FileDebateStore (dispose ReaderWriterLockSlim / SemaphoreSlim)
  • Thread safety: volatile int backing for DebateRecord.Status and DebateEntry.Status; ConcurrentDictionary + GetOrAdd in ProviderFactory.CachingFactory
  • ConfigureAwait(false) on all await in Delibera.Core and Delibera.Redis (~50+ sites)
  • ValueTask<T> on IDebateCache, IDebateStore, IDebateOrchestrator.GetStatusAsync β€” avoids Task allocation for sync paths
  • FrozenDictionary / FrozenSet in ModelContextWindowRegistry for O(1) lookups
  • SerializeToUtf8Bytes in SseDebateStreamWriter and DebateCacheKeyGenerator
  • Single-row Levenshtein with Span<int> + stackalloc
  • ReaderWriterLockSlim in TokenCounter; readonly record struct RankedOption
  • StringBuilder capacity hints in DebateResult.ToMarkdown()

βœ… v10.4.0 / v10.5.0 β€” Measured Rounds#

Theme: run it for real, find what is actually broken

These two releases came from the first end-to-end measurement of Delibera against live cloud models rather than from a feature plan. Nine defects were found and fixed; the release notes and WhatsNew-v10.5.0.md carry the details. The item that carried forward is W2-15, fixed in 10.5.1.


βœ… v10.5.1 β€” Close the Loop#

Theme: the six issues that were open, plus the bug the measurements found

Released 2026-10-07. Every GitHub issue that was open at the start of this cycle is now closed, and the delivery includes no breaking changes β€” see WhatsNew-v10.5.1.md for the full account.

Issue Delivered Notes
#14 I-01 Tool use βœ… IToolProvider, AIFunction, ToolCallLog on DebateRound and DebateResult. Native function calling where the provider wraps a real IChatClient; [[TOOL: …]] marker otherwise, because the string-only AsChatClient adapter drops ChatOptions.Tools entirely.
#15 I-02 Debate diff βœ… DebateResultExtensions.Diff, round matching by number and member by name, word-level LCS, Markdown + HTML export. TextSimilarity is public with an explicit length bound.
#16 I-03 CLI βœ… delibera run | resume | compare | benchmark on System.CommandLine.
#18 S-02 Cost gates βœ… ICostGate, IRateLimiter, IModelPricingRegistry, CostEstimate. A denial returns a degraded result rather than throwing.
#13 P-04 NuGet GA βœ… Matrix is now Delibera.Core, Delibera.Server, Delibera.Redis.
#11 P-03 gRPC βœ… Delibera.Grpc + Delibera.Grpc.Client, layered on top of IDebateOrchestrator. Not yet in the publish matrix.
W2-15 βœ… Idempotent indexing via deterministic point ids. Migration note in the CHANGELOG.
W2-16 πŸ“‹ Documented as a roster-selection hazard. No framework change.

Two findings from the tracker stayed open on purpose, because both need either a breaking change or a product decision: W2-13 (WithCache on ICouncilBuilder) and W2-14 (cache-hit duration semantics).


πŸ”· v10.6.0 β€” Harden the Edges#

Theme: the things that were left open on purpose

The items 10.5.1 declined to take, each because it needs a decision rather than a patch.

  • Vector pruning β€” a document that shrinks leaves its tail chunks behind. Fixing it means a filter-delete on IVectorStore, which has no default interface implementations today, so it is a breaking change. Options: a DIM on IVectorStore, or accept the break at a feature-major boundary.
  • Bounded round channels (W4-10) β€” the SSE writer is fixed, but Channel.CreateUnbounded remains in LocalDebateOrchestrator and RedisDebateOrchestrator. Bounding them requires defining what a full channel does: block the producer, drop a round, or fail the debate.
  • W2-13 β€” WithCache(CacheBehavior, IDebateCache) on ICouncilBuilder. Same trade-off as above.
  • W2-14 β€” decide whether TotalDuration on a cache hit means provenance or caller wait time, then document it. Measured today: 0.0 s actual against 189.0 s reported.
  • Publish the gRPC packages β€” Delibera.Grpc and Delibera.Grpc.Client carry full packaging metadata and are one workflow line away from the GA matrix.

πŸ”Ά v11.0.0 β€” .NET 11 Migration#

Theme: Target .NET 11 runtime β€” this version aligns with .NET 11 GA

This is a runtime-major bump. It will ship when .NET 11 is generally available.

  • Retarget all projects to net11.0
  • Adopt C# 14 language features (where beneficial β€” field keyword, extension types, etc.)
  • Benchmark and tune for .NET 11 runtime improvements (AOT, JIT changes)
  • Remove polyfills/workarounds added for .NET 10 compatibility
  • Update all NuGet dependencies to .NET 11-compatible versions
  • Full CI/CD pipeline update

Prerequisite: .NET 11 GA release


πŸ“ Architectural Principles (all versions)#

Backward Compatibility Policy#

Version range Policy
10.x.y No breaking changes. New params have = default. Obsolete via [Obsolete] with migration note. Breaking changes only at feature-major boundaries (10.3.0, 10.4.0, etc.) with documented migration.
11.0.0 Runtime-major bump. Ships with .NET 11 GA. Breaking changes allowed for runtime alignment.

Definition of Done (every feature)#

  • Public API has XML doc comments
  • CancellationToken propagated through all new async paths
  • Unit tests β‰₯ 80% coverage of new code paths
  • ConsoleApp demo with --flag
  • README.md + README-RU.md updated
  • CHANGELOG.md entry following Keep a Changelog format
  • No breaking changes to CouncilBuilder fluent API (within feature-minor versions)

Branching Convention#

develop                        ← integration branch
feature/p-02-server            ← one branch per feature
feature/i-01-tool-use
release/10.3.0                 ← release stabilization branch

πŸ“¦ Release Schedule (indicative)#

Version Estimated Status
10.2.6 2026-07-06 βœ… Released
10.2.7 2026-07-07 βœ… Released
10.3.0 2026-07-17 βœ… Released
10.4.0 2026-10-05 βœ… Released
10.5.0 2026-10-06 βœ… Released
10.5.1 2026-10-07 βœ… Released
10.6.0 Q4 2026 πŸ”· Planned
11.0.0 .NET 11 GA πŸ”Ά Future

Delibera Roadmap Β· October 2026 Β· techbuzzz/Delibera

Source: docs/ROADMAP.md on GitHub β€” edit it there and this page updates on the next deploy.