TenantAtlas/specs/182-platform-relocation/contracts/runtime-smoke.openapi.yaml
ahmido ce0615a9c1 Spec 182: relocate Laravel platform to apps/platform (#213)
## Summary
- move the Laravel application into `apps/platform` and keep the repository root for orchestration, docs, and tooling
- update the local command model, Sail/Docker wiring, runtime paths, and ignore rules around the new platform location
- add relocation quickstart/contracts plus focused smoke coverage for bootstrap, command model, routes, and runtime behavior

## Validation
- `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/PlatformRelocation`
- integrated browser smoke validated `/up`, `/`, `/admin`, `/admin/choose-workspace`, and tenant route semantics for `200`, `403`, and `404`

## Remaining Rollout Checks
- validate Dokploy build context and working-directory assumptions against the new `apps/platform` layout
- confirm web, queue, and scheduler processes all start from the expected working directory in staging/production
- verify no legacy volume mounts or asset-publish paths still point at the old root-level `public/` or `storage/` locations

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #213
2026-04-08 08:40:47 +00:00

70 lines
2.5 KiB
YAML

openapi: 3.1.0
info:
title: Platform Relocation Runtime Smoke Contract
version: 0.1.0
description: |
Relocation smoke contract for the preserved HTTP surfaces after moving the Laravel app to apps/platform.
The intent is not to define new APIs, but to formalize which entry surfaces must remain reachable
and what broad response classes are acceptable during smoke validation.
servers:
- url: http://localhost
paths:
/up:
get:
summary: Laravel health endpoint remains reachable
responses:
'200':
description: Health endpoint resolves successfully after relocation.
/:
get:
summary: Public web entry remains reachable
responses:
'200':
description: Public entry loads successfully.
/admin:
get:
summary: Admin shell route remains reachable
responses:
'200':
description: Authenticated admin shell is reachable.
'302':
description: Unauthenticated access redirects to the expected auth entry without a runtime failure.
/admin/choose-workspace:
get:
summary: Workspace chooser remains reachable
responses:
'200':
description: Authenticated workspace chooser loads successfully.
'302':
description: Unauthenticated access redirects to the correct auth entry.
/admin/t/{tenant}/backup-sets:
get:
summary: Tenant-scoped Filament route remains reachable with existing auth semantics
parameters:
- in: path
name: tenant
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Entitled actor can load the tenant-scoped route.
'302':
description: Unauthenticated actor is redirected to login.
'403':
description: Member without required capability remains forbidden.
'404':
description: Non-member or wrong-scope access remains deny-as-not-found.
/system:
get:
summary: System-plane shell route remains reachable
responses:
'200':
description: Authenticated and authorized system shell is reachable.
'302':
description: Unauthenticated access redirects to the expected auth entry.
'403':
description: Authenticated system-plane actor without required capability remains forbidden.
'404':
description: Wrong-plane or non-member access remains deny-as-not-found.