feat(release): the release gate refuses placeholder legal details (#119 item 9)

The manual release quality gate now runs the legal-consent test with
JYOTISHA_REQUIRE_LEGAL_ENTITY=1 right after its frontend install, so a
production release fails while legal-entity.ts holds 「待填写」 placeholders
or the terms / privacy text is still marked draft. It was a manual step in
deploy/README.md until now. Approved by the product owner 2026-11-01.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
This commit is contained in:
2026-11-01 23:24:40 +08:00
co-authored by Claude Opus 5.5
parent 618d074c94
commit 2f6d47c74e
3 changed files with 9 additions and 1 deletions
@@ -97,6 +97,8 @@ jobs:
-r requirements.txt -r requirements-dev.txt playwright
python -m playwright install --with-deps chromium
npm ci --prefix frontend
# Production refuses placeholder operator details and draft terms / privacy text (#119 item 9).
(cd frontend && JYOTISHA_REQUIRE_LEGAL_ENTITY=1 npx tsx --test tests/legal-consent-20260930.test.tsx)
python scripts/run_quality_gate.py --profile release
python -m pytest -q --maxfail=1
python tests/run_all.py
+1 -1
View File
@@ -138,7 +138,7 @@ Before a production release, run the legal-consent test with the production flag
cd frontend && JYOTISHA_REQUIRE_LEGAL_ENTITY=1 npx tsx --test tests/legal-consent-20260930.test.tsx
```
It fails while `frontend/src/lib/legal-entity.ts` still holds placeholder operator details or the terms / privacy text is still marked draft. The workflows are not changed for this (they are product-owner territory); the step is manual until the product owner wires it in.
It fails while `frontend/src/lib/legal-entity.ts` still holds placeholder operator details or the terms / privacy text is still marked draft. Since 2026-11-01 (product owner approved, #119 item 9) the manual release gate `.gitea/workflows/release-quality-gate.yml` runs this check right after its frontend install, so a production release is refused until the details are filled in and the draft markers are removed.
## Manual production deployment with Gitea Actions
@@ -1127,6 +1127,12 @@ test("manual release gate runs where Docker Compose v2 is available", () => {
assert.match(workflow, /H relative to R is docs-only/);
assert.match(workflow, /PIP_INDEX_URL: https:\/\/mirrors\.aliyun\.com\/pypi\/simple\//);
assert.match(workflow, /NPM_CONFIG_REGISTRY: https:\/\/registry\.npmmirror\.com/);
// #119 item 9: the release gate refuses placeholder operator details and draft legal text,
// right after the frontend install and before the long checks.
assert.match(
workflow,
/npm ci --prefix frontend\n\s+# [^\n]*\n\s+\(cd frontend && JYOTISHA_REQUIRE_LEGAL_ENTITY=1 npx tsx --test tests\/legal-consent-20260930\.test\.tsx\)\n\s+python scripts\/run_quality_gate\.py --profile release/,
);
for (const dependency of [
"mcp==1.28.1",
"pydantic==2.13.4",