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