bert.hausmans
9e181092fc
docs(form-builder): WS-5c sign-off — SCHEMA v2.5 + ARCH v1.7 §8 + addendum Q3
SCHEMA v2.5:
- form_fields: conditional_logic row removed; cross-reference note
added pointing at the two new tables and the addendum Q3 WS-5c
Uitvoering (no library mirror).
- New sections: form_field_conditional_logic_groups (tree nodes,
adjacency-list via parent_group_id) and
form_field_conditional_logic_conditions (leaves; value JSON
nullable for empty/not_empty). Both tables use the Q2 declarative
FK-chain resolver via tenantScopeStrategy() — group chain 3 hops,
condition chain 4 hops (fits the WS-5c-raised cap of 5).
ARCH v1.7 §8 restructured into sub-sections mirroring the §17.4 /
§17.5 pattern:
- 8.1 Tree structure (read-side contract)
- 8.2 Relational tables (column specs, cascade, scope)
- 8.3 Service boundary (logicFor/replaceLogic/toJsonShape/
assertSpecsValid/assertNoCycles)
- 8.4 Operator catalogues (group + comparison)
- 8.5 Cycle detection (contract preserved, implementation moved)
- 8.6 Activity log (dual-events: field.updated +
field.conditional_logic_replaced; FormField subject only)
- 8.7 Legacy JSON migration (strict dispatch, rollback reversible)
Addendum Q3 extended with "Uitvoering — WS-5c (2026-04-26)":
- No-library-mirror decision reaffirmed (simple FK, no morph)
- Two-table tree-structure rationale (groups + conditions semantic
purity over single-table mixed-nullables)
- OrganisationScope cap raise 3 → 5, rationale: legitimate 4-hop
conditions chain + headroom for future deeper trees without
denormalising form_field_id onto conditions
- Cycle detection migrated to service, contract unchanged
- Snapshot + resource JSON contract byte-identical via toJsonShape
- Strict validator on save at FormRequest boundary
- Scope-sibling discipline: WS-5c adds two FK-chain models (not
morph); base-class extraction still parked for WS-5d
Sign-off table: WS-5c afronding 2026-04-26 added.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 00:09:12 +02:00
..
2026-04-23 17:21:15 +02:00
2026-04-23 20:34:34 +02:00
2026-04-24 11:51:28 +02:00
2026-04-25 00:09:12 +02:00
2026-04-24 13:08:00 +02:00
2026-04-25 00:09:12 +02:00
2026-04-16 02:42:53 +02:00
2026-04-24 22:51:09 +02:00
2026-04-23 17:27:08 +02:00
2026-04-23 20:34:34 +02:00
2026-04-12 21:42:36 +02:00
2026-04-24 00:20:15 +02:00
2026-04-24 10:18:44 +02:00
2026-04-17 17:06:53 +02:00
2026-04-17 17:06:53 +02:00
2026-04-15 08:21:44 +02:00
2026-04-15 08:21:44 +02:00
2026-04-25 00:09:12 +02:00
2026-04-15 08:21:44 +02:00
2026-04-15 08:21:44 +02:00
2026-04-15 08:44:10 +02:00
2026-04-10 11:16:43 +02:00
2026-04-16 22:21:22 +02:00
2026-04-14 19:04:19 +02:00
2026-04-14 01:23:47 +02:00