diff --git a/apps/behandelportal/src/app/auth/domain/session.spec.ts b/apps/behandelportal/src/app/auth/domain/session.spec.ts
new file mode 100644
index 0000000..c46343d
--- /dev/null
+++ b/apps/behandelportal/src/app/auth/domain/session.spec.ts
@@ -0,0 +1,14 @@
+import { describe, it, expect } from 'vitest';
+import { isAuthenticated, Session } from './session';
+
+const session: Session = { bsn: '19012345601', naam: 'Test' };
+
+describe('isAuthenticated', () => {
+ it('narrows a present session to Session', () => {
+ expect(isAuthenticated(session)).toBe(true);
+ });
+
+ it('reports no session as not authenticated', () => {
+ expect(isAuthenticated(null)).toBe(false);
+ });
+});
diff --git a/apps/ssp/src/app/auth/domain/session.spec.ts b/apps/ssp/src/app/auth/domain/session.spec.ts
new file mode 100644
index 0000000..c46343d
--- /dev/null
+++ b/apps/ssp/src/app/auth/domain/session.spec.ts
@@ -0,0 +1,14 @@
+import { describe, it, expect } from 'vitest';
+import { isAuthenticated, Session } from './session';
+
+const session: Session = { bsn: '19012345601', naam: 'Test' };
+
+describe('isAuthenticated', () => {
+ it('narrows a present session to Session', () => {
+ expect(isAuthenticated(session)).toBe(true);
+ });
+
+ it('reports no session as not authenticated', () => {
+ expect(isAuthenticated(null)).toBe(false);
+ });
+});
diff --git a/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.spec.ts b/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.spec.ts
index d3ce1a8..69b0804 100644
--- a/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.spec.ts
+++ b/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.spec.ts
@@ -10,6 +10,14 @@ import { IntakeState } from '@herregistratie/domain/intake.machine';
// wrapping is dropped, the inputs revert to bare white. The buitenland step with
// buitenlandGewerkt='ja' has two groups (the question + the land/uren follow-up), so it
// must render ≥2 fieldsets, each holding a form-group.
+//
+// SANCTIONED TestBed exception (CLAUDE.md "Testing": UI is normally exercised via Storybook,
+// not heavy component tests): this pins the *count and nesting* of rendered DOM nodes for a
+// specific machine state (2+