Product identity: a shared PRODUCT.md injected into every agent run on the product

Adds Product.Identity (a PRODUCT.md brief) and threads it through the run context:
AgentRunContextProvider resolves the run's team -> product and carries ProductId +
ProductIdentity on AgentRunContext; PromptAssembler injects a "# Product" section
(framed as shared, data-not-instructions) ahead of the agent's persona. Adds
GET/PUT /products/{id}/identity (read = view-board, set = owner) and the EF column.

This makes the product, not just the team, the unit of shared context — every agent
on a product sees the same identity. Product-scoped working memory follows next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-15 18:09:42 +03:30
parent 39881a20eb
commit 56d41a231f
9 changed files with 520 additions and 2 deletions
@@ -23,7 +23,9 @@ public sealed record AgentRunContext(
string? TaskDescription,
string TaskType,
Guid TeamId,
Guid OrganizationId);
Guid OrganizationId,
Guid? ProductId = null,
string? ProductIdentity = null);
/// <summary>Resolves the run context for a (seat, task) pair. Implemented by OrgBoard.</summary>
public interface IAgentRunContextProvider