Skip to content

driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

Description

@zhuangjianguo

Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
the one target file, file a finding for the rest). Unassigned: recording only.

What #13688 fixed

Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
budget was never chosen — four sibling files in the same package already carry
explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
(a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

The sweep

A script walked every it(...) nested inside a declareDialectCell(...) callback
in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
files, 37 more it(...) blocks
:

FileCellsit() blocks w/o budget
sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
sql-driver-11565-row-byte-budget.test.tsMySQL6
sql-driver-keyed-text-mysql.test.tsMySQL5
sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
sql-driver-backend-fault-envelope.test.tsPG2
sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
#13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
initObjects(...) (schema-sync DDL), and reads information_schema back — one or
more full connect cycles per test, inline in the it() body. Spot-checked
sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
across the other 7.

sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
reuse a single driver connected once in a beforeAll and each issue 1-2 queries
against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
for completeness since they are still on the inherited default, but the cost profile
is not the same as the other 8 files.

What this is and is not

This is a structural sweep (does an explicit budget exist), not a confirmed list
of CI failures — I have not run these against live MySQL/PG here (no live containers
in this environment; see #13688's own A2.1 for the same constraint). The evidence
that the shape is a real defect, not merely a theoretical one, is #13688 itself:
timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
budgeted) treating "no timeout" as an oversight rather than a choice.

Recommendation

Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
many files in the package -> report before sweeping; a package-wide re-budget is a
different, larger decision" -- so #13688 fixed only its own two tests and this issue
records the rest for a deliberate decision, not a silent drive-by. The repo's existing
convention is a per-test budget (never a package-wide testTimeout, which would
silently re-budget the 150+ tests that legitimately want the fast default) -- same
shape as #13688's fix, applied file by file.

Related

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)) { // Add copy buttons to all
       blocks
      (function() {
      function addCopyButtons() {
      document.querySelectorAll('pre code').forEach(function(codeBlock) {
      if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
      codeBlock.parentElement.setAttribute('data-copy-added', 'true');
      var btn = document.createElement('button');
      btn.textContent = 'Copy';
      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;';
      btn.onmouseover = function() { this.style.opacity = '1'; };
      btn.onmouseout = function() { this.style.opacity = '0.7'; };
      btn.onclick = function() {
      navigator.clipboard.writeText(codeBlock.textContent).then(function() {
      btn.textContent = 'Copied!';
      setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
      });
      };
      codeBlock.parentElement.style.position = 'relative';
      codeBlock.parentElement.appendChild(btn);
      });
      }
      addCopyButtons();
      // Re-run on dynamic content
      var observer = new MutationObserver(addCopyButtons);
      observer.observe(document.body, { childList: true, subtree: true });
      })();
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
      Skip to content

      driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

      Description

      @zhuangjianguo

      Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
      live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
      the one target file, file a finding for the rest). Unassigned: recording only.

      What #13688 fixed

      Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
      2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
      live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
      budget was never chosen — four sibling files in the same package already carry
      explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
      assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
      (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

      The sweep

      A script walked every it(...) nested inside a declareDialectCell(...) callback
      in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
      is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
      files, 37 more it(...) blocks
      :

      FileCellsit() blocks w/o budget
      sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
      sql-driver-11565-row-byte-budget.test.tsMySQL6
      sql-driver-keyed-text-mysql.test.tsMySQL5
      sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
      sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
      sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
      sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
      sql-driver-backend-fault-envelope.test.tsPG2
      sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

      Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
      #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
      initObjects(...) (schema-sync DDL), and reads information_schema back — one or
      more full connect cycles per test, inline in the it() body. Spot-checked
      sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
      across the other 7.

      sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
      reuse a single driver connected once in a beforeAll and each issue 1-2 queries
      against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
      for completeness since they are still on the inherited default, but the cost profile
      is not the same as the other 8 files.

      What this is and is not

      This is a structural sweep (does an explicit budget exist), not a confirmed list
      of CI failures — I have not run these against live MySQL/PG here (no live containers
      in this environment; see #13688's own A2.1 for the same constraint). The evidence
      that the shape is a real defect, not merely a theoretical one, is #13688 itself:
      timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
      budgeted) treating "no timeout" as an oversight rather than a choice.

      Recommendation

      Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
      many files in the package -> report before sweeping; a package-wide re-budget is a
      different, larger decision" -- so #13688 fixed only its own two tests and this issue
      records the rest for a deliberate decision, not a silent drive-by. The repo's existing
      convention is a per-test budget (never a package-wide testTimeout, which would
      silently re-budget the 150+ tests that legitimately want the fast default) -- same
      shape as #13688's fix, applied file by file.

      Related

      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)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
          Skip to content

          driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

          Description

          @zhuangjianguo

          Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
          live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
          the one target file, file a finding for the rest). Unassigned: recording only.

          What #13688 fixed

          Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
          2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
          live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
          budget was never chosen — four sibling files in the same package already carry
          explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
          assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
          (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

          The sweep

          A script walked every it(...) nested inside a declareDialectCell(...) callback
          in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
          is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
          files, 37 more it(...) blocks
          :

          FileCellsit() blocks w/o budget
          sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
          sql-driver-11565-row-byte-budget.test.tsMySQL6
          sql-driver-keyed-text-mysql.test.tsMySQL5
          sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
          sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
          sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
          sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
          sql-driver-backend-fault-envelope.test.tsPG2
          sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

          Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
          #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
          initObjects(...) (schema-sync DDL), and reads information_schema back — one or
          more full connect cycles per test, inline in the it() body. Spot-checked
          sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
          across the other 7.

          sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
          reuse a single driver connected once in a beforeAll and each issue 1-2 queries
          against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
          for completeness since they are still on the inherited default, but the cost profile
          is not the same as the other 8 files.

          What this is and is not

          This is a structural sweep (does an explicit budget exist), not a confirmed list
          of CI failures — I have not run these against live MySQL/PG here (no live containers
          in this environment; see #13688's own A2.1 for the same constraint). The evidence
          that the shape is a real defect, not merely a theoretical one, is #13688 itself:
          timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
          budgeted) treating "no timeout" as an oversight rather than a choice.

          Recommendation

          Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
          many files in the package -> report before sweeping; a package-wide re-budget is a
          different, larger decision" -- so #13688 fixed only its own two tests and this issue
          records the rest for a deliberate decision, not a silent drive-by. The repo's existing
          convention is a per-test budget (never a package-wide testTimeout, which would
          silently re-budget the 150+ tests that legitimately want the fast default) -- same
          shape as #13688's fix, applied file by file.

          Related

          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)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
              Skip to content

              driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

              Description

              @zhuangjianguo

              Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
              live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
              the one target file, file a finding for the rest). Unassigned: recording only.

              What #13688 fixed

              Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
              2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
              live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
              budget was never chosen — four sibling files in the same package already carry
              explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
              assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
              (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

              The sweep

              A script walked every it(...) nested inside a declareDialectCell(...) callback
              in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
              is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
              files, 37 more it(...) blocks
              :

              FileCellsit() blocks w/o budget
              sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
              sql-driver-11565-row-byte-budget.test.tsMySQL6
              sql-driver-keyed-text-mysql.test.tsMySQL5
              sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
              sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
              sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
              sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
              sql-driver-backend-fault-envelope.test.tsPG2
              sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

              Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
              #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
              initObjects(...) (schema-sync DDL), and reads information_schema back — one or
              more full connect cycles per test, inline in the it() body. Spot-checked
              sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
              across the other 7.

              sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
              reuse a single driver connected once in a beforeAll and each issue 1-2 queries
              against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
              for completeness since they are still on the inherited default, but the cost profile
              is not the same as the other 8 files.

              What this is and is not

              This is a structural sweep (does an explicit budget exist), not a confirmed list
              of CI failures — I have not run these against live MySQL/PG here (no live containers
              in this environment; see #13688's own A2.1 for the same constraint). The evidence
              that the shape is a real defect, not merely a theoretical one, is #13688 itself:
              timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
              budgeted) treating "no timeout" as an oversight rather than a choice.

              Recommendation

              Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
              many files in the package -> report before sweeping; a package-wide re-budget is a
              different, larger decision" -- so #13688 fixed only its own two tests and this issue
              records the rest for a deliberate decision, not a silent drive-by. The repo's existing
              convention is a per-test budget (never a package-wide testTimeout, which would
              silently re-budget the 150+ tests that legitimately want the fast default) -- same
              shape as #13688's fix, applied file by file.

              Related

              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)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
                  Skip to content

                  driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

                  Description

                  @zhuangjianguo

                  Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
                  live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
                  the one target file, file a finding for the rest). Unassigned: recording only.

                  What #13688 fixed

                  Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
                  2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
                  live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
                  budget was never chosen — four sibling files in the same package already carry
                  explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
                  assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
                  (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

                  The sweep

                  A script walked every it(...) nested inside a declareDialectCell(...) callback
                  in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
                  is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
                  files, 37 more it(...) blocks
                  :

                  FileCellsit() blocks w/o budget
                  sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
                  sql-driver-11565-row-byte-budget.test.tsMySQL6
                  sql-driver-keyed-text-mysql.test.tsMySQL5
                  sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
                  sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
                  sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
                  sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
                  sql-driver-backend-fault-envelope.test.tsPG2
                  sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

                  Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
                  #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
                  initObjects(...) (schema-sync DDL), and reads information_schema back — one or
                  more full connect cycles per test, inline in the it() body. Spot-checked
                  sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
                  across the other 7.

                  sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
                  reuse a single driver connected once in a beforeAll and each issue 1-2 queries
                  against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
                  for completeness since they are still on the inherited default, but the cost profile
                  is not the same as the other 8 files.

                  What this is and is not

                  This is a structural sweep (does an explicit budget exist), not a confirmed list
                  of CI failures — I have not run these against live MySQL/PG here (no live containers
                  in this environment; see #13688's own A2.1 for the same constraint). The evidence
                  that the shape is a real defect, not merely a theoretical one, is #13688 itself:
                  timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
                  budgeted) treating "no timeout" as an oversight rather than a choice.

                  Recommendation

                  Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
                  many files in the package -> report before sweeping; a package-wide re-budget is a
                  different, larger decision" -- so #13688 fixed only its own two tests and this issue
                  records the rest for a deliberate decision, not a silent drive-by. The repo's existing
                  convention is a per-test budget (never a package-wide testTimeout, which would
                  silently re-budget the 150+ tests that legitimately want the fast default) -- same
                  shape as #13688's fix, applied file by file.

                  Related

                  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)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
                      Skip to content

                      driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

                      Description

                      @zhuangjianguo

                      Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
                      live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
                      the one target file, file a finding for the rest). Unassigned: recording only.

                      What #13688 fixed

                      Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
                      2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
                      live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
                      budget was never chosen — four sibling files in the same package already carry
                      explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
                      assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
                      (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

                      The sweep

                      A script walked every it(...) nested inside a declareDialectCell(...) callback
                      in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
                      is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
                      files, 37 more it(...) blocks
                      :

                      FileCellsit() blocks w/o budget
                      sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
                      sql-driver-11565-row-byte-budget.test.tsMySQL6
                      sql-driver-keyed-text-mysql.test.tsMySQL5
                      sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
                      sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
                      sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
                      sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
                      sql-driver-backend-fault-envelope.test.tsPG2
                      sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

                      Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
                      #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
                      initObjects(...) (schema-sync DDL), and reads information_schema back — one or
                      more full connect cycles per test, inline in the it() body. Spot-checked
                      sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
                      across the other 7.

                      sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
                      reuse a single driver connected once in a beforeAll and each issue 1-2 queries
                      against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
                      for completeness since they are still on the inherited default, but the cost profile
                      is not the same as the other 8 files.

                      What this is and is not

                      This is a structural sweep (does an explicit budget exist), not a confirmed list
                      of CI failures — I have not run these against live MySQL/PG here (no live containers
                      in this environment; see #13688's own A2.1 for the same constraint). The evidence
                      that the shape is a real defect, not merely a theoretical one, is #13688 itself:
                      timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
                      budgeted) treating "no timeout" as an oversight rather than a choice.

                      Recommendation

                      Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
                      many files in the package -> report before sweeping; a package-wide re-budget is a
                      different, larger decision" -- so #13688 fixed only its own two tests and this issue
                      records the rest for a deliberate decision, not a silent drive-by. The repo's existing
                      convention is a per-test budget (never a package-wide testTimeout, which would
                      silently re-budget the 150+ tests that legitimately want the fast default) -- same
                      shape as #13688's fix, applied file by file.

                      Related

                      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)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) · Issue #13902 · objectstack-ai/objectstack · GitHub
                          Skip to content

                          driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

                          Description

                          @zhuangjianguo

                          Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
                          live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
                          the one target file, file a finding for the rest). Unassigned: recording only.

                          What #13688 fixed

                          Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
                          2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
                          live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
                          budget was never chosen — four sibling files in the same package already carry
                          explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
                          assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
                          (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

                          The sweep

                          A script walked every it(...) nested inside a declareDialectCell(...) callback
                          in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
                          is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
                          files, 37 more it(...) blocks
                          :

                          FileCellsit() blocks w/o budget
                          sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
                          sql-driver-11565-row-byte-budget.test.tsMySQL6
                          sql-driver-keyed-text-mysql.test.tsMySQL5
                          sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
                          sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
                          sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
                          sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
                          sql-driver-backend-fault-envelope.test.tsPG2
                          sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

                          Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
                          #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
                          initObjects(...) (schema-sync DDL), and reads information_schema back — one or
                          more full connect cycles per test, inline in the it() body. Spot-checked
                          sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
                          across the other 7.

                          sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
                          reuse a single driver connected once in a beforeAll and each issue 1-2 queries
                          against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
                          for completeness since they are still on the inherited default, but the cost profile
                          is not the same as the other 8 files.

                          What this is and is not

                          This is a structural sweep (does an explicit budget exist), not a confirmed list
                          of CI failures — I have not run these against live MySQL/PG here (no live containers
                          in this environment; see #13688's own A2.1 for the same constraint). The evidence
                          that the shape is a real defect, not merely a theoretical one, is #13688 itself:
                          timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
                          budgeted) treating "no timeout" as an oversight rather than a choice.

                          Recommendation

                          Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
                          many files in the package -> report before sweeping; a package-wide re-budget is a
                          different, larger decision" -- so #13688 fixed only its own two tests and this issue
                          records the rest for a deliberate decision, not a silent drive-by. The repo's existing
                          convention is a per-test budget (never a package-wide testTimeout, which would
                          silently re-budget the 150+ tests that legitimately want the fast default) -- same
                          shape as #13688's fix, applied file by file.

                          Related

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

                              driver-sql: 37 more live-DDL it() blocks across 9 files inherit vitest's 5000ms default (same shape as #13688) #13902

                              Description

                              @zhuangjianguo

                              Filed while implementing #13688 (its A2.2 instruction: sweep the package for other
                              live-DDL tests still on vitest's inherited 5000ms default, widen the fix only within
                              the one target file, file a finding for the rest). Unassigned: recording only.

                              What #13688 fixed

                              Two it(...) blocks in sql-driver-13056-orphan-shadow-column-cleanup.test.ts drove
                              2-3 full new SqlDriver(...) -> initObjects(...) -> disconnect() cycles against
                              live MySQL with no explicit timeout, so they inherited vitest's 5000ms default. That
                              budget was never chosen — four sibling files in the same package already carry
                              explicit per-test budgets (60_000 / 120_000 / 40_000). The timeout (not an
                              assertion failure, no MySQL error in the logs) reddened unrelated PRs, e.g. #13685
                              (a plugin-auth-only diff) and ejected #13687/#13761 from the merge queue (#13767).

                              The sweep

                              A script walked every it(...) nested inside a declareDialectCell(...) callback
                              in packages/drivers/driver-sql/src/*.test.ts and checked whether the third argument
                              is an explicit numeric timeout. Same defect shape, still on the default, in 9 more
                              files, 37 more it(...) blocks
                              :

                              FileCellsit() blocks w/o budget
                              sql-driver-11627-hash-shadow-key.test.tsMySQL, PG9
                              sql-driver-11565-row-byte-budget.test.tsMySQL6
                              sql-driver-keyed-text-mysql.test.tsMySQL5
                              sql-driver-12998-shadow-null-safe-key.test.tsMySQL4
                              sql-driver-13015-shadow-carried-index-drift.test.tsMySQL4
                              sql-driver-11794-richtext-text-family.test.tsMySQL, PG3
                              sql-driver-string-maxlength-varchar.test.tsMySQL, PG3
                              sql-driver-backend-fault-envelope.test.tsPG2
                              sql-driver-11389-date-tz-skew.test.tsMySQL, PG1

                              Most of these (all but sql-driver-backend-fault-envelope.test.ts) follow the exact
                              #13688 shape: each it(...) itself constructs a fresh new SqlDriver(...), calls
                              initObjects(...) (schema-sync DDL), and reads information_schema back — one or
                              more full connect cycles per test, inline in the it() body. Spot-checked
                              sql-driver-11627-hash-shadow-key.test.ts:135 as representative; the pattern repeats
                              across the other 7.

                              sql-driver-backend-fault-envelope.test.ts's two it() blocks are lower-risk: they
                              reuse a single driver connected once in a beforeAll and each issue 1-2 queries
                              against an already-open connection, not a fresh connect/DDL/disconnect cycle. Listed
                              for completeness since they are still on the inherited default, but the cost profile
                              is not the same as the other 8 files.

                              What this is and is not

                              This is a structural sweep (does an explicit budget exist), not a confirmed list
                              of CI failures — I have not run these against live MySQL/PG here (no live containers
                              in this environment; see #13688's own A2.1 for the same constraint). The evidence
                              that the shape is a real defect, not merely a theoretical one, is #13688 itself:
                              timeout-not-assertion, no DB error, and the repo's own convention (4 sibling files
                              budgeted) treating "no timeout" as an oversight rather than a choice.

                              Recommendation

                              Per #13688's dispatch order (STOP condition 3): "A2.2 finds the same shape across
                              many files in the package -> report before sweeping; a package-wide re-budget is a
                              different, larger decision" -- so #13688 fixed only its own two tests and this issue
                              records the rest for a deliberate decision, not a silent drive-by. The repo's existing
                              convention is a per-test budget (never a package-wide testTimeout, which would
                              silently re-budget the 150+ tests that legitimately want the fast default) -- same
                              shape as #13688's fix, applied file by file.

                              Related

                              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