diff --git a/docs/project/readable-codebase/PLAN.md b/docs/project/readable-codebase/PLAN.md index 5cf650a..ac7373f 100644 --- a/docs/project/readable-codebase/PLAN.md +++ b/docs/project/readable-codebase/PLAN.md @@ -859,6 +859,16 @@ Measured against the current tree, not assumed: files, so the folder=layer move is mechanical, not a taxonomy debate. The two: `async.component.ts` has no tag at all, and `breadcrumb.component.ts` says `/** Chrome: */`. +**A live CI-gate defect, found while executing RD-06 (now fixed).** +`scripts/ci-local.sh` gated its storybook + axe steps on `[[ "${1:-}" == "--full" ]]`, but +CLAUDE.md documents `npm run ci --full` — and npm parses that flag itself, exporting +`npm_config_full=true` instead of passing `--full` through as `$1`. Proven with +`npm run env --full`. So the documented command **skipped both steps and still printed +"local CI passed"**: a gate reporting success without running. The script now accepts either +form, which makes every existing doc correct rather than requiring them all to change. This +matters directly for RD-27, whose highest risk is a broken `.mdx` story import that **only** +`build-storybook` catches. + And four corrections to claims made **earlier in this same investigation**, caught by reading the consumers and the rule semantics rather than the definitions: diff --git a/scripts/ci-local.sh b/scripts/ci-local.sh index d80e2ac..a807376 100755 --- a/scripts/ci-local.sh +++ b/scripts/ci-local.sh @@ -34,7 +34,11 @@ step "showcase snippets drift"; npm run gen:snippets; git diff --exit-code app step "behaviour spec drift"; npm run gen:behaviour-spec; git diff --exit-code libs/shared/docs/behaviour-spec.mdx step "api-client drift"; npm run gen:api; git diff --exit-code libs/shared/src/infrastructure/api-client.ts backend/swagger.json -if [[ "${1:-}" == "--full" ]]; then +# Accept both `npm run ci -- --full` (arrives as $1) and `npm run ci --full` (npm parses the +# flag itself and exports npm_config_full=true instead of passing it through). CLAUDE.md +# documents the second form, which used to skip these two steps silently and still print +# "local CI passed" — a gate that reported success without running. +if [[ "${1:-}" == "--full" || "${npm_config_full:-}" == "true" ]]; then step "storybook build + axe (ssp)"; npm run build-storybook; npm run test-storybook:ci step "storybook build + axe (behandelportal)"; npm run build-storybook:behandelportal; npm run test-storybook:ci:behandelportal fi