This commit is contained in:
DealSage template sync
2026-09-25 17:56:38 +00:00
commit 36aeaf65c3
13 changed files with 804 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# Platform check "conventions": the repo still has the shape the platform relies
# on. Hard failures exit 1 (the check fails); soft findings print a warning and
# pass. Runs from the repo root. Kept dependency-free (bash + jq).
set -uo pipefail
fail=0
problem() { printf 'FAIL %s\n' "$*"; fail=1; }
note() { printf 'warn %s\n' "$*"; }
ok() { printf 'ok %s\n' "$*"; }
# 1. Manifest present and shaped (manifest.sh already validated the checks list).
if [ -f .dealsage/app.json ] && jq -e '.appId | test("^[0-9a-f-]{36}$")' .dealsage/app.json >/dev/null 2>&1; then
ok ".dealsage/app.json has an appId"
else
problem ".dealsage/app.json is missing or has no appId"
fi
if jq -e 'keys - ["appId","checks","dependencies"] | length == 0' .dealsage/app.json >/dev/null 2>&1; then
ok "manifest has only known keys"
else
problem "manifest has unknown top-level keys: $(jq -c 'keys - ["appId","checks","dependencies"]' .dealsage/app.json 2>/dev/null)"
fi
# 2. The workflow is the platform stub, so pipeline changes reach this repo.
wf=.gitea/workflows/publish.yml
if [ -f "$wf" ]; then
if grep -qE 'ci-actions/pipeline@' "$wf"; then
ok "workflow delegates to the platform pipeline"
else
note "workflow does not call ci-actions/pipeline; this repo will not receive pipeline updates"
fi
else
problem "$wf is missing"
fi
# 3. Build contract.
if jq -e '.scripts.build' package.json >/dev/null 2>&1; then ok "package.json has a build script"; else problem "package.json has no build script"; fi
# 4. Platform files the shell and the builder depend on.
for f in src/lib/dealsage.ts src/Root.tsx src/main.tsx; do
[ -f "$f" ] && ok "$f present" || problem "$f is missing (platform-owned file)"
done
# 5. Guidance for agents. Soft: older apps predate it.
[ -f AGENTS.md ] && ok "AGENTS.md present" || note "AGENTS.md missing; coding agents get no project guidance"
if [ -f AGENTS.md ] && ! grep -q 'dealsage:generated:start' AGENTS.md; then
note "AGENTS.md has no generated block markers; the builder will not preserve hand-written sections"
fi
# 6. Nothing secret committed.
for f in .env .env.local .env.production; do
[ -f "$f" ] && problem "$f is committed; the pipeline bakes the Supabase connection from org variables instead"
done
exit $fail