Initiative Brief: Workspace Shell, Context Contract, and Conversational Runtime
COMPLETEDIntent— the specification (8,123 chars); the plan below decomposes it into work items. Click to expand.
# Initiative Brief: Workspace Shell, Context Contract, and Conversational Runtime ## Desired outcome Establish the primary interaction model for Xyence Workspaces: a consistent platform-owned shell with a persistent, context-aware conversational interface that every workspace can participate in through explicit contracts. Workspaces should become more than a launcher for independent applications. It should provide the common human interface through which users select what kind of work they want to perform, see domain-specific information, converse naturally about that work, attach visual or file-based evidence, and invoke authorized domain capabilities without each workspace rebuilding its own navigation, conversation system, attachment handling, or AI integration. The platform shell should own: * the global header; * workspace selection; * organization/account context; * the hybrid navigation rail; * durable conversations and conversation history; * Composer; * file/image attachments; * direct screenshot capture; * context-change events; * responsive/mobile behavior; * shared confirmation/audit conventions for AI-initiated actions. Individual workspaces should own their primary domain UI while declaratively contributing navigation, context, capabilities, actions, and landing-page information to the shell. The Orchestrator workspace will be the first substantial consumer of this architecture, but this initiative must establish reusable platform contracts rather than embedding Orchestrator-specific assumptions. ## Motivation The current workspace-based applications already share portions of a common shell, including global workspace and organization selection, but the interaction model is not yet formalized strongly enough to support the platform's longer-term direction. The intended user experience is increasingly conversational. A user should be able to enter Workspaces and answer a simple question: **What do you want to work on?** Examples might include: * Software development * Websites * Sales * Marketing Selecting a workspace changes both the primary application UI and the context of the shared Composer. Within a workspace, selecting a particular object—such as a website, repository, initiative, lead, or campaign—should further refine the context available to the conversation without forcing the user into a new conversation. Without a shared platform architecture, each workspace is likely to independently implement: * navigation; * AI/chat UI; * conversation persistence; * context handling; * attachment uploads; * screenshot support; * action confirmation; * responsive behavior. That would recreate the fragmentation Workspaces is intended to eliminate. A platform-level contract is therefore needed before conversational features are added deeply to individual workspace applications. ## Product principles - Workspaces owns the shell — Workspace applications participate in the shell. They do not replace it. Conversation is a platform capability — Orchestrator, Web, Sales, Marketing, and future workspaces should not implement independent chat systems. Workspace selection establishes conversational scope — Entering a workspace determines: - the relevant conversation history; - the default domain; - available domain capabilities; - visible workspace navigation; - initial landing content. Navigation may refine conversation context without starting a new conversation — Selecting an object within a workspace should normally update the existing conversation context. A new conversation is an explicit user action, not a side effect of navigation. Context changes are visible — A conversation must never silently change semantic scope. When relevant context changes, the conversation should record a durable context event such as: > Context changed · stlouishighrises.com or: > Context changed · Xyence/workspaces repository Primary UI and conversation complement one another — Composer must not become a blank prompt that carries the full burden of teaching users what the product can do. Every workspace should provide meaningful structured landing content and suggested activities. The shell is declarative — Critical shell regions should consume workspace-defined metadata/contracts rather than arbitrary workspace-provided React UI. This preserves consistency, accessibility, security, mobile behavior, and future evolution. ## Rejected / deferred alternatives - Full Orchestrator ideation implementation. - Full Web workspace implementation. - Full voice mode. - General-purpose unrestricted consumer chat. - Cross-workspace conversation handoff in the first release. - Autonomous browser screenshotting by the AI. - Allowing workspaces arbitrary DOM/React control over platform shell regions. - Moving domain ownership into Workspaces. - Replacing domain service APIs with MCP solely for internal integration. ## Invariants - The platform owns the shell. - The platform owns conversation persistence and Composer. - Workspaces contribute shell behavior through declared contracts. - Primary domain UI remains workspace-owned. - Navigation does not silently create conversations. - Material context changes are visible and durable. - Historical messages retain the context under which they were sent. - User-provided context cannot bypass authorization. - Provider and service credentials remain server-side. - Conversation does not implicitly authorize mutating actions. - Screenshot and attachment access follows conversation authorization. - Critical shell regions are not arbitrary workspace-rendered JSX. - Domain systems remain authoritative for domain data and actions. ## Repository scope - `Xyence/workspaces` — Primary implementation. Likely includes: - shell architecture; - workspace contract; - navigation contract; - context contract; - capability/action contracts; - conversation persistence; - Composer; - attachment and screenshot UX; - conversation runtime integration; - landing page; - responsive behavior; - contract validation. `Xyence/outshine` — Only where platform authentication, organization/workspace identity, storage, or authorization boundaries require extension. Avoid making Outshine the owner of conversation semantics solely because it already provides platform APIs. `Xyence/orchestrator` — No substantial Orchestrator-domain implementation is required by this foundation initiative except where needed to keep the existing workspace functioning during shell migration. Full Orchestrator conversational integration belongs to the follow-on initiative. ## Expected behavior - A user can land in Workspaces and select a workspace from a meaningful task/domain-oriented landing experience. - The existing organization/workspace header behavior is retained or cleanly migrated. - The platform renders a consistent shell around at least one workspace. - A workspace can declaratively contribute navigation. - A workspace can publish active semantic context to the shell. - Composer is platform-owned and consistently available. - Durable conversations can be created, resumed, and archived. - Conversation history defaults to the active workspace. - Changing selected domain context does not automatically create a new conversation. - Material context changes appear in conversation history. - Composer supports image/file attachments. - Composer provides low-friction screenshot capture. - Screenshot messages retain useful current-page/workspace context. - The server-side conversation runtime can consume workspace-declared read capabilities. - Mutating capabilities may require deterministic confirmation outside model judgment. - All context and capability access is re-authorized server-side. - Long conversations use bounded context rather than unlimited transcript replay. - Conversation/action provenance is durably recorded. - The shell works at desktop and mobile viewport sizes. - The architecture is ready for later voice input without replacing the message model. - Workspace contracts are versionable and testable. - Conversational model/tool failures are observable without unsafe logging.
Repository scope
targets the work spans — independent of where the brief was authoredPrimary repository: workspaces` — Primary implementation. Likely includes:
- workspaces` — Primary implementation. Likely includes:expected · primary
- shell architecture;expected
- workspace contract;expected
- navigation contract;expected
- context contract;expected
- action contracts;expected
- conversation persistence;expected
- Composer;expected
- attachment and screenshot UX;expected
- conversation runtime integration;expected
- landing page;expected
- responsive behavior;expected
- outshine` — Only where platform authentication, organizationexpected
- workspacesdiscovered
- outshinediscovered
brief revision 1 assessed as delivered
assessed with 79% confidenceEnd-to-end, the repository now ships a platform-owned shell that renders around real workspaces, a versioned/validated workspace contract, durable conversations with bounded history, a platform Composer (attachments + user-initiated screenshots) wired to a backend upload service, visible/durable context-change events, a server-side conversational runtime (read-only capability execution with bounded context), and a deterministic confirmation + durable audit path for mutating capabilities. Shell/mobile behavior and landing are contract-driven and consistent. All routes re-authorize server-side and observability is implemented with safe redaction. Orchestrator and Sales consume the shell; Outshine provides the authoritative persistence/runtime/confirmation services. The only “voice” aspect required by the brief was architectural readiness; the message model (text plus attachments, context envelope) and runtime wiring do not preclude adding voice input later without changing the model. No material acceptance criterion or invariant remains unaddressed.
Plan waves — 2 approved waves
planning closed- Wave 1completeAPPROVED15 work items
Deliver a platform-owned Workspace shell with declarative workspace contracts, persistent conversations, a consistent Composer (attachments + user-driven screenshots), visible context-change events, and a server-side conversational runtime/persistence — without embedding workspace-specific assumptions — so that at least one existing workspace app runs inside the shell and participates via contracts.
- Wave 2foundation-firstAPPROVED6 work items
Wave 2 will close the verified gaps from wave 1 by shipping a task-/domain-oriented landing surface that consumes existing LandingMetadata, adding durable current-page/workspace context to screenshot/attachment messages, and completing the deterministic confirmation + audit flow for mutating capabilities. Platform docs will be updated to reflect these behaviors and contracts.
Deferred scope
- Deeper suggestedActivities semantics (parameterized deep links or capability presets) beyond what current navigation/action contracts support — Requires product direction on how activities should pre-configure workspace state or Composer prompting without violating the invariant that navigation does not silently create conversations. (unblocks: Evidence of stable usage of the basic landing surface and a product decision on activity semantics and UX.) · filed → RM-0004
- Administrative policy management UI for confirmation requirements (per-org/per-workspace) — Policy authoring is beyond the foundation brief; this wave focuses on server-enforced confirmation and receipts. (unblocks: Back-end confirmation enforcement and receipts shipped; operator decision on policy surface scope and ownership.) · filed → RM-0005
Continuation checkpoint: Wave 2 stories merged and validated in main for both repos; landing surface active, screenshot/attachment messages carry durable context, confirmation receipts persisted and rendered; platform docs updated. Proceed to wave 3 if deferred capabilities are prioritized or close the initiative if no further scope remains.
Work items
| # | Title | Repository | State | Issue | PR / CI | Review | |
|---|---|---|---|---|---|---|---|
| w1·0 | Define Workspace Shell contracts v1 and validator (navigation, context, capabilities, landing metadata) | workspaces | COMPLETED | #91 | #101merged · CI passed | c1: approve | |
| w2·0 | Render task-/domain-oriented landing surface from existing LandingMetadata | workspaces | COMPLETED | #111 | #114merged · CI passed | c1: approve | |
| w2·1 | Persist optional context annotation with messages (screenshots/attachments) consistent with context-change events | outshine | COMPLETED | #425 | #428merged · CI passed | c1: approve | |
| w1·1 ⛓ | Implement platform-owned shell layout that consumes workspace contracts; integrate global header/org-workspace selection | workspaces | COMPLETED | #92 | #102merged · CI passed | c1: request_changes, c2: approve | |
| w1·2 ⛓ | Context contract plumbing and visible context-change events (UI-only, durable once backend lands) | workspaces | COMPLETED | #93 | #103merged · CI passed | c1: approve | |
| w2·2 ⛓ | Send current context with screenshot/attachment messages and render context near the message | workspaces | COMPLETED | #112 | #115merged · CI passed | c1: request_changes, c2: request_changes | |
| w1·3 ⛓ | Composer UI (platform-owned) with attachments and user-driven screenshot capture stubs | workspaces | COMPLETED | #94 | #105merged · CI passed | c1: approve | |
| w2·3 | Enforce deterministic confirmation for mutating capabilities and persist audit receipts | outshine | COMPLETED | #426 | #429merged · CI passed | c1: approve | |
| w1·4 ⛓ | Conversation persistence service: data model and APIs (create/resume/archive, messages, context events) with authz and bounded retrieval | outshine | COMPLETED | #415 | #420merged · CI passed | c1: request_changes, c2: approve | |
| w2·4 ⛓ | Render audit receipts in timeline and use server-provided confirmation summary in the dialog | workspaces | COMPLETED | #113 | #116merged · CI passed | c1: approve | |
| w1·5 ⛓ | Integrate shell with conversation persistence APIs (create/resume/archive, history by active workspace) | workspaces | COMPLETED | #95 | #106merged · CI passed | c1: approve | |
| w2·5 ⛓ | Docs: Shell landing surface, screenshot context, and confirmation/audit conventions | outshine | COMPLETED | #427 | #430merged · CI passed | c1: approve | |
| w1·6 ⛓ | Attachment upload service: endpoints, storage integration, and metadata linking to messages | outshine | COMPLETED | #416 | #421merged · CI passed | c1: request_changes, c2: approve, c3: approve | |
| w1·7 ⛓ | Wire Composer attachments and screenshots to backend upload service | workspaces | COMPLETED | #96 | #107merged · CI passed | c1: approve | |
| w1·8 ⛓ | Server-side conversational runtime skeleton with read-only capability execution and bounded context | outshine | COMPLETED | #417 | #422merged · CI passed | c1: approve | |
| w1·9 ⛓ | Hook Composer send to server-side runtime with robust UI state (pending, error, retry) | workspaces | COMPLETED | #97 | #108merged · CI passed | c1: approve | |
| w1·10 ⛓ | Deterministic confirmation handshake and audit logging for mutating capabilities (scaffold only) | outshine | COMPLETED | #418 | #423merged · CI passed | c1: approve | |
| w1·11 ⛓ | UI for mutating action confirmation and audit receipts | workspaces | COMPLETED | #98 | #109merged · CI passed | c1: request_changes, c2: approve | |
| w1·12 ⛓ | Responsive/mobile polish for shell, nav, Composer, and timeline | workspaces | COMPLETED | #99 | #110merged · CI passed | c1: approve | |
| w1·13 ⛓ | Contract test harness and CI enforcement for workspace participation | workspaces | COMPLETED | #100 | #104merged · CI passed | c1: approve | |
| w1·14 ⛓ | Observability for conversational pipeline with safe redaction | outshine | COMPLETED | #419 | #424merged · CI passed | c1: approve |
Release candidate
ELIGIBLEAll work complete — merged, reviewed, and unblocked. Release and deployment remain manual.
fbe4c8d6d0 · review approve869bc7a2b6 · review approve2d1dd5e005 · review approvef4c5c03d4d · review approve62c378f784 · review approvefecd84181b · review request_changes · waived2634f40dbc · review approve5c31965115 · review approve6db7ae5b9f · review approveb103f45243 · review approve8d1a8b7820 · review approved43ee6c989 · review approve446fa7fe67 · review approve0b2485cb4a · review approveaea6662813 · review approve33567eecf3 · review approve780b141b9a · review approve19119f8b11 · review approve860707396c · review approve81e3b52251 · review approvef7eb33c87f · review approveRelease planning
Releases are cut in the Release planning section. Associating this initiative requires an admin role.
Associating an initiative to a release only records the link — it never changes the initiative’s own state or work. Releases are optional.
Questions
agent:openai · Send current context with screenshot/attachment messages and render context near the message · 8/11/2026, 1:25:22 PM
Remediation budget exhausted for "Send current context with screenshot/attachment messages and render context near the message" (Xyence/workspaces#115) with unresolved blocking findings. How should this proceed?
Internal fallback logic for inline message context is implemented and tested, but the public API cleanup is not evidenced in the diff: supportsInlineMessageContext has not been shown removed from CreateConversationControllerOptions. Remove that field from the exported options interface to resolve the policy violation.
Answer: Already resolved at 7eb4751 — proceed to merge; do not waive. supportsInlineMessageContext was added in 426e19b and removed in the remediation commit 7eb4751 ("Address review findings"), from the exported CreateConversationControllerOptions interface and every other use site: the destructured parameter, the options spread, the useMemo dependency array, and the test fixture. Verified at the current PR head: the identifier does not appear in conversationController.ts, anywhere else in the tree, or in the PR diff. The interface now exposes only gateway, runtime, historyLimit, now, and onError. The finding is a false positive from an incomplete evidence window — note its own wording, "has not been shown removed", rather than "is present". The removal was in the very commit being judged. There is no policy violation to waive; waiving would record a gap that does not exist. PR #115 is mergeable and CI has passed.
agent:openai · 8/11/2026, 3:10:17 AM
Every work item is complete, but the brief assessment could not verify any of its 1 criteria — it was not shown the full content of the delivered work. Is this initiative done?
Most of the brief’s end‑to‑end behavior and invariants are present and wired: a platform‑owned, contract‑driven shell wraps a real workspace; workspaces declaratively contribute nav and publish semantic context; the platform owns a durable conversation surface (timeline + Composer) with attachments and user‑initiated screenshots; bounded, authorized persistence is integrated; a server‑side conversational runtime runs read‑only capabilities with server‑side re‑auth, stamps provenance, and returns confirmations for mutating actions; confirmation UI and durable audit receipts exist; responsive/mobile behavior is covered; contracts are versioned/tested; and observability is redacted. The one user‑visible item we could not find delivered end‑to‑end is the Workspaces landing experience that lets a user land in Workspaces and select a workspace from a task/domain‑oriented surface. The contract provides landing metadata, but there’s no evidence the shell renders a landing page that uses it. Everything else enumerated by the brief is covered with evidence across the two repos. Every criterion came back "cannot confirm" rather than "not done", and the delivered work exceeded the evidence budget, so the diff content of 1 completed item was withheld from the assessment (their changed-file lists were shown, but not their content) — so this is an unverified verdict, not an adverse one. Check the delivered work yourself before waiving anything: waiving records each criterion as a gap you accepted, and if the work is in fact complete that is a false record. Criteria the assessment could not confirm: - Workspaces landing experience: landing page in shell renders contract ‘landing’ metadata and supports selecting a workspace by task/domain — workspaces#91 defines landing metadata in the contract, but no shell landing UI or tests were shown that render a landing page using it; #92 focuses on in‑workspace shell, header, and nav rather than a Workspaces root landing
Answer: Not done. Verified against main @ 8607073: LandingMetadata is defined in workspace-contract and populated by the orchestrator workspace, but nothing renders it — headline/suggestedActivities have no consumer, and ShellContract documents landing as ignored by the shell layout. WorkspaceLauncher at / lists workspaces by name only; WorkspaceSummary has no task/domain field. No work item in this plan covered it. Do not waive — schedule a follow-up work item for the landing surface.
Timeline
No events yet.