Admin Cockpit · Surface walkthrough

Safety · Rights, provenance, watermark

A per-surface walkthrough of the Admin Cockpit admin surface: layout, states, interactions, data, and cross-references.

drafted
8sections2 minread

On this page

Context. surface admin · domain safety · route /rights · auth signed-in (admin) + scope:admin:workspace:rights · source apps/oshun/admin/src/app/rights/page.tsx

Last walked.

Purpose#

Inspect lineage, verify watermarks, resolve rights requests, and keep derivative work tied to canonical consent and licensing records. operatorPromise: "Operators can trace a generated artifact back to its consent, provenance bundle, and rights posture without guesswork."

Entry points#

  • Sidebar item "Rights" (AdminSidebar — safety group)
  • Review → rights handoff (review → rights per OSHUN_ADMIN_WORKSPACE_RELATIONSHIPS) — "Review item references a rights, provenance, or watermark concern."
  • Privacy → rights handoff (privacy → rights) — "Privacy request requires provenance lookup to produce an export bundle."
  • Personas → rights handoff (personas → rights) — "Persona release references a rights or provenance bundle that needs verification."

Layout regions#

Inside AdminShell:

  • <WorkspaceEntryPoint workspaceId="rights" ...>
  • When detail.accessible:
    • <RightsProvenancePanel provenanceInspections={provenanceSnapshot.provenanceInspections}>
    • <WatermarkVerificationPanel watermarkVerifications={watermarkSnapshot.watermarkVerifications}>
    • <RightsExportConsentInspectionPanel voiceConsentRecords={provenanceSnapshot.voiceConsentRecords} avatarRightsClearances={provenanceSnapshot.avatarRightsClearances} rightsReportJobs={provenanceSnapshot.rightsReportJobs}>

Two snapshot extractors run against detail.result.value: extractRightsProvenanceSnapshot and extractWatermarkVerificationSnapshot.

States#

  • Anonymous → middleware redirect to /unauthorized?reason=missing-session&returnTo=/rights
  • Signed-in (admin) without admin:*, admin:studio, or admin:workspace:rightsWorkspaceEntryPoint "Access not granted"; the three panels hidden
  • Scope ok + BFF ok → all three panels render
  • Scope ok + BFF workspace-unavailable → entry-point "Workspace data unavailable"; panels hidden
  • Snapshot fields fall through to defaults when detailValue is null
  • Per-panel empty states (no provenance inspections, no watermark verifications, no consent / clearance / report-job rows) handled inside each component

Interactions#

Top-level interactive elements live inside each child panel:

  • RightsProvenancePanel — provenance inspection rows; lineage trace controls (related to the ProvenanceTrustCard primitive seen in the V1-AWEB-104 visual fixture, though that primitive is not directly used here)
  • WatermarkVerificationPanel — watermark verification rows with C2PA / watermark / rights / consent statuses (see the fixture's ProvenanceTrustCard for the visual vocabulary)
  • RightsExportConsentInspectionPanel — three sub-tables: voice consent records, avatar rights clearances, rights report jobs

The page itself exposes no buttons / inputs.

Data & contracts#

  • Reads: loadWorkspaceDetail('rights', session)/v1/admin/workspaces/rights; two snapshot extractors share the same detail.result.value:
    • extractRightsProvenanceSnapshotprovenanceInspections, voiceConsentRecords, avatarRightsClearances, rightsReportJobs
    • extractWatermarkVerificationSnapshotwatermarkVerifications
  • Writes: per panel (provenance dispute, watermark re-verify, consent revocation, rights report kickoff)
  • Realtime: None at page level.
  • Auth/role check: middleware + page (canEnterAdminWorkspace(scopes, 'rights') → required scopes ['admin:*', 'admin:studio', 'admin:workspace:rights'])

Cross-references#

  • Shell: shell/01-app-shell.md, shell/04-workspace-pattern.md
  • Workspace definition: libs/oshun/navigation/src/admin-ia.ts (rightskind: 'investigation', operatorRelationship: 'verify', bffWorkspaceId: 'rights')
  • Handoff origins (from → rights): ../governance/review.md, ../operations/privacy.md, ../content/personas.md
  • Library: apps/oshun/admin/src/lib/rights-provenance-detail.ts, watermark-verification-detail.ts
  • Component sources: RightsProvenancePanel.tsx, WatermarkVerificationPanel.tsx, RightsExportConsentInspectionPanel.tsx, ProvenanceTrustCard.tsx (shared primitive)
  • V1 PWA relationship: WALKTHROUGH/customer/.../studio/isis-provenance.md if present (operator provenance surfaces)

Open questions / known gaps#

  • Confirm whether WatermarkVerificationPanel uses the ProvenanceTrustCard primitive (the V1-AWEB-104 fixture mounts it standalone, but production usage location is unclear from this page)
  • Document the relationship between RightsExportConsentInspectionPanel's three sub-tables and privacy DSAR work in ../operations/privacy.md (which also handles exports)
  • Track whether extractRightsProvenanceSnapshot and extractWatermarkVerificationSnapshot share underlying fixtures or are independently sourced from the BFF payload