Skip to content

perf(ci): cache dependencies and shard web and server tests - #1985

Merged
donjor merged 1 commit into
hyprwsfrom
t3/speed-up-ci-test-sharding
Nov 1, 2026
Merged

donjor merged 1 commit into
hyprwsfrom
t3/speed-up-ci-test-sharding

Conversation

@donjor-agent

@donjor-agent donjor-agent Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

🤖 claude/anthropic claude-opus-5-5 (high) · host
with worker pi/openai gpt-6.1-sol (low)

Problem

PR CI takes 10.4 minutes median on GitHub-hosted runners; server and web tests share the critical path.

Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards

Six server shards finish in 4:48–5:51; two web shards finish in 4:59 / 5:34.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled Test job is now the critical path at 8:43, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only CI and merge-tree, so no ruleset change is needed.

Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No test:cached, flaky-test fixes, ruleset changes, or upstream writes.

Verification

  • Workflow passes actionlint
  • Browser/unit shard probe: 18 tests passed
  • Each probe shard runs one browser file
  • Each probe shard runs one unit file
  • No overlap across the four probe files
  • vp run fork:ci: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at scripts/notify-discord-release.test.ts:365.
A subprocess trace shows the host shell fails before the fixture runs: /home/user/.bashrc: line 255: path_prepend: command not found, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.

Hosted CI measurements

Run 41293089108 is green on attempt 2, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took 14:51 end-to-end including the failed attempt and rerun; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, 41278753510, took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

Job Earlier green This green run
Changes 0:05 0:07
Check 4:37 3:54
Test 6:05 8:43
Test Scripts 2:16 2:10
Test Web / Web 1 7:18 4:59
Test Web 2 n/a 5:34
Test Server 1 10:17 4:49
Test Server 2 7:58 4:51
Test Server 3 6:54 5:06
Test Server 4 n/a 5:11
Test Server 5 n/a 4:48
Test Server 6 n/a 5:51
merge-tree 0:20 0:18
CI 0:03 0:03

GPT Sol via Pi.

Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol

@donjor donjor self-assigned this Nov 1, 2026
@donjor-agent

donjor-agent Bot commented Nov 1, 2026

Copy link
Copy Markdown
Author

🤖 claude/anthropic claude-opus-5-5 (high) · host
with worker pi/openai gpt-6.1-sol (low)

Requested a rerun for one exact failed or cancelled CI job on the unchanged pull-request head. GitHub may also rerun dependent jobs.

  • Head: 6f080e8fa143db704e13e2214d1d6596d15c089d
  • Workflow: hyprws CI; run 41293089108; pre-rerun attempt 1; open run
  • Job: Test Web 1; id 124808253268; open job
  • Check run: 124808253268
  • Genuine flake reason: Unchanged Mermaid-render test hit its async SVG assertion; the same file passes all 10 tests locally in isolation. No test changes or weakened assertions.

@donjor
donjor marked this pull request as ready for review November 1, 2026 09:46
@donjor
donjor merged commit 5315205 into hyprws Nov 1, 2026
@donjor
donjor deleted the t3/speed-up-ci-test-sharding branch November 1, 2026 09:48
donjor added a commit that referenced this pull request Nov 3, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 3, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

PR CI takes **10.4 minutes median** on GitHub-hosted runners; server and web tests share the critical path.

## Change

Reuse upstream's dependency, Chromium, and Electron cache steps without its private task-cache token or Blacksmith assumptions.

```diff
- Test Server: 3 shards
- Test Web: 1 job
+ Test Server: 6 shards
+ Test Web: 2 shards
```

Six server shards finish in **4:48–5:51**; two web shards finish in **4:59 / 5:34**.
Server test steps measure 209–273s (232s median), against the supplied three-shard median of 338s; web steps measure 256s / 265s, against 478s unsharded.
More web shards would not shorten this run: the unchanged pooled `Test` job is now the critical path at **8:43**, including 432s for mobile tests.
The approximate six-minute goal is not reached.
The workflow has 14 jobs including Changes and CI, below the org's 20 concurrent hosted-job limit.
The aggregate still depends on both matrix job IDs; ruleset 21768840 requires only `CI` and `merge-tree`, so no ruleset change is needed.

## Scope and approval

The maintainer explicitly approved this CI-only implementation and draft PR.
No `test:cached`, flaky-test fixes, ruleset changes, or upstream writes.

## Verification

- [x] Workflow passes actionlint
- [x] Browser/unit shard probe: 18 tests passed
- [x] Each probe shard runs one browser file
- [x] Each probe shard runs one unit file
- [x] No overlap across the four probe files
- [ ] `vp run fork:ci`: exit 1, Scripts failed

The committed-head preflight passed delta, stale-delete, fixup-fold, merge-tree, scan, knip, check, typecheck, and fork-tests (220 files, 1215 tests).
Scripts passed 596 tests and failed one unchanged Discord release workflow test at `scripts/notify-discord-release.test.ts:365`.
A subprocess trace shows the host shell fails before the fixture runs: `/home/user/.bashrc: line 255: path_prepend: command not found`, exit 127.
Full local web attempts also hit browser module/mock errors; the focused shard probe passed with one worker and Playwright's Ubuntu 24.04 x64 platform override on this Ubuntu 26.04 host.
### Hosted CI measurements

[Run 41293089108](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41293089108) is **green on attempt 2**, with 16 checks passed and one unrelated preview check skipped.
Attempt 1 failed only the unchanged Mermaid SVG assertion; its full file passed 10/10 locally, and a governed job rerun passed all 276 shard files and 3677 tests without source changes.
The no-token dependency action succeeded; logs show its private task-cache step skipped, Chromium restored, and the ldd check took under one second.

The green run took **14:51 end-to-end including the failed attempt and rerun**; the rerun attempt itself took 5:08, reusing all other job results.
Attempt 1 took 9:01 but was red, so it is not a green-run speed claim.
The supplied historical median is 10:24; a concrete earlier green run, [41278753510](https://github.com/RSI-Software/t3code-hyprws/actions/runs/41278753510), took 11:50.
These are observations, not a controlled before/after benchmark or a new median.

Job wall times from the Actions jobs API:

| Job | Earlier green | This green run |
| --- | --- | --- |
| Changes | 0:05 | 0:07 |
| Check | 4:37 | 3:54 |
| Test | 6:05 | 8:43 |
| Test Scripts | 2:16 | 2:10 |
| Test Web / Web 1 | 7:18 | 4:59 |
| Test Web 2 | n/a | 5:34 |
| Test Server 1 | 10:17 | 4:49 |
| Test Server 2 | 7:58 | 4:51 |
| Test Server 3 | 6:54 | 5:06 |
| Test Server 4 | n/a | 5:11 |
| Test Server 5 | n/a | 4:48 |
| Test Server 6 | n/a | 5:51 |
| merge-tree | 0:20 | 0:18 |
| CI | 0:03 | 0:03 |

GPT Sol via Pi.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

After #1985, the pooled **`Test` job is the critical path** at **8:43** (run 41293089108).
Inside it, **`apps/mobile` ran 432 s** (260 files) and finished about 20 s after every other package; the next longest took ~157 s.

## Change

- **New `Test Mobile` job:** mobile tests only
- **Setup:** no Electron, no libsecret
- **`Test` drops `@t3tools/mobile`**
- **`Test` skips** on a scripts or mobile-only change
- **`CI` aggregate** needs `test_mobile`

**Gating:** `changes` gains a fork-only `test_mobile` output, derived in the workflow from `test` and `test_packages`.
The shared `ci-changes.cjs` stays upstream's, and the job skips without taking a runner; `CI` already tolerates a skip whose gate is `"false"`.

`test_mobile` per change, from `ci-changes.cjs` output:

| Change | `test_packages` | `test_mobile` | `Test` |
| --- | --- | --- | --- |
| `apps/web` only | `@t3tools/scripts` | false | skips |
| `apps/mobile` only | mobile, scripts | true | skips |
| `apps/server` only | evals, scripts | false | runs |
| `packages/contracts` | includes mobile | true | runs |
| Workflow file | empty (all) | true | runs |
| Docs only | empty, `test=false` | false | skipped |

## Scope and approval

Fork CI tuning only; follows #1985. No product code.

## Verification

- `actionlint` on the workflow → exit 0
- `vp run check:changed` → exit 0
- `vp run fork:ci` → exit 0

**Wall times** (before: run 41293089108; after: run 41296032295):

| Job | Before | After |
| --- | --- | --- |
| Test | 8:43 | 5:11 |
| Test Mobile | n/a | 3:05 |
| Slowest Test Server | 5:51 | 5:21 |
| End to end | ~9:00 | 7:37 |

- **Critical path:** Test Server 6, 2:03 queued
- **Runner cap:** 5 jobs queued 1:36 to 2:44
- **Test Server 2 red:** unrelated test time bomb

Claude Opus 5.5, Claude Code harness in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: qol
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
… changes since the pin (#1991)

Closes #1987

## Close conditions

The three copies above:

- [ ] **Each copy** carries a pin
- [ ] **`fork:scan` fails** a stale pin
- [ ] **Failure names** the file and commits
- [ ] **Tests:** stale, current, missing pin
- [ ] **Fork-sync doc:** adapt or no-change step

## Problem

The `hyprws-*.yml` copies of upstream workflows drift silently: upstream `ci.yml` has 26 unmirrored commits.

## Change

- **Pin:** `# fork-mirror: <path>@<sha>` in each header
- **Stale pin:** `fork:scan --mirror-pins` fails it
- **No pin:** fails too
- **Sync tip only:** flag set when `rebased`
- **Ordinary PRs:** never fail on a stale pin
- **No ledger:** the pin lives in the copy
- **Docs:** `fork-sync.md` *Workflow copies*
- **Skill:** fork-sync tip-work bullet

The guard #1151 deleted stays deleted.

Scan of this head against the current base:

```text
$ node scripts/fork-scan.ts --no-typecheck --mirror-pins --target ae521d1 --since origin/hyprws
Workflow mirrors, 1 finding(s):
  MIRROR  .github/workflows/hyprws-ci.yml: upstream .github/workflows/ci.yml changed in 26 commit(s) since pin 5d14c0e; adapt the copy or record no change, then pin ae521d1
  f6d3700 ci: server test shards survive a throttled task cache (pingdotgg#26332)
  67661cf chore: delete 18k lines of code that nothing reaches (pingdotgg#26238)
  ...
exit 1
```

## Pins

| Copy | Pin | Adapted |
| --- | --- | --- |
| `hyprws-ci.yml` | `5d14c0e9686` | none |
| `hyprws-release.yml` | `ae521d1d796` | `e6ca17001d0` |
| `hyprws-agent-context-budget.yml` | `ae521d1d796` | `da1eab01f71` |

- **CI pin:** the last upstream commit it matched
- **CI drift:** the next sync reviews it
- **`e6ca17001d0`:** prerelease drafts until assets land
- **`da1eab01f71`:** error names the evals rerun

#1985 took upstream cache steps only, so the CI pin stays.

### Release: no change

| Upstream commits | Reason |
| --- | --- |
| `f41518f` | launch check: untested release behaviour |
| `30f4d63` `fe27e8e` `e407f9b` `25159b6` `fd1c338` | test jobs: the gate needs green CI |
| `a9418a1` `6327560` `a43b003` | task cache: no secret, `setup-vp` |
| `1688f96` `783ccf0` `7479625` `bd0b9ed` `e74c668` | deploys: the fork has none |
| `e64766c` `569bd02` `14b47ee` `e9a5974` `c57a04b` | macOS, Windows: Linux only |
| `c13f7d9` | `.deb`, arm64: AppImage only |
| `6b450c7` `91cd91c` | npm: not published |
| `83d6583` | mobile: no fork build |
| `b438198` | Discord: no announce |
| `b5fc7be` | OpenAI notes: generated notes kept |
| `3060cc4` | channel defaults: fork resolves its own |
| `bed15b9` | skip in forks: copy is fork-owned |
| `28c32d2` | telemetry: defaults to `dev` here |
| `eb8f6f4` `c7f23c4` `0754920` `2c54f2f` `2f7616e` | CLI archives: already built |

## Scope and approval

The maintainer filed #1987 and assigned this scope.

## Verification

- [x] **Typecheck** (scripts) → exit 0
- [x] **Tests** (3 files) → exit 0, 27 passed
- [x] **check:changed** → exit 1
- [x] **Its two failures:** web browser timeouts
- [x] **No web code** in this diff
- [x] **Both pass** run alone
- [x] **fork:ci** (bwrap HOME workaround) → exit 0

Claude Opus 5.5, Claude Code in T3 Code.

## Fork trailers

Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 9, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 13, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 13, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 13, 2026
Upstream's new generated-snapshot test in client-runtime takes over 5 s on the pooled GitHub-hosted runner.

Squashes:

- 141f543fc03 ci(fork): pooled package tests get the same widened per-test budget as web
- 4525592d405 fix(ci): provision browser and fold replay prerequisites (#1666) (#1666)
- 806c939a862 fix(ci): run hyprws CI on stacked pull requests (#1715) (#1715)
- e14e7e73a75 perf(ci): fork CI skips unaffected jobs and reruns of green commits (#1926) (#1926)
- 7660a7f1eb6 fix(ci): pin Playwright test jobs to ubuntu-24.04 (#1972) (#1972)
- f45cff55f89 perf(ci): cache dependencies and shard web and server tests (#1985) (#1985)
- 7530a35f2bc perf(ci): run mobile tests in their own job (#1989) (#1989)
- 0497930b3eb ci(fork-meta): hyprws CI checks generated GraphQL and boots the built web client

Fork-Domain: fork-meta
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant