Commit Graph

5 Commits

Author SHA1 Message Date
Jakub Zych
9b3803c098 feat(sunrise): update an application in place with summercms.io/update
- new.sh gains --update, run inside one application directory (go.mod and
  summer.yaml required); it changes only that application
- the framework checkout is read from the app's go.mod replace (single-line
  or block form); module-version replaces, missing targets and foreign or
  dirty checkouts are refused through the shared check_framework_dir
- a detached checkout moves fast-forward only to the newest release (or
  SUMMERCMS_REF) through the shared move_detached; a branch checkout is
  pulled with git pull --no-rebase --ff-only, refusing a missing upstream
  or a diverged branch with the checkout unchanged
- other sm-*-app directories on the same checkout are named on one
  "not rebuilt" line and never built or written
- summer is reinstalled, a missing SUMMER_ADMIN__JWT__SECRET is appended to
  this app's .env (openssl, else head and base64; mode kept, never printed),
  then summer build runs and the script ends with the migrate and restart
  reminder and the shared path_hint
- sunrise.UpdateScript() serves the same script with its last line changed
  to main "$@" --update, so truncated downloads still run nothing
- check-phase14.3.sh --forbidden now allows only the literal
  SUMMER_ADMIN__JWT__SECRET in new.sh and still fails on any other
  SUMMER_ name or on a read or export of one; TestUpdateScript and
  TestUpdateScriptRoute are required tests
2026-10-08 20:15:50 +02:00
Jakub Zych
c4c91f0f6b chore(14.3-04): keep the gate marker line unique in check-phase14.3.sh 2026-10-08 12:30:11 +02:00
Jakub Zych
89f1ab2c44 chore(14.3-04): fail-closed phase 14.3 gate with --unit, --security and --all
- --unit: vet, full suite with named --- PASS lines for every required test,
  goldens unchanged, examples/hello, docs check, site plugin/app, landing page
- --forbidden: no SUMMER_ name in new.sh, no new go.mod require since v0.1.12,
  no plugin/yaegi dependency, relative golden paths, goldens not ignored
- --bootstrap and --terminal run the gated end-to-end checks
- --security parses the threat register; --all runs every stage in its own process
2026-10-08 12:25:24 +02:00
Jakub Zych
612d0c6dcb chore(14.3-02): add the D-20 container acceptance stages to the phase 14.3 gate
- --acceptance: in a bare node:24-bookworm container install jq, the Docker
  CLI and compose plugin (Docker apt repo) and Go 1.27.0 (sha256 from go.dev),
  pipe the committed new.sh into bash with SUMMERCMS_REPO=/fw and
  SUMMERCMS_REF=HEAD, then run the D-20 chain and require the starter route
- refuses when modules/sunrise/new.sh differs from HEAD; unique compose
  project with host-side cleanup of containers, volumes and networks
- --acceptance-production: same chain against https://summercms.io/new
2026-10-08 11:55:27 +02:00
Jakub Zych
6695ab422a chore(14.3-01): add the phase 14.3 generator gate
- scripts/check-phase14.3.sh --generator runs summer new next to a
  symlinked checkout with no git identity, checks the layout and first
  commit, then docker compose up, summer build, migrate and serve, and
  requires the starter route to answer

Claude-Session: https://claude.ai/code/session_01M8Qu9LgCKYy7iYEho52tW8
2026-10-08 11:44:44 +02:00