Skip to content

Experience plane

Target

This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.

The Experience plane is every surface through which humans and other systems interact with the Factory. The Factory is headless: the web console uses the same APIs as the CLI, the SDKs, IDE extensions, chat channels, CI pipelines and external autonomous systems. The plane owns presentation, session-scoped composition and command submission. It never owns business state: run transitions, approvals, policies and artifacts are decided by their owning planes and only projected here.

Responsibilities

Responsibility What it means
Surfaces Web console (Studio), agent operations IDE, CLI, REST and gRPC API, .NET and TypeScript SDKs, VS Code and JetBrains extensions, Cursor / Claude Code / Codex integrations, Slack / Teams / WhatsApp channels, CI/CD callers
Scoped shell Persistent organization → workspace/project → environment scope, selected from trusted membership; selecting a scope grants nothing (canonical ADR-0100/0101, ADR-0015)
Work submission Task-first submission against an existing project: repository revision, published agent release, model profile, limits; validation and denial reasons before a run starts
Run inspection Persisted run, step and attempt state, pinned versions, plan, execution graph, sub-agents, tool calls, shell commands, changed files and diffs, logs, traces, cost, tokens, errors, retries, fallback events
Decisions Approval inbox bound to exact artifact or action versions, with authority, expiry, conflict and staleness states
Recovery Resume, retry and replay as distinct commands with observable outcomes; cancellation shown as request and as resulting state
Asset inspection Agents, skills, tools/MCP, workflows, templates, published bundles, model profiles, knowledge sources, context and memory, evaluation evidence
Administration Membership, integrations, entitlements, quotas, policy boundaries, linked to their owning planes
Composition Optional BFF for client-shaped queries and live projections; cohosted first, extracted only for client, trust or scaling need (packet GW-02)

Agent operations IDE

The differentiated surface is not a source editor but an agent operations IDE: for one project and environment it shows the selected agent and version, its skills, knowledge scopes, tools, model profile and fallback, the current task and plan, runtime step, cost, token usage, pending approvals, changed files and diff. Existing editors (Cursor, Claude Code, Codex, Visual Studio) remain clients through extensions and MCP, not competitors.

State vocabulary the surfaces must keep distinct

Asset readiness (authored, awaiting review, published, revoked) · deployment availability · run state (Pending, Running, WaitingForApproval, Completed, Failed, Cancelled, Rejected, Expired — proposed vocabulary, ADR-0014) · approval state (pending, accepted, rejected, expired, stale) · result freshness (observed, estimated, uncertain, historical). One "active" badge covering all of these is a defect.

Labelling convention for prototypes and pages: Simulated (fixture, no backend effect) · Connected, unverified · Verified for profile/revision · Unavailable/degraded.

Current implementation

  • 41 HTML prototype exports in ConnectSoft.DesignPrototypes (React-rendered fixtures, zero network calls). The Factory prototype declares 48 destinations; 15 have dedicated views. Workflow Studio prototype has publication, run comparison, evaluation lab and suggestion inbox patterns.
  • ConnectSoft.Blazor.* shell, microfrontend, component and UIKit templates exist (23 repositories); Blazor.Mfe.AIChatTemplate registers a mock AI service unconditionally.
  • No Studio, BFF, CLI, SDK or IDE extension exists in code. ADR-0007 keeps the Blazor direction.

Existing pages that belong to this plane

Later capabilities

Folded from the former Factory Studio extension roadmap (no dates, no commitments). Principles retained: microfrontend-first over a thin BFF; aggregation, never ownership (the Studio is never a second system of record); governed by default; traceable; reuse of shell, UIKit and BFF read models before new ones; marketplace-extensible experience packs.

Candidate Purpose Owner today
Intent studio (structured intent capture into blueprints, not a chatbot) Feeds the Software Factory pack's blueprint designer BC-02 / BC-29
Experiment center (A/B prompt, model and pattern experiments) Surfaces evaluation results BC-22 projection
Compliance evidence room (audit-ready evidence packs per framework) Built on the immutable decision and audit trail BC-19 projection
Reuse browser (internal patterns, modules, blueprints) and marketplace install center Discovery of internal reuse vs installation of qualified assets BC-27 / Knowledge & Memory projections
Stakeholder portal (read-only executive views); incident war room (multi-user live session); mobile companion for approvals and alerts (MAUI base template) Role-specific surfaces BC-29
Studio extension API, saved-view pack import/export, outbound webhooks for Studio events, signed scoped embeds, collaboration presence Experience extensibility BC-29 with Trust & Operations governance
Experience packs, widget catalog, view-pack library, theme and branding packs, connector-driven modules Marketplace contributions BC-27
Review assistant, dashboard insight, escalation triage, knowledge navigation, cost optimization and onboarding agents Assist the human in the loop; never bypass human authority Software Factory pack

Chat-channel entry points, the agent operations IDE, IDE extensions and SDKs are directions from the Oct-2026 target (clients); none is required for a first governed workflow.

Open questions

Q-16 (languages, channels, RTL, accessibility targets); whether Factory and Workflow Studio share one shell. See the decision log in handoffs/2026-10-09-independent-review/.

Platform design pages (2026-10-09, design plan P13)

Modernization (2026-10-09, design plan M1)

Horizon now to next, per the technology radar: Agent-assisted Studio, embedded widgets in products, A2A inbound tasks through the public API. Exists in ConnectSoft today: Blazor shell, microfrontend library, UIKit, SignalR library exist as templates; no Studio. Each platform page of this plane states its horizon in its overview and later-capabilities pages.

Platforms in this plane

Platform Bounded contexts Services Modelled Pages
Factory Studio (PF-14) BC-29 7 3 overview · services · APIs · events

Bounded contexts

Context Platform Authoritative state
BC-29 Experience Composition Factory Studio Session projections, navigation, command composition

Services

Service Platform Context Granularity Status Page
AgentFlowVisualizationService Factory Studio BC-29 module of host unmodelled —
DashboardAggregationService Factory Studio BC-29 module of host unmodelled —
KnowledgeExplorerBff Factory Studio BC-29 module of host unmodelled —
KnowledgeStudioBff Factory Studio BC-29 module of host unmodelled —
StudioBff Factory Studio BC-29 standalone host target design
StudioNotificationService Factory Studio BC-29 module of host target design
StudioRealtimeGateway Factory Studio BC-29 standalone host target design

Events crossing the plane boundary

Direction Event Producer Consumer Topic
out StudioSessionStarted StudioBff AuditService studio.sessions.v1.studio-session-started
out StudioSessionStarted StudioBff DashboardService studio.sessions.v1.studio-session-started
in AgentCardPublished AgentCardService StudioBff asset-publication.agent-cards.v1.agent-card-published
in AgentCardWithdrawn AgentCardService StudioBff asset-publication.agent-cards.v1.agent-card-withdrawn
in AssetReleaseSubmitted AgentRegistryService StudioBff asset-publication.releases.v1.asset-release-submitted
in AssetReleasePublished AgentRegistryService StudioBff asset-publication.releases.v1.asset-release-published
in AssetReleaseDeprecated AgentRegistryService StudioBff asset-publication.releases.v1.asset-release-deprecated
in BudgetReserved CostUsageService StudioBff usage-accounting.reservations.v1.budget-reserved
in BudgetReservationDenied CostUsageService StudioBff usage-accounting.reservations.v1.budget-reservation-denied
in ReservationSettled CostUsageService StudioBff usage-accounting.reservations.v1.reservation-settled
in BudgetUpdated CostUsageService StudioBff usage-accounting.budgets.v1.budget-updated
in EnvironmentCreated EnvironmentService StudioBff projects.environments.v1.environment-created
in EnvironmentStateChanged EnvironmentService StudioBff projects.environments.v1.environment-state-changed
in SubscriptionChanged FactoryCommercialService StudioBff factory-commercial.subscriptions.v1.subscription-changed
in InvoiceIssued FactoryCommercialService StudioBff factory-commercial.invoices.v1.invoice-issued
in InvoiceIssued FactoryCommercialService StudioNotificationService factory-commercial.invoices.v1.invoice-issued
in ProjectCreated ProjectService StudioBff projects.projects.v1.project-created
in ProjectStateChanged ProjectService StudioBff projects.projects.v1.project-state-changed
in MembershipChanged ProjectService StudioBff projects.memberships.v1.membership-changed
in DelegationChanged ProjectService StudioBff projects.delegations.v1.delegation-changed
in RunAccepted RunControlService StudioBff run-control.runs.v1.run-accepted
in RunStateChanged RunControlService StudioBff run-control.runs.v1.run-state-changed
in RunCompleted RunControlService StudioBff run-control.runs.v1.run-completed
in RunFailed RunControlService StudioBff run-control.runs.v1.run-failed
in RunCancelled RunControlService StudioBff run-control.runs.v1.run-cancelled
in ApprovalRequested RunControlService StudioBff run-control.approvals.v1.approval-requested
in ApprovalRequested RunControlService StudioNotificationService run-control.approvals.v1.approval-requested
in ApprovalDecided RunControlService StudioBff run-control.approvals.v1.approval-decided
in AttemptStarted AgentRuntimeService StudioBff execution.attempts.v1.attempt-started
in AttemptPhaseChanged AgentRuntimeService StudioBff execution.attempts.v1.attempt-phase-changed
in AttemptDecisionRequested AgentRuntimeService StudioBff execution.attempts.v1.attempt-decision-requested
in AttemptDecisionRequested AgentRuntimeService StudioNotificationService execution.attempts.v1.attempt-decision-requested
in AttemptCancellationObserved AgentRuntimeService StudioBff execution.attempts.v1.attempt-cancellation-observed
in SubAgentDelegated AgentRuntimeService StudioBff execution.attempts.v1.sub-agent-delegated
in ReleaseLoadRejected AgentRuntimeService StudioBff execution.releases.v1.release-load-rejected
in WorkflowRunStarted WorkflowEngineService StudioBff workflows.runs.v1.workflow-run-started
in StepRunStateChanged WorkflowEngineService StudioBff workflows.runs.v1.step-run-state-changed
in CompensationStarted WorkflowEngineService StudioBff workflows.runs.v1.compensation-started
in WorkflowRunCompleted WorkflowEngineService StudioBff workflows.runs.v1.workflow-run-completed
in WorkflowRunFailed WorkflowEngineService StudioBff workflows.runs.v1.workflow-run-failed
in ComputePoolRegistered ComputePoolService StudioBff compute-pools.pools.v1.compute-pool-registered
in ComputePoolStateChanged ComputePoolService StudioBff compute-pools.pools.v1.compute-pool-state-changed
in ModelProfileActivated ModelRouterService StudioBff model-access.profiles.v1.model-profile-activated
in ModelProfileRetired ModelRouterService StudioBff model-access.profiles.v1.model-profile-retired
in DeploymentStateChanged ModelRouterService StudioBff model-access.deployments.v1.deployment-state-changed
in CapabilityEvidenceRecorded ModelRouterService StudioBff model-access.deployments.v1.capability-evidence-recorded
in ArtifactStored ArtifactService StudioBff artifacts.artifacts.v1.artifact-stored
in ArtifactValidated ArtifactService StudioBff artifacts.artifacts.v1.artifact-validated
in ArtifactSuperseded ArtifactService StudioBff artifacts.artifacts.v1.artifact-superseded
in ContextAssembled ContextBuilderService StudioBff context-assembly.snapshots.v1.context-assembled
in MemoryClassified MemoryPromotionService StudioBff memory.items.v1.memory-classified
in MemoryPromoted MemoryPromotionService StudioBff memory.items.v1.memory-promoted
in SkillCandidateProposed MemoryPromotionService StudioBff memory.items.v1.skill-candidate-proposed
in SkillCandidateProposed MemoryPromotionService StudioNotificationService memory.items.v1.skill-candidate-proposed
in SourceRegistered KnowledgeIngestionService StudioBff ingestion.sources.v1.source-registered
in SourceStateChanged KnowledgeIngestionService StudioBff ingestion.sources.v1.source-state-changed
in SnapshotFailed KnowledgeIngestionService StudioBff ingestion.snapshots.v1.snapshot-failed
in RepositoryIndexed RepositoryIntelligenceService StudioBff repo-intelligence.indexes.v1.repository-indexed
in RepositoryIndexFailed RepositoryIntelligenceService StudioBff repo-intelligence.indexes.v1.repository-index-failed
in IndexRevisionReady VectorMemoryService StudioBff retrieval.indexes.v1.index-revision-ready
in McpServerRegistered McpServerRegistryService StudioBff tool-execution.mcp-servers.v1.mcp-server-registered
in McpServerStateChanged McpServerRegistryService StudioBff tool-execution.mcp-servers.v1.mcp-server-state-changed
in McpCapabilitiesDiscovered McpServerRegistryService StudioBff tool-execution.mcp-servers.v1.mcp-capabilities-discovered
in ToolDescriptorActivated ToolAdapterService StudioBff tool-execution.descriptors.v1.tool-descriptor-activated
in ToolDescriptorRetired ToolAdapterService StudioBff tool-execution.descriptors.v1.tool-descriptor-retired
in ToolInvocationDenied ToolAdapterService StudioBff tool-execution.invocations.v1.tool-invocation-denied
in ToolEffectUncertain ToolAdapterService StudioBff tool-execution.invocations.v1.tool-effect-uncertain
in ToolEffectUncertain ToolAdapterService StudioNotificationService tool-execution.invocations.v1.tool-effect-uncertain
in ConnectorActivated ConnectorRegistryService StudioBff connectors.connectors.v1.connector-activated
in ConnectorDeprecated ConnectorRegistryService StudioBff connectors.connectors.v1.connector-deprecated
in ConnectorSubscriptionChanged ConnectorRegistryService StudioBff connectors.subscriptions.v1.connector-subscription-changed
in DeliveryFailed ConnectorRegistryService StudioBff connectors.deliveries.v1.delivery-failed
in DeliveryFailed ConnectorRegistryService StudioNotificationService connectors.deliveries.v1.delivery-failed
in ConnectionRegistered IntegrationService StudioBff connections.connections.v1.connection-registered
in ConnectionStateChanged IntegrationService StudioBff connections.connections.v1.connection-state-changed
in ConnectionGrantChanged IntegrationService StudioBff connections.grants.v1.connection-grant-changed
in PricingPlanChanged LicenseService StudioBff licensing.pricing.v1.pricing-plan-changed
in EntitlementGranted LicenseService StudioBff licensing.entitlements.v1.entitlement-granted
in EntitlementStateChanged LicenseService StudioBff licensing.entitlements.v1.entitlement-state-changed
in PublisherCertified LicenseService StudioBff licensing.publishers.v1.publisher-certified
in ListingPublished MarketplaceCatalogService StudioBff marketplace.listings.v1.listing-published
in ListingStateChanged MarketplaceCatalogService StudioBff marketplace.listings.v1.listing-state-changed
in ListingInstalled MarketplaceCatalogService StudioBff marketplace.installations.v1.listing-installed
in ListingRemoved MarketplaceCatalogService StudioBff marketplace.installations.v1.listing-removed
in PromotionRequested EnvironmentPromotionService StudioBff releases.promotions.v1.promotion-requested
in PromotionApproved EnvironmentPromotionService StudioBff releases.promotions.v1.promotion-approved
in PromotionCompleted EnvironmentPromotionService StudioBff releases.promotions.v1.promotion-completed
in PromotionCompleted EnvironmentPromotionService StudioNotificationService releases.promotions.v1.promotion-completed
in PromotionFailed EnvironmentPromotionService StudioBff releases.promotions.v1.promotion-failed
in RollbackCompleted EnvironmentPromotionService StudioBff releases.promotions.v1.rollback-completed
in ChangeProposalOpened PipelineExecutionService StudioBff pipelines.proposals.v1.change-proposal-opened
in ChangeProposalStateChanged PipelineExecutionService StudioBff pipelines.proposals.v1.change-proposal-state-changed
in ChangeProposalMerged PipelineExecutionService StudioBff pipelines.proposals.v1.change-proposal-merged
in PipelineRunStarted PipelineExecutionService StudioBff pipelines.runs.v1.pipeline-run-started
in PipelineRunCompleted PipelineExecutionService StudioBff pipelines.runs.v1.pipeline-run-completed
in ReleaseCreated ReleaseService StudioBff releases.products.v1.release-created
in ReleaseReady ReleaseService StudioBff releases.products.v1.release-ready
in ReleaseReady ReleaseService StudioNotificationService releases.products.v1.release-ready
in ReleaseWithdrawn ReleaseService StudioBff releases.products.v1.release-withdrawn
in SpecificationDeclared IaCProvisioningService StudioBff provisioning.specifications.v1.specification-declared
in ProvisioningPlanned IaCProvisioningService StudioBff provisioning.runs.v1.provisioning-planned
in ProvisioningApplied IaCProvisioningService StudioBff provisioning.runs.v1.provisioning-applied
in ProvisioningFailed IaCProvisioningService StudioBff provisioning.runs.v1.provisioning-failed
in WorkerPoolStateChanged ExecutionCapacityService StudioBff capacity.pools.v1.worker-pool-state-changed
in QuotaChanged ExecutionCapacityService StudioBff capacity.quotas.v1.quota-changed
in QuotaExceeded ExecutionCapacityService StudioBff capacity.quotas.v1.quota-exceeded
in ObservedStateChanged RuntimeEnvironmentService StudioBff provisioning.inventory.v1.observed-state-changed
in RuntimeDriftDetected RuntimeEnvironmentService StudioBff provisioning.inventory.v1.runtime-drift-detected
in ReconciliationProposed RuntimeEnvironmentService StudioBff provisioning.inventory.v1.reconciliation-proposed
in ReconciliationProposed RuntimeEnvironmentService StudioNotificationService provisioning.inventory.v1.reconciliation-proposed
in ReconciliationDecided RuntimeEnvironmentService StudioBff provisioning.inventory.v1.reconciliation-decided
in IncidentOpened FleetIncidentService StudioBff fleet-operations.incidents.v1.incident-opened
in IncidentOpened FleetIncidentService StudioNotificationService fleet-operations.incidents.v1.incident-opened
in IncidentStateChanged FleetIncidentService StudioBff fleet-operations.incidents.v1.incident-state-changed
in IncidentResolved FleetIncidentService StudioBff fleet-operations.incidents.v1.incident-resolved
in OnCallChanged FleetIncidentService StudioBff fleet-operations.on-call.v1.on-call-changed
in OffboardingRequested FleetIncidentService StudioBff fleet-operations.offboarding.v1.offboarding-requested
in OffboardingCompleted FleetIncidentService StudioBff fleet-operations.offboarding.v1.offboarding-completed
in ProductOnboarded FleetInventoryService StudioBff fleet-inventory.products.v1.product-onboarded
in ProductInstanceStateChanged FleetInventoryService StudioBff fleet-inventory.products.v1.product-instance-state-changed
in ProductObjectiveDefined FleetInventoryService StudioBff fleet-inventory.objectives.v1.product-objective-defined
in RolloutPlanned FleetRolloutService StudioBff fleet-rollouts.rollouts.v1.rollout-planned
in RolloutPlanned FleetRolloutService StudioNotificationService fleet-rollouts.rollouts.v1.rollout-planned
in RolloutWaveCompleted FleetRolloutService StudioBff fleet-rollouts.rollouts.v1.rollout-wave-completed
in RolloutHalted FleetRolloutService StudioBff fleet-rollouts.rollouts.v1.rollout-halted
in RolloutHalted FleetRolloutService StudioNotificationService fleet-rollouts.rollouts.v1.rollout-halted
in RolloutCompleted FleetRolloutService StudioBff fleet-rollouts.rollouts.v1.rollout-completed
in TopicRegistered EnvelopeRegistryService StudioBff data-foundations.topics.v1.topic-registered
in SchemaVersionPublished EnvelopeRegistryService StudioBff data-foundations.topics.v1.schema-version-published
in TopicDeprecated EnvelopeRegistryService StudioBff data-foundations.topics.v1.topic-deprecated
in EnvelopeProfileActivated EnvelopeRegistryService StudioBff data-foundations.envelopes.v1.envelope-profile-activated
in StoreProfileActivated StoreProfileService StudioBff data-foundations.stores.v1.store-profile-activated
in StoreBindingChanged StoreProfileService StudioBff data-foundations.stores.v1.store-binding-changed
in RetentionRuleChanged RetentionResidencyService StudioBff data-foundations.retention.v1.retention-rule-changed
in ResidencyRuleChanged RetentionResidencyService StudioBff data-foundations.residency.v1.residency-rule-changed
in DeletionOrderIssued RetentionResidencyService StudioBff data-foundations.orders.v1.deletion-order-issued
in DeletionOrderCompleted RetentionResidencyService StudioBff data-foundations.orders.v1.deletion-order-completed
in ExportCompleted RetentionResidencyService StudioBff data-foundations.orders.v1.export-completed
in ExportCompleted RetentionResidencyService StudioNotificationService data-foundations.orders.v1.export-completed
in LegalHoldChanged RetentionResidencyService StudioBff data-foundations.orders.v1.legal-hold-changed
in ApprovalRuleActivated ApprovalPolicyService StudioBff approval-policy.rules.v1.approval-rule-activated
in ApprovalRouted ApprovalPolicyService StudioNotificationService approval-policy.routing.v1.approval-routed
in ClassificationChanged AuditService StudioBff audit.classification.v1.classification-changed
in FindingRaised AuditService StudioBff audit.findings.v1.finding-raised
in FindingRaised AuditService StudioNotificationService audit.findings.v1.finding-raised
in FindingResolved AuditService StudioBff audit.findings.v1.finding-resolved
in PolicyRevisionActivated PolicyEngineService StudioBff policy.bundles.v1.policy-revision-activated
in PolicyRevisionRetired PolicyEngineService StudioBff policy.bundles.v1.policy-revision-retired
in SecretReferenceRegistered SecretBrokerService StudioBff secret-broker.references.v1.secret-reference-registered
in AlertRuleChanged AlertRuleService StudioBff operations.alerts.v1.alert-rule-changed
in AlertFired AlertRuleService StudioRealtimeGateway operations.alerts.v1.alert-fired
in AlertFired AlertRuleService StudioBff operations.alerts.v1.alert-fired
in AlertFired AlertRuleService StudioNotificationService operations.alerts.v1.alert-fired
in AlertResolved AlertRuleService StudioRealtimeGateway operations.alerts.v1.alert-resolved
in AlertResolved AlertRuleService StudioBff operations.alerts.v1.alert-resolved
in RunProjectionUpdated DashboardService StudioRealtimeGateway operations.projections.v1.run-projection-updated
in RunProjectionUpdated DashboardService StudioBff operations.projections.v1.run-projection-updated
in OperationsDigestProduced DashboardService StudioBff operations.projections.v1.operations-digest-produced
in FeedbackRecorded FeedbackService StudioBff evaluation.feedback.v1.feedback-recorded
in DatasetPublished FeedbackService StudioBff evaluation.datasets.v1.dataset-published
in LearningProposalRaised FeedbackService StudioBff evaluation.learning.v1.learning-proposal-raised
in LearningProposalRaised FeedbackService StudioNotificationService evaluation.learning.v1.learning-proposal-raised
in LearningProposalDecided FeedbackService StudioBff evaluation.learning.v1.learning-proposal-decided
in EvaluationSuiteActivated QualityScoreService StudioBff evaluation.suites.v1.evaluation-suite-activated
in EvaluationStarted QualityScoreService StudioBff evaluation.runs.v1.evaluation-started
in EvaluationCompleted QualityScoreService StudioBff evaluation.runs.v1.evaluation-completed
in EvaluationFailed QualityScoreService StudioBff evaluation.runs.v1.evaluation-failed
in DriftDetected QualityScoreService StudioBff evaluation.runs.v1.drift-detected
in SloDefined SloService StudioBff operations.slos.v1.slo-defined
in SloBreached SloService StudioBff operations.slos.v1.slo-breached
in SloRecovered SloService StudioBff operations.slos.v1.slo-recovered
in ServiceHealthChanged SloService StudioBff operations.health.v1.service-health-changed
in BlueprintValidated BlueprintService StudioBff blueprints.versions.v1.blueprint-validated
in BlueprintSubmitted BlueprintService StudioBff blueprints.versions.v1.blueprint-submitted
in BlueprintPublished BlueprintService StudioBff blueprints.versions.v1.blueprint-published
in ContextMapDerived BlueprintService StudioBff blueprints.models.v1.context-map-derived
in DomainModelDerived BlueprintService StudioBff blueprints.models.v1.domain-model-derived
in RecipeValidated GenerationRecipeService StudioBff generation.recipes.v1.recipe-validated
in RecipeApproved GenerationRecipeService StudioBff generation.recipes.v1.recipe-approved
in GenerationCompleted GenerationRecipeService StudioBff generation.recipes.v1.generation-completed
in GeneratedOutputRecorded GenerationRecipeService StudioBff generation.outputs.v1.generated-output-recorded
in TemplateVersionDiscovered TemplateRegistryService StudioBff template-catalog.templates.v1.template-version-discovered
in TemplateVersionPublished TemplateRegistryService StudioBff template-catalog.templates.v1.template-version-published
in LibraryVersionDiscovered TemplateRegistryService StudioBff template-catalog.libraries.v1.library-version-discovered
in CompatibilityChecked TemplateRegistryService StudioBff template-catalog.compatibility.v1.compatibility-checked
in ProductDescriptorPublished GeneratedProductHost StudioBff product-domains.descriptor.v1.product-descriptor-published
in OperationsHandoverAcknowledged GeneratedProductHost StudioBff product-domains.operations.v1.operations-handover-acknowledged

Gateways

Gateway Role Fronts
GW-01 Edge ingress TLS termination, routing, rate limits, token validation per canonical ADR-0101; YARP optional, ConnectSoft.ApiGatewayTemplate is the house implementation ControlPlaneApi
GW-02 Studio BFF Composition and session projections for the Studio; owns no business state; cohosted first StudioBff

Model coverage

Count
Services in the registry 7
Modelled (YAML exists) 3
With a design page 3
Unmodelled 4