Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CI

on:
push:
branches: [main]
pull_request:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Top finding: this workflow has never executed on this PR, so the gate it adds is still unproven here.

pull_request is the correct trigger (not pull_request_target) — fork code runs without repo secrets. But two things combine to mean zero runs so far: a workflow isn't registered until it lands on the default branch (the repo currently lists only Dependabot Updates), and this PR is from a fork whose author GitHub reports as FIRST_TIME_CONTRIBUTOR, so runs need a maintainer to click "Approve and run workflows". The only check at this head is the WIP marketplace app.

Worth actually running rather than assuming, since it's this workflow's first execution: node-version: 24 is unexercised (I verified locally on Node 22), and git diff --exit-code on a generated file is exactly the kind of step that can differ in CI. main isn't protected and has no required checks, so nothing mechanically blocks merging with this unverified.


permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
check:
name: Typecheck, test, manifest freshness
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified rather than trusted from the comment — both pins resolve exactly to their claimed tags:

  • actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 = v7.0.1
  • actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 = v7.0.0

No pin/comment mismatch. With persist-credentials: false and permissions: contents: read, the hardening claim holds.

with:
persist-credentials: false

- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: npm

- run: npm ci

# Deliberately from a clean checkout, before any build step — the
# committed composition-manifest.json must be enough for tsc to pass.
- run: npm run typecheck

- run: npm test

# The manifest is committed but regenerated by prepare-assets; fail if
# a composition change landed without its manifest diff.
- run: npm run prepare-assets
- run: git diff --exit-code src/composition-manifest.json

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified this step is sound and not flaky: I ran npm run prepare-assets three times from a clean checkout and git diff --exit-code src/composition-manifest.json returned 0 each time, with git status --porcelain empty — so manifest generation is deterministic and dirties no other tracked file (public/_bundled/ and public/_hyperframes/ stay correctly ignored).

Committing the generated input so a clean checkout typechecks, then guarding staleness here, is the right shape for the problem.

11 changes: 8 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ dist
.env
.env.local
.env.*.local
worker-configuration.d.ts

# Build artifacts (regenerated by scripts/build.mjs on wrangler dev/deploy)
src/composition-manifest.json
# Build artifacts (regenerated by scripts/build.mjs before vite dev/build).
# src/composition-manifest.json is committed so a clean checkout typechecks;
# prepare-assets rewrites it, so commit the diff when composition files change.
public/_bundled/
public/_hyperframes/

# TanStack Start generated files
.tanstack
.nitro
.output
120 changes: 72 additions & 48 deletions README.md

Large diffs are not rendered by default.

Loading