Skip to content

Studio app structure: layout decision and the mechanical move #1777

Open

Description

@peppescg

Parent: #1774.

Scope

Re-shape the apps/ layout for five feature stacks instead of a skeleton, as a decision plus a no-behaviour-change move.

  • Today: apps/{contracts,server,web} with web/src/{components/{shell,ui},features,lib,routes} — sized for the bootstrap skeleton (shell, auth gate, connection banner). Chat, schedules, knowledge, settings, and search (Studio chat: sessions, streamed runs, controls, chat workspace #1747–Studio global search palette and keyboard-shortcuts reference #1751) land on top of it.
  • Questions to settle: feature-sliced vs layer-first in apps/web; where domain hooks and cross-surface state live; whether apps/contracts stays one package or splits Zod schemas from the generated client; whether the BFF's routes/ + mecatl/ + auth/ split holds at five surfaces; whether the workspace stays apps/ now that it holds exactly one app.
  • Delivery shape: the decision first, then one mechanical PR with no behaviour change — pure moves and import rewrites, so the diff is reviewable and git log --follow survives. Generated files (routeTree.gen.ts, apps/contracts/src/generated/*) are regenerated, never hand-moved.

Human decisions

  • Feature-sliced or layer-first in apps/web?
  • apps/ or studio/ as the workspace root? (affects the studio CI relevance category, task studio:*, .dockerignore, the release job, and every doc path)
  • Does apps/contracts split?

Contract

docs/acceptance/studio-app-structure.md (Bounded — a structure decision with a mechanical move; no interface change, but the paths are a contract every later PR and doc citation depends on). Classified at plan time per docs/development-process.md.

Verification

task studio:check and #1767's integration suite green unchanged across the move (the proof that it is mechanical); task docs for the doc-path citations; task ac-trace for the plan proofs. Lands before the e2e work (#1776) so journeys are not written twice, and before or alongside the agent contract (#1775) so the contract documents the final layout.

Metadata

Metadata

Assignees

No one assigned

    Labels

    WebUIApplies to the WebUI interfacedevexenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions