Skip to content

Commit 67f6309

Browse files
committed
Harden snapshot trust and simplify the real workflow
1 parent e140d70 commit 67f6309

90 files changed

Lines changed: 1803 additions & 316 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.

.github/workflows/ci.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ jobs:
1919
runs-on: ubuntu-24.04
2020
timeout-minutes: 10
2121
steps:
22-
- uses: actions/checkout@v7
22+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2323
with:
2424
persist-credentials: false
25-
- uses: actions/setup-node@v7
25+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
2626
with:
2727
node-version: 22
2828
cache: npm
@@ -38,10 +38,10 @@ jobs:
3838
runs-on: ubuntu-24.04
3939
timeout-minutes: 10
4040
steps:
41-
- uses: actions/checkout@v7
41+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
4242
with:
4343
persist-credentials: false
44-
- uses: actions/setup-node@v7
44+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
4545
with:
4646
node-version: 22
4747
cache: npm
@@ -54,10 +54,10 @@ jobs:
5454
runs-on: ubuntu-24.04
5555
timeout-minutes: 10
5656
steps:
57-
- uses: actions/checkout@v7
57+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
5858
with:
5959
persist-credentials: false
60-
- uses: actions/setup-node@v7
60+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
6161
with:
6262
node-version: 22
6363
cache: npm
@@ -70,10 +70,10 @@ jobs:
7070
runs-on: ubuntu-24.04
7171
timeout-minutes: 10
7272
steps:
73-
- uses: actions/checkout@v7
73+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
7474
with:
7575
persist-credentials: false
76-
- uses: actions/setup-node@v7
76+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
7777
with:
7878
node-version: 22
7979
cache: npm
@@ -86,10 +86,10 @@ jobs:
8686
runs-on: ubuntu-24.04
8787
timeout-minutes: 10
8888
steps:
89-
- uses: actions/checkout@v7
89+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
9090
with:
9191
persist-credentials: false
92-
- uses: actions/setup-node@v7
92+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
9393
with:
9494
node-version: 22
9595
cache: npm

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ jobs:
1818
runs-on: ubuntu-24.04
1919
timeout-minutes: 20
2020
steps:
21-
- uses: actions/checkout@v7
21+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2222
with:
2323
persist-credentials: false
24-
- uses: github/codeql-action/init@v4
24+
- uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
2525
with:
2626
languages: javascript-typescript
27-
- uses: github/codeql-action/analyze@v4
27+
- uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
2828
with:
2929
category: /language:javascript-typescript

.github/workflows/demo.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Synthetic demo
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-24.04
20+
timeout-minutes: 10
21+
steps:
22+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23+
with:
24+
persist-credentials: false
25+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
26+
with:
27+
node-version: 22
28+
cache: npm
29+
- run: npm ci
30+
- name: Build only public synthetic fixtures
31+
env:
32+
ZAATI_BASE_PATH: /${{ github.event.repository.name }}/
33+
run: npm run build
34+
- run: npm run performance:check
35+
- uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4
36+
with:
37+
path: dist
38+
39+
deploy:
40+
needs: build
41+
runs-on: ubuntu-24.04
42+
timeout-minutes: 10
43+
environment:
44+
name: github-pages
45+
url: ${{ steps.deployment.outputs.page_url }}
46+
steps:
47+
- name: Publish synthetic demo
48+
id: deployment
49+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4

.github/workflows/dependency-review.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ jobs:
1313
runs-on: ubuntu-24.04
1414
timeout-minutes: 10
1515
steps:
16-
- uses: actions/checkout@v7
16+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
1717
with:
1818
persist-credentials: false
19-
- uses: actions/dependency-review-action@v5
19+
- uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5
2020
with:
2121
fail-on-severity: high

.github/workflows/deploy-cloudflare.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ jobs:
2323
ZAATI_WORKER_NAME: ${{ vars.ZAATI_WORKER_NAME }}
2424
ZAATI_INSTANCE_CONFIG_JSON: ${{ secrets.ZAATI_INSTANCE_CONFIG_JSON }}
2525
steps:
26-
- uses: actions/checkout@v7
26+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2727
with:
2828
persist-credentials: false
29-
- uses: actions/setup-node@v7
29+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
3030
with:
3131
node-version: 22
3232
cache: npm
@@ -41,7 +41,7 @@ jobs:
4141
npm run access:verify -- "$ZAATI_HOSTNAME"
4242
- name: Checkout private snapshot repository
4343
if: ${{ vars.ZAATI_DATA_REPOSITORY != '' }}
44-
uses: actions/checkout@v7
44+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
4545
with:
4646
repository: ${{ vars.ZAATI_DATA_REPOSITORY }}
4747
ref: ${{ vars.ZAATI_DATA_REF || 'main' }}
@@ -56,7 +56,7 @@ jobs:
5656
ZAATI_SNAPSHOT_KEY: ${{ secrets.ZAATI_SNAPSHOT_KEY }}
5757
- run: npm run deployment:configure
5858
- name: Deploy Worker static assets
59-
uses: cloudflare/wrangler-action@v3
59+
uses: cloudflare/wrangler-action@9acf94ace14e7dc412b076f2c5c20b8ce93c79cd # v3
6060
with:
6161
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
6262
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
runs-on: ubuntu-24.04
1313
timeout-minutes: 15
1414
steps:
15-
- uses: actions/checkout@v7
15+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
1616
with:
1717
persist-credentials: false
18-
- uses: actions/setup-node@v7
18+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
1919
with:
2020
node-version: 22
2121
cache: npm

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,10 @@ All notable changes follow [Keep a Changelog](https://keepachangelog.com/en/1.1.
2323
- Configurable brand mark, local font stacks, heading styles, extended theme tokens, and a live theme studio.
2424
- Apache 2.0 license, governance, security, contribution, and domain-pack documentation.
2525
- Private Prompt Studio CLI, profile schema, and copy-ready scheduled-task prompts with exact contracts, source registration gates, multi-source publication, and bounded retries.
26+
- Authoritative whole-bundle completeness checks that reject missing, extra, duplicate, and self-redefined source sets.
27+
- Universal credential scanning, source-specific content guards, and redacted validation errors for every snapshot string.
28+
- Independent private-repository pull-request validation with immutable validator refs and branch-protection guidance.
29+
- Source-specific durable facts schemas separated from optional presentation intent.
30+
- Dynamic freshness, real provenance disclosure, evidence references, and bounded snapshot history navigation.
31+
- Plain-language Prompt Studio starters with a separate human-readable permission receipt.
32+
- SHA-pinned GitHub Actions, a public synthetic Pages demo, fork-sync, lifecycle, compatibility, support, and release guidance.

0 commit comments

Comments
 (0)