From ee1010d7519e4780040b1489d0a586b7f882d621 Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 3 Sep 2026 23:59:10 -0400 Subject: [PATCH 01/10] Document Decap CMS demo pilot --- README.md | 9 +- docs/decap-cms-pilot.md | 289 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 296 insertions(+), 2 deletions(-) create mode 100644 docs/decap-cms-pilot.md diff --git a/README.md b/README.md index 2e68f6c..25ab799 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ This repository is a static Astro pilot for `3031023.xyz`. The existing Cloudflare Pages site remains the rollback target while this branch is tested. +The planned preview-only editing experiment is documented in the [Decap CMS +Gitea pilot](docs/decap-cms-pilot.md). It does not authorize CMS activation, a +production merge, or a domain change. + ## Repository layout - `sites/www/` is the primary-site content location; it serves `3031023.xyz`. @@ -12,8 +16,9 @@ Cloudflare Pages site remains the rollback target while this branch is tested. - `schemas/` and `fixtures/` provide the Phase 1 JSON contract proof. Blog posts and primary-site FAQs are now static Markdown collections with -validated frontmatter and draft filtering. CMS workflows, public sign-up -changes, n8n changes, and onboarding-worker changes remain out of scope. +validated frontmatter and draft filtering. Production CMS publishing, public +sign-up changes, n8n changes, and onboarding-worker changes remain out of +scope; the linked Decap plan is a preview-only editing experiment. ## Local checks diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md new file mode 100644 index 0000000..80bb92f --- /dev/null +++ b/docs/decap-cms-pilot.md @@ -0,0 +1,289 @@ +# Decap CMS Gitea pilot + +Status: planned; no CMS, OAuth application, Gitea CORS change, branch +protection, or deployment has been enabled by this document. + +Updated: 2026-09-03 + +## Purpose + +Use the `3031023.xyz` demonstration repository to determine whether +Decap CMS can provide a useful editing interface for all sites owned under one +root domain without allowing an editor to publish directly to production or +modify deployment code. + +The pilot covers both the primary Happy Tails site and its journal subdomain. +That matches the SloanOps repository boundary: one private repository per root +domain, with independently built sites beneath `sites/`. A future client who +owns the root-domain site also owns the hosted subdomains represented in that +repository. + +This plan does not authorize a production merge, domain change, contact-form +activation, repository invitation, or removal of a rollback resource. + +## Current evidence + +- `3031023.xyz` and `blog.3031023.xyz` build independently from this + repository and deploy through separate Workers Static Assets workflows. +- A push outside `main` already uploads no-index primary and/or blog preview + versions according to the paths changed. +- Blog posts, FAQs, services, and team members are Markdown collections with + Astro/Zod validation and are suitable for a bounded Decap pilot. +- The live Gitea instance reported version `1.27.3` during the Phase 9 review. + Decap's Gitea backend requires Gitea 1.20 or newer. +- A preflight request from the proposed CMS origin currently returns `405` + without an access-control origin header. Gitea CORS must be configured before + browser-based Decap authentication or repository access will work. +- Decap authenticates to Gitea with a non-confidential PKCE OAuth application. + Its Gitea backend currently has no editorial pull-request workflow, so it + writes directly to the configured branch. +- The Gitea backend does not support Git LFS. Pilot media must remain small, + ordinary repository assets. + +References: + +- +- +- +- +- +- + +## Proposed pilot architecture + +```text +Decap at /admin/ + | + | Gitea PKCE OAuth and content/media commits only + v +cms/pilot branch + | + +--> primary no-index Worker preview + | + +--> blog no-index Worker preview + | + v +manual Gitea pull request to protected main + | + v +required validation + SloanOps approval + | + v +production merge and deploy only with separate approval +``` + +The shared `public/` directory may serve `/admin/` in both preview builds. That +is acceptable because both sites belong to the same root-domain repository and +the same owner. One Decap configuration exposes clearly labeled Primary Site +and Journal collection groups. + +Expected preview URLs for branch `cms/pilot`: + +- `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` +- `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/` +- `https://cms-pilot-3031023-xyz-blog.ksloan90.workers.dev/` + +Confirm the aliases from the successful Gitea Actions run rather than treating +these predicted URLs as authoritative. + +## Initial Decap scope + +Allow editing and creation only within these collections: + +| CMS group | Repository path | Initial capability | +| --- | --- | --- | +| Primary site FAQs | `sites/www/content/faq/**` | Create, edit, draft, reorder, delete after confirmation | +| Primary services | `sites/www/content/services/**` | Create, edit, draft, reorder, feature | +| Primary team | `sites/www/content/team/**` | Create, edit, draft, reorder, select an approved image | +| Journal posts | `sites/blog/content/posts/**` | Create, edit, draft, date, tag, update | +| Shared pilot media | `public/images/uploads/**` | Upload bounded raster images after text editing is proven | + +Do not expose `sites.json`, either `site.json`, schemas, workflows, Wrangler +configuration, package files, source components, scripts, contact routing, or +analytics through the CMS during this pilot. + +Configure the default media library with a conservative file-size limit. Do +not accept executables, archives, HTML, scripts, or SVG uploads. Asset rights, +alt text, crop, dimensions, and optimization remain operator review items even +when the CMS accepts an upload. + +## Repository protection model + +### `main` + +- Disable direct pushes for CMS/client users. +- Require a pull request. +- Require at least one SloanOps approval. +- Require the dedicated CMS content validation status. +- Block merging an outdated or rejected pull request. +- Permit merges only by the SloanOps operator allowlist. +- Keep force-push disabled. + +### Fallback rule for non-production branches + +Create a branch-protection fallback covering every branch, with the specific +`main` rule at higher priority. CMS/client users may push only the following +unprotected patterns: + +```text +sites/www/content/** +sites/blog/content/** +public/images/uploads/*.jpg +public/images/uploads/*.jpeg +public/images/uploads/*.png +public/images/uploads/*.webp +public/images/uploads/*.avif +``` + +Add the equivalent nested-path globs if the CMS is allowed to create media +subdirectories. Listing raster extensions explicitly prevents an editor from +using the media directory as a general unprotected file path. + +All other paths remain protected, including: + +```text +.gitea/** +astro.config.mjs +package.json +package-lock.json +schemas/** +scripts/** +src/** +wrangler/** +sites.json +sites/*/site.json +public/admin/** +``` + +SloanOps operator accounts may use the branch-rule bypass allowlist for +reviewed development. Verify the restrictions through the same Gitea account +used by Decap; a UI-only field restriction is not a repository security +boundary. + +The protected-path fallback matters even though `main` requires a pull +request. Preview workflows inherit Cloudflare credentials. An editor must not +be able to create another branch, alter a workflow or executable build file, +and run unreviewed code with those credentials. + +## Pull-request validation + +Add a secret-free validation workflow for pull requests into `main`. It should +always: + +1. install locked dependencies; +2. build and verify the primary site; +3. build and verify the blog; +4. reject content that fails the Astro/Zod schema; and +5. report one stable required status context. + +Preview deployment remains branch-specific and may use the existing Worker +workflows. Cloudflare credentials stay scoped to the deployment step; content +validation does not need them. + +Because Decap writes to a fixed `cms/pilot` branch, SloanOps creates the pull +request in Gitea. After an approved merge, synchronize the CMS branch with +`main` before the next editing cycle. Do not automate production merge. + +## Gitea and Decap setup + +1. Add a non-confidential Gitea OAuth application for the exact preview + `/admin/` redirect URI or URIs. Store only the public client ID in Decap. +2. Enable Gitea API CORS for the exact approved preview origin or origins. + Allow only required methods and headers, including `Authorization` and + `Content-Type`; do not use a wildcard origin. +3. Create `cms/pilot` from the reviewed repository baseline. +4. Add pinned Decap admin assets beneath `public/admin/`. Do not load a floating + major-version range from a CDN. +5. Configure the Gitea backend for `SloanOps/3031023-xyz` and branch + `cms/pilot`. +6. Model every persisted frontmatter field with limits matching + `src/content.config.ts`. Do not let a CMS save silently remove an existing + field. +7. Apply and verify the `main` and fallback branch protections before inviting + or testing a non-operator editor. +8. Add the secret-free pull-request validation workflow. +9. Push only the review branch and confirm both no-index preview builds before + any CMS login test. + +## Test matrix + +Record the Gitea execution, commit, and preview identifiers for each test. Do +not record OAuth tokens or Cloudflare credentials. + +| ID | Test | Expected result | +| --- | --- | --- | +| DC-01 | Build both sites before CMS changes | Current build and verifier suites pass. | +| DC-02 | Open each preview `/admin/` route | Admin shell loads and remains no-index. | +| DC-03 | Authenticate with the approved operator account | PKCE login succeeds and the configured collections load. | +| DC-04 | Authenticate with an account without repository write access | Repository editing is unavailable. | +| DC-05 | Edit an existing draft journal post | One content-only commit lands on `cms/pilot`; the blog preview rebuilds. | +| DC-06 | Create, edit, and delete a disposable journal post | Filename, dates, tags, body, draft state, and cleanup remain schema-valid. | +| DC-07 | Edit a primary FAQ | Only the primary preview rebuilds and displays the change. | +| DC-08 | Edit service ordering and featured state | YAML types remain correct and the primary verifier passes. | +| DC-09 | Edit a team entry without changing its image | Existing fields and image path are preserved exactly. | +| DC-10 | Upload a bounded raster image | File lands only in the approved media path and renders on the relevant preview. | +| DC-11 | Attempt an oversized upload and a disallowed file type | The CMS size limit rejects the oversized file before upload; Gitea's unprotected-extension patterns reject the disallowed path. | +| DC-12 | Attempt to modify `.gitea/workflows/**`, source, package, script, schema, Wrangler, and site-manifest paths with the CMS account | Gitea rejects every push. | +| DC-13 | Attempt to create a differently named branch and change a protected file | The fallback rule rejects the push; branch naming cannot bypass protection. | +| DC-14 | Attempt a direct push to `main` | Gitea rejects it. | +| DC-15 | Open a pull request from `cms/pilot` to `main` | Both sites validate; required review and merge controls are present. | +| DC-16 | Attempt to merge without status or approval | Gitea blocks the merge. | +| DC-17 | Inspect both preview responses | Expected routes work; preview metadata/headers prevent indexing; production remains unchanged. | +| DC-18 | Revert the disposable CMS changes on `cms/pilot` | Preview returns to baseline without changing either public site. | +| DC-19 | Refresh, sign out, reauthenticate, and let a session expire | Session behavior is understandable and no unsaved-content loss is observed. | +| DC-20 | Review commit attribution and audit history | Gitea identifies the editor and the exact content/media changes. | + +Do not merge DC-15 during the initial infrastructure and editing test. A later +harmless demo-content merge requires explicit approval and repeats both public +site checks after deployment. + +## Acceptance criteria + +Accept the pilot only when: + +- both site families are understandable in one CMS; +- content edits preserve every modeled field and pass Astro validation; +- previews update reliably without moving production traffic; +- direct `main` pushes and protected-path changes fail for the CMS account; +- PR validation and operator approval are mandatory; +- media limits and repository growth remain acceptable; +- login/session behavior is usable; and +- rollback requires no production-domain or DNS change. + +Stop and redesign if the Gitea backend cannot honor the branch/file +protections, OAuth grants materially broader access than the accepted account +role, content serialization loses fields, or previews require granting the CMS +account control over executable deployment files. + +## Rollback and cleanup + +If the pilot is rejected or paused: + +1. Revert or delete disposable changes on `cms/pilot`. +2. Delete the two disposable preview aliases/versions if desired; do not delete + production Workers or retained legacy rollback resources. +3. Revoke/delete the Decap OAuth application. +4. Remove the pilot CORS origins and redeploy Gitea after verifying normal Git, + UI, API, and Actions behavior. +5. Remove `/admin/` only through a reviewed commit. +6. Remove or retain branch protections deliberately; never weaken `main` as + cleanup. + +## Implementation estimate + +Expected hands-on implementation time: **6–9 hours**, normally one focused +working day. Budget up to two elapsed days if OAuth/CORS behavior or Gitea +protection semantics require troubleshooting. + +| Work | Estimate | +| --- | ---: | +| Decap admin shell, pinned dependency, and Gitea configuration | 1–1.5 hours | +| Model blog, FAQ, services, and team collections | 1.5–2 hours | +| Add secret-free PR validation and preview links/instructions | 1–1.5 hours | +| Configure CORS, OAuth, CMS branch, and protection rules | 1–1.5 hours | +| Run the authentication, editing, protection, preview, and rollback matrix | 1.5–2.5 hours | +| Record results and resolve small integration defects | 0.5 hour | + +This estimate covers the internal demo pilot, not a polished client-editable +service. Client rollout still needs observed usability, account invitation and +offboarding procedures, support scope, media policy, and pricing. From 7eeb9e1e01a43b4b25787c596404d46b3ece8036 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 00:33:03 -0400 Subject: [PATCH 02/10] Add preview-only Decap CMS pilot --- .gitea/workflows/cms-content-validation.yml | 34 +++ README.md | 7 + docs/decap-cms-gitea-setup.md | 185 +++++++++++++++++ docs/decap-cms-pilot.md | 44 +++- package-lock.json | 1 + package.json | 2 + public/_headers | 4 + public/admin/config.yml | 218 ++++++++++++++++++++ public/admin/index.html | 20 ++ scripts/validate.mjs | 49 ++++- scripts/verify-build.mjs | 15 ++ scripts/verify-decap.mjs | 190 +++++++++++++++++ 12 files changed, 759 insertions(+), 10 deletions(-) create mode 100644 .gitea/workflows/cms-content-validation.yml create mode 100644 docs/decap-cms-gitea-setup.md create mode 100644 public/admin/config.yml create mode 100644 public/admin/index.html create mode 100644 scripts/verify-decap.mjs diff --git a/.gitea/workflows/cms-content-validation.yml b/.gitea/workflows/cms-content-validation.yml new file mode 100644 index 0000000..4a1dfad --- /dev/null +++ b/.gitea/workflows/cms-content-validation.yml @@ -0,0 +1,34 @@ +name: CMS content validation + +on: + pull_request: + branches: [main] + +jobs: + validate: + name: cms-content-validation + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + contents: read + env: + ASTRO_TELEMETRY_DISABLED: '1' + steps: + - name: Checkout source + uses: https://github.com/actions/checkout@v4 + - name: Use Node 22 + uses: https://github.com/actions/setup-node@v4 + with: + node-version: 22 + - name: Install locked dependencies + run: npm ci + - name: Verify Decap configuration and content boundaries + run: npm run verify:cms + - name: Build primary site + run: SITE_KEY=www npm run build:site + - name: Verify primary site + run: SITE_KEY=www npm run verify:build + - name: Build blog + run: SITE_KEY=blog npm run build:site + - name: Verify blog + run: SITE_KEY=blog npm run verify:build diff --git a/README.md b/README.md index 25ab799..be02665 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Use Node 22.12 or newer within the Node 22 release line. ```bash npm ci +npm run verify:cms SITE_KEY=www npm run build:site SITE_KEY=www npm run verify:build SITE_KEY=blog npm run build:site @@ -36,6 +37,12 @@ Each selected site builds to `dist//`. The Worker configurations use only static assets and a custom 404 page. They contain no custom domains, routes, account IDs, or secrets. +`npm run verify:cms` checks the fixed Gitea branch/backend, all four Decap +collection contracts, the text-first raster-media boundary, the pinned admin +shell, and the stable secret-free pull-request status context. The live steps +remain unapplied; see the [Gitea pilot settings](docs/decap-cms-gitea-setup.md) +for the exact review checklist. + ## Preview deployment The Gitea workflows upload scoped non-production preview versions of the diff --git a/docs/decap-cms-gitea-setup.md b/docs/decap-cms-gitea-setup.md new file mode 100644 index 0000000..ffff00f --- /dev/null +++ b/docs/decap-cms-gitea-setup.md @@ -0,0 +1,185 @@ +# Decap CMS pilot: unapplied Gitea settings + +Status: repository-side review specification only. Nothing in this document +authorizes a Gitea restart, OAuth application creation, branch-protection +change, branch push, preview deployment, or merge. + +The repository implementation targets these fixed public values: + +| Setting | Value | +| --- | --- | +| Gitea repository | `SloanOps/3031023-xyz` | +| Decap write branch | `cms/pilot` | +| Gitea base URL | `https://git.sloanops.com` | +| Gitea API root | `https://git.sloanops.com/api/v1` | +| Stable CMS origin | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev` | +| Exact OAuth redirect URI | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` | +| Required status context | `CMS content validation / cms-content-validation (pull_request)` | + +The predicted Workers alias must be confirmed after the first explicitly +approved preview deployment. If Cloudflare assigns a different stable origin, +update the repository configuration, CORS origin, and OAuth redirect URI +together through review before enabling login. + +## Unapplied CORS change + +The tracked Gitea service in +`/home/sloan/gitRepos/SloanOps/infrastructure/docker-compose.yml` currently has +no `[cors]` environment overrides. After separate approval, add these entries +to the existing `gitea.environment` list and redeploy only through the normal +infrastructure change process: + +```yaml +- GITEA__cors__ENABLED=true +- GITEA__cors__ALLOW_DOMAIN=https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev +- GITEA__cors__METHODS=GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +- GITEA__cors__MAX_AGE=10m +- GITEA__cors__ALLOW_CREDENTIALS=false +- GITEA__cors__HEADERS=Authorization,Content-Type +``` + +This is one exact origin, no wildcard, no cookie-bearing cross-origin request, +and only the API methods and non-safelisted request headers used by the Gitea +backend. Do not add the production domains, the journal preview, arbitrary +Workers preview hosts, or localhost. Gitea's same-origin login page continues +to use its own session cookie; Decap API calls use the OAuth bearer token. + +After an approved Gitea deployment, verify a preflight without including a +token or cookie: + +```bash +curl --request OPTIONS 'https://git.sloanops.com/api/v1/version' \ + --header 'Origin: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev' \ + --header 'Access-Control-Request-Method: GET' \ + --header 'Access-Control-Request-Headers: authorization,content-type' +``` + +The response must allow only the configured origin, requested method, and +headers. Repeat with an unrelated origin and confirm that Gitea does not grant +it cross-origin access. Also verify normal Git, web UI, API, and Actions +behavior before continuing. + +## OAuth application to create later + +Create one Gitea OAuth2 application only after the stable preview origin and +CORS response have been reviewed: + +- Application name: `3031023.xyz Decap CMS pilot`. +- Confidential client: **unchecked**. The browser client must use PKCE. +- Redirect URI: exactly + `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/`, including the + trailing slash. +- Do not add wildcards, localhost, either production hostname, or the journal + preview as additional redirects. +- Copy only the public client ID into `backend.app_id` in + `public/admin/config.yml` through a reviewed commit. +- Do not store or use a client secret in the repository, Actions, Cloudflare, + or Decap configuration. + +The CMS account still needs repository write access; the branch rules below +are the security boundary that reduces that write access to pilot content and +media paths. + +## Branch protection rules to apply together + +Create both rules before granting a CMS/client account write access or testing +login. Gitea uses only the first matching rule, so the order is material. + +### Priority 1: production `main` + +| Gitea control | Required value | +| --- | --- | +| Protected branch pattern | `main` | +| Priority | `1` (first/highest) | +| Push | Disabled for everyone; no push allowlist | +| Force push | Disabled | +| Required approvals | `1` | +| Approval allowlist | Enabled; only the named SloanOps operator user/team | +| Dismiss stale approvals | Enabled | +| Ignore stale approvals | Disabled | +| Block rejected reviews | Enabled | +| Block outstanding official review requests | Enabled | +| Block outdated pull requests | Enabled | +| Status checks | Enabled | +| Status check pattern | `CMS content validation / cms-content-validation (pull_request)` | +| Merge allowlist | Enabled; only the named SloanOps operator user/team | +| Administrators must follow protection | Enabled | +| Protection bypass allowlist | Disabled | + +Leave both file-pattern fields empty on this rule. Direct pushes are already +disabled, and executable or configuration changes must remain possible only in +a separate operator-authored, reviewed pull request. The fallback rule prevents +CMS users from placing those files on any source branch. + +This rule means every `main` change arrives through a current pull request, +passes the one secret-free job that validates the CMS contract and builds and +verifies both sites, receives a current SloanOps approval, and is merged by a +SloanOps operator. A CMS/client account must not be added to the approval, +merge, administrator, or bypass allowlists. + +### Priority 2: all-branch fallback + +| Gitea control | Required value | +| --- | --- | +| Protected branch pattern | `*` | +| Priority | `2` (after `main`) | +| Push | Disabled, except the unprotected file patterns below | +| Force push | Disabled | +| Unprotected file patterns | Exact semicolon-separated value below | +| Protected file patterns | Empty; every path omitted from the unprotected list remains protected | +| Protection bypass allowlist | Enabled only for the named SloanOps operator user/team | +| CMS/client account | Write access, but absent from every allowlist | + +Enter this exact single value in **Unprotected file patterns**: + +```text +sites/www/content/**;sites/blog/content/**;public/images/uploads/*.jpg;public/images/uploads/*.jpeg;public/images/uploads/*.png;public/images/uploads/*.webp;public/images/uploads/*.avif +``` + +Do not add a nested upload glob. The current Decap configuration writes media +directly into the flat uploads directory, and the local verifier rejects nested +media paths. Gitea file patterns are case-insensitive; CI verifies actual file +signatures and the 500 KiB limit before a preview can upload. + +Everything not listed is protected from CMS/client pushes on `cms/pilot` and +on every differently named branch, including: + +```text +.gitea/** +astro.config.mjs +package.json +package-lock.json +schemas/** +scripts/** +src/** +wrangler/** +sites.json +sites/*/site.json +public/admin/** +public/_headers +public/images/* +``` + +The final `public/images/*` line describes the effect of omission, not an +additional Gitea field value: existing approved images stay protected while +the explicitly listed `public/images/uploads/*.` paths remain writable. +Workflows, source, scripts, package files, schemas, manifests, Wrangler +configuration, `site.json` files, and the CMS application therefore cannot be +altered by choosing another branch name. + +## Verification before an editor invitation + +1. Run `npm ci`, `npm run verify:cms`, and both site build/verifier pairs. +2. Create `cms/pilot` from the reviewed baseline only after approval. +3. Apply both protection rules together and confirm `main` is priority 1 and + `*` is priority 2. +4. Use the same non-operator account intended for Decap to prove allowed + Markdown edits succeed and every protected-path/direct-`main` attempt fails. +5. Open, but do not merge, a pull request into `main`. Confirm Gitea reports + the exact required status context above and blocks merge without both its + successful result and a current SloanOps approval. +6. Confirm both branch previews remain no-index and production is unchanged. + +Do not treat a Decap UI restriction as authorization. Gitea's first-match +branch rules are the enforcement boundary, and the pull-request build is the +content/media integrity boundary. diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 80bb92f..4c82763 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -1,9 +1,10 @@ # Decap CMS Gitea pilot -Status: planned; no CMS, OAuth application, Gitea CORS change, branch -protection, or deployment has been enabled by this document. +Status: repository implementation prepared for review; no OAuth application, +Gitea CORS change, branch protection, branch push, preview deployment, or +production merge has been performed. -Updated: 2026-09-03 +Updated: 2026-09-04 ## Purpose @@ -49,6 +50,39 @@ References: - - +The exact, unapplied Gitea CORS, OAuth, and two-rule branch-protection settings +are recorded in [Decap CMS pilot: unapplied Gitea settings](decap-cms-gitea-setup.md). + +## Repository implementation under review + +The `review/decap-cms-pilot` branch now contains the repository-side portion of +the pilot: + +- `public/admin/` provides a permanently no-index admin shell and one shared + configuration for both site builds. +- The shell pins Decap CMS `3.15.1` by exact URL and verified SHA-384 integrity + value rather than a floating release range. +- The backend is fixed to `SloanOps/3031023-xyz` and `cms/pilot`. Its public + OAuth client ID remains an explicit placeholder until the separately + approved non-confidential Gitea application exists. +- All four Markdown collections and every persisted frontmatter field are + modeled with the current Astro/Zod bounds. Markdown controls are text-first; + image embedding and general file widgets are absent. +- The team image field accepts an existing approved raster path or a bounded + upload. URL insertion and SVG paths are rejected. Builds additionally verify + the extension, raster signature, flat upload path, and 500 KiB limit. +- `.gitea/workflows/cms-content-validation.yml` runs on every pull request into + `main`, uses no secrets, and reports + `CMS content validation / cms-content-validation (pull_request)` after + checking the Decap contract and building and verifying both sites. +- The existing branch preview workflows remain in place. Local output checks + now prove preview robots rules and page metadata stay no-index and that the + admin response has a no-index header rule. + +This preparation does not make the CMS usable yet: the placeholder public +client ID, unapplied CORS setting, absent `cms/pilot` remote branch, and absent +branch rules are intentional review gates. + ## Proposed pilot architecture ```text @@ -192,8 +226,8 @@ request in Gitea. After an approved merge, synchronize the CMS branch with Allow only required methods and headers, including `Authorization` and `Content-Type`; do not use a wildcard origin. 3. Create `cms/pilot` from the reviewed repository baseline. -4. Add pinned Decap admin assets beneath `public/admin/`. Do not load a floating - major-version range from a CDN. +4. Review the pinned Decap admin assets beneath `public/admin/`. Do not replace + the exact version and integrity value with a floating range. 5. Configure the Gitea backend for `SloanOps/3031023-xyz` and branch `cms/pilot`. 6. Model every persisted frontmatter field with limits matching diff --git a/package-lock.json b/package-lock.json index d56d58d..02131bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "astro": "~7.2.0", + "js-yaml": "4.3.2", "wrangler": "^4.0.0" }, "engines": { diff --git a/package.json b/package.json index 51b7cb4..62aed0e 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "scripts": { "validate": "node scripts/validate.mjs", + "verify:cms": "npm run validate && node scripts/verify-decap.mjs", "build": "npm run validate && ASTRO_TELEMETRY_DISABLED=1 astro build", "build:site": "node scripts/build-site.mjs", "verify:build": "node scripts/verify-build.mjs", @@ -17,6 +18,7 @@ "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "astro": "~7.2.0", + "js-yaml": "4.3.2", "wrangler": "^4.0.0" } } diff --git a/public/_headers b/public/_headers index 5bf6b40..0bc0977 100644 --- a/public/_headers +++ b/public/_headers @@ -3,3 +3,7 @@ Referrer-Policy: strict-origin-when-cross-origin X-Frame-Options: SAMEORIGIN Permissions-Policy: geolocation=(), microphone=(), camera=() + +/admin/* + X-Robots-Tag: noindex, nofollow, noarchive + Cache-Control: no-store diff --git a/public/admin/config.yml b/public/admin/config.yml new file mode 100644 index 0000000..793d4fc --- /dev/null +++ b/public/admin/config.yml @@ -0,0 +1,218 @@ +backend: + name: gitea + repo: SloanOps/3031023-xyz + branch: cms/pilot + app_id: REPLACE_WITH_GITEA_OAUTH_CLIENT_ID + api_root: https://git.sloanops.com/api/v1 + base_url: https://git.sloanops.com + auth_endpoint: https://git.sloanops.com/login/oauth/authorize + +publish_mode: simple +site_url: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev +display_url: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev +show_preview_links: false + +media_folder: public/images/uploads +public_folder: /images/uploads + +slug: + encoding: ascii + clean_accents: true + sanitize_replacement: "-" + +collections: + - name: primary_faq + label: Primary site — FAQs + label_singular: FAQ + description: Answers shown on the primary Happy Tails site. Draft entries stay out of the generated site. + folder: sites/www/content/faq + create: true + delete: true + extension: md + format: frontmatter + identifier_field: question + slug: "{{slug}}" + summary: "{{question}} ({{category}})" + sortable_fields: [order, question, category, draft] + fields: + - label: Question + name: question + widget: string + pattern: ['^.{12,180}$', 'Use 12–180 characters.'] + - label: Category + name: category + widget: string + default: General + pattern: ['^.{2,48}$', 'Use 2–48 characters.'] + - label: Display order + name: order + widget: number + value_type: int + min: 0 + max: 99 + step: 1 + default: 0 + - label: Draft (excluded from generated site) + name: draft + widget: boolean + default: false + - label: Answer + name: body + widget: markdown + buttons: [bold, italic, link, heading-two, heading-three, quote, bulleted-list, numbered-list] + editor_components: [] + + - name: primary_services + label: Primary site — Services + label_singular: Service + description: Service cards shown on the primary Happy Tails site. + folder: sites/www/content/services + create: true + delete: true + extension: md + format: frontmatter + identifier_field: title + slug: "{{slug}}" + summary: "{{title}} — {{price}}" + sortable_fields: [order, title, featured, draft] + fields: + - label: Title + name: title + widget: string + pattern: ['^.{3,80}$', 'Use 3–80 characters.'] + - label: Price label + name: price + widget: string + pattern: ['^.{2,48}$', 'Use 2–48 characters.'] + - label: Included items + name: items + widget: list + min: 1 + max: 8 + field: + label: Item + name: item + widget: string + pattern: ['^.{3,80}$', 'Use 3–80 characters.'] + - label: Display order + name: order + widget: number + value_type: int + min: 0 + max: 99 + step: 1 + default: 0 + - label: Featured + name: featured + widget: boolean + default: false + - label: Draft (excluded from generated site) + name: draft + widget: boolean + default: false + - label: Description + name: body + widget: markdown + buttons: [bold, italic, link, heading-two, heading-three, quote, bulleted-list, numbered-list] + editor_components: [] + + - name: primary_team + label: Primary site — Team + label_singular: Team member + description: Team profiles shown on the primary Happy Tails site. + folder: sites/www/content/team + create: true + delete: true + extension: md + format: frontmatter + identifier_field: name + slug: "{{slug}}" + summary: "{{name}} — {{role}}" + sortable_fields: [order, name, role, draft] + fields: + - label: Name + name: name + widget: string + pattern: ['^.{3,80}$', 'Use 3–80 characters.'] + - label: Role + name: role + widget: string + pattern: ['^.{3,80}$', 'Use 3–80 characters.'] + - label: Approved raster image + name: image + widget: image + choose_url: false + allow_multiple: false + pattern: ['^/images/(?:uploads/)?[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an existing approved image or a JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: + max_file_size: 512000 + multiple: false + - label: Display order + name: order + widget: number + value_type: int + min: 0 + max: 99 + step: 1 + default: 0 + - label: Draft (excluded from generated site) + name: draft + widget: boolean + default: false + - label: Biography + name: body + widget: markdown + buttons: [bold, italic, link, heading-two, heading-three, quote, bulleted-list, numbered-list] + editor_components: [] + + - name: journal_posts + label: Journal — Posts + label_singular: Journal post + description: Markdown posts published on the Happy Tails Journal preview. Draft entries stay out of the generated site. + folder: sites/blog/content/posts + create: true + delete: true + extension: md + format: frontmatter + identifier_field: title + slug: "{{slug}}" + summary: "{{title}} — {{pubDate}}" + sortable_fields: [pubDate, updatedDate, title, draft] + fields: + - label: Title + name: title + widget: string + pattern: ['^.{12,100}$', 'Use 12–100 characters.'] + - label: Description + name: description + widget: text + pattern: ['^[\s\S]{30,180}$', 'Use 30–180 characters.'] + - label: Publish date + name: pubDate + widget: date + format: YYYY-MM-DD + - label: Updated date + name: updatedDate + widget: date + format: YYYY-MM-DD + required: false + - label: Tags + name: tags + widget: list + min: 1 + max: 4 + field: + label: Tag + name: tag + widget: string + pattern: ['^.{2,32}$', 'Use 2–32 characters.'] + - label: Draft (excluded from generated site) + name: draft + widget: boolean + default: false + - label: Body + name: body + widget: markdown + buttons: [bold, italic, link, heading-two, heading-three, quote, bulleted-list, numbered-list] + editor_components: [] diff --git a/public/admin/index.html b/public/admin/index.html new file mode 100644 index 0000000..d6d48fd --- /dev/null +++ b/public/admin/index.html @@ -0,0 +1,20 @@ + + + + + + + + + Happy Tails preview content manager + + + + + + + diff --git a/scripts/validate.mjs b/scripts/validate.mjs index 038aad6..8bcfe53 100644 --- a/scripts/validate.mjs +++ b/scripts/validate.mjs @@ -1,7 +1,7 @@ import Ajv2020 from 'ajv/dist/2020.js'; import addFormats from 'ajv-formats'; import { readdir, readFile, stat } from 'node:fs/promises'; -import { join } from 'node:path'; +import { extname, join, relative, sep } from 'node:path'; const readJson = async (path) => JSON.parse(await readFile(path, 'utf8')); const ajv = new Ajv2020({ allErrors: true, strict: true }); @@ -23,8 +23,47 @@ for (const key of Object.keys(sites.sites)) { if (!siteCheck(data)) throw new Error(`${key} site data rejected: ${ajv.errorsText(siteCheck.errors)}`); } -for (const file of await readdir('public/images')) { - const info = await stat(join('public/images', file)); - if (info.size > 500 * 1024) throw new Error(`Image exceeds the 500 KiB pilot limit: ${file}`); +async function filesUnder(directory) { + const entries = await readdir(directory, { withFileTypes: true }); + const files = []; + for (const entry of entries) { + const path = join(directory, entry.name); + if (entry.isDirectory()) files.push(...await filesUnder(path)); + else if (entry.isFile()) files.push(path); + else throw new Error(`Unsupported filesystem entry in public images: ${path}`); + } + return files; } -console.log('Intake fixtures, deployment manifest, site data, and image limits are valid.'); + +const uploadRoot = join('public', 'images', 'uploads'); +const allowedUploadExtensions = new Set(['.jpg', '.jpeg', '.png', '.webp', '.avif']); +const ascii = (value) => Buffer.from(value, 'ascii'); +const startsWith = (buffer, signature) => buffer.subarray(0, signature.length).equals(signature); +const isRasterForExtension = (buffer, extension) => { + if (extension === '.jpg' || extension === '.jpeg') return startsWith(buffer, Buffer.from([0xff, 0xd8, 0xff])); + if (extension === '.png') return startsWith(buffer, Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])); + if (extension === '.webp') return buffer.length >= 12 && buffer.subarray(0, 4).equals(ascii('RIFF')) && buffer.subarray(8, 12).equals(ascii('WEBP')); + if (extension === '.avif' && buffer.length >= 16 && buffer.subarray(4, 8).equals(ascii('ftyp'))) { + for (let offset = 8; offset + 4 <= Math.min(buffer.length, 64); offset += 4) { + const brand = buffer.subarray(offset, offset + 4).toString('ascii'); + if (brand === 'avif' || brand === 'avis') return true; + } + } + return false; +}; + +for (const path of await filesUnder('public/images')) { + const imagePath = relative('public/images', path).split(sep).join('/'); + const info = await stat(path); + if (info.size > 500 * 1024) throw new Error(`Image exceeds the 500 KiB pilot limit: ${imagePath}`); + + const uploadPath = relative(uploadRoot, path); + const isUpload = uploadPath !== '..' && !uploadPath.startsWith(`..${sep}`); + if (!isUpload) continue; + if (uploadPath.includes(sep)) throw new Error(`Nested CMS media paths are not allowed: ${imagePath}`); + const extension = extname(uploadPath).toLowerCase(); + if (!allowedUploadExtensions.has(extension)) throw new Error(`CMS media is not an allowed raster extension: ${imagePath}`); + const buffer = await readFile(path); + if (!isRasterForExtension(buffer, extension)) throw new Error(`CMS media does not match its raster extension: ${imagePath}`); +} +console.log('Intake fixtures, deployment manifest, site data, and bounded raster images are valid.'); diff --git a/scripts/verify-build.mjs b/scripts/verify-build.mjs index ce881b9..aa03904 100644 --- a/scripts/verify-build.mjs +++ b/scripts/verify-build.mjs @@ -16,6 +16,21 @@ for (const { file, html } of pages) { for (const match of html.matchAll(/(?:src|href)="(\/images\/[^"?#]+)"/g)) await access(resolve(root, `.${match[1]}`)); } +const robots = await readFile(resolve(root, 'robots.txt'), 'utf8'); +if (process.env.DEPLOY_ENV === 'production') { + if (!robots.includes('Allow: /') || !robots.includes('Sitemap: https://')) throw new Error(`${key} production robots rules are not indexable.`); +} else { + if (robots !== 'User-agent: *\nDisallow: /\n') throw new Error(`${key} preview robots rules must disallow all crawling.`); + for (const { file, html } of pages) if (!html.includes('')) throw new Error(`${file} is missing preview no-index metadata.`); +} + +await Promise.all(['admin/index.html', 'admin/config.yml', '_headers'].map((file) => access(resolve(root, file)))); +const admin = await readFile(resolve(root, 'admin/index.html'), 'utf8'); +if (!admin.includes('content="noindex,nofollow,noarchive"')) throw new Error('Admin shell is missing no-index metadata.'); +if (!admin.includes('decap-cms@3.15.1/dist/decap-cms.js')) throw new Error('Admin shell is missing the pinned Decap CMS application.'); +const headers = await readFile(resolve(root, '_headers'), 'utf8'); +if (!/\/admin\/\*[\s\S]*X-Robots-Tag: noindex, nofollow, noarchive/.test(headers)) throw new Error('Admin response headers are missing the no-index rule.'); + const home = await readFile(resolve(root, 'index.html'), 'utf8'); if (key === 'www') { for (const { file, html } of pages) if (!html.includes('href="https://blog.3031023.xyz/"')) throw new Error(`${file} is missing the Happy Tails Journal link.`); diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs new file mode 100644 index 0000000..8672cc5 --- /dev/null +++ b/scripts/verify-decap.mjs @@ -0,0 +1,190 @@ +import { readFile, readdir } from 'node:fs/promises'; +import { join } from 'node:path'; +import yaml from 'js-yaml'; + +const fail = (message) => { throw new Error(message); }; +const assert = (condition, message) => { if (!condition) fail(message); }; +const same = (actual, expected) => JSON.stringify(actual) === JSON.stringify(expected); + +function expectSubset(actual, expected, path) { + assert(actual && typeof actual === 'object', `${path} must be an object.`); + for (const [key, value] of Object.entries(expected)) { + const currentPath = `${path}.${key}`; + if (value && typeof value === 'object' && !Array.isArray(value)) expectSubset(actual[key], value, currentPath); + else assert(same(actual[key], value), `${currentPath} must be ${JSON.stringify(value)}.`); + } +} + +const configPath = 'public/admin/config.yml'; +const config = yaml.load(await readFile(configPath, 'utf8')); +const expectedOrigin = 'https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev'; +const expectedBackend = { + name: 'gitea', + repo: 'SloanOps/3031023-xyz', + branch: 'cms/pilot', + api_root: 'https://git.sloanops.com/api/v1', + base_url: 'https://git.sloanops.com', + auth_endpoint: 'https://git.sloanops.com/login/oauth/authorize', +}; + +expectSubset(config.backend, expectedBackend, 'backend'); +assert(same(Object.keys(config.backend).sort(), [...Object.keys(expectedBackend), 'app_id'].sort()), 'The backend must not contain secret-bearing or unreviewed options.'); +assert(typeof config.backend.app_id === 'string' && /^[A-Za-z0-9._-]+$/.test(config.backend.app_id), 'backend.app_id must be a non-confidential public client ID or the review placeholder.'); +assert(config.publish_mode === 'simple', 'The Gitea pilot must use simple mode on its fixed review branch.'); +assert(config.site_url === expectedOrigin && config.display_url === expectedOrigin, 'The CMS must use the stable primary preview origin.'); +assert(config.local_backend === undefined, 'The pilot configuration must not enable an alternate local backend.'); +expectSubset(config, { + media_folder: 'public/images/uploads', + public_folder: '/images/uploads', +}, 'config'); +assert(config.media_library === undefined, 'Top-level media_library is reserved for registered external libraries; bound the built-in uploader on the image field.'); + +const markdownField = { + widget: 'markdown', + buttons: ['bold', 'italic', 'link', 'heading-two', 'heading-three', 'quote', 'bulleted-list', 'numbered-list'], + editor_components: [], +}; +const expectedCollections = { + primary_faq: { + folder: 'sites/www/content/faq', + identifier_field: 'question', + fields: { + question: { widget: 'string', pattern: ['^.{12,180}$', 'Use 12–180 characters.'] }, + category: { widget: 'string', default: 'General', pattern: ['^.{2,48}$', 'Use 2–48 characters.'] }, + order: { widget: 'number', value_type: 'int', min: 0, max: 99, step: 1, default: 0 }, + draft: { widget: 'boolean', default: false }, + body: markdownField, + }, + }, + primary_services: { + folder: 'sites/www/content/services', + identifier_field: 'title', + fields: { + title: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] }, + price: { widget: 'string', pattern: ['^.{2,48}$', 'Use 2–48 characters.'] }, + items: { widget: 'list', min: 1, max: 8, field: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] } }, + order: { widget: 'number', value_type: 'int', min: 0, max: 99, step: 1, default: 0 }, + featured: { widget: 'boolean', default: false }, + draft: { widget: 'boolean', default: false }, + body: markdownField, + }, + }, + primary_team: { + folder: 'sites/www/content/team', + identifier_field: 'name', + fields: { + name: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] }, + role: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] }, + image: { + widget: 'image', + choose_url: false, + allow_multiple: false, + pattern: [ + '^/images/(?:uploads/)?[A-Za-z0-9][A-Za-z0-9._-]*\\.(?:jpe?g|png|webp|avif)$', + 'Choose an existing approved image or a JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.', + ], + media_library: { config: { max_file_size: 512000, multiple: false } }, + }, + order: { widget: 'number', value_type: 'int', min: 0, max: 99, step: 1, default: 0 }, + draft: { widget: 'boolean', default: false }, + body: markdownField, + }, + }, + journal_posts: { + folder: 'sites/blog/content/posts', + identifier_field: 'title', + fields: { + title: { widget: 'string', pattern: ['^.{12,100}$', 'Use 12–100 characters.'] }, + description: { widget: 'text', pattern: ['^[\\s\\S]{30,180}$', 'Use 30–180 characters.'] }, + pubDate: { widget: 'date', format: 'YYYY-MM-DD' }, + updatedDate: { widget: 'date', format: 'YYYY-MM-DD', required: false }, + tags: { widget: 'list', min: 1, max: 4, field: { widget: 'string', pattern: ['^.{2,32}$', 'Use 2–32 characters.'] } }, + draft: { widget: 'boolean', default: false }, + body: markdownField, + }, + }, +}; + +assert(Array.isArray(config.collections), 'collections must be an array.'); +assert(same(config.collections.map(({ name }) => name).sort(), Object.keys(expectedCollections).sort()), 'Decap must expose exactly the four approved collections.'); +for (const collection of config.collections) { + const expected = expectedCollections[collection.name]; + expectSubset(collection, { + folder: expected.folder, + identifier_field: expected.identifier_field, + create: true, + delete: true, + extension: 'md', + format: 'frontmatter', + slug: '{{slug}}', + }, `collections.${collection.name}`); + const fields = Object.fromEntries(collection.fields.map((field) => [field.name, field])); + assert(same(Object.keys(fields).sort(), Object.keys(expected.fields).sort()), `${collection.name} must preserve every modeled frontmatter field and body.`); + for (const [fieldName, fieldContract] of Object.entries(expected.fields)) expectSubset(fields[fieldName], fieldContract, `${collection.name}.${fieldName}`); +} + +function visitField(field) { + assert(field.widget !== 'file', `General file widget is forbidden: ${field.name}.`); + if (field.fields) field.fields.forEach(visitField); + if (field.field) visitField(field.field); +} +config.collections.flatMap(({ fields }) => fields).forEach(visitField); +const imageFields = config.collections.flatMap(({ fields }) => fields).filter(({ widget }) => widget === 'image'); +assert(imageFields.length === 1 && imageFields[0].name === 'image', 'Only the bounded team raster-image field may expose media selection.'); + +const schema = await readFile('src/content.config.ts', 'utf8'); +for (const fragment of [ + 'title: z.string().min(12).max(100)', + 'description: z.string().min(30).max(180)', + 'updatedDate: z.coerce.date().optional()', + 'tags: z.array(z.string().min(2).max(32)).min(1).max(4)', + "question: z.string().min(12).max(180)", + "category: z.string().min(2).max(48).default('General')", + 'title: z.string().min(3).max(80)', + 'price: z.string().min(2).max(48)', + 'items: z.array(z.string().min(3).max(80)).min(1).max(8)', + 'name: z.string().min(3).max(80)', + 'role: z.string().min(3).max(80)', + "image: z.string().startsWith('/images/')", + 'order: z.number().int().min(0).max(99).default(0)', + 'draft: z.boolean().default(false)', + 'featured: z.boolean().default(false)', +]) assert(schema.includes(fragment), `Astro schema changed; review the Decap contract for: ${fragment}`); + +async function verifyContentPaths(directory) { + const entries = await readdir(directory, { withFileTypes: true }); + for (const entry of entries) { + const path = join(directory, entry.name); + if (entry.isDirectory()) { + assert(/^[a-z0-9][a-z0-9-]*$/.test(entry.name), `Content directory is outside the Markdown slug contract: ${path}`); + await verifyContentPaths(path); + } else { + assert(entry.isFile(), `Special content paths are outside the pilot contract: ${path}`); + assert(/^[a-z0-9][a-z0-9-]*\.md$/.test(entry.name), `Content filename is outside the Markdown slug contract: ${path}`); + } + } +} +for (const directory of Object.values(expectedCollections).map(({ folder }) => folder)) await verifyContentPaths(directory); + +const admin = await readFile('public/admin/index.html', 'utf8'); +assert(admin.includes('content="noindex,nofollow,noarchive"'), 'The admin shell must always carry no-index metadata.'); +assert(admin.includes('href="/admin/config.yml"') && admin.includes('rel="cms-config-url"'), 'The admin shell must load the reviewed configuration.'); +assert(admin.includes('https://unpkg.com/decap-cms@3.15.1/dist/decap-cms.js'), 'The admin shell must pin Decap CMS 3.15.1 exactly.'); +assert(admin.includes('sha384-in6eHztHveqQ7uMZ1fDaKlDmacQLFuLH2wWrFTiymyuS8zQ5bixwL8U3AeRi8h/L'), 'The Decap bundle must retain its verified SHA-384 integrity value.'); +assert(!/decap-cms@(latest|[~^*])/.test(admin), 'Floating Decap CMS versions are forbidden.'); + +const headers = await readFile('public/_headers', 'utf8'); +assert(/\/admin\/\*[\s\S]*X-Robots-Tag: noindex, nofollow, noarchive/.test(headers), 'Admin responses must include an X-Robots-Tag no-index rule.'); + +const workflow = yaml.load(await readFile('.gitea/workflows/cms-content-validation.yml', 'utf8')); +assert(workflow.name === 'CMS content validation', 'The validation workflow display name is part of the required status context.'); +assert(workflow.on?.pull_request && same(workflow.on.pull_request.branches, ['main']), 'The validation workflow must run for every pull request into main.'); +assert(workflow.on.pull_request.paths === undefined, 'The required validation workflow must not use path filters.'); +assert(workflow.jobs?.validate?.name === 'cms-content-validation', 'The validation job name is part of the required status context.'); +const workflowText = await readFile('.gitea/workflows/cms-content-validation.yml', 'utf8'); +assert(!workflowText.includes('secrets.'), 'CMS pull-request validation must remain secret-free.'); +for (const command of ['npm run verify:cms', 'SITE_KEY=www npm run build:site', 'SITE_KEY=www npm run verify:build', 'SITE_KEY=blog npm run build:site', 'SITE_KEY=blog npm run verify:build']) { + assert(workflowText.includes(command), `Validation workflow is missing: ${command}`); +} + +console.log('Verified Decap backend, four content contracts, text-first media boundary, admin pin, and stable PR status context.'); From 93090ecf877c1b7ec1cb24008d4ab9ac950ac132 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 01:01:12 -0400 Subject: [PATCH 03/10] Activate Gitea OAuth for CMS pilot --- docs/decap-cms-gitea-setup.md | 29 ++++++++++++++--------------- docs/decap-cms-pilot.md | 23 +++++++++++------------ public/admin/config.yml | 2 +- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/docs/decap-cms-gitea-setup.md b/docs/decap-cms-gitea-setup.md index ffff00f..05c0486 100644 --- a/docs/decap-cms-gitea-setup.md +++ b/docs/decap-cms-gitea-setup.md @@ -1,8 +1,8 @@ -# Decap CMS pilot: unapplied Gitea settings +# Decap CMS pilot: Gitea settings -Status: repository-side review specification only. Nothing in this document -authorizes a Gitea restart, OAuth application creation, branch-protection -change, branch push, preview deployment, or merge. +Status: applied to the preview-only pilot on 2026-09-04. The stable preview, +narrow CORS policy, public PKCE OAuth application, and both branch-protection +rules are active. Nothing has been merged to `main`. The repository implementation targets these fixed public values: @@ -16,18 +16,17 @@ The repository implementation targets these fixed public values: | Exact OAuth redirect URI | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` | | Required status context | `CMS content validation / cms-content-validation (pull_request)` | -The predicted Workers alias must be confirmed after the first explicitly -approved preview deployment. If Cloudflare assigns a different stable origin, +The Workers alias was confirmed after the first approved preview deployment. +If Cloudflare later assigns a different stable origin, update the repository configuration, CORS origin, and OAuth redirect URI together through review before enabling login. -## Unapplied CORS change +## Applied CORS policy The tracked Gitea service in -`/home/sloan/gitRepos/SloanOps/infrastructure/docker-compose.yml` currently has -no `[cors]` environment overrides. After separate approval, add these entries -to the existing `gitea.environment` list and redeploy only through the normal -infrastructure change process: +`/home/sloan/gitRepos/SloanOps/infrastructure/docker-compose.yml` contains +these entries in the existing `gitea.environment` list and was deployed +through the normal infrastructure change process: ```yaml - GITEA__cors__ENABLED=true @@ -59,10 +58,10 @@ headers. Repeat with an unrelated origin and confirm that Gitea does not grant it cross-origin access. Also verify normal Git, web UI, API, and Actions behavior before continuing. -## OAuth application to create later +## OAuth application -Create one Gitea OAuth2 application only after the stable preview origin and -CORS response have been reviewed: +The Gitea OAuth2 application was created after the stable preview origin and +CORS response were verified: - Application name: `3031023.xyz Decap CMS pilot`. - Confidential client: **unchecked**. The browser client must use PKCE. @@ -80,7 +79,7 @@ The CMS account still needs repository write access; the branch rules below are the security boundary that reduces that write access to pilot content and media paths. -## Branch protection rules to apply together +## Applied branch protection rules Create both rules before granting a CMS/client account write access or testing login. Gitea uses only the first matching rule, so the order is material. diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 4c82763..e821317 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -1,8 +1,9 @@ # Decap CMS Gitea pilot -Status: repository implementation prepared for review; no OAuth application, -Gitea CORS change, branch protection, branch push, preview deployment, or -production merge has been performed. +Status: preview-only pilot infrastructure is active on `cms/pilot`: the stable +preview, narrow Gitea CORS policy, public PKCE OAuth application, and two +repository protection rules are configured. Nothing has been merged to +`main`, and production remains unchanged. Updated: 2026-09-04 @@ -32,9 +33,8 @@ activation, repository invitation, or removal of a rollback resource. Astro/Zod validation and are suitable for a bounded Decap pilot. - The live Gitea instance reported version `1.27.3` during the Phase 9 review. Decap's Gitea backend requires Gitea 1.20 or newer. -- A preflight request from the proposed CMS origin currently returns `405` - without an access-control origin header. Gitea CORS must be configured before - browser-based Decap authentication or repository access will work. +- Credential-free preflight verification grants the exact stable CMS origin + and does not grant an unrelated origin. - Decap authenticates to Gitea with a non-confidential PKCE OAuth application. Its Gitea backend currently has no editorial pull-request workflow, so it writes directly to the configured branch. @@ -50,10 +50,10 @@ References: - - -The exact, unapplied Gitea CORS, OAuth, and two-rule branch-protection settings -are recorded in [Decap CMS pilot: unapplied Gitea settings](decap-cms-gitea-setup.md). +The exact Gitea CORS, OAuth, and two-rule branch-protection settings are +recorded in [Decap CMS pilot: Gitea settings](decap-cms-gitea-setup.md). -## Repository implementation under review +## Repository implementation The `review/decap-cms-pilot` branch now contains the repository-side portion of the pilot: @@ -62,9 +62,8 @@ the pilot: configuration for both site builds. - The shell pins Decap CMS `3.15.1` by exact URL and verified SHA-384 integrity value rather than a floating release range. -- The backend is fixed to `SloanOps/3031023-xyz` and `cms/pilot`. Its public - OAuth client ID remains an explicit placeholder until the separately - approved non-confidential Gitea application exists. +- The backend is fixed to `SloanOps/3031023-xyz` and `cms/pilot` and contains + only the public client ID for the non-confidential Gitea PKCE application. - All four Markdown collections and every persisted frontmatter field are modeled with the current Astro/Zod bounds. Markdown controls are text-first; image embedding and general file widgets are absent. diff --git a/public/admin/config.yml b/public/admin/config.yml index 793d4fc..c21c390 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -2,7 +2,7 @@ backend: name: gitea repo: SloanOps/3031023-xyz branch: cms/pilot - app_id: REPLACE_WITH_GITEA_OAUTH_CLIENT_ID + app_id: c07dba05-eb09-48f0-8da4-6df775a13995 api_root: https://git.sloanops.com/api/v1 base_url: https://git.sloanops.com auth_endpoint: https://git.sloanops.com/login/oauth/authorize From 357a0f0dc1036d39a50f871dcd07598bc756e48e Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 01:17:42 -0400 Subject: [PATCH 04/10] Use slash-free CMS pilot branch --- docs/decap-cms-gitea-setup.md | 14 +++++++++++--- docs/decap-cms-pilot.md | 31 +++++++++++++++++-------------- public/admin/config.yml | 2 +- scripts/verify-decap.mjs | 2 +- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/docs/decap-cms-gitea-setup.md b/docs/decap-cms-gitea-setup.md index 05c0486..d201e0d 100644 --- a/docs/decap-cms-gitea-setup.md +++ b/docs/decap-cms-gitea-setup.md @@ -9,13 +9,21 @@ The repository implementation targets these fixed public values: | Setting | Value | | --- | --- | | Gitea repository | `SloanOps/3031023-xyz` | -| Decap write branch | `cms/pilot` | +| Decap write branch | `cms-pilot` | +| Planned live write branch | `cms` | | Gitea base URL | `https://git.sloanops.com` | | Gitea API root | `https://git.sloanops.com/api/v1` | | Stable CMS origin | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev` | | Exact OAuth redirect URI | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` | | Required status context | `CMS content validation / cms-content-validation (pull_request)` | +The pilot and planned live branch names are intentionally slash-free. Decap +CMS 3.15.1 inserts the configured Gitea branch directly into its tree-API URL; +a slash-named branch such as `cms/pilot` is split as an API path and its 404 is +presented as an empty collection. The permanent `cms` branch is still a +non-production staging branch: changes reach `main` only through the protected +pull-request flow. + The Workers alias was confirmed after the first approved preview deployment. If Cloudflare later assigns a different stable origin, update the repository configuration, CORS origin, and OAuth redirect URI @@ -140,7 +148,7 @@ directly into the flat uploads directory, and the local verifier rejects nested media paths. Gitea file patterns are case-insensitive; CI verifies actual file signatures and the 500 KiB limit before a preview can upload. -Everything not listed is protected from CMS/client pushes on `cms/pilot` and +Everything not listed is protected from CMS/client pushes on `cms-pilot` and on every differently named branch, including: ```text @@ -169,7 +177,7 @@ altered by choosing another branch name. ## Verification before an editor invitation 1. Run `npm ci`, `npm run verify:cms`, and both site build/verifier pairs. -2. Create `cms/pilot` from the reviewed baseline only after approval. +2. Create `cms-pilot` from the reviewed baseline only after approval. 3. Apply both protection rules together and confirm `main` is priority 1 and `*` is priority 2. 4. Use the same non-operator account intended for Decap to prove allowed diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index e821317..8d42ba9 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -1,6 +1,6 @@ # Decap CMS Gitea pilot -Status: preview-only pilot infrastructure is active on `cms/pilot`: the stable +Status: preview-only pilot infrastructure is active on `cms-pilot`: the stable preview, narrow Gitea CORS policy, public PKCE OAuth application, and two repository protection rules are configured. Nothing has been merged to `main`, and production remains unchanged. @@ -62,7 +62,7 @@ the pilot: configuration for both site builds. - The shell pins Decap CMS `3.15.1` by exact URL and verified SHA-384 integrity value rather than a floating release range. -- The backend is fixed to `SloanOps/3031023-xyz` and `cms/pilot` and contains +- The backend is fixed to `SloanOps/3031023-xyz` and `cms-pilot` and contains only the public client ID for the non-confidential Gitea PKCE application. - All four Markdown collections and every persisted frontmatter field are modeled with the current Astro/Zod bounds. Markdown controls are text-first; @@ -78,9 +78,8 @@ the pilot: now prove preview robots rules and page metadata stay no-index and that the admin response has a no-index header rule. -This preparation does not make the CMS usable yet: the placeholder public -client ID, unapplied CORS setting, absent `cms/pilot` remote branch, and absent -branch rules are intentional review gates. +The pilot dependencies are active: the public client ID, exact-origin CORS +policy, `cms-pilot` branch, and both protection rules have been verified. ## Proposed pilot architecture @@ -89,7 +88,7 @@ Decap at /admin/ | | Gitea PKCE OAuth and content/media commits only v -cms/pilot branch +cms-pilot branch | +--> primary no-index Worker preview | @@ -110,7 +109,7 @@ is acceptable because both sites belong to the same root-domain repository and the same owner. One Decap configuration exposes clearly labeled Primary Site and Journal collection groups. -Expected preview URLs for branch `cms/pilot`: +Preview URLs for branch `cms-pilot`: - `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` - `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/` @@ -213,10 +212,14 @@ Preview deployment remains branch-specific and may use the existing Worker workflows. Cloudflare credentials stay scoped to the deployment step; content validation does not need them. -Because Decap writes to a fixed `cms/pilot` branch, SloanOps creates the pull +Because Decap writes to a fixed `cms-pilot` branch, SloanOps creates the pull request in Gitea. After an approved merge, synchronize the CMS branch with `main` before the next editing cycle. Do not automate production merge. +If the pilot is accepted, replace the disposable branch with a permanent, +slash-free `cms` branch. It remains a preview/staging branch and retains the +same pull-request, validation, and approval path into `main`. + ## Gitea and Decap setup 1. Add a non-confidential Gitea OAuth application for the exact preview @@ -224,11 +227,11 @@ request in Gitea. After an approved merge, synchronize the CMS branch with 2. Enable Gitea API CORS for the exact approved preview origin or origins. Allow only required methods and headers, including `Authorization` and `Content-Type`; do not use a wildcard origin. -3. Create `cms/pilot` from the reviewed repository baseline. +3. Create `cms-pilot` from the reviewed repository baseline. 4. Review the pinned Decap admin assets beneath `public/admin/`. Do not replace the exact version and integrity value with a floating range. 5. Configure the Gitea backend for `SloanOps/3031023-xyz` and branch - `cms/pilot`. + `cms-pilot`. 6. Model every persisted frontmatter field with limits matching `src/content.config.ts`. Do not let a CMS save silently remove an existing field. @@ -249,7 +252,7 @@ not record OAuth tokens or Cloudflare credentials. | DC-02 | Open each preview `/admin/` route | Admin shell loads and remains no-index. | | DC-03 | Authenticate with the approved operator account | PKCE login succeeds and the configured collections load. | | DC-04 | Authenticate with an account without repository write access | Repository editing is unavailable. | -| DC-05 | Edit an existing draft journal post | One content-only commit lands on `cms/pilot`; the blog preview rebuilds. | +| DC-05 | Edit an existing draft journal post | One content-only commit lands on `cms-pilot`; the blog preview rebuilds. | | DC-06 | Create, edit, and delete a disposable journal post | Filename, dates, tags, body, draft state, and cleanup remain schema-valid. | | DC-07 | Edit a primary FAQ | Only the primary preview rebuilds and displays the change. | | DC-08 | Edit service ordering and featured state | YAML types remain correct and the primary verifier passes. | @@ -259,10 +262,10 @@ not record OAuth tokens or Cloudflare credentials. | DC-12 | Attempt to modify `.gitea/workflows/**`, source, package, script, schema, Wrangler, and site-manifest paths with the CMS account | Gitea rejects every push. | | DC-13 | Attempt to create a differently named branch and change a protected file | The fallback rule rejects the push; branch naming cannot bypass protection. | | DC-14 | Attempt a direct push to `main` | Gitea rejects it. | -| DC-15 | Open a pull request from `cms/pilot` to `main` | Both sites validate; required review and merge controls are present. | +| DC-15 | Open a pull request from `cms-pilot` to `main` | Both sites validate; required review and merge controls are present. | | DC-16 | Attempt to merge without status or approval | Gitea blocks the merge. | | DC-17 | Inspect both preview responses | Expected routes work; preview metadata/headers prevent indexing; production remains unchanged. | -| DC-18 | Revert the disposable CMS changes on `cms/pilot` | Preview returns to baseline without changing either public site. | +| DC-18 | Revert the disposable CMS changes on `cms-pilot` | Preview returns to baseline without changing either public site. | | DC-19 | Refresh, sign out, reauthenticate, and let a session expire | Session behavior is understandable and no unsaved-content loss is observed. | | DC-20 | Review commit attribution and audit history | Gitea identifies the editor and the exact content/media changes. | @@ -292,7 +295,7 @@ account control over executable deployment files. If the pilot is rejected or paused: -1. Revert or delete disposable changes on `cms/pilot`. +1. Revert or delete disposable changes on `cms-pilot`. 2. Delete the two disposable preview aliases/versions if desired; do not delete production Workers or retained legacy rollback resources. 3. Revoke/delete the Decap OAuth application. diff --git a/public/admin/config.yml b/public/admin/config.yml index c21c390..427db1a 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -1,7 +1,7 @@ backend: name: gitea repo: SloanOps/3031023-xyz - branch: cms/pilot + branch: cms-pilot app_id: c07dba05-eb09-48f0-8da4-6df775a13995 api_root: https://git.sloanops.com/api/v1 base_url: https://git.sloanops.com diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index 8672cc5..2db55c6 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -21,7 +21,7 @@ const expectedOrigin = 'https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev'; const expectedBackend = { name: 'gitea', repo: 'SloanOps/3031023-xyz', - branch: 'cms/pilot', + branch: 'cms-pilot', api_root: 'https://git.sloanops.com/api/v1', base_url: 'https://git.sloanops.com', auth_endpoint: 'https://git.sloanops.com/login/oauth/authorize', From d76de0ccb43100722ac8be0bac05cacebf2b97ce Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 01:48:38 -0400 Subject: [PATCH 05/10] Enable CMS-managed site images --- README.md | 4 +- docs/decap-cms-pilot.md | 31 ++++--- public/admin/config.yml | 90 ++++++++++++++++++++- public/images/uploads/david-okonkwo.jpg | Bin 0 -> 23418 bytes public/images/uploads/dog-grooming.jpg | Bin 0 -> 29628 bytes public/images/uploads/dog-walking.jpg | Bin 0 -> 41893 bytes public/images/uploads/emily-chen.jpg | Bin 0 -> 21793 bytes public/images/uploads/happy-tails-team.jpg | Bin 0 -> 69942 bytes public/images/uploads/hero-dogs.jpg | Bin 0 -> 89465 bytes public/images/uploads/marcus-rivera.jpg | Bin 0 -> 21521 bytes public/images/uploads/sarah-mitchell.jpg | Bin 0 -> 25496 bytes scripts/verify-build.mjs | 5 ++ scripts/verify-decap.mjs | 67 +++++++++++---- sites/www/content/page-images/primary.md | 14 ++++ sites/www/content/team/david-okonkwo.md | 2 +- sites/www/content/team/emily-chen.md | 2 +- sites/www/content/team/marcus-rivera.md | 2 +- sites/www/content/team/sarah-mitchell.md | 2 +- src/components/Hero.astro | 5 +- src/components/PageIntro.astro | 2 +- src/content.config.ts | 27 ++++++- src/pages/about.astro | 3 +- src/pages/contact.astro | 4 +- src/pages/index.astro | 7 +- src/pages/services.astro | 3 +- src/styles/global.css | 3 + 26 files changed, 229 insertions(+), 44 deletions(-) create mode 100644 public/images/uploads/david-okonkwo.jpg create mode 100644 public/images/uploads/dog-grooming.jpg create mode 100644 public/images/uploads/dog-walking.jpg create mode 100644 public/images/uploads/emily-chen.jpg create mode 100644 public/images/uploads/happy-tails-team.jpg create mode 100644 public/images/uploads/hero-dogs.jpg create mode 100644 public/images/uploads/marcus-rivera.jpg create mode 100644 public/images/uploads/sarah-mitchell.jpg create mode 100644 sites/www/content/page-images/primary.md diff --git a/README.md b/README.md index be02665..850383b 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ Each selected site builds to `dist//`. The Worker configurations use only static assets and a custom 404 page. They contain no custom domains, routes, account IDs, or secrets. -`npm run verify:cms` checks the fixed Gitea branch/backend, all four Decap -collection contracts, the text-first raster-media boundary, the pinned admin +`npm run verify:cms` checks the fixed Gitea branch/backend, the four Markdown +content contracts, the fixed page-image record, the bounded raster-media boundary, the pinned admin shell, and the stable secret-free pull-request status context. The live steps remain unapplied; see the [Gitea pilot settings](docs/decap-cms-gitea-setup.md) for the exact review checklist. diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 8d42ba9..85b140d 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -64,12 +64,16 @@ the pilot: value rather than a floating release range. - The backend is fixed to `SloanOps/3031023-xyz` and `cms-pilot` and contains only the public client ID for the non-confidential Gitea PKCE application. -- All four Markdown collections and every persisted frontmatter field are - modeled with the current Astro/Zod bounds. Markdown controls are text-first; - image embedding and general file widgets are absent. -- The team image field accepts an existing approved raster path or a bounded - upload. URL insertion and SVG paths are rejected. Builds additionally verify - the extension, raster signature, flat upload path, and 500 KiB limit. +- All four Markdown content collections and every persisted frontmatter field + are modeled with the current Astro/Zod bounds. Markdown controls remain + text-first; embedded images and general file widgets are absent. +- A fixed image-only Markdown record controls the primary home, About, + Services, and Contact page imagery without exposing either `site.json`. +- Team and page-image fields accept optional bounded uploads. Editors can add, + replace, or remove an image reference while retaining accessible image + descriptions and a layout fallback. URL insertion and SVG paths are + rejected. Builds additionally verify the extension, raster signature, flat + upload path, and 500 KiB limit. - `.gitea/workflows/cms-content-validation.yml` runs on every pull request into `main`, uses no secrets, and reports `CMS content validation / cms-content-validation (pull_request)` after @@ -126,9 +130,10 @@ Allow editing and creation only within these collections: | --- | --- | --- | | Primary site FAQs | `sites/www/content/faq/**` | Create, edit, draft, reorder, delete after confirmation | | Primary services | `sites/www/content/services/**` | Create, edit, draft, reorder, feature | -| Primary team | `sites/www/content/team/**` | Create, edit, draft, reorder, select an approved image | +| Primary team | `sites/www/content/team/**` | Create, edit, draft, reorder, add, replace, or remove a portrait | +| Primary page images | `sites/www/content/page-images/primary.md` | Add, replace, or remove home, About, Services, and Contact images and edit their descriptions | | Journal posts | `sites/blog/content/posts/**` | Create, edit, draft, date, tag, update | -| Shared pilot media | `public/images/uploads/**` | Upload bounded raster images after text editing is proven | +| Shared pilot media | `public/images/uploads/**` | Select or upload bounded raster images | Do not expose `sites.json`, either `site.json`, schemas, workflows, Wrangler configuration, package files, source components, scripts, contact routing, or @@ -139,6 +144,12 @@ not accept executables, archives, HTML, scripts, or SVG uploads. Asset rights, alt text, crop, dimensions, and optimization remain operator review items even when the CMS accepts an upload. +The media gallery lists only `public/images/uploads`, so the pilot seeds that +directory with the images referenced by CMS-controlled fields. Removing an +image from content clears the field and uses the page's text-only or initials +fallback; it does not delete a potentially shared asset. Delete a gallery asset +only after confirming that no content entry references it. + ## Repository protection model ### `main` @@ -256,8 +267,8 @@ not record OAuth tokens or Cloudflare credentials. | DC-06 | Create, edit, and delete a disposable journal post | Filename, dates, tags, body, draft state, and cleanup remain schema-valid. | | DC-07 | Edit a primary FAQ | Only the primary preview rebuilds and displays the change. | | DC-08 | Edit service ordering and featured state | YAML types remain correct and the primary verifier passes. | -| DC-09 | Edit a team entry without changing its image | Existing fields and image path are preserved exactly. | -| DC-10 | Upload a bounded raster image | File lands only in the approved media path and renders on the relevant preview. | +| DC-09 | Add, replace, and remove a team portrait | The selected upload renders in the team card; removal uses the initials fallback. | +| DC-10 | Upload a bounded raster image and select it in the fixed page-image record | File lands only in the approved media path and renders on the relevant primary preview page. | | DC-11 | Attempt an oversized upload and a disallowed file type | The CMS size limit rejects the oversized file before upload; Gitea's unprotected-extension patterns reject the disallowed path. | | DC-12 | Attempt to modify `.gitea/workflows/**`, source, package, script, schema, Wrangler, and site-manifest paths with the CMS account | Gitea rejects every push. | | DC-13 | Attempt to create a differently named branch and change a protected file | The fallback rule rejects the push; branch naming cannot bypass protection. | diff --git a/public/admin/config.yml b/public/admin/config.yml index 427db1a..2c17c6f 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -141,9 +141,10 @@ collections: - label: Approved raster image name: image widget: image + required: false choose_url: false allow_multiple: false - pattern: ['^/images/(?:uploads/)?[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an existing approved image or a JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] media_library: config: max_file_size: 512000 @@ -166,6 +167,93 @@ collections: buttons: [bold, italic, link, heading-two, heading-three, quote, bulleted-list, numbered-list] editor_components: [] + - name: primary_page_images + label: Primary site — Page images + description: Optional images and required accessible descriptions for the primary site's main pages. + files: + - label: Home, About, Services, and Contact + name: primary + file: sites/www/content/page-images/primary.md + fields: + - label: Home hero image + name: homeHeroImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: Home hero image description + name: homeHeroImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - label: Home story image + name: homeStoryImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: Home story image description + name: homeStoryImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - label: About hero image + name: aboutHeroImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: About hero image description + name: aboutHeroImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - label: About story image + name: aboutStoryImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: About story image description + name: aboutStoryImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - label: Services hero image + name: servicesHeroImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: Services hero image description + name: servicesHeroImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - label: Contact hero image + name: contactHeroImage + widget: image + required: false + choose_url: false + allow_multiple: false + pattern: ['^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$', 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.'] + media_library: + config: { max_file_size: 512000, multiple: false } + - label: Contact hero image description + name: contactHeroImageAlt + widget: string + pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] + - name: journal_posts label: Journal — Posts label_singular: Journal post diff --git a/public/images/uploads/david-okonkwo.jpg b/public/images/uploads/david-okonkwo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e297f88bbbb34b0a8eb2eea85ada83997a0a6fa8 GIT binary patch literal 23418 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 b3WZF2L^%5W@ct)Xvrdr!D41siW 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 literal 0 HcmV?d00001 diff --git a/public/images/uploads/happy-tails-team.jpg b/public/images/uploads/happy-tails-team.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed274568c777fda0f65051d124c129a908f2ceef GIT binary patch literal 69942 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 GtN+*I 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 HZuWlwf-E9m literal 0 HcmV?d00001 diff --git a/public/images/uploads/sarah-mitchell.jpg b/public/images/uploads/sarah-mitchell.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed22d81e4d4906aefc6bfc8f771c77f009acac26 GIT binary patch literal 25496 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%0A!tIt$#+%OnEZ|d&`-RAs{?5;@8-0Lr`*)Q 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 literal 0 HcmV?d00001 diff --git a/scripts/verify-build.mjs b/scripts/verify-build.mjs index aa03904..9cef6ae 100644 --- a/scripts/verify-build.mjs +++ b/scripts/verify-build.mjs @@ -40,6 +40,11 @@ if (key === 'www') { for (const title of ['Dog walking', 'Grooming', 'Overnight care']) if (!services.includes(title)) throw new Error(`Service Markdown entry is missing: ${title}.`); const about = await readFile(resolve(root, 'about/index.html'), 'utf8'); for (const name of ['Sarah Mitchell', 'Marcus Rivera', 'Emily Chen', 'David Okonkwo']) if (!about.includes(name)) throw new Error(`Team Markdown entry is missing: ${name}.`); + for (const image of ['/images/uploads/hero-dogs.jpg', '/images/uploads/happy-tails-team.jpg']) if (!home.includes(image)) throw new Error(`CMS-controlled homepage image is missing: ${image}.`); + for (const image of ['/images/uploads/sarah-mitchell.jpg', '/images/uploads/marcus-rivera.jpg', '/images/uploads/emily-chen.jpg', '/images/uploads/david-okonkwo.jpg']) if (!about.includes(image)) throw new Error(`CMS-controlled team image is missing: ${image}.`); + const contact = await readFile(resolve(root, 'contact/index.html'), 'utf8'); + if (!contact.includes('/images/uploads/dog-walking.jpg')) throw new Error('CMS-controlled contact image is missing.'); + if (!services.includes('/images/uploads/dog-grooming.jpg')) throw new Error('CMS-controlled services image is missing.'); } if (key === 'blog') { const publishedPosts = ['first-walk-after-work', 'gentler-grooming-day', 'overnight-care-checklist', 'weekend-care-prep']; diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index 2db55c6..7471685 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -44,6 +44,19 @@ const markdownField = { buttons: ['bold', 'italic', 'link', 'heading-two', 'heading-three', 'quote', 'bulleted-list', 'numbered-list'], editor_components: [], }; +const cmsImagePattern = [ + '^/images/uploads/[A-Za-z0-9][A-Za-z0-9._-]*\\.(?:jpe?g|png|webp|avif)$', + 'Choose an approved JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.', +]; +const optionalImageField = { + widget: 'image', + required: false, + choose_url: false, + allow_multiple: false, + pattern: cmsImagePattern, + media_library: { config: { max_file_size: 512000, multiple: false } }, +}; +const imageAltField = { widget: 'string', pattern: ['^.{8,180}$', 'Describe the image in 8–180 characters.'] }; const expectedCollections = { primary_faq: { folder: 'sites/www/content/faq', @@ -75,16 +88,7 @@ const expectedCollections = { fields: { name: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] }, role: { widget: 'string', pattern: ['^.{3,80}$', 'Use 3–80 characters.'] }, - image: { - widget: 'image', - choose_url: false, - allow_multiple: false, - pattern: [ - '^/images/(?:uploads/)?[A-Za-z0-9][A-Za-z0-9._-]*\\.(?:jpe?g|png|webp|avif)$', - 'Choose an existing approved image or a JPG, PNG, WebP, or AVIF upload. SVG and general files are not allowed.', - ], - media_library: { config: { max_file_size: 512000, multiple: false } }, - }, + image: optionalImageField, order: { widget: 'number', value_type: 'int', min: 0, max: 99, step: 1, default: 0 }, draft: { widget: 'boolean', default: false }, body: markdownField, @@ -106,8 +110,8 @@ const expectedCollections = { }; assert(Array.isArray(config.collections), 'collections must be an array.'); -assert(same(config.collections.map(({ name }) => name).sort(), Object.keys(expectedCollections).sort()), 'Decap must expose exactly the four approved collections.'); -for (const collection of config.collections) { +assert(same(config.collections.map(({ name }) => name).sort(), [...Object.keys(expectedCollections), 'primary_page_images'].sort()), 'Decap must expose the four content collections and one fixed page-image collection.'); +for (const collection of config.collections.filter(({ name }) => expectedCollections[name])) { const expected = expectedCollections[collection.name]; expectSubset(collection, { folder: expected.folder, @@ -123,14 +127,39 @@ for (const collection of config.collections) { for (const [fieldName, fieldContract] of Object.entries(expected.fields)) expectSubset(fields[fieldName], fieldContract, `${collection.name}.${fieldName}`); } +const pageImageCollection = config.collections.find(({ name }) => name === 'primary_page_images'); +assert(pageImageCollection.folder === undefined && pageImageCollection.create === undefined && pageImageCollection.delete === undefined, 'Page images must remain a fixed file collection.'); +assert(Array.isArray(pageImageCollection.files) && pageImageCollection.files.length === 1, 'Page images must expose exactly one fixed record.'); +const pageImageFile = pageImageCollection.files[0]; +expectSubset(pageImageFile, { name: 'primary', file: 'sites/www/content/page-images/primary.md' }, 'primary_page_images.primary'); +const expectedPageImageFields = { + homeHeroImage: optionalImageField, + homeHeroImageAlt: imageAltField, + homeStoryImage: optionalImageField, + homeStoryImageAlt: imageAltField, + aboutHeroImage: optionalImageField, + aboutHeroImageAlt: imageAltField, + aboutStoryImage: optionalImageField, + aboutStoryImageAlt: imageAltField, + servicesHeroImage: optionalImageField, + servicesHeroImageAlt: imageAltField, + contactHeroImage: optionalImageField, + contactHeroImageAlt: imageAltField, +}; +const pageImageFields = Object.fromEntries(pageImageFile.fields.map((field) => [field.name, field])); +assert(same(Object.keys(pageImageFields).sort(), Object.keys(expectedPageImageFields).sort()), 'Page images must expose only the six approved image and description pairs.'); +for (const [fieldName, fieldContract] of Object.entries(expectedPageImageFields)) expectSubset(pageImageFields[fieldName], fieldContract, `primary_page_images.${fieldName}`); + function visitField(field) { assert(field.widget !== 'file', `General file widget is forbidden: ${field.name}.`); if (field.fields) field.fields.forEach(visitField); if (field.field) visitField(field.field); } -config.collections.flatMap(({ fields }) => fields).forEach(visitField); -const imageFields = config.collections.flatMap(({ fields }) => fields).filter(({ widget }) => widget === 'image'); -assert(imageFields.length === 1 && imageFields[0].name === 'image', 'Only the bounded team raster-image field may expose media selection.'); +const allFields = config.collections.flatMap(({ fields, files }) => fields ?? files.flatMap((file) => file.fields)); +allFields.forEach(visitField); +const imageFields = allFields.filter(({ widget }) => widget === 'image'); +assert(imageFields.length === 7, 'Only the team image and six fixed page-image fields may expose media selection.'); +for (const field of imageFields) expectSubset(field, optionalImageField, `image field ${field.name}`); const schema = await readFile('src/content.config.ts', 'utf8'); for (const fragment of [ @@ -145,7 +174,10 @@ for (const fragment of [ 'items: z.array(z.string().min(3).max(80)).min(1).max(8)', 'name: z.string().min(3).max(80)', 'role: z.string().min(3).max(80)', - "image: z.string().startsWith('/images/')", + 'const optionalCmsImage = z.preprocess(', + 'image: optionalCmsImage', + 'homeHeroImage: optionalCmsImage', + 'contactHeroImageAlt: z.string().min(8).max(180)', 'order: z.number().int().min(0).max(99).default(0)', 'draft: z.boolean().default(false)', 'featured: z.boolean().default(false)', @@ -165,6 +197,7 @@ async function verifyContentPaths(directory) { } } for (const directory of Object.values(expectedCollections).map(({ folder }) => folder)) await verifyContentPaths(directory); +await verifyContentPaths('sites/www/content/page-images'); const admin = await readFile('public/admin/index.html', 'utf8'); assert(admin.includes('content="noindex,nofollow,noarchive"'), 'The admin shell must always carry no-index metadata.'); @@ -187,4 +220,4 @@ for (const command of ['npm run verify:cms', 'SITE_KEY=www npm run build:site', assert(workflowText.includes(command), `Validation workflow is missing: ${command}`); } -console.log('Verified Decap backend, four content contracts, text-first media boundary, admin pin, and stable PR status context.'); +console.log('Verified Decap backend, four content contracts, fixed page images, bounded media, admin pin, and stable PR status context.'); diff --git a/sites/www/content/page-images/primary.md b/sites/www/content/page-images/primary.md new file mode 100644 index 0000000..82c7b8a --- /dev/null +++ b/sites/www/content/page-images/primary.md @@ -0,0 +1,14 @@ +--- +homeHeroImage: /images/uploads/hero-dogs.jpg +homeHeroImageAlt: Two happy dogs playing outdoors +homeStoryImage: /images/uploads/happy-tails-team.jpg +homeStoryImageAlt: Happy Tails team with dogs in the park +aboutHeroImage: /images/uploads/happy-tails-team.jpg +aboutHeroImageAlt: Dogs and the Happy Tails team enjoying the park +aboutStoryImage: /images/uploads/happy-tails-team.jpg +aboutStoryImageAlt: Happy Tails team with dogs in the park +servicesHeroImage: /images/uploads/dog-grooming.jpg +servicesHeroImageAlt: A dog receiving gentle grooming care +contactHeroImage: /images/uploads/dog-walking.jpg +contactHeroImageAlt: A happy dog out for a walk +--- diff --git a/sites/www/content/team/david-okonkwo.md b/sites/www/content/team/david-okonkwo.md index b79bb0f..80d2888 100644 --- a/sites/www/content/team/david-okonkwo.md +++ b/sites/www/content/team/david-okonkwo.md @@ -1,7 +1,7 @@ --- name: David Okonkwo role: Overnight Care -image: /images/david-okonkwo.jpg +image: /images/uploads/david-okonkwo.jpg order: 40 --- diff --git a/sites/www/content/team/emily-chen.md b/sites/www/content/team/emily-chen.md index 4aa9b76..956570a 100644 --- a/sites/www/content/team/emily-chen.md +++ b/sites/www/content/team/emily-chen.md @@ -1,7 +1,7 @@ --- name: Emily Chen role: Pack Walker -image: /images/emily-chen.jpg +image: /images/uploads/emily-chen.jpg order: 30 --- diff --git a/sites/www/content/team/marcus-rivera.md b/sites/www/content/team/marcus-rivera.md index 94ad4b6..f649864 100644 --- a/sites/www/content/team/marcus-rivera.md +++ b/sites/www/content/team/marcus-rivera.md @@ -1,7 +1,7 @@ --- name: Marcus Rivera role: Lead Trainer -image: /images/marcus-rivera.jpg +image: /images/uploads/marcus-rivera.jpg order: 20 --- diff --git a/sites/www/content/team/sarah-mitchell.md b/sites/www/content/team/sarah-mitchell.md index e418090..2642c65 100644 --- a/sites/www/content/team/sarah-mitchell.md +++ b/sites/www/content/team/sarah-mitchell.md @@ -1,7 +1,7 @@ --- name: Sarah Mitchell role: Founder & Head Groomer -image: /images/sarah-mitchell.jpg +image: /images/uploads/sarah-mitchell.jpg order: 10 --- diff --git a/src/components/Hero.astro b/src/components/Hero.astro index 1b23b63..12f1ae8 100644 --- a/src/components/Hero.astro +++ b/src/components/Hero.astro @@ -1,9 +1,10 @@ --- import { site } from '../lib/site-data.js'; +const { image = site.hero.image, imageAlt = site.hero.imageAlt } = Astro.props; ---

diff --git a/src/components/PageIntro.astro b/src/components/PageIntro.astro index 050f2d1..93bc328 100644 --- a/src/components/PageIntro.astro +++ b/src/components/PageIntro.astro @@ -2,7 +2,7 @@ const { eyebrow, title, lede, image, imageAlt } = Astro.props; ---
-
+

{eyebrow}

{title}

{lede}

{image && {imageAlt}}
diff --git a/src/content.config.ts b/src/content.config.ts index aae28d5..c11e262 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,6 +1,11 @@ import { defineCollection, z } from 'astro:content'; import { glob } from 'astro/loaders'; +const optionalCmsImage = z.preprocess( + (value) => value === '' || value === null ? undefined : value, + z.string().regex(/^\/images\/uploads\/[A-Za-z0-9][A-Za-z0-9._-]*\.(?:jpe?g|png|webp|avif)$/).optional(), +); + const blog = defineCollection({ loader: glob({ base: './sites/blog/content/posts', pattern: '**/*.md' }), schema: z.object({ @@ -40,10 +45,28 @@ const team = defineCollection({ schema: z.object({ name: z.string().min(3).max(80), role: z.string().min(3).max(80), - image: z.string().startsWith('/images/'), + image: optionalCmsImage, order: z.number().int().min(0).max(99).default(0), draft: z.boolean().default(false), }), }); -export const collections = { blog, faq, services, team }; +const pageImages = defineCollection({ + loader: glob({ base: './sites/www/content/page-images', pattern: '**/*.md' }), + schema: z.object({ + homeHeroImage: optionalCmsImage, + homeHeroImageAlt: z.string().min(8).max(180), + homeStoryImage: optionalCmsImage, + homeStoryImageAlt: z.string().min(8).max(180), + aboutHeroImage: optionalCmsImage, + aboutHeroImageAlt: z.string().min(8).max(180), + aboutStoryImage: optionalCmsImage, + aboutStoryImageAlt: z.string().min(8).max(180), + servicesHeroImage: optionalCmsImage, + servicesHeroImageAlt: z.string().min(8).max(180), + contactHeroImage: optionalCmsImage, + contactHeroImageAlt: z.string().min(8).max(180), + }), +}); + +export const collections = { blog, faq, services, team, pageImages }; diff --git a/src/pages/about.astro b/src/pages/about.astro index c9dd5a5..b68bfee 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -6,5 +6,6 @@ import { isBlog, site } from '../lib/site-data.js'; if (isBlog) return Astro.redirect('/'); const team = (await getCollection('team', ({ data }) => !data.draft)).sort((a, b) => a.data.order - b.data.order); const teamCards = await Promise.all(team.map(async (member) => ({ member, Content: (await render(member)).Content }))); +const pageImages = (await getCollection('pageImages'))[0]?.data; --- -

How we work

{site.story.heading}

{site.story.copy}

Our team communicates clearly, keeps routines consistent, and makes safety a habit—not an afterthought.

{site.story.imageAlt}

Meet the team

Good people for good dogs.

{teamCards.map(({ member, Content }) =>

{member.data.role}

{member.data.name}

)}
+

How we work

{site.story.heading}

{site.story.copy}

Our team communicates clearly, keeps routines consistent, and makes safety a habit—not an afterthought.

{pageImages?.aboutStoryImage && {pageImages.aboutStoryImageAlt}}

Meet the team

Good people for good dogs.

{teamCards.map(({ member, Content }) =>
{member.data.image ? {`${member.data.name}, : }

{member.data.role}

{member.data.name}

)}
diff --git a/src/pages/contact.astro b/src/pages/contact.astro index cc93da4..db3b128 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -2,7 +2,9 @@ import BaseLayout from '../layouts/BaseLayout.astro'; import PageIntro from '../components/PageIntro.astro'; import LocationMap from '../components/LocationMap.astro'; +import { getCollection } from 'astro:content'; import { isBlog, site } from '../lib/site-data.js'; if (isBlog) return Astro.redirect('/'); +const pageImages = (await getCollection('pageImages'))[0]?.data; --- -

Happy Tails Pet Care

We would love to hear from you.

{site.contact.address}

{site.contact.phone}

{site.contact.email}

{site.contact.hours}

This form is intentionally disabled until the approved server-mapped n8n contact route is connected. It does not claim to send messages.

{site.contact.showMap &&
}
+

Happy Tails Pet Care

We would love to hear from you.

{site.contact.address}

{site.contact.phone}

{site.contact.email}

{site.contact.hours}

This form is intentionally disabled until the approved server-mapped n8n contact route is connected. It does not claim to send messages.

{site.contact.showMap &&
}
diff --git a/src/pages/index.astro b/src/pages/index.astro index fde9143..fde60a4 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -6,12 +6,15 @@ import Hero from '../components/Hero.astro'; import { isBlog, site } from '../lib/site-data.js'; const posts = isBlog ? (await getCollection('blog', ({ data }) => !data.draft)).sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()) : []; const faqs = !isBlog ? (await getCollection('faq', ({ data }) => !data.draft)).sort((a, b) => a.data.order - b.data.order) : []; +const pageImages = !isBlog ? (await getCollection('pageImages'))[0]?.data : undefined; +const heroImage = isBlog ? undefined : (pageImages?.homeHeroImage ?? null); +const heroImageAlt = isBlog ? undefined : pageImages?.homeHeroImageAlt; --- - + {isBlog ?

The journal

Small notes for happier dog days.

{posts.map((post) =>

{post.data.tags.join(' · ')}

{post.data.title}

{post.data.description}

{post.data.pubDate.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric', timeZone: 'UTC' })}
)}

This static sample now uses Markdown with validated frontmatter. Draft entries stay out of the journal and sitemap.

: <>

The Happy Tails difference

A familiar face, a thoughtful routine, a very happy dog.

We keep our pack intentionally small, so every dog gets the calm attention and consistent care they deserve.

{site.features.map((feature) =>
{feature.icon}

{feature.title}

{feature.description}

)}
-
{site.story.imageAlt}

Our story

{site.story.heading}

{site.story.copy}

Meet the team →
+
{pageImages?.homeStoryImage && {pageImages.homeStoryImageAlt}}

Our story

{site.story.heading}

{site.story.copy}

Meet the team →

Loved by local families

Five-star care, shared in their own words.

{site.reviews.map((review) =>
★★★★★

“{review.quote}”

{review.author} Google review
)}

Review cards are a presentation pattern. Before launch, display only reviews approved for reuse and preserve their source, date, rating, and attribution under the business’s Google review policy.

}
diff --git a/src/pages/services.astro b/src/pages/services.astro index ecccb7f..b4bdfb9 100644 --- a/src/pages/services.astro +++ b/src/pages/services.astro @@ -7,5 +7,6 @@ import { isBlog, site } from '../lib/site-data.js'; if (isBlog) return Astro.redirect('/'); const services = (await getCollection('services', ({ data }) => !data.draft)).sort((a, b) => a.data.order - b.data.order); const serviceCards = await Promise.all(services.map(async (service) => ({ service, Content: (await render(service)).Content }))); +const pageImages = (await getCollection('pageImages'))[0]?.data; --- -
{serviceCards.map(({ service, Content }) => )}
+
{serviceCards.map(({ service, Content }) => )}
diff --git a/src/styles/global.css b/src/styles/global.css index 4cec8d4..73d9b3b 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -20,6 +20,7 @@ nav a[aria-current='page'], nav a:hover { color: var(--ink); } .menu-button { display: none; font: inherit; font-weight: 600; color: var(--ink); background: transparent; border: 0; } .hero { padding: clamp(4rem, 9vw, 8rem) 0; overflow: hidden; background: linear-gradient(110deg, var(--surface) 0%, var(--surface) 68%, #fff 68%); } .hero-grid,.story-grid,.contact-grid { display: grid; grid-template-columns: 1.02fr .98fr; align-items: center; gap: clamp(3rem, 7vw, 8rem); } +.hero-grid--text-only,.story-grid--text-only { grid-template-columns: minmax(0, 720px); } .hero-copy { padding: 1rem 0; } .eyebrow,.tag { color: color-mix(in srgb, var(--accent), var(--ink) 25%); text-transform: uppercase; letter-spacing: .13em; font-size: .73rem; font-weight: 700; margin-bottom: 1rem; } .lede { color: #52616b; font-size: clamp(1.1rem, 2vw, 1.32rem); max-width: 48ch; } @@ -45,7 +46,9 @@ nav a[aria-current='page'], nav a:hover { color: var(--ink); } .review footer { font-weight: 700; }.review footer span { display: block; margin-top: .15rem; color: #75828c; font-size: .82rem; font-weight: 400; } .review-disclosure,.phase-note { margin: 1.8rem auto 0; color: #66747d; font-size: .86rem; max-width: 75ch; } .page-intro { padding: clamp(3rem, 5vw, 4.75rem) 0; background: var(--surface); overflow: hidden; }.page-intro-grid { display: grid; grid-template-columns: 1.2fr .8fr; align-items: center; gap: clamp(2rem, 6vw, 6rem); }.page-intro h1 { max-width: 15ch; font-size: clamp(2.75rem, 5vw, 5rem); }.page-intro .lede { max-width: 55ch; }.page-intro img { width: 100%; aspect-ratio: 1.25 / 1; object-fit: cover; border-radius: 1rem; box-shadow: 1rem 1rem 0 color-mix(in srgb, var(--accent), transparent 80%); } +.page-intro-grid--text-only { grid-template-columns: minmax(0, 820px); } .team-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }.team-card { display: grid; grid-template-columns: 120px 1fr; overflow: hidden; background: #fff; border: 1px solid #e8ecea; border-radius: .85rem; transition: transform .25s ease, box-shadow .25s ease; }.team-card:hover { transform: translateY(-.35rem); box-shadow: 0 1rem 2rem #102a4312; }.team-avatar { display: grid; place-items: center; margin: 1.2rem 0 1.2rem 1.2rem; border-radius: .6rem; color: var(--ink); background: linear-gradient(145deg, var(--surface), color-mix(in srgb, var(--accent), #fff 75%)); font-family: 'DM Serif Display', Georgia, serif; font-size: 2rem; letter-spacing: -.08em; }.team-card > div:last-child { padding: 1.5rem; } +.team-photo { width: 120px; height: 100%; min-height: 180px; object-fit: cover; } .service-card { padding: 2rem; border: 1px solid #dce4e1; border-radius: .85rem; background: #fff; transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }.service-card:hover { transform: translateY(-.35rem); border-color: color-mix(in srgb, var(--accent), #fff 65%); box-shadow: 0 1rem 2rem #102a4312; }.service-card.featured { border: 2px solid var(--accent); transform: translateY(-.5rem); }.service-card.featured:hover { transform: translateY(-.7rem); }.service-card h2 { font-size: 2.2rem; }.service-card ul { padding: 0; list-style: none; }.service-card li { padding: .4rem 0; border-top: 1px solid #e8ecea; }.service-card li::before { content: '✓'; color: var(--accent); font-weight: 700; margin-right: .55rem; } .centered { text-align: center; }.centered .lede { margin-inline: auto; } .contact-grid { align-items: start; }.contact-details { margin-top: 2rem; font-style: normal; color: #52616b; }.contact-details p { margin-bottom: .8rem; }.contact-details a { color: var(--ink); font-weight: 700; }.contact-form { display: grid; gap: 1rem; padding: 2rem; background: var(--surface); border-radius: .85rem; }.contact-form label { display: grid; gap: .4rem; font-size: .9rem; font-weight: 700; }.contact-form input,.contact-form textarea { width: 100%; padding: .8rem; font: inherit; border: 1px solid #cbd5d1; border-radius: .35rem; background: #fff; }.contact-form button:disabled { cursor: not-allowed; opacity: .6; }.contact-form p { margin-bottom: 0; color: #66747d; font-size: .85rem; } From 6fa54a23d9bdad116cafbf7a6aeb3d7a1dd267c0 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 02:01:29 -0400 Subject: [PATCH 06/10] Cache npm downloads in Gitea workflows --- .gitea/workflows/cms-content-validation.yml | 4 +++- .gitea/workflows/deploy-blog.yml | 4 +++- .gitea/workflows/deploy.yml | 4 +++- .gitea/workflows/production-blog.yml | 4 +++- .gitea/workflows/production-candidate.yml | 4 +++- docs/decap-cms-pilot.md | 3 +++ scripts/verify-decap.mjs | 11 +++++++++++ 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/cms-content-validation.yml b/.gitea/workflows/cms-content-validation.yml index 4a1dfad..d05f34f 100644 --- a/.gitea/workflows/cms-content-validation.yml +++ b/.gitea/workflows/cms-content-validation.yml @@ -20,8 +20,10 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies - run: npm ci + run: npm ci --prefer-offline --no-audit --no-fund - name: Verify Decap configuration and content boundaries run: npm run verify:cms - name: Build primary site diff --git a/.gitea/workflows/deploy-blog.yml b/.gitea/workflows/deploy-blog.yml index 8cfb55f..51c11de 100644 --- a/.gitea/workflows/deploy-blog.yml +++ b/.gitea/workflows/deploy-blog.yml @@ -33,8 +33,10 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies - run: npm ci + run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site run: npm run build:site - name: Verify selected output diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index c5d57ae..91cc1b9 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -33,8 +33,10 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies - run: npm ci + run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site run: npm run build:site - name: Verify selected output diff --git a/.gitea/workflows/production-blog.yml b/.gitea/workflows/production-blog.yml index 97df055..d015bf0 100644 --- a/.gitea/workflows/production-blog.yml +++ b/.gitea/workflows/production-blog.yml @@ -34,8 +34,10 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies - run: npm ci + run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production blog run: npm run build:site - name: Verify production blog output diff --git a/.gitea/workflows/production-candidate.yml b/.gitea/workflows/production-candidate.yml index 80db176..2a773d8 100644 --- a/.gitea/workflows/production-candidate.yml +++ b/.gitea/workflows/production-candidate.yml @@ -34,8 +34,10 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies - run: npm ci + run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production site run: npm run build:site - name: Verify production output diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 85b140d..2c86a90 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -81,6 +81,9 @@ the pilot: - The existing branch preview workflows remain in place. Local output checks now prove preview robots rules and page metadata stay no-index and that the admin response has a no-index header rule. +- Validation, preview, and production workflows cache npm's download store by + `package-lock.json` while retaining clean `npm ci` installs. Warm runner jobs + avoid repeatedly downloading the same dependency tarballs. The pilot dependencies are active: the public client ID, exact-origin CORS policy, `cms-pilot` branch, and both protection rules have been verified. diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index 7471685..d50b167 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -219,5 +219,16 @@ assert(!workflowText.includes('secrets.'), 'CMS pull-request validation must rem for (const command of ['npm run verify:cms', 'SITE_KEY=www npm run build:site', 'SITE_KEY=www npm run verify:build', 'SITE_KEY=blog npm run build:site', 'SITE_KEY=blog npm run verify:build']) { assert(workflowText.includes(command), `Validation workflow is missing: ${command}`); } +for (const path of [ + '.gitea/workflows/cms-content-validation.yml', + '.gitea/workflows/deploy.yml', + '.gitea/workflows/deploy-blog.yml', + '.gitea/workflows/production-candidate.yml', + '.gitea/workflows/production-blog.yml', +]) { + const text = await readFile(path, 'utf8'); + assert(/cache:\s*npm/.test(text) && /cache-dependency-path:\s*package-lock\.json/.test(text), `${path} must cache npm downloads by package-lock.json.`); + assert(text.includes('npm ci --prefer-offline --no-audit --no-fund'), `${path} must retain a clean lockfile install while preferring the cache.`); +} console.log('Verified Decap backend, four content contracts, fixed page images, bounded media, admin pin, and stable PR status context.'); From 052fa31d87e27dfe81fca722ba433de5642aa8fa Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 02:09:46 -0400 Subject: [PATCH 07/10] Avoid unreachable Gitea runner cache --- .gitea/workflows/cms-content-validation.yml | 2 -- .gitea/workflows/deploy-blog.yml | 2 -- .gitea/workflows/deploy.yml | 2 -- .gitea/workflows/production-blog.yml | 2 -- .gitea/workflows/production-candidate.yml | 2 -- docs/decap-cms-pilot.md | 11 ++++++++--- scripts/verify-decap.mjs | 3 +-- 7 files changed, 9 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/cms-content-validation.yml b/.gitea/workflows/cms-content-validation.yml index d05f34f..2494d61 100644 --- a/.gitea/workflows/cms-content-validation.yml +++ b/.gitea/workflows/cms-content-validation.yml @@ -20,8 +20,6 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 - cache: npm - cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Verify Decap configuration and content boundaries diff --git a/.gitea/workflows/deploy-blog.yml b/.gitea/workflows/deploy-blog.yml index 51c11de..cdfc57a 100644 --- a/.gitea/workflows/deploy-blog.yml +++ b/.gitea/workflows/deploy-blog.yml @@ -33,8 +33,6 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 - cache: npm - cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 91cc1b9..41001ae 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -33,8 +33,6 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 - cache: npm - cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site diff --git a/.gitea/workflows/production-blog.yml b/.gitea/workflows/production-blog.yml index d015bf0..2224ba8 100644 --- a/.gitea/workflows/production-blog.yml +++ b/.gitea/workflows/production-blog.yml @@ -34,8 +34,6 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 - cache: npm - cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production blog diff --git a/.gitea/workflows/production-candidate.yml b/.gitea/workflows/production-candidate.yml index 2a773d8..7334870 100644 --- a/.gitea/workflows/production-candidate.yml +++ b/.gitea/workflows/production-candidate.yml @@ -34,8 +34,6 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 - cache: npm - cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production site diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 2c86a90..c75d9c6 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -81,9 +81,14 @@ the pilot: - The existing branch preview workflows remain in place. Local output checks now prove preview robots rules and page metadata stay no-index and that the admin response has a no-index header rule. -- Validation, preview, and production workflows cache npm's download store by - `package-lock.json` while retaining clean `npm ci` installs. Warm runner jobs - avoid repeatedly downloading the same dependency tarballs. +- Validation, preview, and production workflows use clean `npm ci` installs with + `--prefer-offline --no-audit --no-fund`. Do not enable `setup-node`'s npm cache + until the Actions runner cache service is reachable from job containers. The + September 4 pilot test timed out against the runner's auto-detected private + address during both cache restore and cleanup. Give `act_runner` a fixed + `cache.host` and `cache.port` reachable from its job containers, publish that + port (or attach runner and jobs to a shared network), restart the runner, and + then restore the lockfile-keyed `cache: npm` configuration. The pilot dependencies are active: the public client ID, exact-origin CORS policy, `cms-pilot` branch, and both protection rules have been verified. diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index d50b167..349b9e6 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -227,8 +227,7 @@ for (const path of [ '.gitea/workflows/production-blog.yml', ]) { const text = await readFile(path, 'utf8'); - assert(/cache:\s*npm/.test(text) && /cache-dependency-path:\s*package-lock\.json/.test(text), `${path} must cache npm downloads by package-lock.json.`); - assert(text.includes('npm ci --prefer-offline --no-audit --no-fund'), `${path} must retain a clean lockfile install while preferring the cache.`); + assert(text.includes('npm ci --prefer-offline --no-audit --no-fund'), `${path} must retain a clean lockfile install with quiet, cache-friendly npm options.`); } console.log('Verified Decap backend, four content contracts, fixed page images, bounded media, admin pin, and stable PR status context.'); From 09a491b16b2762bd8573b3c03699159776ccfc39 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 02:50:04 -0400 Subject: [PATCH 08/10] Enable reachable Gitea npm cache --- .gitea/workflows/cms-content-validation.yml | 2 ++ .gitea/workflows/deploy-blog.yml | 2 ++ .gitea/workflows/deploy.yml | 2 ++ .gitea/workflows/production-blog.yml | 2 ++ .gitea/workflows/production-candidate.yml | 2 ++ docs/decap-cms-pilot.md | 14 ++++++-------- scripts/verify-decap.mjs | 1 + 7 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/cms-content-validation.yml b/.gitea/workflows/cms-content-validation.yml index 2494d61..d05f34f 100644 --- a/.gitea/workflows/cms-content-validation.yml +++ b/.gitea/workflows/cms-content-validation.yml @@ -20,6 +20,8 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Verify Decap configuration and content boundaries diff --git a/.gitea/workflows/deploy-blog.yml b/.gitea/workflows/deploy-blog.yml index cdfc57a..51c11de 100644 --- a/.gitea/workflows/deploy-blog.yml +++ b/.gitea/workflows/deploy-blog.yml @@ -33,6 +33,8 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 41001ae..91cc1b9 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -33,6 +33,8 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build selected site diff --git a/.gitea/workflows/production-blog.yml b/.gitea/workflows/production-blog.yml index 2224ba8..d015bf0 100644 --- a/.gitea/workflows/production-blog.yml +++ b/.gitea/workflows/production-blog.yml @@ -34,6 +34,8 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production blog diff --git a/.gitea/workflows/production-candidate.yml b/.gitea/workflows/production-candidate.yml index 7334870..2a773d8 100644 --- a/.gitea/workflows/production-candidate.yml +++ b/.gitea/workflows/production-candidate.yml @@ -34,6 +34,8 @@ jobs: uses: https://github.com/actions/setup-node@v4 with: node-version: 22 + cache: npm + cache-dependency-path: package-lock.json - name: Install locked dependencies run: npm ci --prefer-offline --no-audit --no-fund - name: Validate and build production site diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index c75d9c6..57d29d0 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -81,14 +81,12 @@ the pilot: - The existing branch preview workflows remain in place. Local output checks now prove preview robots rules and page metadata stay no-index and that the admin response has a no-index header rule. -- Validation, preview, and production workflows use clean `npm ci` installs with - `--prefer-offline --no-audit --no-fund`. Do not enable `setup-node`'s npm cache - until the Actions runner cache service is reachable from job containers. The - September 4 pilot test timed out against the runner's auto-detected private - address during both cache restore and cleanup. Give `act_runner` a fixed - `cache.host` and `cache.port` reachable from its job containers, publish that - port (or attach runner and jobs to a shared network), restart the runner, and - then restore the lockfile-keyed `cache: npm` configuration. +- Validation, preview, and production workflows cache npm's download store by + `package-lock.json` while retaining clean `npm ci` installs with + `--prefer-offline --no-audit --no-fund`. The runner advertises its cache on a + fixed host and port reachable from job containers, avoiding the timeout caused + by its former auto-detected private address. Warm jobs reuse dependency + tarballs without caching `node_modules`. The pilot dependencies are active: the public client ID, exact-origin CORS policy, `cms-pilot` branch, and both protection rules have been verified. diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index 349b9e6..fe6abe2 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -227,6 +227,7 @@ for (const path of [ '.gitea/workflows/production-blog.yml', ]) { const text = await readFile(path, 'utf8'); + assert(/cache:\s*npm/.test(text) && /cache-dependency-path:\s*package-lock\.json/.test(text), `${path} must cache npm downloads by package-lock.json.`); assert(text.includes('npm ci --prefer-offline --no-audit --no-fund'), `${path} must retain a clean lockfile install with quiet, cache-friendly npm options.`); } From 4104b921f2d0766e068d5a417dd9c31e6138ece6 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 03:38:49 -0400 Subject: [PATCH 09/10] Promote Decap staging branch to cms --- docs/decap-cms-gitea-setup.md | 30 ++++++++++----------- docs/decap-cms-pilot.md | 50 ++++++++++++++++++----------------- public/admin/config.yml | 6 ++--- scripts/verify-decap.mjs | 4 +-- 4 files changed, 46 insertions(+), 44 deletions(-) diff --git a/docs/decap-cms-gitea-setup.md b/docs/decap-cms-gitea-setup.md index d201e0d..398d84b 100644 --- a/docs/decap-cms-gitea-setup.md +++ b/docs/decap-cms-gitea-setup.md @@ -1,23 +1,23 @@ -# Decap CMS pilot: Gitea settings +# Decap CMS: Gitea settings -Status: applied to the preview-only pilot on 2026-09-04. The stable preview, -narrow CORS policy, public PKCE OAuth application, and both branch-protection -rules are active. Nothing has been merged to `main`. +Status: the preview-only pilot was accepted for promotion on 2026-09-04. The +repository now targets the permanent `cms` staging branch. Update the exact +CORS origin and PKCE OAuth redirect only after its first preview deployment +confirms the predicted alias. Nothing has been merged to `main`. The repository implementation targets these fixed public values: | Setting | Value | | --- | --- | | Gitea repository | `SloanOps/3031023-xyz` | -| Decap write branch | `cms-pilot` | -| Planned live write branch | `cms` | +| Decap write branch | `cms` | | Gitea base URL | `https://git.sloanops.com` | | Gitea API root | `https://git.sloanops.com/api/v1` | -| Stable CMS origin | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev` | -| Exact OAuth redirect URI | `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` | +| Stable CMS origin | `https://cms-3031023-xyz-www.ksloan90.workers.dev` | +| Exact OAuth redirect URI | `https://cms-3031023-xyz-www.ksloan90.workers.dev/admin/` | | Required status context | `CMS content validation / cms-content-validation (pull_request)` | -The pilot and planned live branch names are intentionally slash-free. Decap +The pilot and permanent branch names are intentionally slash-free. Decap CMS 3.15.1 inserts the configured Gitea branch directly into its tree-API URL; a slash-named branch such as `cms/pilot` is split as an API path and its 404 is presented as an empty collection. The permanent `cms` branch is still a @@ -38,7 +38,7 @@ through the normal infrastructure change process: ```yaml - GITEA__cors__ENABLED=true -- GITEA__cors__ALLOW_DOMAIN=https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev +- GITEA__cors__ALLOW_DOMAIN=https://cms-3031023-xyz-www.ksloan90.workers.dev - GITEA__cors__METHODS=GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS - GITEA__cors__MAX_AGE=10m - GITEA__cors__ALLOW_CREDENTIALS=false @@ -56,7 +56,7 @@ token or cookie: ```bash curl --request OPTIONS 'https://git.sloanops.com/api/v1/version' \ - --header 'Origin: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev' \ + --header 'Origin: https://cms-3031023-xyz-www.ksloan90.workers.dev' \ --header 'Access-Control-Request-Method: GET' \ --header 'Access-Control-Request-Headers: authorization,content-type' ``` @@ -71,10 +71,10 @@ behavior before continuing. The Gitea OAuth2 application was created after the stable preview origin and CORS response were verified: -- Application name: `3031023.xyz Decap CMS pilot`. +- Application name: `3031023.xyz Decap CMS`. - Confidential client: **unchecked**. The browser client must use PKCE. - Redirect URI: exactly - `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/`, including the + `https://cms-3031023-xyz-www.ksloan90.workers.dev/admin/`, including the trailing slash. - Do not add wildcards, localhost, either production hostname, or the journal preview as additional redirects. @@ -148,7 +148,7 @@ directly into the flat uploads directory, and the local verifier rejects nested media paths. Gitea file patterns are case-insensitive; CI verifies actual file signatures and the 500 KiB limit before a preview can upload. -Everything not listed is protected from CMS/client pushes on `cms-pilot` and +Everything not listed is protected from CMS/client pushes on `cms` and on every differently named branch, including: ```text @@ -177,7 +177,7 @@ altered by choosing another branch name. ## Verification before an editor invitation 1. Run `npm ci`, `npm run verify:cms`, and both site build/verifier pairs. -2. Create `cms-pilot` from the reviewed baseline only after approval. +2. Create `cms` from the reviewed baseline only after approval. 3. Apply both protection rules together and confirm `main` is priority 1 and `*` is priority 2. 4. Use the same non-operator account intended for Decap to prove allowed diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index 57d29d0..d84f2ba 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -1,8 +1,9 @@ -# Decap CMS Gitea pilot +# Decap CMS Gitea pilot and promotion -Status: preview-only pilot infrastructure is active on `cms-pilot`: the stable -preview, narrow Gitea CORS policy, public PKCE OAuth application, and two -repository protection rules are configured. Nothing has been merged to +Status: the preview-only pilot was accepted for promotion to the permanent +`cms` staging branch on 2026-09-04. Repository configuration now targets the +predicted stable `cms` preview origin. CORS and OAuth must be changed together +only after that first preview confirms the alias. Nothing has been merged to `main`, and production remains unchanged. Updated: 2026-09-04 @@ -55,14 +56,14 @@ recorded in [Decap CMS pilot: Gitea settings](decap-cms-gitea-setup.md). ## Repository implementation -The `review/decap-cms-pilot` branch now contains the repository-side portion of -the pilot: +The reviewed pilot implementation is the baseline for the permanent `cms` +staging branch: - `public/admin/` provides a permanently no-index admin shell and one shared configuration for both site builds. - The shell pins Decap CMS `3.15.1` by exact URL and verified SHA-384 integrity value rather than a floating release range. -- The backend is fixed to `SloanOps/3031023-xyz` and `cms-pilot` and contains +- The backend is fixed to `SloanOps/3031023-xyz` and `cms` and contains only the public client ID for the non-confidential Gitea PKCE application. - All four Markdown content collections and every persisted frontmatter field are modeled with the current Astro/Zod bounds. Markdown controls remain @@ -88,8 +89,9 @@ the pilot: by its former auto-detected private address. Warm jobs reuse dependency tarballs without caching `node_modules`. -The pilot dependencies are active: the public client ID, exact-origin CORS -policy, `cms-pilot` branch, and both protection rules have been verified. +The pilot dependencies were verified on `cms-pilot`. The same protection rules +apply to `cms`; its exact-origin CORS and OAuth values are the remaining +operator-controlled promotion step. ## Proposed pilot architecture @@ -98,7 +100,7 @@ Decap at /admin/ | | Gitea PKCE OAuth and content/media commits only v -cms-pilot branch +cms branch | +--> primary no-index Worker preview | @@ -119,11 +121,11 @@ is acceptable because both sites belong to the same root-domain repository and the same owner. One Decap configuration exposes clearly labeled Primary Site and Journal collection groups. -Preview URLs for branch `cms-pilot`: +Predicted preview URLs for branch `cms`: -- `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/admin/` -- `https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev/` -- `https://cms-pilot-3031023-xyz-blog.ksloan90.workers.dev/` +- `https://cms-3031023-xyz-www.ksloan90.workers.dev/admin/` +- `https://cms-3031023-xyz-www.ksloan90.workers.dev/` +- `https://cms-3031023-xyz-blog.ksloan90.workers.dev/` Confirm the aliases from the successful Gitea Actions run rather than treating these predicted URLs as authoritative. @@ -229,13 +231,13 @@ Preview deployment remains branch-specific and may use the existing Worker workflows. Cloudflare credentials stay scoped to the deployment step; content validation does not need them. -Because Decap writes to a fixed `cms-pilot` branch, SloanOps creates the pull +Because Decap writes to a fixed `cms` branch, SloanOps creates the pull request in Gitea. After an approved merge, synchronize the CMS branch with `main` before the next editing cycle. Do not automate production merge. -If the pilot is accepted, replace the disposable branch with a permanent, -slash-free `cms` branch. It remains a preview/staging branch and retains the -same pull-request, validation, and approval path into `main`. +The accepted pilot is promoted by replacing the disposable branch with the +permanent, slash-free `cms` branch. It remains a preview/staging branch and +retains the same pull-request, validation, and approval path into `main`. ## Gitea and Decap setup @@ -244,11 +246,11 @@ same pull-request, validation, and approval path into `main`. 2. Enable Gitea API CORS for the exact approved preview origin or origins. Allow only required methods and headers, including `Authorization` and `Content-Type`; do not use a wildcard origin. -3. Create `cms-pilot` from the reviewed repository baseline. +3. Create `cms` from the reviewed repository baseline. 4. Review the pinned Decap admin assets beneath `public/admin/`. Do not replace the exact version and integrity value with a floating range. 5. Configure the Gitea backend for `SloanOps/3031023-xyz` and branch - `cms-pilot`. + `cms`. 6. Model every persisted frontmatter field with limits matching `src/content.config.ts`. Do not let a CMS save silently remove an existing field. @@ -269,7 +271,7 @@ not record OAuth tokens or Cloudflare credentials. | DC-02 | Open each preview `/admin/` route | Admin shell loads and remains no-index. | | DC-03 | Authenticate with the approved operator account | PKCE login succeeds and the configured collections load. | | DC-04 | Authenticate with an account without repository write access | Repository editing is unavailable. | -| DC-05 | Edit an existing draft journal post | One content-only commit lands on `cms-pilot`; the blog preview rebuilds. | +| DC-05 | Edit an existing draft journal post | One content-only commit lands on `cms`; the blog preview rebuilds. | | DC-06 | Create, edit, and delete a disposable journal post | Filename, dates, tags, body, draft state, and cleanup remain schema-valid. | | DC-07 | Edit a primary FAQ | Only the primary preview rebuilds and displays the change. | | DC-08 | Edit service ordering and featured state | YAML types remain correct and the primary verifier passes. | @@ -279,10 +281,10 @@ not record OAuth tokens or Cloudflare credentials. | DC-12 | Attempt to modify `.gitea/workflows/**`, source, package, script, schema, Wrangler, and site-manifest paths with the CMS account | Gitea rejects every push. | | DC-13 | Attempt to create a differently named branch and change a protected file | The fallback rule rejects the push; branch naming cannot bypass protection. | | DC-14 | Attempt a direct push to `main` | Gitea rejects it. | -| DC-15 | Open a pull request from `cms-pilot` to `main` | Both sites validate; required review and merge controls are present. | +| DC-15 | Open a pull request from `cms` to `main` | Both sites validate; required review and merge controls are present. | | DC-16 | Attempt to merge without status or approval | Gitea blocks the merge. | | DC-17 | Inspect both preview responses | Expected routes work; preview metadata/headers prevent indexing; production remains unchanged. | -| DC-18 | Revert the disposable CMS changes on `cms-pilot` | Preview returns to baseline without changing either public site. | +| DC-18 | Revert disposable CMS changes on `cms` | Preview returns to baseline without changing either public site. | | DC-19 | Refresh, sign out, reauthenticate, and let a session expire | Session behavior is understandable and no unsaved-content loss is observed. | | DC-20 | Review commit attribution and audit history | Gitea identifies the editor and the exact content/media changes. | @@ -312,7 +314,7 @@ account control over executable deployment files. If the pilot is rejected or paused: -1. Revert or delete disposable changes on `cms-pilot`. +1. Revert or delete disposable changes on `cms`. 2. Delete the two disposable preview aliases/versions if desired; do not delete production Workers or retained legacy rollback resources. 3. Revoke/delete the Decap OAuth application. diff --git a/public/admin/config.yml b/public/admin/config.yml index 2c17c6f..e0c4af4 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -1,15 +1,15 @@ backend: name: gitea repo: SloanOps/3031023-xyz - branch: cms-pilot + branch: cms app_id: c07dba05-eb09-48f0-8da4-6df775a13995 api_root: https://git.sloanops.com/api/v1 base_url: https://git.sloanops.com auth_endpoint: https://git.sloanops.com/login/oauth/authorize publish_mode: simple -site_url: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev -display_url: https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev +site_url: https://cms-3031023-xyz-www.ksloan90.workers.dev +display_url: https://cms-3031023-xyz-www.ksloan90.workers.dev show_preview_links: false media_folder: public/images/uploads diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index fe6abe2..c8f6139 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -17,11 +17,11 @@ function expectSubset(actual, expected, path) { const configPath = 'public/admin/config.yml'; const config = yaml.load(await readFile(configPath, 'utf8')); -const expectedOrigin = 'https://cms-pilot-3031023-xyz-www.ksloan90.workers.dev'; +const expectedOrigin = 'https://cms-3031023-xyz-www.ksloan90.workers.dev'; const expectedBackend = { name: 'gitea', repo: 'SloanOps/3031023-xyz', - branch: 'cms-pilot', + branch: 'cms', api_root: 'https://git.sloanops.com/api/v1', base_url: 'https://git.sloanops.com', auth_endpoint: 'https://git.sloanops.com/login/oauth/authorize', From 485cb08b7191ad3a200d997e07638c2a0085a394 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 03:43:31 -0400 Subject: [PATCH 10/10] Pin cached Gitea workflow actions --- .gitea/workflows/cms-content-validation.yml | 4 ++-- .gitea/workflows/deploy-blog.yml | 4 ++-- .gitea/workflows/deploy.yml | 4 ++-- .gitea/workflows/production-blog.yml | 4 ++-- .gitea/workflows/production-candidate.yml | 4 ++-- docs/decap-cms-gitea-setup.md | 21 +++++++++++++++++++++ docs/decap-cms-pilot.md | 4 ++++ scripts/verify-decap.mjs | 2 ++ 8 files changed, 37 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/cms-content-validation.yml b/.gitea/workflows/cms-content-validation.yml index d05f34f..0c785f3 100644 --- a/.gitea/workflows/cms-content-validation.yml +++ b/.gitea/workflows/cms-content-validation.yml @@ -15,9 +15,9 @@ jobs: ASTRO_TELEMETRY_DISABLED: '1' steps: - name: Checkout source - uses: https://github.com/actions/checkout@v4 + uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - name: Use Node 22 - uses: https://github.com/actions/setup-node@v4 + uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm diff --git a/.gitea/workflows/deploy-blog.yml b/.gitea/workflows/deploy-blog.yml index 51c11de..4cd75a0 100644 --- a/.gitea/workflows/deploy-blog.yml +++ b/.gitea/workflows/deploy-blog.yml @@ -28,9 +28,9 @@ jobs: ASTRO_TELEMETRY_DISABLED: '1' steps: - name: Checkout source - uses: https://github.com/actions/checkout@v4 + uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - name: Use Node 22 - uses: https://github.com/actions/setup-node@v4 + uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 91cc1b9..cbbaa0b 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -28,9 +28,9 @@ jobs: ASTRO_TELEMETRY_DISABLED: '1' steps: - name: Checkout source - uses: https://github.com/actions/checkout@v4 + uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - name: Use Node 22 - uses: https://github.com/actions/setup-node@v4 + uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm diff --git a/.gitea/workflows/production-blog.yml b/.gitea/workflows/production-blog.yml index d015bf0..20ff24e 100644 --- a/.gitea/workflows/production-blog.yml +++ b/.gitea/workflows/production-blog.yml @@ -29,9 +29,9 @@ jobs: ASTRO_TELEMETRY_DISABLED: '1' steps: - name: Checkout source - uses: https://github.com/actions/checkout@v4 + uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - name: Use Node 22 - uses: https://github.com/actions/setup-node@v4 + uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm diff --git a/.gitea/workflows/production-candidate.yml b/.gitea/workflows/production-candidate.yml index 2a773d8..7778ee9 100644 --- a/.gitea/workflows/production-candidate.yml +++ b/.gitea/workflows/production-candidate.yml @@ -29,9 +29,9 @@ jobs: ASTRO_TELEMETRY_DISABLED: '1' steps: - name: Checkout source - uses: https://github.com/actions/checkout@v4 + uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - name: Use Node 22 - uses: https://github.com/actions/setup-node@v4 + uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22 cache: npm diff --git a/docs/decap-cms-gitea-setup.md b/docs/decap-cms-gitea-setup.md index 398d84b..1726bf2 100644 --- a/docs/decap-cms-gitea-setup.md +++ b/docs/decap-cms-gitea-setup.md @@ -29,6 +29,27 @@ If Cloudflare later assigns a different stable origin, update the repository configuration, CORS origin, and OAuth redirect URI together through review before enabling login. +## Runner cache settings + +The Dockerized runner uses a persistent `/data` volume and the same dedicated +Docker network as its job containers. Its non-confidential cache settings are: + +```yaml +cache: + enabled: true + dir: /data/cache + host: sloanops-gitea-runner + port: 8088 + offline_mode: true +container: + network: sloanops-actions +``` + +`offline_mode` is safe here because every external `uses:` reference is pinned +to a reviewed full commit SHA. It prevents the runner from refreshing mutable +action branches on every job; npm packages remain keyed separately by +`package-lock.json` through setup-node's cache integration. + ## Applied CORS policy The tracked Gitea service in diff --git a/docs/decap-cms-pilot.md b/docs/decap-cms-pilot.md index d84f2ba..d726b9f 100644 --- a/docs/decap-cms-pilot.md +++ b/docs/decap-cms-pilot.md @@ -88,6 +88,10 @@ staging branch: fixed host and port reachable from job containers, avoiding the timeout caused by its former auto-detected private address. Warm jobs reuse dependency tarballs without caching `node_modules`. +- All external workflow actions are pinned to reviewed commit SHAs. The runner + may therefore set `cache.offline_mode: true` and reuse its local action + repository cache without trusting a mutable tag or refreshing GitHub on every + job. The pilot dependencies were verified on `cms-pilot`. The same protection rules apply to `cms`; its exact-origin CORS and OAuth values are the remaining diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index c8f6139..b7681b2 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -227,6 +227,8 @@ for (const path of [ '.gitea/workflows/production-blog.yml', ]) { const text = await readFile(path, 'utf8'); + assert(text.includes('uses: https://github.com/actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4'), `${path} must pin checkout v4 to its reviewed commit.`); + assert(text.includes('uses: https://github.com/actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4'), `${path} must pin setup-node v4 to its reviewed commit.`); assert(/cache:\s*npm/.test(text) && /cache-dependency-path:\s*package-lock\.json/.test(text), `${path} must cache npm downloads by package-lock.json.`); assert(text.includes('npm ci --prefer-offline --no-audit --no-fund'), `${path} must retain a clean lockfile install with quiet, cache-friendly npm options.`); }
-
+
-
{site.hero.imageAlt}
Kind care. Every day.
+ {image &&
{imageAlt}
Kind care. Every day.
}