diff --git a/check_templatesync.go b/check_templatesync.go deleted file mode 100644 index f6bce5d..0000000 --- a/check_templatesync.go +++ /dev/null @@ -1,67 +0,0 @@ -package main - -import ( - "bytes" - "os" - "path/filepath" -) - -// The bn chrome files authored in cms/backend/templates/bn and mechanically -// synced (make sync-templates) into the sibling pluginsdk repo's templates/bn. -// Guest-side plugin templates compile pluginsdk's copy into their wasm, so the -// two checkouts must stay byte-identical. validation.go is intentionally NOT in -// this set (cms's is a two-context-key bridge over the SDK tracker); neither -// is img.templ (cms-only, not referenced by the chrome). -// See cms docs/superpowers/specs/2026-07-07-bn-chrome-single-source-design.md. -var templateSyncSet = []string{ - "head.templ", - "toolbar.templ", - "engagement.templ", - "asset_hooks.go", -} - -func init() { - register(Check{ - Seq: 310, - ID: "31", - Title: "bn chrome templates in sync between cms and pluginsdk", - Run: func(ctx *ScanContext, rep *Reporter) { - cmsDir := filepath.Join(ctx.repoRoot, "backend", "templates", "bn") - if _, err := os.Stat(cmsDir); err != nil { - rep.Skip("no backend/templates/bn in this repo — template-sync gate not applicable") - return - } - sdkDir := filepath.Join(ctx.repoRoot, "..", "pluginsdk", "templates", "bn") - if _, err := os.Stat(sdkDir); err != nil { - rep.Skip("sibling pluginsdk checkout not found — cannot verify template sync") - return - } - - var drifted []string - for _, name := range templateSyncSet { - cmsBytes, err := os.ReadFile(filepath.Join(cmsDir, name)) - if err != nil { - drifted = append(drifted, name+" (unreadable in cms: "+err.Error()+")") - continue - } - sdkBytes, err := os.ReadFile(filepath.Join(sdkDir, name)) - if err != nil { - drifted = append(drifted, name+" (missing in pluginsdk)") - continue - } - if !bytes.Equal(cmsBytes, sdkBytes) { - drifted = append(drifted, name) - } - } - - if len(drifted) > 0 { - rep.Fail("%d bn chrome file(s) drifted between cms and pluginsdk", len(drifted)) - for _, name := range drifted { - rep.Findingf("templates/bn/%s differs — cms is the authoring source; run `make sync-templates` in cms, then commit + tag + push pluginsdk", name) - } - } else { - rep.OK("bn chrome sync set byte-identical across cms and pluginsdk (%d files)", len(templateSyncSet)) - } - }, - }) -} diff --git a/registry_test.go b/registry_test.go index 3a1e863..e2ad017 100644 --- a/registry_test.go +++ b/registry_test.go @@ -18,7 +18,7 @@ func TestRegistryOrder(t *testing.T) { "1", "2", "2b", "2c", "2d", "2e", "2f", "3", "3b", "4", "5", "6", "7", "8", "9", "10", "10b", "10disc", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", - "28", "29", "30", "31", + "28", "29", "30", } ordered := make([]Check, len(registry)) diff --git a/testdata/golden/clean/expected.stdout b/testdata/golden/clean/expected.stdout index fc4d2ef..c780c9e 100644 --- a/testdata/golden/clean/expected.stdout +++ b/testdata/golden/clean/expected.stdout @@ -1,2 +1,2 @@ check-safety FIXTURE_DIR -34 checks: 20 ok 14 skip -> OK +33 checks: 20 ok 13 skip -> OK diff --git a/testdata/golden/nomod/expected.stdout b/testdata/golden/nomod/expected.stdout index a9ab573..f43a6f7 100644 --- a/testdata/golden/nomod/expected.stdout +++ b/testdata/golden/nomod/expected.stdout @@ -10,4 +10,4 @@ FAIL 15 1 err.Error() leak(s) to HTTP clients — log via slog.Error() and retur FAIL 17 1 TODO marker(s) found — ship explicit behavior, not placeholders internal/service/handler.go:14 // TODO: add proper initialisation -34 checks: 14 ok 15 skip 5 fail -> FAIL +33 checks: 14 ok 14 skip 5 fail -> FAIL