Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
4dd4ef1
Add testing specification and gap register
Alek99 Jul 22, 2026
2a1c2a6
Make the testing catalog self-validating
Alek99 Jul 22, 2026
da4ae38
Add stable required CI aggregate
Alek99 Jul 22, 2026
99e1896
Validate the complete testing specification
Alek99 Jul 22, 2026
7048486
Enforce strict dashboard health in CI
Alek99 Jul 22, 2026
721e56f
Make pick boundary smoke a hard gate
Alek99 Jul 22, 2026
55978d4
Make animation smoke a hard browser gate
Alek99 Jul 22, 2026
0c0347b
Remove the testing specification unit harness
Alek99 Jul 22, 2026
da1d47c
test: add exact-SHA release preflight (TST-NI-003)
Alek99 Jul 22, 2026
a436807
Require Reflex adapter browser E2E
Alek99 Jul 22, 2026
7bf78e9
Require standalone worker evidence in browser CI
Alek99 Jul 22, 2026
c7289c0
Cover every Figure builder transactionally
Alek99 Jul 22, 2026
6d7faef
test: require Rust release-profile suite (TST-NI-020)
Alek99 Jul 22, 2026
7059c4c
test: enforce native architecture parity
Alek99 Jul 22, 2026
653a579
Require explicit Chromium sandbox opt-out
Alek99 Jul 22, 2026
e4a832f
test: enforce runtime standalone security boundary (TST-NI-024)
Alek99 Jul 22, 2026
7a9b4e5
Add reviewed visual baseline browser gate
Alek99 Jul 22, 2026
c866069
test: preserve all-path and security workflow gates
Alek99 Jul 22, 2026
de2f568
test: add multi-ecosystem dependency audit
Alek99 Jul 22, 2026
840e07d
test: inventory example lock fixtures
Alek99 Jul 22, 2026
06d1c77
Fix TypeScript client stack integration
Alek99 Jul 22, 2026
29fe2ca
Restore required CI gates after stacking
Alek99 Jul 22, 2026
facd74f
Document visual baseline gate completion
Alek99 Jul 22, 2026
2ac15e5
Add registry-complete chart-kind render matrix
Alek99 Jul 22, 2026
dbf4580
Format dependency audit fixture inventory
Alek99 Jul 22, 2026
ad79d09
Add sound pyplot option contract
Alek99 Jul 22, 2026
1a78cfc
Add JavaScript semantic unit gate
Alek99 Jul 22, 2026
aae28cc
Fix adapter asset check for minified client
Alek99 Jul 22, 2026
89b27a3
Add Python branch and diff coverage ratchet
Alek99 Jul 22, 2026
012d7aa
Add strict rendered-label formatter oracle
Alek99 Jul 22, 2026
c9c9d25
Add pan and zoom acceptance matrix
Alek99 Jul 22, 2026
342ca3b
Expand cross-browser conformance matrix
Alek99 Jul 22, 2026
4cb226b
Add hard host integration version matrix
Alek99 Jul 22, 2026
14bf6d5
Add catalog-driven protocol conformance gate
Alek99 Jul 22, 2026
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
44 changes: 40 additions & 4 deletions .github/workflows/_build-docs-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ on:
description: "Exact reflex-dev/xy commit or tag to build"
required: true
type: string
outputs:
frontend_digest:
description: "Immutable ECR digest for the frontend image"
value: ${{ jobs.build-and-push.outputs.frontend_digest }}
backend_digest:
description: "Immutable ECR digest for the backend image"
value: ${{ jobs.build-and-push.outputs.backend_digest }}

permissions:
contents: read
Expand All @@ -33,6 +40,9 @@ jobs:
timeout-minutes: 60
permissions:
contents: read
outputs:
frontend_digest: ${{ steps.digests.outputs.frontend_digest }}
backend_digest: ${{ steps.digests.outputs.backend_digest }}
steps:
- name: Validate inputs
env:
Expand Down Expand Up @@ -123,7 +133,7 @@ jobs:
--tag "${CADDY_IMAGE}:${IMAGE_TAG}" \
--push \
--platform linux/amd64,linux/arm64 \
--provenance=false \
--provenance=mode=max \
./docs/app

- name: Build and push backend image
Expand All @@ -139,20 +149,46 @@ jobs:
--tag "${BACKEND_IMAGE}:${IMAGE_TAG}" \
--push \
--platform linux/amd64,linux/arm64 \
--provenance=false \
--provenance=mode=max \
.

- name: Resolve immutable image digests
id: digests
env:
IMAGE_TAG: ${{ inputs.image_tag }}
run: |
FRONTEND_DIGEST=$(aws ecr describe-images \
--repository-name xy/frontend \
--image-ids "imageTag=${IMAGE_TAG}" \
--query 'imageDetails[0].imageDigest' \
--output text)
BACKEND_DIGEST=$(aws ecr describe-images \
--repository-name xy/backend \
--image-ids "imageTag=${IMAGE_TAG}" \
--query 'imageDetails[0].imageDigest' \
--output text)
for DIGEST in "$FRONTEND_DIGEST" "$BACKEND_DIGEST"; do
if [[ ! "$DIGEST" =~ ^sha256:[0-9a-f]{64}$ ]]; then
echo "::error::ECR returned an invalid image digest: $DIGEST"
exit 1
fi
done
echo "frontend_digest=$FRONTEND_DIGEST" >> "$GITHUB_OUTPUT"
echo "backend_digest=$BACKEND_DIGEST" >> "$GITHUB_OUTPUT"

- name: Summary
env:
IMAGE_TAG: ${{ inputs.image_tag }}
CADDY_IMAGE: ${{ env.CADDY_IMAGE }}
BACKEND_IMAGE: ${{ env.BACKEND_IMAGE }}
FRONTEND_DIGEST: ${{ steps.digests.outputs.frontend_digest }}
BACKEND_DIGEST: ${{ steps.digests.outputs.backend_digest }}
run: |
{
echo "### XY docs images built"
echo ""
echo "**Tag:** \`${IMAGE_TAG}\`"
echo ""
echo "- Frontend: \`${CADDY_IMAGE}:${IMAGE_TAG}\`"
echo "- Backend: \`${BACKEND_IMAGE}:${IMAGE_TAG}\`"
echo "- Frontend: \`${CADDY_IMAGE}:${IMAGE_TAG}@${FRONTEND_DIGEST}\`"
echo "- Backend: \`${BACKEND_IMAGE}:${IMAGE_TAG}@${BACKEND_DIGEST}\`"
} >> "$GITHUB_STEP_SUMMARY"
36 changes: 31 additions & 5 deletions .github/workflows/_helm-docs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ on:
description: "Source commit SHA from reflex-dev/xy"
required: true
type: string
frontend_digest:
description: "Immutable sha256 digest for the frontend image"
required: true
type: string
backend_digest:
description: "Immutable sha256 digest for the backend image"
required: true
type: string
auto_merge:
description: "Merge the Helm PR immediately"
required: false
Expand Down Expand Up @@ -46,6 +54,8 @@ jobs:
IMAGE_TAG: ${{ inputs.image_tag }}
ENVIRONMENT: ${{ inputs.environment }}
SOURCE_REF: ${{ inputs.source_ref }}
FRONTEND_DIGEST: ${{ inputs.frontend_digest }}
BACKEND_DIGEST: ${{ inputs.backend_digest }}
run: |
if [[ ! "$IMAGE_TAG" =~ ^[A-Za-z0-9._-]+$ ]] || [[ "${#IMAGE_TAG}" -gt 128 ]]; then
echo "::error::image_tag must match [A-Za-z0-9._-]+ and be <=128 characters"
Expand All @@ -59,6 +69,12 @@ jobs:
echo "::error::source_ref contains unsafe characters"
exit 1
fi
for DIGEST in "$FRONTEND_DIGEST" "$BACKEND_DIGEST"; do
if [[ ! "$DIGEST" =~ ^sha256:[0-9a-f]{64}$ ]]; then
echo "::error::image digests must be sha256 digests"
exit 1
fi
done

- name: Generate GitHub App token
id: app-token
Expand Down Expand Up @@ -132,11 +148,15 @@ jobs:
env:
BRANCH: ${{ steps.check.outputs.branch }}
IMAGE_TAG: ${{ inputs.image_tag }}
FRONTEND_DIGEST: ${{ inputs.frontend_digest }}
BACKEND_DIGEST: ${{ inputs.backend_digest }}
VALUES_FILE: ${{ steps.values.outputs.file }}
run: |
git checkout -b "$BRANCH"
IMAGE_TAG="$IMAGE_TAG" yq -i '.apps.xy.frontend.image.tag = strenv(IMAGE_TAG)' "$VALUES_FILE"
IMAGE_TAG="$IMAGE_TAG" yq -i '.apps.xy.backend.image.tag = strenv(IMAGE_TAG)' "$VALUES_FILE"
FRONTEND_REF="${IMAGE_TAG}@${FRONTEND_DIGEST}" \
yq -i '.apps.xy.frontend.image.tag = strenv(FRONTEND_REF)' "$VALUES_FILE"
BACKEND_REF="${IMAGE_TAG}@${BACKEND_DIGEST}" \
yq -i '.apps.xy.backend.image.tag = strenv(BACKEND_REF)' "$VALUES_FILE"
# ChartVersion reconcile strategy: Flux only repackages the chart
# when Chart.yaml's version changes, so bump patch every deploy.
CHART_FILE="$(dirname "$VALUES_FILE")/Chart.yaml"
Expand Down Expand Up @@ -176,6 +196,8 @@ jobs:
VALUES_FILE: ${{ steps.values.outputs.file }}
FRONTEND_IMAGE: ${{ env.FRONTEND_IMAGE }}
BACKEND_IMAGE: ${{ env.BACKEND_IMAGE }}
FRONTEND_DIGEST: ${{ inputs.frontend_digest }}
BACKEND_DIGEST: ${{ inputs.backend_digest }}
REPO: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
RUN_ID: ${{ github.run_id }}
Expand All @@ -187,10 +209,10 @@ jobs:
echo "**Values file:** \`${VALUES_FILE}\`"
echo "**Image tag:** \`${IMAGE_TAG}\`"
echo ""
echo "**Frontend:** \`${FRONTEND_IMAGE}:${IMAGE_TAG}\`"
echo "**Backend:** \`${BACKEND_IMAGE}:${IMAGE_TAG}\`"
echo "**Frontend:** \`${FRONTEND_IMAGE}:${IMAGE_TAG}@${FRONTEND_DIGEST}\`"
echo "**Backend:** \`${BACKEND_IMAGE}:${IMAGE_TAG}@${BACKEND_DIGEST}\`"
echo ""
echo "Updates \`apps.xy.frontend.image.tag\` and \`apps.xy.backend.image.tag\`."
echo "Pins \`apps.xy.frontend.image.tag\` and \`apps.xy.backend.image.tag\` to immutable digests."
echo ""
echo "---"
echo "**Source commit:** https://github.com/${REPO}/commit/${SOURCE_REF}"
Expand Down Expand Up @@ -229,11 +251,15 @@ jobs:
ENVIRONMENT: ${{ inputs.environment }}
IMAGE_TAG: ${{ inputs.image_tag }}
VALUES_FILE: ${{ steps.values.outputs.file }}
FRONTEND_DIGEST: ${{ inputs.frontend_digest }}
BACKEND_DIGEST: ${{ inputs.backend_digest }}
run: |
{
echo "### XY docs Helm PR created"
echo ""
echo "**Environment:** ${ENVIRONMENT}"
echo "**Values file:** \`${VALUES_FILE}\`"
echo "**Image tag:** \`${IMAGE_TAG}\`"
echo "**Frontend digest:** \`${FRONTEND_DIGEST}\`"
echo "**Backend digest:** \`${BACKEND_DIGEST}\`"
} >> "$GITHUB_STEP_SUMMARY"
Loading
Loading