docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

Description

@os-litant

Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

Finding 1 (docs) — three authorable-property rows name a key the validator refuses

content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

linekeyownermirrordoc Type cell
924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

Finding 2 (types) — one on* mirror member is still z.function()

CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

onEventClick: z
.function()
.optional()
.describe('Host-only event click handler (authored JSON cannot produce a function)')

That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

Options for finding 1

  • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
  • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
  • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

      Description

      @os-litant

      Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

      ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

      Finding 1 (docs) — three authorable-property rows name a key the validator refuses

      content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

      linekeyownermirrordoc Type cell
      924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
      925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
      1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

      Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

      The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

      Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

      Finding 2 (types) — one on* mirror member is still z.function()

      CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

      onEventClick: z
      .function()
      .optional()
      .describe('Host-only event click handler (authored JSON cannot produce a function)')
      

      That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

      ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

      Options for finding 1

      • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
      • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
      • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

      No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

          Description

          @os-litant

          Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

          ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

          Finding 1 (docs) — three authorable-property rows name a key the validator refuses

          content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

          linekeyownermirrordoc Type cell
          924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
          925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
          1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

          Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

          The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

          Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

          Finding 2 (types) — one on* mirror member is still z.function()

          CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

          onEventClick: z
          .function()
          .optional()
          .describe('Host-only event click handler (authored JSON cannot produce a function)')
          

          That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

          ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

          Options for finding 1

          • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
          • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
          • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

          No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

              Description

              @os-litant

              Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

              ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

              Finding 1 (docs) — three authorable-property rows name a key the validator refuses

              content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

              linekeyownermirrordoc Type cell
              924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
              925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
              1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

              Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

              The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

              Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

              Finding 2 (types) — one on* mirror member is still z.function()

              CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

              onEventClick: z
              .function()
              .optional()
              .describe('Host-only event click handler (authored JSON cannot produce a function)')
              

              That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

              ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

              Options for finding 1

              • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
              • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
              • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

              No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

                  Description

                  @os-litant

                  Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

                  ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

                  Finding 1 (docs) — three authorable-property rows name a key the validator refuses

                  content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

                  linekeyownermirrordoc Type cell
                  924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                  925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                  1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

                  Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

                  The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

                  Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

                  Finding 2 (types) — one on* mirror member is still z.function()

                  CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

                  onEventClick: z
                  .function()
                  .optional()
                  .describe('Host-only event click handler (authored JSON cannot produce a function)')
                  

                  That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

                  ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

                  Options for finding 1

                  • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
                  • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
                  • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

                  No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

                      Description

                      @os-litant

                      Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

                      ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

                      Finding 1 (docs) — three authorable-property rows name a key the validator refuses

                      content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

                      linekeyownermirrordoc Type cell
                      924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                      925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                      1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

                      Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

                      The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

                      Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

                      Finding 2 (types) — one on* mirror member is still z.function()

                      CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

                      onEventClick: z
                      .function()
                      .optional()
                      .describe('Host-only event click handler (authored JSON cannot produce a function)')
                      

                      That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

                      ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

                      Options for finding 1

                      • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
                      • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
                      • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

                      No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

                          Description

                          @os-litant

                          Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

                          ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

                          Finding 1 (docs) — three authorable-property rows name a key the validator refuses

                          content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

                          linekeyownermirrordoc Type cell
                          924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                          925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                          1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

                          Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

                          The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

                          Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

                          Finding 2 (types) — one on* mirror member is still z.function()

                          CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

                          onEventClick: z
                          .function()
                          .optional()
                          .describe('Host-only event click handler (authored JSON cannot produce a function)')
                          

                          That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

                          ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

                          Options for finding 1

                          • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
                          • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
                          • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

                          No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              docs(api): schema-reference.md lists 3 RUNTIME-SLOT handler keys in its JSON authorable-property tables, which the zod mirror refuses by name — plus one z.function() mirror survivor of #6124's sweep #7351

                              Description

                              @os-litant

                              Filed by the dev of #7340 / PR #7350 (docs half of #6124) as an out-of-scope finding measured while censusing content/docs for retired handler keys. Not fixed there: #7340 explicitly scopes out the 36 runtime-slot keys ("they keep their function type; pages may keep them"), so this needs a triage decision rather than a unilateral edit.

                              ⚠️ An earlier revision of this body listed five rows and called all five "refused by name". That was wrong and is corrected below: only three are refusals, one is a correct row, and one is a separate types finding. The numbers below were re-measured per key against packages/types/src/zod/*.zod.ts.

                              Finding 1 (docs) — three authorable-property rows name a key the validator refuses

                              content/docs/api/schema-reference.md documents JSON node schemas — every example on the page is a JSON document — and each section closes with a | Property | Type | Description | table of authorable properties. Three of those rows name an on* key whose mirror member is handlerKeyRefusal(key, 'runtime-slot', ...), i.e. refused by name at authoring time:

                              linekeyownermirrordoc Type cell
                              924onCardMoveKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                              925onCardClickKanbanSchemahandlerKeyRefusal(..., 'runtime-slot')function
                              1042onViewChangeCalendarViewSchemahandlerKeyRefusal(..., 'runtime-slot')function

                              Line numbers on origin/main @ 4704aa4bb; PR #7350 removes two retired rows at 926–927, so the kanban rows keep their numbers and the calendar row shifts up by 2 once it lands.

                              The #6124 wording is explicit that these are "a host-supplied function, NOT authorable metadata: JSON has no function value, so the zod twin refuses this key by name and points at the node-type spelling." A JSON author reading this table has no way to know that: the other rows (columns, draggable) are authorable and these are not, and the Type column reads function either way.

                              Measured NOT a defect, recorded so it is not re-reported:ViewSwitcherSchema.onViewChange (line 1192, doc Type string) is mirrored as z.string() describing "an event NAME, not a callback or a handler expression" — the page is right about it, and the key belongs to the z.string() dialect population #7344 tracks, not here.

                              Finding 2 (types) — one on* mirror member is still z.function()

                              CalendarViewSchema.onEventClick (packages/types/src/zod/complex.zod.ts:145) is still declared

                              onEventClick: z
                              .function()
                              .optional()
                              .describe('Host-only event click handler (authored JSON cannot produce a function)')
                              

                              That is the exact shape #6124 was opened about ("28 zod-mirror keys are declared z.function(), which NO JSON document can satisfy"), surviving PR #7339's sweep — its sibling on the same schema, onViewChange, became a refusal in that PR. A repo-wide scan finds it is the ONLY remaining on* member with this shape (the four other surviving z.function() members are non-handler keys: cell, renderCellEditor, validate, custom).

                              ⚠️ Check #7344 before acting: it tracks the per-key treatment PR #7339 did not cover (8 z.string(), 3 z.any()). This z.function() case is not named in its title, but it may be inside its scope — fold it in there rather than duplicating if so.

                              Options for finding 1

                              • A — mark the rows: keep them, add a "host-supplied; not authorable in JSON" note in the Description cell (mirroring the disposition the tombstone JSDoc and the refusal message both carry).
                              • B — remove them from this page's authorable tables and document the runtime-slot surface once, centrally, with a pointer.
                              • C — no change: accept that a function type in the Type column already reads as "not a JSON value".

                              No recommendation offered — this is a docs-surface convention call, and the #7340 card already ruled that component pages may keep runtime-slot rows; whether the JSON schema reference is the same case is the actual question. If A or B is chosen, the pin added by PR #7350 (packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts) already carries the machinery: it resolves each doc row's (interface, key) pair against the shipped declaration and can tell runtime-slot from retired without a hand-list. Its CONTROL block currently asserts the opposite (that KanbanSchema.onCardMove / .onCardClick ARE present and callable), so whichever option lands must update that block deliberately.

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions