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
CNSpecRefandCGSpecRefplus 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, orCrossingBundlewithout 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 andUses. -
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, orC.24, whileG.5never 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: useJointUseSet, 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 inG.5.