Architecture
Conderis gives coding agents governed, shared project context: decisions, tasks, documentation and project instructions that a person has vouched for. This page is the overview; the subpages go into detail.
Solution layout
| Project | Role |
|---|---|
Conderis.Core |
Domain services and the EF Core data model. It references no ASP.NET, so a web dependency inside the domain fails the build instead of passing review. |
Conderis |
Blazor web app, HTTP endpoints, OAuth sign-in (OpenIddict) and the MCP adapter layer. |
Conderis.TestSupport |
Test doubles shared by both test projects. |
Conderis.Core.Tests |
Domain tests without a web host. |
Conderis.Tests |
HTTP, OAuth, MCP and rendered UI tests. |
Stack: .NET 10, Blazor with global Interactive Server rendering and prerendering, EF Core 10 on SQL Server in production and SQLite in tests, MCP over Streamable HTTP.
Core ideas
- One numbering for every item (#284). Tasks, memories and pages share one sequence per project, so
#48names exactly one thing. - Review before knowledge spreads (#285). Only moderators publish shared knowledge directly; everyone else proposes.
- Deleting content (#286). Archive for outdated items, reviewed permanent deletion for text that must not be kept.
- Item relations (#287). References derived from
#Nplus explicit related, implements and supersedes links. - Agent identity and assignees (#288). Opaque stable references instead of names, so agents with the same name stay apart. People appear by their display name, never by email address.
- Web routes (#289). Stable read addresses, separate edit addresses, shared editor behaviour.
- Memory structure and hygiene (#290, planned). Terse summaries, weight, one level of submemories and a deterministic hygiene score, so memory stays small and current as projects grow.
- MCP tool surface v2 (#309). Eight kind-agnostic tools with per-kind JSON fields; they replaced 27 tools in #317.
Documentation pages
Pages form a tree per project. Reading follows the project, so a public project has public documentation. A page with active subpages cannot be archived. Recall lists top-level pages by number and title and never copies their content; item_list with kind: page and a query finds pages by their current text and returns a short excerpt. The decisions behind this are in #278.
MCP surface
Eight tools, about 6,500 characters (the 27 tools before #317 cost about 19,000). The advertised list costs every connected agent context in every session, so a test fails as soon as it grows beyond its budget (see Build and test, #282). The design and its decisions are in #309.
| Tool | Purpose |
|---|---|
recall |
Session start: instructions, active tasks, pages and memories within a budget; guide=true returns the versioned system guide (SystemGuide). |
project_get |
The caller's projects, or one project with permissions, assignable people and agents, and counts. |
project_store |
Create or change a project. |
item_get |
One task, memory, page, proposal or the instructions, with its version and direct relations; history=true, version, offset/take. |
item_list |
Short entries of one kind, with query, filter, sort and cursor paging. |
item_store |
Create or change items with one patch rule (omitted keeps, null clears), or store a batch. |
item_action |
Task claim, complete, block, unblock; archive, restore; relate, unrelate; proposal approve, reject, withdraw. |
item_delete |
Request permanent deletion of private data; deciding stays in the web app. |
Reading, writing and irreversible actions are separate tools, so a client can allow them separately. Every item has one version; revision ids are not part of the contract. Every item response names its kind. Project instructions additionally carry mandatory: true; no other item does, so an agent can tell binding guidance from information.