Skip to content

Temporarily enable GC on CI - #98616

Draft
lukesandberg wants to merge 2 commits into
gc-10-predicatesfrom
gc-11-ci-enable
Draft

Temporarily enable GC on CI#98616
lukesandberg wants to merge 2 commits into
gc-10-predicatesfrom
gc-11-ci-enable

Conversation

@lukesandberg

Copy link
Copy Markdown
Contributor

No description provided.

@lukesandberg
lukesandberg added this pull request to stack #98592 September 13, 2026 17:21
@github-actions

github-actions Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

Failing test suites

Commit: a300130 | About building and testing Next.js

pnpm test-dev test/development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts (job)

  • instant-nav-panel > SPA captures > should reset the panel and app when pressing the close button from captured SPA state (DD)
  • instant-nav-panel > SPA captures > should keep params and searchParams RSC content suspended for a captured SPA navigation (DD)
  • instant-nav-panel > history traversals > shows real content on forward after back while awaiting navigation (DD)
  • instant-nav-panel > transitions between capture types > should keep the panel in MPA state after capture -> reload and then update to SPA state after client navigation (DD)
Expand output

● instant-nav-panel › SPA captures › should reset the panel and app when pressing the close button from captured SPA state

locator.waitFor: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-testid="dynamic-skeleton"]') to be visible

  278 |     await browser
  279 |       .locator('[data-testid="dynamic-skeleton"]')
> 280 |       .waitFor({ state: 'visible' })
      |        ^
  281 |     await browser
  282 |       .locator('[data-testid="param-skeleton"]')
  283 |       .waitFor({ state: 'visible' })

  at waitFor (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:280:8)
  at Object.expectTargetPageSpaShell (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:675:13)

● instant-nav-panel › SPA captures › should keep params and searchParams RSC content suspended for a captured SPA navigation

locator.waitFor: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-testid="dynamic-skeleton"]') to be visible

  278 |     await browser
  279 |       .locator('[data-testid="dynamic-skeleton"]')
> 280 |       .waitFor({ state: 'visible' })
      |        ^
  281 |     await browser
  282 |       .locator('[data-testid="param-skeleton"]')
  283 |       .waitFor({ state: 'visible' })

  at waitFor (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:280:8)
  at Object.expectTargetPageSpaShell (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:694:13)

● instant-nav-panel › transitions between capture types › should keep the panel in MPA state after capture -> reload and then update to SPA state after client navigation

locator.waitFor: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-testid="dynamic-skeleton"]') to be visible

  278 |     await browser
  279 |       .locator('[data-testid="dynamic-skeleton"]')
> 280 |       .waitFor({ state: 'visible' })
      |        ^
  281 |     await browser
  282 |       .locator('[data-testid="param-skeleton"]')
  283 |       .waitFor({ state: 'visible' })

  at waitFor (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:280:8)
  at Object.expectTargetPageSpaShell (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:794:13)

● instant-nav-panel › history traversals › shows real content on forward after back while awaiting navigation

locator.waitFor: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-testid="dynamic-skeleton"]') to be visible

  278 |     await browser
  279 |       .locator('[data-testid="dynamic-skeleton"]')
> 280 |       .waitFor({ state: 'visible' })
      |        ^
  281 |     await browser
  282 |       .locator('[data-testid="param-skeleton"]')
  283 |       .waitFor({ state: 'visible' })

  at waitFor (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:280:8)
  at Object.expectTargetPageSpaShell (development/app-dir/instant-navs-devtools/instant-navs-devtools.test.ts:870:13)

lukesandberg and others added 2 commits September 13, 2026 12:10
…t transient tasks

Two dependency sets were pinning tasks that nothing actually reaches:

- `cell_dependents` / `cell_dependents_hashed` are redundant with ancestry. A
  cell dependent is either a child, whose child edge already orders the
  teardown, or a sibling reached by passing a `ResolvedVc` laterally, which
  needs a common ancestor that collects both in the same pass. Counting them
  deadlocked the cycle `NftJsonAsset::content` ->
  `all_assets_from_entries_filtered`, whose tasks could then never be collected.
- `output_dependent` is redundant with `parent_count`. It records a read of a
  task's *output* -- the `OperationVc` representation -- and those reads go
  through `connect()`, so the reader is already a child.

With both gone the whole `Data`-category condition goes too, so the predicate
reads only `Meta`: the cheap shard scan and the authoritative under-guard
recheck now get the same answer, rather than the scan being a pre-filter.

Also drops the persistent-only filter in `gc_scan_shard`. Transient tasks are
session-scoped, but a session can be long, so leaving them uncollected retains
whole subgraphs for the life of the process. This was previously blocked by two
failures, both of which are stale references that the preceding commit makes
non-fatal: a `MustExist` panic when an invalidator named a collected task, and a
`Delete` snapshot item for a task with no task type.

`dispose_root_task_releases_anchored_subgraph` now expects two collections
rather than one: the disposed root is itself transient, so releasing the last
reference to the subgraph reclaims the root along with its leaf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant