D 2024-02-07 04:31:43.012106+00:00 Params: [('source_key', 'agdicmlk...'), ('last_polled', '2024-02-06-02-34-10')]
I 2024-02-07 04:31:43.032415+00:00 Source: argyleink (GitHub) argyleink, https://brid.gy/github/argyleink
I 2024-02-07 04:31:43.032796+00:00 Last poll: https://brid.gy/log?start_time=1707186850&key=agdicmlkLWd5chULEgZHaXRIdWIiCWFyZ3lsZWluaww
I 2024-02-07 04:31:43.055238+00:00 Updating argyleink (GitHub) /github/argyleink : {'poll_status': 'polling', 'last_poll_attempt': datetime.datetime(2024, 2, 7, 4, 31, 43, 32895, tzinfo=datetime.timezone.utc), 'rate_limited': False}
D 2024-02-07 04:31:43.129915+00:00 Using ETag Mon, 05 Feb 2024 22:08:16 GMT, last activity id yeun:open-color:128
I 2024-02-07 04:31:43.150116+00:00 no refresh_token
I 2024-02-07 04:31:43.150463+00:00 requests.get https://api.github.com/notifications?all=true&participating=true&per_page=10 {'headers': {'If-Modified-Since': '...', 'Authorization': '...'}}
I 2024-02-07 04:31:44.180579+00:00 Received 200
I 2024-02-07 04:31:44.181101+00:00 requests.get https://api.github.com/repos/whatwg/html/issues/9799 {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:44.471255+00:00 Received 200
I 2024-02-07 04:31:44.474094+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/pulls/9515 {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:45.051239+00:00 Received 200
I 2024-02-07 04:31:45.054345+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9887 {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:45.321164+00:00 Received 200
I 2024-02-07 04:31:45.323640+00:00 requests.get https://api.github.com/repos/zachleat/carouscroll/pulls/4 {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:45.683381+00:00 Received 200
I 2024-02-07 04:31:45.686156+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9449 {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:46.006671+00:00 Received 200
I 2024-02-07 04:31:46.009683+00:00 requests.get https://api.github.com/repos/whatwg/html/issues/9799/comments?since=2024-02-05T22:08:16Z {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:46.299290+00:00 Received 200
I 2024-02-07 04:31:46.302135+00:00 requests.get https://api.github.com/repos/whatwg/html/issues/9799/reactions {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:46.727419+00:00 Received 200
I 2024-02-07 04:31:46.732975+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9515/comments?since=2024-02-05T22:08:16Z {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:47.065061+00:00 Received 200
I 2024-02-07 04:31:47.067782+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9515/reactions {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:47.447585+00:00 Received 200
I 2024-02-07 04:31:47.449953+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9887/comments?since=2024-02-05T22:08:16Z {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:48.284297+00:00 Received 200
I 2024-02-07 04:31:48.364648+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9887/reactions {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:48.709353+00:00 Received 200
I 2024-02-07 04:31:48.711277+00:00 requests.get https://api.github.com/repos/zachleat/carouscroll/issues/4/comments?since=2024-02-05T22:08:16Z {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:48.968161+00:00 Received 200
I 2024-02-07 04:31:48.971356+00:00 requests.get https://api.github.com/repos/zachleat/carouscroll/issues/4/reactions {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:49.322747+00:00 Received 200
I 2024-02-07 04:31:49.324756+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9449/comments?since=2024-02-05T22:08:16Z {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:49.658170+00:00 Received 200
I 2024-02-07 04:31:49.663540+00:00 requests.get https://api.github.com/repos/w3c/csswg-drafts/issues/9449/reactions {'headers': {'Authorization': '...'}}
I 2024-02-07 04:31:50.166458+00:00 Received 200
I 2024-02-07 04:31:50.185004+00:00 Found 5 public activities: dict_keys(['tag:github.com,2013:whatwg:html:9799', 'tag:github.com,2013:w3c:csswg-drafts:9515', 'tag:github.com,2013:w3c:csswg-drafts:9887', 'tag:github.com,2013:zachleat:carouscroll:4', 'tag:github.com,2013:w3c:csswg-drafts:9449'])
I 2024-02-07 04:31:50.185223+00:00 Found 0 private activities: dict_keys([])
D 2024-02-07 04:31:50.189673+00:00 discovering original posts for: https://github.com/whatwg/html/issues/9799
I 2024-02-07 04:31:50.190284+00:00 requests.head https://github.com/whatwg/html/labels/addition/proposal {'headers': {}}
I 2024-02-07 04:31:50.651357+00:00 Received 404
W 2024-02-07 04:31:50.651651+00:00 Couldn't resolve URL https://github.com/whatwg/html/labels/addition/proposal: https://github.com/whatwg/html/labels/addition/proposal
I 2024-02-07 04:31:50.651882+00:00 requests.head https://github.com/whatwg/html/labels/topic%3A%20parser {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:51.007247+00:00 Received 404
W 2024-02-07 04:31:51.007545+00:00 Couldn't resolve URL https://github.com/whatwg/html/labels/topic%3A%20parser: https://github.com/whatwg/html/labels/topic%3A%20parser
I 2024-02-07 04:31:51.007783+00:00 requests.head https://github.com/whatwg/html/labels/topic%3A%20forms {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:51.342043+00:00 Received 404
W 2024-02-07 04:31:51.342309+00:00 Couldn't resolve URL https://github.com/whatwg/html/labels/topic%3A%20forms: https://github.com/whatwg/html/labels/topic%3A%20forms
I 2024-02-07 04:31:51.342553+00:00 requests.head https://github.com/whatwg/html/labels/agenda%2B {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:51.704479+00:00 Received 404
W 2024-02-07 04:31:51.704750+00:00 Couldn't resolve URL https://github.com/whatwg/html/labels/agenda%2B: https://github.com/whatwg/html/labels/agenda%2B
I 2024-02-07 04:31:51.704979+00:00 requests.head https://github.com/whatwg/html/labels/stage%3A%200 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:51.999488+00:00 Received 404
W 2024-02-07 04:31:51.999764+00:00 Couldn't resolve URL https://github.com/whatwg/html/labels/stage%3A%200: https://github.com/whatwg/html/labels/stage%3A%200
I 2024-02-07 04:31:51.999991+00:00 requests.head https://open-ui.org/components/selectlist/ {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:52.365179+00:00 Received 200
I 2024-02-07 04:31:52.365535+00:00 requests.head https://github.com/openui/open-ui/issues?q=is%3Aissue+is%3Aopen+label%3Aselect {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:52.735736+00:00 Received 404
W 2024-02-07 04:31:52.736084+00:00 Couldn't resolve URL https://github.com/openui/open-ui/issues?q=is%3Aissue+is%3Aopen+label%3Aselect: https://github.com/openui/open-ui/issues?q=is%3Aissue+is%3Aopen+label%3Aselect
I 2024-02-07 04:31:52.736494+00:00 Original post discovery found original posts set(), mentions {'https://github.com/whatwg/html/labels/topic%3A%20forms', 'https://open-ui.org/components/selectlist/', 'https://github.com/openui/open-ui/issues?q=is%3Aissue+is%3Aopen+label%3Aselect', 'https://github.com/whatwg/html/labels/addition/proposal', 'https://github.com/whatwg/html/labels/topic%3A%20parser', 'https://github.com/whatwg/html/labels/stage%3A%200', 'https://github.com/whatwg/html/labels/agenda%2B'}
I 2024-02-07 04:31:52.738384+00:00 requests.head https://github.com/whatwg/html/issues/9799 {'headers': None}
I 2024-02-07 04:31:54.091343+00:00 Received 200
I 2024-02-07 04:31:54.091669+00:00 starting posse post discovery with syndicated https://github.com/whatwg/html/issues/9799
D 2024-02-07 04:31:54.363886+00:00 discovering original posts for: https://github.com/w3c/csswg-drafts/pull/9515
I 2024-02-07 04:31:54.364306+00:00 Original post discovery found original posts set(), mentions set()
I 2024-02-07 04:31:54.364879+00:00 requests.head https://github.com/w3c/csswg-drafts/pull/9515 {'headers': None}
I 2024-02-07 04:31:55.524584+00:00 Received 200
I 2024-02-07 04:31:55.524875+00:00 starting posse post discovery with syndicated https://github.com/w3c/csswg-drafts/pull/9515
D 2024-02-07 04:31:56.206802+00:00 discovering original posts for: https://github.com/w3c/csswg-drafts/issues/9887
I 2024-02-07 04:31:56.207473+00:00 requests.head https://github.com/w3c/csswg-drafts/labels/Agenda%2B%20F2F {'headers': {}}
I 2024-02-07 04:31:56.527557+00:00 Received 404
W 2024-02-07 04:31:56.527930+00:00 Couldn't resolve URL https://github.com/w3c/csswg-drafts/labels/Agenda%2B%20F2F: https://github.com/w3c/csswg-drafts/labels/Agenda%2B%20F2F
I 2024-02-07 04:31:56.528298+00:00 requests.head https://github.com/w3c/csswg-drafts/labels/css-view-transitions-2 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:31:56.909106+00:00 Received 404
W 2024-02-07 04:31:56.909381+00:00 Couldn't resolve URL https://github.com/w3c/csswg-drafts/labels/css-view-transitions-2: https://github.com/w3c/csswg-drafts/labels/css-view-transitions-2
I 2024-02-07 04:31:56.909662+00:00 Original post discovery found original posts set(), mentions {'https://github.com/w3c/csswg-drafts/labels/css-view-transitions-2', 'https://github.com/w3c/csswg-drafts/labels/Agenda%2B%20F2F'}
I 2024-02-07 04:31:56.910312+00:00 requests.head https://github.com/w3c/csswg-drafts/issues/9887 {'headers': None}
I 2024-02-07 04:31:57.552940+00:00 Received 200
I 2024-02-07 04:31:57.553265+00:00 starting posse post discovery with syndicated https://github.com/w3c/csswg-drafts/issues/9887
I 2024-02-07 04:31:57.622513+00:00 requests.head https://nerdy.dev/ {'headers': {}}
I 2024-02-07 04:31:58.186329+00:00 Received 200
D 2024-02-07 04:31:58.187446+00:00 fetching author url https://nerdy.dev/
I 2024-02-07 04:31:58.187587+00:00 requests.get https://nerdy.dev/ {'gateway': False, 'headers': {}}
I 2024-02-07 04:31:58.719473+00:00 Received 200
D 2024-02-07 04:31:59.866483+00:00 No h-feed found, fallback to top-level h-entrys.
I 2024-02-07 04:31:59.867309+00:00 Feed has 185 entries! only processing the first 100.
I 2024-02-07 04:31:59.868107+00:00 Hit cap of 10 permalinks. Stopping.
D 2024-02-07 04:32:00.070047+00:00 processing permalink: https://nerdy.dev/thinking-on-ways-to-solve-comparison-components
D 2024-02-07 04:32:00.070356+00:00 processing permalink: https://nerdy.dev/subtle-scroll-driven-animation-for-grid-images
D 2024-02-07 04:32:00.070473+00:00 processing permalink: https://nerdy.dev/hd-color-guide
D 2024-02-07 04:32:00.070566+00:00 processing permalink: https://nerdy.dev/thinking-on-ways-to-solve-glitch-effects
D 2024-02-07 04:32:00.070653+00:00 processing permalink: https://nerdy.dev/easy-hsl-rainbow
D 2024-02-07 04:32:00.070750+00:00 processing permalink: https://nerdy.dev/learn-about-color-mix
D 2024-02-07 04:32:00.070827+00:00 processing permalink: https://nerdy.dev/tcss
D 2024-02-07 04:32:00.070921+00:00 processing permalink: https://nerdy.dev/custom-prop-categories
D 2024-02-07 04:32:00.070998+00:00 processing permalink: https://nerdy.dev/a-scrollend-event
D 2024-02-07 04:32:00.071069+00:00 processing permalink: https://nerdy.dev/mc-at-css-day-2023
D 2024-02-07 04:32:00.071151+00:00 posse post discovery found no relationship for https://github.com/w3c/csswg-drafts/issues/9887
D 2024-02-07 04:32:01.079537+00:00 discovering original posts for: https://github.com/zachleat/carouscroll/pull/4
I 2024-02-07 04:32:01.079998+00:00 requests.head https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior {'headers': {}}
I 2024-02-07 04:32:01.349189+00:00 Received 200
I 2024-02-07 04:32:01.349609+00:00 Original post discovery found original posts set(), mentions {'https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior'}
I 2024-02-07 04:32:01.350587+00:00 requests.head https://github.com/zachleat/carouscroll/pull/4 {'headers': None}
I 2024-02-07 04:32:01.819253+00:00 Received 200
I 2024-02-07 04:32:01.819576+00:00 starting posse post discovery with syndicated https://github.com/zachleat/carouscroll/pull/4
D 2024-02-07 04:32:01.891645+00:00 skipping https://nerdy.dev/, already fetched this round
D 2024-02-07 04:32:01.891908+00:00 posse post discovery found no relationship for https://github.com/zachleat/carouscroll/pull/4
D 2024-02-07 04:32:02.208371+00:00 discovering original posts for: https://github.com/w3c/csswg-drafts/issues/9449
I 2024-02-07 04:32:02.209804+00:00 requests.head https://github.com/w3c/csswg-drafts/labels/css-color-4 {'headers': {}}
I 2024-02-07 04:32:02.799934+00:00 Received 404
W 2024-02-07 04:32:02.800227+00:00 Couldn't resolve URL https://github.com/w3c/csswg-drafts/labels/css-color-4: https://github.com/w3c/csswg-drafts/labels/css-color-4
I 2024-02-07 04:32:02.800447+00:00 requests.head https://github.com/w3c/csswg-drafts/labels/Agenda%2B {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:03.194300+00:00 Received 404
W 2024-02-07 04:32:03.194571+00:00 Couldn't resolve URL https://github.com/w3c/csswg-drafts/labels/Agenda%2B: https://github.com/w3c/csswg-drafts/labels/Agenda%2B
I 2024-02-07 04:32:03.194777+00:00 requests.head https://bugs.webkit.org/show_bug.cgi?id=255939 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:03.917059+00:00 Received 200
I 2024-02-07 04:32:03.917445+00:00 requests.head https://bugzilla.mozilla.org/show_bug.cgi?id=1847421 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:04.886921+00:00 Received 200
I 2024-02-07 04:32:04.887292+00:00 requests.head https://bugs.chromium.org/p/chromium/issues/detail?id=1440069&q=lch&can=2 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:05.491956+00:00 Received 200
I 2024-02-07 04:32:05.492309+00:00 requests.head https://github.com/w3c/csswg-drafts/issues/7610 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:07.363757+00:00 Received 200
I 2024-02-07 04:32:07.364661+00:00 requests.head https://github.com/w3c/csswg-drafts/issues/7653 {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:08.363424+00:00 Received 200
I 2024-02-07 04:32:08.363828+00:00 requests.head https://codepen.io/miriamsuzanne/pen/BavZLNG {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:09.595132+00:00 Received 403
W 2024-02-07 04:32:09.595344+00:00 Couldn't resolve URL https://codepen.io/miriamsuzanne/pen/BavZLNG: https://codepen.io/miriamsuzanne/pen/BavZLNG
I 2024-02-07 04:32:09.663809+00:00 requests.head https://svgees.us/Color/ok-clip-lch-explorer.html {'headers': {'User-Agent': '...'}}
I 2024-02-07 04:32:10.234905+00:00 Received 200
I 2024-02-07 04:32:10.235406+00:00 Original post discovery found original posts set(), mentions {'https://github.com/w3c/csswg-drafts/issues/7610', 'https://bugs.webkit.org/show_bug.cgi?id=255939', 'https://codepen.io/miriamsuzanne/pen/BavZLNG', 'https://github.com/w3c/csswg-drafts/labels/css-color-4', 'https://github.com/w3c/csswg-drafts/issues/7653', 'https://github.com/w3c/csswg-drafts/labels/Agenda%2B', 'https://svgees.us/Color/ok-clip-lch-explorer.html', 'https://bugzilla.mozilla.org/show_bug.cgi?id=1847421', 'https://bugs.chromium.org/p/chromium/issues/detail?id=1440069&q=lch&can=2'}
I 2024-02-07 04:32:10.238616+00:00 requests.head https://github.com/w3c/csswg-drafts/issues/9449 {'headers': None}
I 2024-02-07 04:32:11.464611+00:00 Received 200
I 2024-02-07 04:32:11.464966+00:00 starting posse post discovery with syndicated https://github.com/w3c/csswg-drafts/issues/9449
D 2024-02-07 04:32:11.763916+00:00 activity[content] > Can we bring examples to a telecon

I would love to discuss this in a more interactive format!

> authors are encouraged to use the fully interop/supported wide gamut formats, and there's absolutely no safety net in place to ensure those formats work for people on the other end.

Yes, I agree that we made mistakes in the specification here, sorry. I'm trying to straighten things out to provide a user-friendly perceptually-uniform color space. I was hoping to have a fix to test in Canary ready by now, but holidays and things have slowed things down.

> > > We can't put this on authors, and expect them to just keep all their colors in the gamut.

> > I agree with this statement. It shouldn't be expected that an author ensure that all colors be in the gamut of the target device.

> In that case, a solution that is specific to (ok)l** formats is not a solution to this issue. We can't 'bake gamut mapping' into a few wide-gamut formats and be done with it.

I'll try rephrasing what I meant by this part:

> > What concerns me is something slightly different: Should an author specify a color when they do not (or physically cannot) know what that color actually looks like?

I think we need to separate two problems here that both fall under the wider umbrella of "stuff is out of gamut".

* **Problem 1**: Author specifies colors that the author intends (that is, they have observed the color they are specifying on some existing screen), but those colors are outside of the gamut of the target device.
* There exists a whole ecosystem of solutions to this. The oldest and best known would for the screen to use an ICC profile with a perceptual rendering intent, the more modern methods would be to specify metadata such as Mastering Display Color Volume (aka MDCV [SMPTE ST 2086](https://ieeexplore.ieee.org/document/8353899))) or Content Color Volume (aka CCV [ISO/IEC 23008-2](https://www.iso.org/standard/85457.html)).)..
* The user agent should act in concert with the underlying operating system and display hardware to do the best thing here. I don't think we should be prescribing behavior at level of the browser apart from the guidance to "please do a good job" -- different browsers in different circumstances on different displays in different monitors may take different approaches to solving this problem.

* **Problem 2**: Author specifies colors that do not physically exist or that they have never seen because no display hardware can produce them.
* This is a "garbage in, garbage out" situation, and I think it's really dangerous to get into the business of trying to assign meaning to physically non-existent colors.
* BTW, The color `oklch(90% 90% 0deg)` is a physically impossible color (I may have incorrectly stated earlier that it was physically possible -- I plugged it in to [this app](https://ccameron-chromium.github.io/webgl-examples/gamut.html) and found that it isn't within the convex hull of the spectral colors, see the attached screenshot).

<img width="1204" alt="point-not-real" src="https://github.com/w3c/csswg-drafts/assets/32557109/ae0ebf16-6284-4521-9cbe-aec5f4833b57">

> Can we narrow in on a path forward?

I think we need to separate two core features that are being discussed.

* **Feature A (the one from this issue)**: The web should have a user-friendly perceptually uniform color space
* I want for us to find a solution to this problem.
* `oklab` and `oklch` turned out not to be good solutions to the problem of "user-friendly space to specify color in", because it's too easy to specify nonsense colors.
* That creates the new problem of "assign meaning to nonsense colors".
* The spec fixed that problem by imposing a very specific gamut mapping algorithm on *all* colors.
* This algorithm is good at solving the "assign meaning to nonsense colors in a way that comports well with `oklab` and `oklch`" problem.
* Other gamut mapping algorithms would break the desirable properties of the `oklab` and `oklch` spaces.
* A different fix might be to bake a specific gamut mapping into only `oklab` and `oklch`.
* A space like `okhsv` and `okhsl` would be a better match for this problem.

* **Feature B**: The web should impose standard gamut mapping on content (solving Problem 2)
* This problem has many existing solutions at the OS, GPU, display controller, and display hardware level. The web feels like the wrong level to impose a solution.
* We are only trying to solve this problem because we see it as a solution to the problem of "impose meaning on physically meaningless colors values", and we're only encountering physically meaningless color values because `oklab` and `oklch` make them easy to create.

I think that we should narrow our focus to Feature A: Provide a user-friendly percetually-uniform color space. Maybe we can patch up `oklab` and `oklch` to do this, or maybe we should introduce something else that avoids producing meaningless values.

I don't think we should try to solve Feature B (general gamut mapping) as a way to fix problems in a particular solution for Feature A. I also think that Feature B should not be solved at this level of the stack.

To respond to the specific points you brought up:

* > the current spec does that decently well using oklch and ΔEOK.
* Yes, this approach does indeed do a good job of imposing meaning on the `oklab` and `oklch` colors (with some quibbles about some of the numerical specifics, and firming up what exactly we are mapping to in all circumstances).
* > is there a solid counter-proposal for a multi-channel mapping algorithm?
* I don't want to be in the prescribed gamut mapping business, so I haven't set out any alternatives.
* > different formats represent different authors intents in some heuristic way?
* Yeah, that's kinda where I'm going ... "if the author is using `srgb` or `display-p3`, they probably are going to give meaningful color values, but if the author is using `oklch` or `oklab`, then they are likely to hand me something physically impossible".
=> > Can we bring examples to a telecon

I would love to discuss this in a more interactive format!

> authors are encouraged to use the fully interop/supported wide gamut formats, and there's absolutely no safety net in place to ensure those formats work for people on the other end.

Yes, I agree that we made mistakes in the specification here, sorry. I'm trying to straighten things out to provide a user-friendly perceptually-uniform color space. I was hoping to have a fix to test in Canary ready by now, but holidays and things have slowed things down.

> > > We can't put this on authors, and expect them to just keep all their colors in the gamut.

> > I agree with this statement. It shouldn't be expected that an author ensure that all colors be in the gamut of the target device.

> In that case, a solution that is specific to (ok)l** formats is not a solution to this issue. We can't 'bake gamut mapping' into a few wide-gamut formats and be done with it.

I'll try rephrasing what I meant by this part:

> > What concerns me is something slightly different: Should an author specify a color when they do not (or physically cannot) know what that color actually looks like?

I think we need to separate two problems here that both fall under the wider umbrella of "stuff is out of gamut".

* **Problem 1**: Author specifies colors that the author intends (that is, they have observed the color they are specifying on some existing screen), but those colors are outside of the gamut of the target device.
* There exists a whole ecosystem of solutions to this. The oldest and best known would for the screen to use an ICC profile with a perceptual rendering intent, the more modern methods would be to specify metadata such as Mastering Display Color Volume (aka MDCV [SMPTE ST 2086](https://ieeexplore.ieee.org/document/8353899))) or Content Color Volume (aka CCV [ISO/IEC 23008-2](https://www.iso.org/standard/85457.html)).)..
* The user agent should act in concert with the underlying operating system and display hardware to do the best thing here. I don't think we should be prescribing behavior at level of the browser apart from the guidance to "please do a good job" -- different browsers in different circumstances on different displays in different monitors may take different approaches to solving this problem.

* **Problem 2**: Author specifies colors that do not physically exist or that they have never seen because no display hardware can produce them.
* This is a "garbage in, garbage out" situation, and I think it's really dangerous to get into the business of trying to assign meaning to physically non-existent colors.
* BTW, The color `oklab(0.9 0.9 0.0)` is a physically impossible color (I may have incorrectly stated earlier that it was physically possible -- I plugged it in to [this app](https://ccameron-chromium.github.io/webgl-examples/gamut.html) and found that it isn't within the convex hull of the spectral colors, see the attached screenshot). [**EDIT** -- I wrote `oklch(90% 90% 0deg)` but as you can see in the figures, it's actually `oklab(0.9 0.9 0.0)`]

<img width="1204" alt="point-not-real" src="https://github.com/w3c/csswg-drafts/assets/32557109/ae0ebf16-6284-4521-9cbe-aec5f4833b57">

> Can we narrow in on a path forward?

I think we need to separate two core features that are being discussed.

* **Feature A (the one from this issue)**: The web should have a user-friendly perceptually uniform color space
* I want for us to find a solution to this problem.
* `oklab` and `oklch` turned out not to be good solutions to the problem of "user-friendly space to specify color in", because it's too easy to specify nonsense colors.
* That creates the new problem of "assign meaning to nonsense colors".
* The spec fixed that problem by imposing a very specific gamut mapping algorithm on *all* colors.
* This algorithm is good at solving the "assign meaning to nonsense colors in a way that comports well with `oklab` and `oklch`" problem.
* Other gamut mapping algorithms would break the desirable properties of the `oklab` and `oklch` spaces.
* A different fix might be to bake a specific gamut mapping into only `oklab` and `oklch`.
* A space like `okhsv` and `okhsl` would be a better match for this problem.

* **Feature B**: The web should impose standard gamut mapping on content (solving Problem 2)
* This problem has many existing solutions at the OS, GPU, display controller, and display hardware level. The web feels like the wrong level to impose a solution.
* We are only trying to solve this problem because we see it as a solution to the problem of "impose meaning on physically meaningless colors values", and we're only encountering physically meaningless color values because `oklab` and `oklch` make them easy to create.

I think that we should narrow our focus to Feature A: Provide a user-friendly percetually-uniform color space. Maybe we can patch up `oklab` and `oklch` to do this, or maybe we should introduce something else that avoids producing meaningless values.

I don't think we should try to solve Feature B (general gamut mapping) as a way to fix problems in a particular solution for Feature A. I also think that Feature B should not be solved at this level of the stack.

To respond to the specific points you brought up:

* > the current spec does that decently well using oklch and ΔEOK.
* Yes, this approach does indeed do a good job of imposing meaning on the `oklab` and `oklch` colors (with some quibbles about some of the numerical specifics, and firming up what exactly we are mapping to in all circumstances).
* > is there a solid counter-proposal for a multi-channel mapping algorithm?
* I don't want to be in the prescribed gamut mapping business, so I haven't set out any alternatives.
* > different formats represent different authors intents in some heuristic way?
* Yeah, that's kinda where I'm going ... "if the author is using `srgb` or `display-p3`, they probably are going to give meaningful color values, but if the author is using `oklch` or `oklab`, then they are likely to hand me something physically impossible".

I 2024-02-07 04:32:11.764658+00:00 Response changed! Re-propagating. Original: Response(key=Key('Response', 'tag:github.com,2013:w3c:csswg-drafts:IC_kwDOAI0trM5x2KVX'), activities_json=['{"id":"tag:github.com,2013:w3c:csswg-drafts:9449","url":"https://github.com/w3c/csswg-drafts/issues/9449","content":"This is not an issue in the css-color-4 spec, but in all the implementations. While issues have been filed on the individual bug trackers, I wanted to raise the issue with the CSSWG since it seems like this was an intentional decision agreed to by the browser vendors.\\n\\nHere are the individual bug reports:\\n\\n- https://bugs.webkit.org/show_bug.cgi?id=255939\\n- https://bugzilla.mozilla.org/show_bug.cgi?id=1847421\\n- https://bugs.chromium.org/p/chromium/issues/detail?id=1440069&q=lch&can=2\\n\\nAnd, as I understand, the decision was made in these CSSWG issues:\\n\\n- https://github.com/w3c/csswg-drafts/issues/7610\\n- https://github.com/w3c/csswg-drafts/issues/7653\\n\\nI\'m opening a separate issue because I don\'t have strong feelings about all the details of a gamut mapping algorithm, but I\'m pretty frustrated about the state of what browsers shipped here, and I think we need to do something to fix it asap. From an authoring perspective it\'s entirely unusable, and _it breaks the fundamental promise of the format_: providing perceptually-uniform lightness.\\n\\n- Here\'s a [codepen demo](https://codepen.io/miriamsuzanne/pen/BavZLNG) showing two colors with the same hue and lightness values, but vastly different perceptual lightness in the results.\\n- Here\'s a [tool for comparing gamut-mapping options](https://svgees.us/Color/ok-clip-lch-explorer.html) - set the lightness low (eg 0.25) and clip gives colors which are over-saturated/too light, set the lightness high (eg .85) and clip gives over-saturated and too dark.\\n\\nThis is the format that authors were most excited about, and it doesn\'t do what we told them it does. I really wish this feature hadn\'t shipped at all, since it clearly wasn\'t ready to ship. Adding agenda+ because I think this deserves more eyes on it, and more urgency in fixing it."}'], created=DatetimeWithNanoseconds(2024, 1, 26, 8, 36, 41, 166216, tzinfo=datetime.timezone.utc), error=[], failed=[], leased_until=None, old_response_jsons=[], original_posts=[], response_json='{"id":"tag:github.com,2013:w3c:csswg-drafts:IC_kwDOAI0trM5x2KVX","url":"https://github.com/w3c/csswg-drafts/issues/9449#issuecomment-1910023511","author":{"id":"tag:github.com,2013:MDQ6VXNlcjMyNTU3MTA5","url":"https://github.com/ccameron-chromium","displayName":"ccameron-chromium","objectType":"person","username":"ccameron-chromium","image":{"url":"https://avatars.githubusercontent.com/u/32557109?v=4"}},"content":"> Can we bring examples to a telecon\\n\\nI would love to discuss this in a more interactive format!\\n\\n> authors are encouraged to use the fully interop/supported wide gamut formats, and there\'s absolutely no safety net in place to ensure those formats work for people on the other end.\\n\\nYes, I agree that we made mistakes in the specification here, sorry. I\'m trying to straighten things out to provide a user-friendly perceptually-uniform color space. I was hoping to have a fix to test in Canary ready by now, but holidays and things have slowed things down.\\n\\n> > > We can\'t put this on authors, and expect them to just keep all their colors in the gamut.\\n\\n> > I agree with this statement. It shouldn\'t be expected that an author ensure that all colors be in the gamut of the target device.\\n\\n> In that case, a solution that is specific to (ok)l** formats is not a solution to this issue. We can\'t \'bake gamut mapping\' into a few wide-gamut formats and be done with it.\\n\\nI\'ll try rephrasing what I meant by this part:\\n\\n> > What concerns me is something slightly different: Should an author specify a color when they do not (or physically cannot) know what that color actually looks like?\\n\\nI think we need to separate two problems here that both fall under the wider umbrella of \\"stuff is out of gamut\\".\\n\\n* **Problem 1**: Author specifies colors that the author intends (that is, they have observed the color they are specifying on some existing screen), but those colors are outside of the gamut of the target device.\\n * There exists a whole ecosystem of solutions to this. The oldest and best known would for the screen to use an ICC profile with a perceptual rendering intent, the more modern methods would be to specify metadata such as Mastering Display Color Volume (aka MDCV [SMPTE ST 2086](https://ieeexplore.ieee.org/document/8353899))) or Content Color Volume (aka CCV [ISO/IEC 23008-2](https://www.iso.org/standard/85457.html)).)..\\n * The user agent should act in concert with the underlying operating system and display hardware to do the best thing here. I don\'t think we should be prescribing behavior at level of the browser apart from the guidance to \\"please do a good job\\" -- different browsers in different circumstances on different displays in different monitors may take different approaches to solving this problem.\\n\\n* **Problem 2**: Author specifies colors that do not physically exist or that they have never seen because no display hardware can produce them.\\n * This is a \\"garbage in, garbage out\\" situation, and I think it\'s really dangerous to get into the business of trying to assign meaning to physically non-existent colors.\\n * BTW, The color `oklch(90% 90% 0deg)` is a physically impossible color (I may have incorrectly stated earlier that it was physically possible -- I plugged it in to [this app](https://ccameron-chromium.github.io/webgl-examples/gamut.html) and found that it isn\'t within the convex hull of the spectral colors, see the attached screenshot).\\n\\n<img width=\\"1204\\" alt=\\"point-not-real\\" src=\\"https://github.com/w3c/csswg-drafts/assets/32557109/ae0ebf16-6284-4521-9cbe-aec5f4833b57\\">\\n\\n> Can we narrow in on a path forward?\\n\\nI think we need to separate two core features that are being discussed.\\n\\n* **Feature A (the one from this issue)**: The web should have a user-friendly perceptually uniform color space\\n * I want for us to find a solution to this problem.\\n * `oklab` and `oklch` turned out not to be good solutions to the problem of \\"user-friendly space to specify color in\\", because it\'s too easy to specify nonsense colors.\\n * That creates the new problem of \\"assign meaning to nonsense colors\\".\\n * The spec fixed that problem by imposing a very specific gamut mapping algorithm on *all* colors.\\n * This algorithm is good at solving the \\"assign meaning to nonsense colors in a way that comports well with `oklab` and `oklch`\\" problem.\\n * Other gamut mapping algorithms would break the desirable properties of the `oklab` and `oklch` spaces.\\n * A different fix might be to bake a specific gamut mapping into only `oklab` and `oklch`.\\n * A space like `okhsv` and `okhsl` would be a better match for this problem.\\n\\n* **Feature B**: The web should impose standard gamut mapping on content (solving Problem 2)\\n * This problem has many existing solutions at the OS, GPU, display controller, and display hardware level. The web feels like the wrong level to impose a solution.\\n * We are only trying to solve this problem because we see it as a solution to the problem of \\"impose meaning on physically meaningless colors values\\", and we\'re only encountering physically meaningless color values because `oklab` and `oklch` make them easy to create.\\n\\nI think that we should narrow our focus to Feature A: Provide a user-friendly percetually-uniform color space. Maybe we can patch up `oklab` and `oklch` to do this, or maybe we should introduce something else that avoids producing meaningless values.\\n\\nI don\'t think we should try to solve Feature B (general gamut mapping) as a way to fix problems in a particular solution for Feature A. I also think that Feature B should not be solved at this level of the stack.\\n\\nTo respond to the specific points you brought up:\\n\\n* > the current spec does that decently well using oklch and \\u0394EOK.\\n * Yes, this approach does indeed do a good job of imposing meaning on the `oklab` and `oklch` colors (with some quibbles about some of the numerical specifics, and firming up what exactly we are mapping to in all circumstances).\\n* > is there a solid counter-proposal for a multi-channel mapping algorithm?\\n * I don\'t want to be in the prescribed gamut mapping business, so I haven\'t set out any alternatives.\\n* > different formats represent different authors intents in some heuristic way?\\n * Yeah, that\'s kinda where I\'m going ... \\"if the author is using `srgb` or `display-p3`, they probably are going to give meaningful color values, but if the author is using `oklch` or `oklab`, then they are likely to hand me something physically impossible\\".\\n","published":"2024-01-25T11:51:03+00:00","updated":"2024-01-25T11:51:03+00:00","objectType":"comment","inReplyTo":[{"url":"https://github.com/w3c/csswg-drafts/issues/9449"}]}', sent=[], skipped=[], source=Key('GitHub', 'argyleink'), status='complete', type='comment', unsent=[], updated=datetime.datetime(2024, 2, 7, 4, 32, 11, 666158, tzinfo=datetime.timezone.utc), urls_to_activity=None)
I 2024-02-07 04:32:11.949692+00:00 Added propagate task projects/brid-gy/locations/us-central1/queues/propagate/tasks/2606342311308853805 with ETA None: {'app_engine_http_request': {'http_method': 'POST', 'relative_uri': '/_ah/queue/propagate', 'body': b'response_key=agdicmlkLWd5ckYLEghSZXNwb25zZSI4dGFnOmdpdGh1Yi5jb20sMjAxMzp3M2M6Y3Nzd2ctZHJhZnRzOklDX2t3RE9BSTB0ck01eDJLVlgM', 'headers': {'Content-Type': 'application/x-www-form-urlencoded'}}}
I 2024-02-07 04:32:17.184491+00:00 skipping refetch h-feed. last-syndication-url None, last-refetch 2023-01-09 21:47:50.419794+00:00
I 2024-02-07 04:32:17.194940+00:00 Updating argyleink (GitHub) /github/argyleink : {'last_activity_id': 'zachleat:carouscroll:4', 'recent_private_posts': 0, 'last_polled': datetime.datetime(2024, 2, 7, 4, 31, 43, 32895, tzinfo=datetime.timezone.utc), 'poll_status': 'ok', 'last_activities_etag': 'Tue, 06 Feb 2024 22:32:21 GMT'}
I 2024-02-07 04:32:17.363446+00:00 Added poll task projects/brid-gy/locations/us-central1/queues/poll/tasks/28241835865702901371 with ETA 1707379983: {'app_engine_http_request': {'http_method': 'POST', 'relative_uri': '/_ah/queue/poll', 'body': b'source_key=agdicmlkLWd5chULEgZHaXRIdWIiCWFyZ3lsZWluaww&last_polled=2024-02-07-04-31-43', 'headers': {'Content-Type': 'application/x-www-form-urlencoded'}}, 'schedule_time': seconds: 1707379983
}