docs(test): generated living behaviour spec + FE/BE seam drift check (WP-71)

Gherkin/Cucumber was considered and rejected for business-readable BDD
scenarios: step-binding by runtime string match undoes the compile-time
guarantees WP-70 just added, and needs two frameworks for .NET+TS with
no non-technical co-author in view. Instead scripts/gen-behaviour-spec.mjs
(modeled on the existing gen-snippets.mjs) extracts every describe/it
and [Fact]/[Theory] name straight from the real suites into
libs/shared/docs/behaviour-spec.mdx, gated for drift in CI exactly like
gen-snippets/gen-api — the page can never diverge from the tests because
it's generated from them, and test names stay the single source of truth.

scripts/check-seam.sh guards the one FE/BE rule duplication most likely
to silently diverge: IntakePolicy.cs's ScholingThreshold vs
intake.machine.ts's SCHOLING_THRESHOLD_DEFAULT, two unlinked literals
pinned separately in each side's own tests but never against each other.

package.json/CI wiring for both (gen:behaviour-spec, check:seam) shipped
in the prior commit alongside the typecheck gate, since all three touch
the same few config files.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
eho
2026-08-18 20:25:17 +02:00
co-authored by Claude Sonnet 5
parent 28c0a250e7
commit 306d002221
4 changed files with 1345 additions and 0 deletions
+1
View File
@@ -11,6 +11,7 @@ package-lock.json
documentation.json
libs/shared/src/infrastructure/api-client.ts
apps/ssp/src/app/showcase/snippets.generated.ts
libs/shared/docs/behaviour-spec.mdx
# Vendored design system (CIBG Huisstijl)
public/cibg-huisstijl/