Context
#10691 (Shared KB/MC Team Deployment MVP) shipped the substrate primitive layer for shared-team deployment topology: one Chroma process, separate collections, two MCP servers, client-scoped session contract via RequestContextService, summarization concurrency coordinator (TTL-lease + atomic SQLite transaction), operator-facing deployment profile in learn/agentos/SharedDeployment.md. Verdict closed via epic-resolution review (5/6 ACs at L1 closed; AC5's L3 residual tracked under #10008).
The substrate is a foundation, not a complete MVP for any specific team-shared-deployment use case. Productionization against the substrate (initial requirements gathered against a team-shared-deployment partner MVP — not naming the partner per repo discipline) surfaced 6 distinct completeness gaps between substrate-shipped state and end-to-end deployable state. This sub-epic is the explicit follow-up tracking surface.
The Problem
Substrate-complete vs MVP-complete are different states:
- Substrate (#10691): primitive contracts, lifecycle plumbing, deployment profile docs.
- MVP (this sub-epic): per-session admin tooling, validated local-model provider configurations, end-to-end disconnect-triggered summarization, resume/handoff tool surface, auth integration.
Without the additional work, agents picking up "deploy our shared MC/KB for a team" cannot run a complete team workflow end-to-end. The gap is not architectural — the substrate is correctly shaped — it's delivery-completeness against a real-world MVP requirement set.
The Architectural Reality
learn/agentos/SharedDeployment.md — operator-facing deployment profile (#10694, just shipped).
MemoryCore.md §Healthcheck Response Shape — already documents per-server topology diagnostics; new validations should extend it rather than introduce parallel healthcheck surfaces.
OpenAiCompatible.generate provider abstraction — present but local-model-specific paths (Qwen3 family) unvalidated.
ai/mcp/server/memory-core/services/SessionService.mjs#claimSummarizationJob — coordinator primitive (#10693), needs disconnect-trigger wiring + a "session completion" marker concept.
- v12.1 OIDC ships in repo — auth track exists separately; deployment-target-specific OAuth provider integration (e.g., GitLab +
X-PREFERRED-USERNAME header) needs additional work.
The Fix
File 6 sub-issues covering the gaps. Each sub picks up via the ticket-create skill at owner-time, with full Contract Ledger matrix populated per the Contract Completeness Gate.
Per-session purge MCP tool — surface a purge_session({session_id}) tool on Memory Core. Removes raw memories + summary for one session without disturbing global state. Operator-controlled via tool description / permission gating. Counterpart to existing delete_all_summaries (full clear) at finer granularity.
Local embedding provider validation — empirically validate the existing OpenAiCompatible abstraction against the Qwen3-1.8b embedding model at 4k dimensions; document the operator config path; surface healthcheck verification of the active embedding provider; flag any interface gaps the abstraction reveals.
Local chat-API summary provider validation — same shape for summarization (currently Gemini 2.5 Flash by default); validate Qwen3-8b chat-API path; document operator config; surface in healthcheck.
Resume tool / session-handoff surface — design-and-implement decision: how does an agent reconnecting after disconnect resume an existing session vs starting fresh? Builds on RequestContextService (#10692) substrate. May surface as a new MCP tool or a parameter on existing connect surface.
Disconnect-triggered summarization wiring — bridge between MCP client-disconnect events and the claimSummarizationJob coordinator (#10693). Requires a "session completion" marker concept (data shape + writer + detector). The coordinator handles concurrency once triggered; the trigger itself is the gap.
Deployment-target OAuth2.1 / X-PREFERRED-USERNAME integration — auth surface for team-shared deployments using GitLab (or equivalent) as the identity provider. Either ship under this sub-epic or formally retire with a pointer to a sibling auth-track epic.
Acceptance Criteria
Stage 3.1 Closeout Matrix (entry-seeded per epic-review workflow)
| Parent AC |
Required evidence |
Owning sub(s) |
Delivered PR(s) |
Achieved evidence |
Residual state |
| AC1 (subs filed + parent-child links) |
L1 |
n/a (epic body) |
n/a |
(pending) |
(pending) |
| AC2 (Contract Ledger per sub) |
L1 |
each sub |
(pending) |
(pending) |
(pending) |
| AC3 (purge tool + tests) |
L2 |
sub #1 |
(pending) |
(pending) |
(pending) |
| AC4 (provider validations + docs) |
L3 |
sub #2, #3 |
(pending) |
(pending) |
(pending) |
| AC5 (resume + disconnect-trigger) |
L3 |
sub #4, #5 |
(pending) |
(pending) |
(pending) |
| AC6 (auth integration or retire) |
L3 (live OIDC flow) |
sub #6 |
(pending) |
(pending) |
(pending) |
| AC7 (end-to-end dry-run) |
L4 (operator-gated multi-host probe) |
spans all subs |
(pending) |
(pending) |
(pending) |
Cross-reference: learn/agentos/evidence-ladder.md.
Out of Scope
Per the partner's own MVP roadmap, the following are explicitly tagged "post-MVP" by them and excluded from this sub-epic:
- Tool review (which subset of MC/KB tools the partner ultimately needs in their deployment) — separate audit, partner-driven, not a Neo platform concern.
- Graph processing in partner's own infrastructure — operator-side concern; runs against shipped substrate.
- Prompt-injection security — explicitly tagged "risky" by partner; deserves its own epic with security review.
- Multi-tenant identity (agents getting own MC accounts) — overlaps with #10011 future direction; out of MVP scope.
- Additional Memory Core query options — discovery/extension; separate scoping.
Also excluded from this sub-epic:
- End-to-end performance benchmarking under team load — separate non-functional concern.
- Cloud infrastructure provisioning (Chroma cluster setup, OAuth provider config) — operator-side, not in repo scope. The repo ships the contracts; operators provision the cloud.
Avoided Traps
- Rejected: bundle all 6 gaps into one mega-PR. Each gap has independent technical surface; per-sub PR boundary lets each merge on its own evidence (Contract Ledger gate per sub) without coupling unrelated concerns.
- Rejected: defer auth (sub #6) entirely as out-of-scope. Auth is a partner-MVP-blocking concern; either ship under this sub-epic or formally retire with sibling-epic pointer. Silently dropping it would orphan the gap and surprise the next agent picking up the lifecycle.
- Rejected: reuse #10691's AC structure. #10691 was the substrate-primitive sub-epic; this is the MVP-completeness sub-epic. Different concern, different ACs. Avoid the trap of conflating substrate-shipped with MVP-deployable.
- Rejected: name the partner publicly. Per repo discipline, no customer-specific naming in tickets, PR bodies, comments, or docs. Generic framing ("team-shared-deployment use case", "deployment-target") only.
Related
- Parent cloud epic: #9999 — Cloud-Native Knowledge & Multi-Tenant Memory Core
- Predecessor sub-epic: #10691 — Shared KB/MC Team Deployment MVP (substrate primitives, just closed via epic-resolution review)
- Validation track: #10008 — Playwright Test Coverage: Unified Monolithic Topology (OPEN; AC7's L4 dry-run lands in this lineage)
- Demoted: #10009 — Federated topology (per #10691 disposition: non-default diagnostic)
- Retrieval policy layer: #10010 — Team vs Private Context Retrieval (sibling concern)
- Future direction: #10011 — Native Edge Graph tenant isolation
- Reference doc:
learn/agentos/SharedDeployment.md
Origin Session ID: 7e52099b-9632-4c67-a2a1-4e1a1ad1c414
Retrieval Hint: query_raw_memories(query="shared deployment MVP completeness gaps post-#10691 team partner per-session purge Qwen3 embedding summary OAuth2.1 GitLab X-PREFERRED-USERNAME disconnect-triggered summarization resume tool")
Context
#10691 (Shared KB/MC Team Deployment MVP) shipped the substrate primitive layer for shared-team deployment topology: one Chroma process, separate collections, two MCP servers, client-scoped session contract via
RequestContextService, summarization concurrency coordinator (TTL-lease + atomic SQLite transaction), operator-facing deployment profile inlearn/agentos/SharedDeployment.md. Verdict closed via epic-resolution review (5/6 ACs at L1 closed; AC5's L3 residual tracked under #10008).The substrate is a foundation, not a complete MVP for any specific team-shared-deployment use case. Productionization against the substrate (initial requirements gathered against a team-shared-deployment partner MVP — not naming the partner per repo discipline) surfaced 6 distinct completeness gaps between substrate-shipped state and end-to-end deployable state. This sub-epic is the explicit follow-up tracking surface.
The Problem
Substrate-complete vs MVP-complete are different states:
Without the additional work, agents picking up "deploy our shared MC/KB for a team" cannot run a complete team workflow end-to-end. The gap is not architectural — the substrate is correctly shaped — it's delivery-completeness against a real-world MVP requirement set.
The Architectural Reality
learn/agentos/SharedDeployment.md— operator-facing deployment profile (#10694, just shipped).MemoryCore.md§Healthcheck Response Shape — already documents per-server topology diagnostics; new validations should extend it rather than introduce parallel healthcheck surfaces.OpenAiCompatible.generateprovider abstraction — present but local-model-specific paths (Qwen3 family) unvalidated.ai/mcp/server/memory-core/services/SessionService.mjs#claimSummarizationJob— coordinator primitive (#10693), needs disconnect-trigger wiring + a "session completion" marker concept.X-PREFERRED-USERNAMEheader) needs additional work.The Fix
File 6 sub-issues covering the gaps. Each sub picks up via the
ticket-createskill at owner-time, with full Contract Ledger matrix populated per the Contract Completeness Gate.Per-session purge MCP tool — surface a
purge_session({session_id})tool on Memory Core. Removes raw memories + summary for one session without disturbing global state. Operator-controlled via tool description / permission gating. Counterpart to existingdelete_all_summaries(full clear) at finer granularity.Local embedding provider validation — empirically validate the existing
OpenAiCompatibleabstraction against the Qwen3-1.8b embedding model at 4k dimensions; document the operator config path; surface healthcheck verification of the active embedding provider; flag any interface gaps the abstraction reveals.Local chat-API summary provider validation — same shape for summarization (currently Gemini 2.5 Flash by default); validate Qwen3-8b chat-API path; document operator config; surface in healthcheck.
Resume tool / session-handoff surface — design-and-implement decision: how does an agent reconnecting after disconnect resume an existing session vs starting fresh? Builds on
RequestContextService(#10692) substrate. May surface as a new MCP tool or a parameter on existing connect surface.Disconnect-triggered summarization wiring — bridge between MCP client-disconnect events and the
claimSummarizationJobcoordinator (#10693). Requires a "session completion" marker concept (data shape + writer + detector). The coordinator handles concurrency once triggered; the trigger itself is the gap.Deployment-target OAuth2.1 /
X-PREFERRED-USERNAMEintegration — auth surface for team-shared deployments using GitLab (or equivalent) as the identity provider. Either ship under this sub-epic or formally retire with a pointer to a sibling auth-track epic.Acceptance Criteria
update_issue_relationship.SharedDeployment.md(or a sibling guide) AND surface the active provider via healthcheck.RequestContextService+SummarizationJobsprimitives without re-architecting them.Stage 3.1 Closeout Matrix (entry-seeded per
epic-reviewworkflow)Cross-reference:
learn/agentos/evidence-ladder.md.Out of Scope
Per the partner's own MVP roadmap, the following are explicitly tagged "post-MVP" by them and excluded from this sub-epic:
Also excluded from this sub-epic:
Avoided Traps
Related
learn/agentos/SharedDeployment.mdOrigin Session ID:
7e52099b-9632-4c67-a2a1-4e1a1ad1c414Retrieval Hint:
query_raw_memories(query="shared deployment MVP completeness gaps post-#10691 team partner per-session purge Qwen3 embedding summary OAuth2.1 GitLab X-PREFERRED-USERNAME disconnect-triggered summarization resume tool")