---
path: /studio/isis/creator-monetization
surface: studio
domain: isis
auth:
  signed-in + studio entitlement boundary; admin-scoped BFF data; direct legacy
  route hard-blocked outside the localhost E2E lane bypass
source: apps/oshun/web/src/app/studio/isis/creator-monetization/page.tsx
status: walked
last_walked:
  '2026-07-01 real-dev-infra Playwright journey — direct route hard-block,
  localhost lane-bypass admin session, live BFF GET/POST forwarding, valid /
  manual-review / blocked split plans, fail-closed malformed states, route map,
  quick actions, touch targets, non-admin unauthorized, and anonymous redirect.
  Evidence:
  WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md#261-2026-07-01-studio-isis-creator-monetization-coverage'
---

# Isis Creator Monetization

## Purpose

Admin lane console for revenue-split planning. The operator describes a
listing's collaborators (role, percentage share, and whether each accepts) as
JSON; the engine returns the computed per-collaborator shares plus warnings
(e.g. over/under-allocation). Reads the role catalog and plans via
`/v1/admin/isis/creator-monetization`; admin-scoped and fail-closed.

## Entry points

- Sibling quick-action from `/studio/isis/resource-recommendations`
- Studio index (`/studio`)
- Direct URL / bookmark

## Layout regions

`page.tsx` mounts `<ShellLayout active="studio">` (no breadcrumb panel) and
three panels: the workspace, the Route Map, and sibling quick-actions.

- **Header**: shell header
- **Workspace panel** (`data-isis-creator-monetization-workspace`):
  - `<h1>` (`WorkspaceHeading`) "Isis Creator Monetization Workspace"
  - Summary paragraph (`data-isis-creator-monetization-summary`)
  - Available roles (`data-isis-cm-roles`)
  - Plan form (`data-isis-cm-form`)
  - Result (`data-isis-cm-result`) with per-collaborator shares
    (`data-isis-cm-shares`, `data-isis-cm-share=<id>`) and warnings
    (`data-isis-cm-warnings`, `data-isis-cm-warning` /
    `data-isis-cm-no-warnings`)
- **Route Map panel** (`data-isis-creator-monetization-route-map`):
  `<h2>Route Map</h2>` over the route map (5 entries)
- **Sibling quick-actions panel**: `/studio/isis/resource-recommendations`,
  `/studio`

## States

- [x] **Loading** — `data-isis-cm-loading`
- [x] **Unauthorized** — 401/403 admin-scope fail-closed;
      `data-isis-cm-unauthorized`
- [x] **Error** — non-OK / malformed; `data-isis-cm-error`
- [x] **Ready (form)** — roles + plan form render
- [x] **Result** — `data-isis-cm-result` after planning; plan failure →
      `data-isis-cm-plan-error`

## Interactions

### Plan form (`data-isis-cm-form`)

- [x] **Collaborators (JSON)** (`data-isis-cm-collaborators`, textarea,
      `aria-label="collaborators json"`)
- [x] **Plan revenue split** (`data-isis-cm-submit`, submit) — sends
      `POST /v1/admin/isis/creator-monetization/plan`

### Route Map

- [x] **Route-map articles** ×5

### Sibling quick-actions

- [x] **Open Isis Resource Recommendations workspace** →
      `/studio/isis/resource-recommendations`
- [x] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/creator-monetization` (role catalog)
- **Writes**: `POST /v1/admin/isis/creator-monetization/plan` (compute the
  revenue split)
- **Validation**: client requires a non-empty generated timestamp, non-empty
  role/status catalogs, canonical split statuses, known roles for normalized
  shares, non-negative finite share totals/percents, string warnings, a lead
  payee that is either null or present in the normalized shares, and a
  successful `{ ok: true, result }` envelope before rendering or acknowledging a
  plan
- **Realtime**: none
- **Caching**: client fetch on mount, `cache: 'no-store'`,
  `buildBffAuthHeaders()`
- **Auth/role check**: direct legacy Studio route is hard-blocked by the Studio
  boundary; the localhost-only E2E lane bypass exercises the signed-in Studio
  shell and forwards admin-scoped BFF calls fail-closed (401/403)
- **Component sources**:
  - `apps/oshun/web/src/components/studio/StudioIsisCreatorMonetizationWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisCreatorMonetizationRouteMap.ts`

## Automated coverage

- `apps/oshun/web/e2e/studio-isis-creator-monetization.spec.ts` covers the
  direct-route hard block, localhost lane-bypass admin session, live BFF
  role/status catalog, valid split, manual-review terms warning, blocked
  under-allocation, live `invalid_payload` rejection, client JSON validation,
  pending-submit disablement, malformed catalog/plan fail-closed handling,
  route-map articles, quick-actions, 44px textarea/button/link hit targets,
  non-admin unauthorized, anonymous redirect, and the shared axe gate.
- `apps/oshun/web/src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.test.tsx`
  covers ready/unauthorized/malformed catalog behavior.
- `apps/oshun/web/src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.integration.test.tsx`
  covers write success, blocked warnings, client JSON validation, and malformed
  successful write handling.
- `apps/oshun/web/src/components/__tests__/StudioIsisCreatorMonetizationPage.test.tsx`
  and `StudioIsisCreatorMonetizationRouteMap.test.ts` keep the shell/page
  contract and route-map content covered.

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- Sibling routes:
  - [`studio-isis-resource-recommendations.md`](./studio-isis-resource-recommendations.md)
  - [`studio-isis-budget-management.md`](./studio-isis-budget-management.md)
  - [`studio-isis-cost-tracking.md`](./studio-isis-cost-tracking.md)

## Open questions / known gaps

- [x] No breadcrumb on this route — navigation via sibling quick-actions
- [ ] Creator monetization spans Aje (payments / Web3) and Hathor (economy) —
      confirm canonical domain owner for end-to-end payout flows
- [ ] Route-map sub-paths are declared but not yet implemented as separate pages
- [ ] Manual screen-reader, real touch-device, offline-mode, and telemetry
      delivery passes remain pending outside the automated Playwright checks
