FuzeFront
▦
LP
Selection Lists · Lead sources

Lead sources

lead-sources ◉ Organization Read-only for you

Shared with everyone in Acme Logistics

You can view this list and pick its values in forms. Being a member lets you read a list, never change it. To change it, ask the list's owner for an editor role. It was created by a user, not set up automatically.

No Fork here: this list already belongs to your organization, so a fork is refused (409 fork_not_applicable) and the UI never offers one. There is no in-app access request, and the list's roster is not visible to you, so the notice names no person: it says only what created_by proves.

created_by user
“It was created by a user, not set up automatically.”
created_by system
“It was set up automatically for your organization.”
created_by deleted user
“Its creator's account has been deleted.”

created_by is an AuthorPrincipal — a user id, a system principal or the deleted-user sentinel, decided offline by its prefix — and never a display name. The hint branches on that form only; it never renders the raw identifier, never claims the creator is still a member, and never looks a usr_ value up (no directory read is part of this contract, and a member without a role cannot read the list's roster).

Label (en)CodeStatus
ReferralREFactive
Trade showEVENTactive
Inbound webWEBactive

A common list your organization has already replaced

Reached from the index with the Common filter, or from a link. The detail asks the service once which list the key means for this organization (getEffectiveList("priority")). If the answer is not this list, the Fork CTA is not offered — forking again would only return the existing fork — and the way forward is your version.

Acme Logistics uses its own version of this list

This is the common Priority list. Forms in your organization use your version instead, which replaced it on Sep 2. Changes to the common list do not reach your version automatically.

If the lookup fails, the page shows the plain common-list notice without a Fork CTA and a quiet “Couldn't check for your organization's version — Retry”: offering Fork on a guess is how a duplicate request ends in a confusing 200. A private fork you hold no role on is invisible to you; the service then answers with the common list, the CTA shows, and forking returns 409 fork_exists (handled there).

Translations tab, read-only

The approved 4.0.0 locale index (selection-lists/07-locale-index) minus every mutation: no “Edit”, no “Auto-fill”, no “Add language”. Rows link to a read-only locale view. Machine text keeps its M badge.

LanguageTranslatedNotes
English (source)5 / 5—
Français5 / 5M 2 machine
עברית5 / 5—

Each translated locale's name opens its read-only locale view at the existing 4.0.0 route /settings/selection-lists/:listId/translations/:locale. The source locale has no link — its text is the Values tab.

Read-only locale view — Français

CodeEnglish (source)FrançaisNotes
LOWLowBasse—
NORMALNormalNormaleM
HIGHHighHauteM

The approved 4.0.0 locale editor (selection-lists/08-locale-editor) with the same reads, rendered readOnly: the target column is plain text — no inputs, no Save / Save all, no “Mark reviewed”, no Auto-fill. Machine text keeps its M badge; for he/ar the target cell carries dir="rtl" exactly as in the editor. Rows shown: the first three of the common Priority list.

States

Every state below is contract. The detail route is the same for every visibility; only the badge, the notice and the way forward change.

Loading

Badge, notice and CTA wait for the list — never guess “editable”

No edit controls and no Fork CTA render until editable, visibility and the effective-list answer are known — a control that flashes and disappears reads as a bug.

Empty — a readable list with no active values

No values to pick from

This list has no active values yet. Forms that use it show “No options available”. Only someone with a role on the list can add values.

No “+ Add value” for a read-only viewer — the 4.0.0 empty-state CTA is gated on editable.

Error — the list loaded, its values didn't

Couldn't load values

Nothing has been changed. The badge and notice above stay — they came from the list, which did load.

Not found — another organization's list, or no shared read

List not found

No list with that id, or you can't read it. Another organization's org list, or a caller without shared read (the developer role), gets 404 — never 403 — so this URL can't probe whether a list exists.

Back to all lists

editable absent — service still on 4.0.0 behaviour

No read-only marker, no notice, no Fork CTA. The detail offers the approved 4.0.0 affordances and lets each mutation's own authorization answer (403 → the 4.0.0 message). Absence is unknown, never false.

Feature flag OFF — fuzefront.selection-lists.shared-lists

warehouse-zones active

The shared-lists UI is absent, not disabled: no visibility badge, no read-only notice, no Fork CTA, no effective-list lookup. The detail is exactly the approved 4.0.0 frame selection-lists/03-list-detail. The service still sends 4.1.0 shapes (visibility: "private", forked_from: null) — the UI ignores them. A member with no role cannot reach Lead sources at all (404), as today.

Test hooks: [data-frame='03-readonly-states'] · [data-visibility='org'] · [data-readonly-notice='org'] · [data-owner-hint][data-created-by-kind='user'] · [data-created-by-kind='system'] · [data-created-by-kind='deleted-user'] · [data-editable='false'] · [data-readonly-notice='shadowed'] · [data-action='open-own-version'] · [data-panel='locale-index'][data-readonly='true'] · [data-action='open-locale-readonly'] · [data-locale-link='fr'] · [data-panel='locale-editor'][data-readonly='true'] · [data-locale-view='fr'] · [data-panel='value-table'][data-state='loading'] · [data-panel='value-table'][data-state='empty'] · [data-panel='value-table'][data-state='error'] · [data-panel='value-table'][data-state='not-found'] · [data-error='NOT_FOUND'] · [data-state='editable-unknown'] · [data-state='flag-off'] · [data-action='retry']
Contract: GET /v1/selection-lists/{listId} · GET /v1/selection-lists/{listId}/items · GET /v1/selection-lists/{listId}/translations · GET /v1/selection-lists?key=&include_shared=true&limit=1. Shared read is SelectionListCatalog:read_shared in the caller's tenant + the service's visibility predicate (design record D4).
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