C.3.A:A.5 Design guidance & pitfalls [I]
Preface node
heading:c-3-a-a-5-design-guidance-pitfalls-i:40473
What this page is
This is generated FPF reference text from the specification preface or supporting sections. It helps interpret FPF; it is not FPF Reference product documentation.
Methodology
Use it to understand how the specification wants to be read, then return to a route, pattern, or work packet for active work. Cite generated IDs only when the wording changes the task decision.
Content
Do this.
- Treat regulatory categories as Kinds. Put the definition into
KindSignature(aim for F4 predicates where practical). - Make time explicit. In guards, require a time selector (Γ_time) for effective dates and grace periods. Forbid “latest”.
- Publish bridges with loss notes. If two jurisdictions’ categories are “almost the same,” say how, rate
CL^k, and note what is lost. - Split “where” from “what.” Keep Scope (G) over
U.ContextSlice(jurisdiction, plant, Standard versions) separate from MemberOf on the kind. - Route uncertainty to R. Use
Ψ(CL^k)andΦ(CL); never modify F/G to hide ambiguity.
Avoid this.
- Synonym games. Don’t alias “Adult” to local
AdultPatientin prose. Use a KindBridge. - Scope by labels. “Domain = EU” is not a guard. Use explicit
U.ContextSlicefields (jurisdiction, version, time selector) and Scope predicates. - Hiding time. Never rely on “current law”; always fix Γ_time (point/window/policy).
- Widening G to compensate for type gaps. If kinds don’t line up, introduce a subkind, add a mask/adapter, or narrow; don’t “make the scope bigger”.
Last Updated: 2026-06-17 — upstream FPF commit 646b0b9b (github.com/ailev/FPF)