Context. surface studio · domain aja · route /studio/aja/pipeline-cache · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/pipeline-cache/page.tsx
Last walked. 2026-07-02 pipeline-control lane addendum — Playwright real-dev-infra coverage now proves signed-in render, breadcrumbs, route-map contract, quick-action href order, ready build-key/hash forms, 44 px submit targets, blank-source client guard with no POST, real cache-key round-trip, real djb2 hash output, fail-closed loading/unauthorized/catalog-error states, mobile no-overflow, and direct BFF 401/403/400/200 gates for build-key and hash. Spec: apps/oshun/web/e2e/studio-aja-pipeline-control-lane-consoles.spec.ts.' '2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md ; body re-derived 2026-06-03 from current source (lane-console architecture)
Purpose#
Leaf lane console that wires the real @aja/pipeline-cache primitives. The
operator can build a content-addressable cache key (which round-trips through
the parser, surfacing whether it is idempotent) and hash arbitrary content with
the deterministic djb2 hash used for cache addressing.
Entry points#
- Direct URL / bookmark —
/studio/aja/pipeline-cache. - Studio nav — Domain-bridge studios section of
/studio. - Breadcrumb parent —
/studio/aja/pipeline-stages(page breadcrumb). - Sibling quick-actions — Pipeline Stages, SVC Motion Pipeline, Domain Motion Pipelines, Distributed Processing.
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Breadcrumb panel (
data-aja-pipeline-cache-breadcrumbs):<nav aria-label="Aja Pipeline Cache breadcrumbs">→Studio(link) /Aja Pipeline Stages(link →/studio/aja/pipeline-stages) /Pipeline Cache(aria-current="page"). - Workspace
<StudioAjaPipelineCacheWorkspace />:<h1>"Aja Pipeline Cache Workspace" + summary (data-aja-pc-summary).- The build-key form + hash form (states below).
- Route Map panel (
data-aja-pipeline-cache-route-map,<h2>"Route Map"): 6STUDIO_AJA_PIPELINE_CACHE_ROUTE_MAPentries — primary, entries, policies, events, parity, governance. - Quick-action lane: five
Link.quickActionanchors (no self-link).
States#
The lane fetches GET /v1/admin/aja/pipeline-cache on mount.
- Loading —
data-aja-pc-loading"Loading cache primitives…". - Unauthorized —
data-aja-pc-unauthorized(401/403; default "Aja workspace scope required to view pipeline cache."). - Error —
data-aja-pc-error. - Ready (forms) —
data-aja-pc-key-form+data-aja-pc-hash-form. - Key result —
data-aja-pc-key-resultwithdata-aja-pc-keyanddata-aja-pc-idempotent. - Hash result —
data-aja-pc-hash-result(djb2 hash). - Action error —
data-aja-pc-action-error(e.g. "Source id, config hash, and input hash are required.").
Interactions#
Build-key form (data-aja-pc-key-form)#
- Pipeline stage — select
data-aja-pc-field-stage(catalogstages). - Source id — input
data-aja-pc-field-source(defaultclip1). - Config hash — input
data-aja-pc-field-config(defaultc1). - Input hash — input
data-aja-pc-field-input(defaulti1). - Variant (optional) — input
data-aja-pc-field-variant(defaultskel-A). - Build cache key — submit
data-aja-pc-key-submit; firesPOST /v1/admin/aja/pipeline-cache/build-key.
Hash form (data-aja-pc-hash-form)#
- Content — input
data-aja-pc-field-hash(defaultpose-model-v2). - Hash content — submit
data-aja-pc-hash-submit; firesPOST /v1/admin/aja/pipeline-cache/hashwith{ input }.
Route Map#
- Route entries (6) — non-interactive listing.
Quick-action lane#
- "Open Aja Pipeline Stages workspace" →
/studio/aja/pipeline-stages - "Open Aja SVC Motion Pipeline workspace" →
/studio/aja/svc-motion-pipeline - "Open Aja Domain Motion Pipelines workspace" →
/studio/aja/domain-motion-pipelines - "Open Aja Distributed Processing workspace" →
/studio/aja/distributed-processing - "Back to Studio workspace index" →
/studio
E2E coverage#
apps/oshun/web/e2e/studio-aja-pipeline-control-lane-consoles.spec.tscovers signed-in shell render, breadcrumbs, ready build-key and hash forms, blank-source client guard with noPOST, real BFF cache-key round-trip (retargeting:clip1:::c1:i1:skel-A), deterministic djb2 hash output, route-map count, exact quick-action hrefs, 44 px submit targets, loading / unauthorized / malformed-catalog fail-closed states, mobile no-overflow, and direct BFF auth/schema/happy-path gates for build-key and hash.
Data & contracts#
- Reads:
GET /v1/admin/aja/pipeline-cache(catalog:stages,keyFormat). - Writes:
POST /v1/admin/aja/pipeline-cache/build-key→{ cacheKey, parsed, idempotent };POST /v1/admin/aja/pipeline-cache/hash→{ hash }. - Realtime: none.
- Caching: client fetch on mount (
cache: 'no-store'); SSR shell. - Auth/role check: BFF endpoints admin-scoped + fail-closed; route gated signed-in + studio via proxy.
Cross-references#
- Parent:
../../studio-overview.md - Siblings (quick-actions):
./studio-aja-svc-motion-pipeline.md,/studio/aja/pipeline-stages,/studio/aja/domain-motion-pipelines,/studio/aja/distributed-processing - Component sources:
apps/oshun/web/src/components/studio/StudioAjaPipelineCacheWorkspace.tsxapps/oshun/web/src/components/studio/StudioAjaPipelineCacheRouteMap.ts
Known downstream boundaries#
- Route Map lists
entries/policies/events/parity/governancechild routes as descriptive contracts; implementation status of those child pages is tracked separately from this leaf console.