FuzeFront
▦
DO

Priority

priority ◉ Organization ⑂ Fork of a common list
Who can see this list

People with a role below can always see it. This decides who else can read it and pick its values.

People with a role — approved 4.0.0 access panel, unchanged

PersonRole
Dana OkaforOwner
Lee ParkEditor

Changing it

Organization → Private: confirm the consequence

Make Priority private?

  • Members without a role can no longer see it.
  • Their forms use the common Priority list instead, if one is active — otherwise those forms show “List unavailable”.
  • Values saved from the common list show the common labels again.
  • Values picked from your fork keep showing your fork's labels — they belong to Acme Logistics and still resolve.
  • Nothing is deleted; switch back to Organization at any time.

Private → Organization saves without a confirm (it only widens reading) and toasts “Everyone in Acme Logistics can now see Priority.” The fork-specific lines render only when forked_from is set.

Why the two stored-value lines differ: POST /v1/resolve resolves every item id of the caller's own organization (no per-list read check), so ids picked from the fork keep their fork labels whatever the fork's visibility. Only common-list ids change: they stop being redirected to the fork's labels, because a private fork never redirects. The forms line stays conditional because this page does not read the common list's status; the effective-list lookup only falls through to an active common list.

Saving · saved · failed

Saving… the options are locked until the service answers.
Priority is now private. Only people with a role see it.

When the control is read-only

Not an owner — the roster didn't load (403)

Who can see this list

◉ Organization — everyone in Acme Logistics. Only the list's owner can change this.

Loading · error

Couldn't load access settings. Nothing was changed.

Platform operators only — publishing a common list

The third option renders only when the shell's active organization is the platform organization and the list is owned by it (organization_id = the active org). Everyone else never sees it. The service still decides: publish_platform is evaluated in the platform tenant, and a refusal is the 403 below.

Platform org · list currently Organization

Publish “Ticket channel” to every organization?

  • Every organization can read it and pick its values; organizations that want changes will fork it.
  • It can never become private or organization-only again — organizations will store its value ids. To retire it, archive it.
  • Your later edits reach every organization that hasn't forked it.

Key typed exactly — Publish enabled

Publishing — PATCH {"visibility":"platform"} in flight

The key input opens empty (never pre-filled, no autocomplete) and Publish carries native disabled until the value equals the list key exactly — case-sensitive, no trimming, paste allowed. Any mismatch disables it again. While the request is in flight every control is natively disabled.

Choosing Every organization opens the confirmation and marks the option pending (data-pending, dashed outline) — it does not check it. Organization stays aria-checked="true" and keeps the tab stop until the key is typed and the publish succeeds; Cancel, Esc or a 403 clear the pending mark and leave Organization selected.

A common list — locked (visibility_locked)

Who can see this list

◎ Common 🔒 Locked

Every organization may have saved this list's values, so it can't be made private or organization-only. To retire it, archive it — archived values keep showing everywhere.

No radio group at all for a platform list — the control is a statement, not a disabled input.

Flag OFF

No visibility control: the Access tab is the approved 4.0.0 access panel (selection-lists/10-access-panel) only. Lists are created private as today (the service refuses any other value with 400 while the flag is OFF).

Test hooks: [data-frame='08-visibility-control'] · [data-panel='visibility-control'] · [data-control='visibility'] · [data-visibility-option='private'] · [data-visibility-option='org'][aria-checked='true'] · [data-visibility-option='platform'] · [data-scope='platform-org'] [data-visibility-option='org'][aria-checked='true'] · [data-visibility-option='platform'][data-pending='true'][aria-checked='false'] · [data-confirm='visibility-to-private'] · [data-consequence='forms'] · [data-consequence='stored-common'] · [data-consequence='stored-fork'] · [data-action='confirm-visibility'] · [data-state='saving'] · [data-result='visibility-saved'] · [data-case='visibility-not-owner'] · [data-state='read-only'] · [data-state='loading'] · [data-state='error'] · [data-scope='platform-org'] · [data-confirm='publish-platform'] · [data-confirm-input='key'] · [data-confirm-state='empty'] [data-confirm-input='key'] · [data-confirm-state='empty'] [data-action='confirm-publish'][disabled] · [data-confirm-state='matched'] [data-action='confirm-publish']:not([disabled]) · [data-confirm-state='publishing'] [data-action='confirm-publish'][disabled] · [data-action='confirm-publish'] · [data-state='locked'] · [data-reason='visibility_locked'] · [data-case='publish-forbidden'] · [data-state='flag-off'] · [data-action='retry']
Contract: PATCH /v1/selection-lists/{listId} {visibility} (needs manage_access; platform also publish_platform + platform-org ownership; 409 visibility_locked on demotion) · GET /v1/selection-lists/{listId}/access (decides editable vs read-only control).
Tokens only — no raw hex, spacing or type outside tokens.css / frame.css.

Review · selection-lists-shared approve or reject each flow ↓
shared-readapproved · izzywdev
forkapproved · izzywdev
fork-provenanceapproved · izzywdev
visibilityapproved · izzywdev
effective-pickerapproved · izzywdev