Skip to content

Commit 3098213

Browse files
authored
Merge branch 'main' into promo-credits-typography
2 parents c710206 + cc74842 commit 3098213

181 files changed

Lines changed: 22331 additions & 1423 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/project-default-region-response.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.env.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LOGIN_ORIGIN=http://localhost:3030
66
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres?schema=public
77
# This sets the URL used for direct connections to the database and should only be needed in limited circumstances
88
# See: https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#fields:~:text=the%20shadow%20database.-,directUrl,-No
9-
DIRECT_URL=${DATABASE_URL}
9+
DIRECT_URL=postgresql://postgres:postgres@localhost:5432/postgres?schema=public
1010
# Dedicated run-ops database (@internal/run-ops-database). Only needed to run prisma commands
1111
# against it or to enable the run-ops split; start it with `docker compose --profile runops up`.
1212
RUN_OPS_DATABASE_URL=postgresql://postgres:postgres@localhost:5434/postgres?schema=public
@@ -166,4 +166,4 @@ POSTHOG_PROJECT_KEY=
166166
# Uncomment these to send metrics to the local Prometheus via OTEL Collector:
167167
# INTERNAL_OTEL_METRIC_EXPORTER_ENABLED=1
168168
# INTERNAL_OTEL_METRIC_EXPORTER_URL=http://localhost:4318/v1/metrics
169-
# INTERNAL_OTEL_METRIC_EXPORTER_INTERVAL_MS=15000
169+
# INTERNAL_OTEL_METRIC_EXPORTER_INTERVAL_MS=15000

.github/workflows/pr_checks.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ jobs:
5656
- '.github/workflows/pr_checks.yml'
5757
- '.github/workflows/unit-tests-webapp.yml'
5858
- '.github/workflows/e2e-webapp.yml'
59+
- '.github/workflows/runops-guard.yml'
5960
- '.configs/**'
6061
- 'package.json'
6162
- 'pnpm-lock.yaml'
@@ -111,6 +112,11 @@ jobs:
111112
if: needs.changes.outputs.code == 'true' || needs.changes.outputs.typecheck_self == 'true'
112113
uses: ./.github/workflows/typecheck.yml
113114

115+
runops-guard:
116+
needs: changes
117+
if: needs.changes.outputs.webapp == 'true'
118+
uses: ./.github/workflows/runops-guard.yml
119+
114120
webapp:
115121
needs: changes
116122
if: needs.changes.outputs.webapp == 'true'
@@ -161,6 +167,7 @@ jobs:
161167
- changes
162168
- code-quality
163169
- typecheck
170+
- runops-guard
164171
- webapp
165172
- e2e-webapp
166173
- packages

.github/workflows/publish-worker-v4.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ on:
1313
type: string
1414
required: false
1515
default: ""
16+
outputs:
17+
version:
18+
description: The published image tag
19+
value: ${{ jobs.build.outputs.version }}
20+
image_repo:
21+
description: The image repository the build was published to (without tag)
22+
value: ${{ jobs.build.outputs.image_repo }}
1623
push:
1724
tags:
1825
- "re2-test-*"
@@ -38,6 +45,11 @@ jobs:
3845
matrix:
3946
package: [supervisor]
4047
runs-on: warp-ubuntu-latest-x64-2x
48+
# Single-entry matrix, so these job outputs are unambiguous (consumed by the
49+
# scan-supervisor job in publish.yml).
50+
outputs:
51+
version: ${{ steps.get_tag.outputs.tag }}
52+
image_repo: ${{ steps.set_tags.outputs.image_repo }}
4153
env:
4254
DOCKER_BUILDKIT: "1"
4355
steps:
@@ -81,6 +93,7 @@ jobs:
8193
fi
8294
8395
echo "image_tags=${image_tags}" >> "$GITHUB_OUTPUT"
96+
echo "image_repo=${ref_without_tag}" >> "$GITHUB_OUTPUT"
8497
env:
8598
IMAGE_REGISTRY: ${{ inputs.image_registry || vars.IMAGE_REGISTRY || format('ghcr.io/{0}', github.repository_owner) }}
8699
STEPS_GET_REPOSITORY_OUTPUTS_REPO: ${{ steps.get_repository.outputs.repo }}

.github/workflows/publish.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,19 @@ jobs:
9797
permissions:
9898
contents: read
9999
packages: read # pull the just-published image from GHCR
100-
uses: ./.github/workflows/trivy-image-webapp.yml
100+
uses: ./.github/workflows/trivy-image.yml
101101
with:
102102
image-ref: ${{ needs.publish-webapp.outputs.image_repo }}:${{ needs.publish-webapp.outputs.version }}
103103

104+
scan-supervisor:
105+
needs: [publish-worker-v4]
106+
permissions:
107+
contents: read
108+
packages: read # pull the just-published image from GHCR
109+
uses: ./.github/workflows/trivy-image.yml
110+
with:
111+
image-ref: ${{ needs.publish-worker-v4.outputs.image_repo }}:${{ needs.publish-worker-v4.outputs.version }}
112+
104113
# Announce the freshly published mutable `main` webapp image to subscriber
105114
# repos via repository_dispatch, handing them a digest-pinned ref to build or
106115
# deploy from. The repo, ref prefix, and dispatch target all default to the

.github/workflows/runops-guard.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: "🛡️ Run-ops Legacy Guard"
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
runops-guard:
11+
runs-on: warp-ubuntu-latest-x64-16x
12+
13+
steps:
14+
- name: ⬇️ Checkout repo
15+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
16+
with:
17+
fetch-depth: 0
18+
persist-credentials: false
19+
20+
- name: ⎔ Setup pnpm
21+
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
22+
with:
23+
version: 10.33.2
24+
25+
- name: ⎔ Setup node
26+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
27+
with:
28+
node-version: 24.18.0
29+
cache: "pnpm"
30+
31+
- name: 📥 Download deps
32+
run: pnpm install --frozen-lockfile
33+
34+
- name: 📀 Generate Prisma Client
35+
run: pnpm run generate
36+
37+
- name: 🛡️ Run-ops legacy guard
38+
run: pnpm --filter webapp run guard:runops-legacy -- --check
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
name: Trivy Image Scan (webapp)
1+
name: Trivy Image Scan
22

3-
# OS-level CVE scan of a published webapp image. Called by the publish pipeline
4-
# (publish.yml) to scan each build right after it's pushed to GHCR — so every
3+
# OS-level CVE scan of a published image. Called by the publish pipeline
4+
# (publish.yml) to scan each image right after it's pushed to GHCR — so every
55
# main build and every release is scanned, not rebuilt. Also runnable ad-hoc
66
# via workflow_dispatch against any image ref.
77
#
@@ -27,7 +27,7 @@ on:
2727
permissions: {}
2828

2929
concurrency:
30-
group: trivy-image-webapp-${{ inputs.image-ref }}
30+
group: trivy-image-${{ inputs.image-ref }}
3131
cancel-in-progress: true
3232

3333
jobs:
@@ -59,17 +59,17 @@ jobs:
5959
ignore-unfixed: true
6060
severity: HIGH,CRITICAL
6161
format: table
62-
output: trivy-image-webapp.txt
62+
output: trivy-image.txt
6363

6464
- name: Job summary
6565
if: always()
6666
env:
6767
IMAGE_REF: ${{ inputs.image-ref }}
6868
run: |
6969
{
70-
echo "## Trivy Image Scan (webapp) — \`${IMAGE_REF}\`"
70+
echo "## Trivy Image Scan — \`${IMAGE_REF}\`"
7171
echo '```'
7272
# GitHub step summary is capped at 1 MiB; truncate large reports.
73-
head -c 900000 trivy-image-webapp.txt 2>/dev/null || echo "(no report produced)"
73+
head -c 900000 trivy-image.txt 2>/dev/null || echo "(no report produced)"
7474
echo '```'
7575
} >> "$GITHUB_STEP_SUMMARY"

.oxlintrc.json

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
{
22
"$schema": "./node_modules/oxlint/configuration_schema.json",
33
"plugins": ["typescript", "import", "react"],
4-
"jsPlugins": ["./oxlint-plugins/no-thrown-unawaited-redirect.mjs"],
4+
"jsPlugins": [
5+
"./oxlint-plugins/no-thrown-unawaited-redirect.mjs",
6+
"./oxlint-plugins/runops-residency.mjs"
7+
],
58
"ignorePatterns": [
69
"**/dist/**",
710
"**/build/**",
@@ -34,5 +37,21 @@
3437
"react-hooks/exhaustive-deps": "off",
3538
"react-hooks/rules-of-hooks": "off",
3639
"trigger/no-thrown-unawaited-redirect": "error"
37-
}
40+
},
41+
"overrides": [
42+
{
43+
"files": ["apps/webapp/app/**/*.ts", "apps/webapp/app/**/*.tsx"],
44+
"rules": {
45+
"trigger-runops/no-control-plane-run-graph-access": "error",
46+
"trigger-runops/no-control-plane-in-runops-slot": "error"
47+
}
48+
},
49+
{
50+
"files": ["apps/webapp/app/**/*.test.ts", "apps/webapp/app/**/*.test.tsx"],
51+
"rules": {
52+
"trigger-runops/no-control-plane-run-graph-access": "off",
53+
"trigger-runops/no-control-plane-in-runops-slot": "off"
54+
}
55+
}
56+
]
3857
}

.server-changes/fix-batch-idempotency-point-lookups.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

.server-changes/run-ops-legacy-shared-pool.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)