A.2.9:8 — Common Anti-Patterns and How to Avoid Them

Preface node heading:a-2-9-8-common-anti-patterns-and-how-to-avoid-them:5648

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

Anti-patternWhy it failsRepair
Episteme-as-actor (“the spec approves/declares”)assigns agency to descriptionsrepresent the publishing/approving act as U.SpeechAct(performedBy=RoleAssignment)
Carrier-as-act (“the signed PDF is the approval”)conflates carrier with actmodel U.SpeechAct and point to PDF as carrier/utteranceSurface
Free-text type (“type=‘approved-ish’”)not lintable; drifts across facesregister SpeechActTypeRef in the context and use it
Act carries obligations (obligations embedded as prose in speech act)collapses act and deontic bindingmodel obligations as U.Commitment objects instituted by the act
Gating without windowcannot evaluate freshnessadd explicit window and reference it in the guard/checklist
Hidden multi-act (one event silently creates multiple commitments)loses traceability; creates disputesrepresent multi-function via actTypes set or multiple speech acts sharing the same carrier

Last Updated: 2026-06-17 — upstream FPF commit 646b0b9b (github.com/ailev/FPF)