Library / First Principles Framework (FPF) - Core Conceptual Specification
Jump to passage
In this reading

Link to current text

Published source confirmed at last check

Source changed 2026-10-03 05:29:54 UTC · snapshot created 2026-10-03 05:30:57 UTC · last check 2026-10-03 06:05:20 UTC

G.5:8 - Common Anti-Patterns and How to Avoid Them

  • Anti‑pattern: “Selector as a shadow spec.” Symptom: local acceptance or admissibility rules appear in selector prose or code, diverging from CN, CG, and CAL. Avoid: govern constraint semantics through CNSpecRef and CGSpecRef plus pinned CAL records; keep G.5 core as a boundary.

  • Anti‑pattern: “Implicit crossings.” Symptom: reuse across distinct source-local meanings is claimed from a shared label, Bridge or CL pin, registry row, policy, DRR or SCR line, GateCrossing, or CrossingBundle without the required relation, use, and reliance facts. Avoid: resolve the exact F.17 endpoint senses; establish the F.9 Bridge; state the separate C.2.1 <u,d,r,t,polarity> claim; require the matching A.10 disposition or B.3 assurance branch; and keep authorization and actual selector use separate. Materialize or cite a bundle only when its named downstream use requires that durable package.

  • Anti‑pattern: “Hidden scalarisation.” Symptom: partial orders are flattened into single winners “for convenience”. Avoid: return declared sets; make dominance regimes explicit; keep telemetry report‑only unless promoted by explicit policy.

  • Anti‑pattern: “Method specifics in the selector head.” Symptom: QD, OEE, or preference models become mandatory for basic dispatch. Avoid: keep them in G.5:Ext.* blocks with explicit pins and Uses.

  • Anti‑pattern: “Churn by meaning.” Symptom: a continuing family id silently resolves different members, grouping basis, or selection pins after a row changes. Avoid: keep the lineage id only for the continuing declared grouping, publish a new immutable row edition, and carry its exact row ref through selection, result basis, refresh, and deprecation notices.

  • Anti‑pattern: “Result declaration hidden in upstream reasoning.” Symptom: the retained alternatives or all-member result exist only as one implication inside C.11, C.19, or C.24, while G.5 never names the declared result kind. Avoid: declare the selected-set result directly, with its result kind, applicable members or keyed entries, ordering, named use where required, and basis pins instead of leaving it implicit upstream.

  • Anti-pattern: “Shortlist used for complementary members.” Symptom: every named member is needed for one use, but the result calls them alternatives in a Shortlist. Avoid: use JointUseSet, name the joint use, and key one entry per exact member; keep direct member relations and actual selection separate.

  • Anti‑pattern: “Declared result missing required content.” Symptom: a Shortlist, JointUseSet, narrowed handoff, or abstain result is named, but the emitted result still omits its members or keyed member entries, ordering, named use where required, or basis pins. Avoid: state the result kind, retained members or keyed joint-use entries, ordering, named use where required, abstain or escalation condition, and basis pins directly in G.5.