Files
summercms/.planning/phases/11.2-ready-to-share-summercms-io-website-and-newsletter-plugin/11.2-VALIDATION.md

5.5 KiB

phase, slug, status, nyquist_compliant, wave_0_complete, created
phase slug status nyquist_compliant wave_0_complete created
11.2 ready-to-share-summercms-io-website-and-newsletter-plugin draft false false 2026-10-01

Phase 11.2 — Validation Strategy

Per-phase validation contract for feedback sampling during execution. Source: 11.2-RESEARCH.md § Validation Architecture.


Test Infrastructure

Property Value
Framework Go testing (stdlib, httptest, testing/fstest) in summercms.go, sm-summercmsio-plugin and sm-summercmsio-app; node:test in vue-summercmsio-app
Config file none; vue-summercmsio-app/package.json script "test": "node --test tests/*.test.ts" (Wave 0)
Quick run command touched repo: go vet ./... && go test ./...; site: pnpm generate && pnpm test
Full suite command framework go vet ./... && go test ./...; app scripts/build.sh dev then go vet ./... && go test ./... (plugin with SUMMERCMS_REQUIRE_BUILD=1); site pnpm generate && pnpm test
Estimated runtime ~180 seconds (framework DB suites dominate)

Sampling Rate

  • After every task commit: the touched repo's go vet ./... && go test ./... (framework may use -short except on D-25/D-41 tasks); pnpm generate when Nuxt files change
  • After every plan wave: framework full go test ./...; scripts/build.sh dev; plugin tests with SUMMERCMS_REQUIRE_BUILD=1; pnpm test
  • Before /gsd-verify-work: full suite green, plus SUMMERCMS_TERMINAL_CHECK=1 with a local clone override, scripts/smoke.sh on postgres:15, nginx -t of the shipped config
  • Max feedback latency: 180 seconds

Per-Task Verification Map

Filled from the PLAN.md files once written. Requirement → check map:

Req Behavior Test Type Automated Command File Exists Status
SC1 generate succeeds; section ids, en.json copy, self-hosted fonts, robots + flat sitemap, absolute og:image, six commands output assertion pnpm generate && node --test tests/output.test.ts ❌ W0 ⬜ pending
SC1 scroll-spy selection; copy payload = six lines unit (TS) node --test tests/scrollSpy.test.ts tests/terminal.test.ts ❌ W0 ⬜ pending
SC2 status, content type and cache headers for /, /_nuxt, /_fonts, /docs, 404s, ETag/304, traversal unit go test ./... -run TestStatic (plugin) ❌ W0 ⬜ pending
SC2 plugin routes assemble without conflict; no admin routes unit go test ./... -run TestRoutesAssemble (plugin) ❌ W0 ⬜ pending
SC2 binary boots on PG15 and serves both trees integration smoke scripts/smoke.sh (app) ❌ W0 ⬜ pending
SC3 every href in the built index.html resolves integration SUMMERCMS_REQUIRE_BUILD=1 go test ./... -run TestLandingLinks (plugin) ❌ W0 ⬜ pending
SC3 external links 200 anonymously network, at cutover SUMMERCMS_CHECK_EXTERNAL=1 go test ./... -run TestExternalLinks ❌ W0 ⬜ pending
SC4 terminal commands run verbatim scripted e2e SUMMERCMS_TERMINAL_CHECK=1 go test -run TestTerminalCommands . (app) ❌ W0 ⬜ pending
SC4 linux/amd64 binary with both trees embedded scripted scripts/build.sh dev && file bin/summercms-io ❌ W0 ⬜ pending
SC4 nginx config syntactically valid scripted nginx -t -p $TMP -c $TMP/nginx.conf ❌ W0 ⬜ pending
D-25 DB suites green on PG 15 scripted throwaway export + sed + go test (RESEARCH § PostgreSQL 15) ✅ ⬜ pending
D-41 site_url parsed; header link only when set; unset output unchanged unit go test ./internal/docsite -run 'TestParseSite|TestSiteURL' && go test ./cmd/summer -run TestDocsTree partial ⬜ pending
SC5 coverage of new Go code unit go test -cover ./... (plugin, app) ❌ W0 ⬜ pending

Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky


Wave 0 Requirements

  • vue-summercmsio-app/tests/{output,scrollSpy,terminal}.test.ts and the "test" script
  • sm-summercmsio-plugin static_test.go, routes_test.go, links_test.go with fstest.MapFS fixtures
  • sm-summercmsio-app terminal_check_test.go, scripts/smoke.sh, optional scripts/check-nginx.sh
  • framework: extend internal/docsite/load_test.go and theme_test.go for site_url

Manual-Only Verifications

Behavior Requirement Why Manual Test Instructions
Visual fidelity at 1280/721/720/375px, sticky header, Copy → "Copied" 1.5s, nav hidden ≤720px SC1 pixel and interaction fidelity against the handoff open the generated site next to design/SummerCMS Landing.dc.html at each width
Clean-server bring-up on rome SC4 server not reachable from the dev machine follow DEPLOY.md end to end; human checkpoint
Source link anonymous access SC3 / D-38 repo must be made public by the user first run TestExternalLinks at cutover

Validation Sign-Off

  • All tasks have <automated> verify or Wave 0 dependencies
  • Sampling continuity: no 3 consecutive tasks without automated verify
  • Wave 0 covers all MISSING references
  • No watch-mode flags
  • Feedback latency < 180s
  • nyquist_compliant: true set in frontmatter

Approval: pending