[finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

Description

@claude

Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

The divergence

Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

siteorder
src/migrations/partial-index-probe.tsraw first, then execute
src/migrations/seed-tenancy-backfill.tsexecute first, then raw
src/protocol.ts (ensureOverlayIndex)raw first, then execute

packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

Why the raw-first sites are not merely a style difference

No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

  • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
  • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
  • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

Not folded into #14023

#14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

Re-run

git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

Dedup declaration

Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

Backlink: #14023, where the sibling directory was converged.

Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Assignees

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

    [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

    Description

    @claude

    Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

    The divergence

    Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

    siteorder
    src/migrations/partial-index-probe.tsraw first, then execute
    src/migrations/seed-tenancy-backfill.tsexecute first, then raw
    src/protocol.ts (ensureOverlayIndex)raw first, then execute

    packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

    Why the raw-first sites are not merely a style difference

    No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

    • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
    • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
    • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

    This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

    Not folded into #14023

    #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

    Re-run

    git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
    git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
    git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

    Dedup declaration

    Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

    Backlink: #14023, where the sibling directory was converged.

    Generated by Claude Code


    Generated by Claude Code

    Metadata

    Metadata

    Assignees

    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

      [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

      Description

      @claude

      Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

      The divergence

      Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

      siteorder
      src/migrations/partial-index-probe.tsraw first, then execute
      src/migrations/seed-tenancy-backfill.tsexecute first, then raw
      src/protocol.ts (ensureOverlayIndex)raw first, then execute

      packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

      Why the raw-first sites are not merely a style difference

      No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

      • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
      • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
      • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

      This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

      Not folded into #14023

      #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

      Re-run

      git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
      git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
      git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

      Dedup declaration

      Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

      Backlink: #14023, where the sibling directory was converged.

      Generated by Claude Code


      Generated by Claude Code

      Metadata

      Metadata

      Assignees

      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

        [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

        Description

        @claude

        Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

        The divergence

        Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

        siteorder
        src/migrations/partial-index-probe.tsraw first, then execute
        src/migrations/seed-tenancy-backfill.tsexecute first, then raw
        src/protocol.ts (ensureOverlayIndex)raw first, then execute

        packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

        Why the raw-first sites are not merely a style difference

        No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

        • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
        • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
        • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

        This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

        Not folded into #14023

        #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

        Re-run

        git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
        git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
        git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

        Dedup declaration

        Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

        Backlink: #14023, where the sibling directory was converged.

        Generated by Claude Code


        Generated by Claude Code

        Metadata

        Metadata

        Assignees

        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

          [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

          Description

          @claude

          Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

          The divergence

          Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

          siteorder
          src/migrations/partial-index-probe.tsraw first, then execute
          src/migrations/seed-tenancy-backfill.tsexecute first, then raw
          src/protocol.ts (ensureOverlayIndex)raw first, then execute

          packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

          Why the raw-first sites are not merely a style difference

          No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

          • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
          • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
          • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

          This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

          Not folded into #14023

          #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

          Re-run

          git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
          git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
          git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

          Dedup declaration

          Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

          Backlink: #14023, where the sibling directory was converged.

          Generated by Claude Code


          Generated by Claude Code

          Metadata

          Metadata

          Assignees

          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

            [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

            Description

            @claude

            Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

            The divergence

            Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

            siteorder
            src/migrations/partial-index-probe.tsraw first, then execute
            src/migrations/seed-tenancy-backfill.tsexecute first, then raw
            src/protocol.ts (ensureOverlayIndex)raw first, then execute

            packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

            Why the raw-first sites are not merely a style difference

            No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

            • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
            • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
            • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

            This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

            Not folded into #14023

            #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

            Re-run

            git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
            git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
            git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

            Dedup declaration

            Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

            Backlink: #14023, where the sibling directory was converged.

            Generated by Claude Code


            Generated by Claude Code

            Metadata

            Metadata

            Assignees

            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

              [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

              Description

              @claude

              Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

              The divergence

              Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

              siteorder
              src/migrations/partial-index-probe.tsraw first, then execute
              src/migrations/seed-tenancy-backfill.tsexecute first, then raw
              src/protocol.ts (ensureOverlayIndex)raw first, then execute

              packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

              Why the raw-first sites are not merely a style difference

              No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

              • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
              • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
              • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

              This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

              Not folded into #14023

              #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

              Re-run

              git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
              git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
              git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

              Dedup declaration

              Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

              Backlink: #14023, where the sibling directory was converged.

              Generated by Claude Code


              Generated by Claude Code

              Metadata

              Metadata

              Assignees

              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

                [finding] metadata-protocol's three driver raw-SQL resolvers try raw and execute in two different orders, and the raw limb is dead on every driver this repo ships #14083

                Description

                @claude

                Found while implementing #14023. That card resolved one half of a three-way divergence; this records the other half, which is out of its scope.

                The divergence

                Three sites in packages/metadata-protocol resolve a raw-SQL entry point off a driver, and they do not agree on the order:

                siteorder
                src/migrations/partial-index-probe.tsraw first, then execute
                src/migrations/seed-tenancy-backfill.tsexecute first, then raw
                src/protocol.ts (ensureOverlayIndex)raw first, then execute

                packages/metadata/src/migrations/ was a fourth shape — raw only, refusing everything else — and #14023 made it execute-first on the 2026-08-07 meta-criterion (one operation, several implementations, inconsistent behaviour, decide by the declaration-bound side). IDataDriver declares execute non-optionally and has never declared raw.

                Why the raw-first sites are not merely a style difference

                No data driver in this repo defines raw — measured on origin/main, the only raw( member outside a test double is an HTTP harness in packages/verify whose signature is (path, init). So on every driver the platform ships, the raw limb of a raw-first resolver is dead and the execute limb is what actually runs. The consequences are small today and worth naming anyway:

                • The dead limb reads as live. Someone maintaining partial-index-probe.ts sees raw as the preferred surface and can reasonably conclude the drivers have it.
                • A host or third-party driver that defines BOTH would be driven through raw at two of these sites and execute at the other two — the same operation, two surfaces, in one process.
                • seed-tenancy-backfill.ts's raw fallback is unreachable for the same reason, in the opposite direction.

                This is an observation about consistency, not a live defect: nothing measured here misbehaves on a shipped driver today. Recording it so the convergence is a decision someone makes rather than a thing that quietly stays split.

                Not folded into #14023

                #14023 remains open on its own terms was not the situation — it is delivered — but its scope was the four files under packages/metadata/src/migrations/, fixed by the PM's dispatch, and metadata-protocol was explicitly outside it. Changing these three sites also has a wider blast radius: ensureOverlayIndex runs on every boot.

                Re-run

                git grep -n "typeof driver.raw === 'function'" -- packages/metadata-protocol/src
                git grep -n "typeof driver.execute === 'function'" -- packages/metadata-protocol/src
                git grep -nE "^\s*(public |protected |private )?(async )?raw\s*\(" -- 'packages/*/src''packages/*/*/src'

                Dedup declaration

                Repo-scoped REST listing of the 62 open domain:engine issues plus a local keyword grep (partial-index-probe, seed-tenancy-backfill, ensureOverlayIndex, raw-first, execute-first). Control: grepping the same fetched list for metadata-protocol returned 12 issues, so the channel was answering. domain:metadata is folded into domain:engine and lists zero open issues. No duplicate found.

                Backlink: #14023, where the sibling directory was converged.

                Generated by Claude Code


                Generated by Claude Code

                Metadata

                Metadata

                Assignees

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions