FPF Authoring Conventions & Style Guide
Pattern E.8 · Stable · Architectural (A) · Normative (unless explicitly marked informative) Part E - The FPF Constitution and Authoring Guides
Type: Architectural (A)
Status: Stable
Normativity: Normative (unless explicitly marked informative)
FPF grows through the addition of patterns written by authors from many disciplines. Without a shared structure and voice, the framework would fracture, violating Pillars P‑1 Cognitive Elegance and P‑2 Didactic Primacy.
Keywords
- authoring
- style guide
- conventions
- template
- S-rules
- narrative flow.
Relations
Content
Problem frame
FPF grows through the addition of patterns written by authors from many disciplines. Without a shared structure and voice, the framework would fracture, violating Pillars P‑1 Cognitive Elegance and P‑2 Didactic Primacy.
Problem
Structural drift and stylistic fragmentation threaten three qualities:
- Comparability – readers cannot align patterns lacking common headings.
- Narrative cohesion – prose swings from dry jargon to informal blog style.
- Auditability – missing sections hide safety checks (Archetypal Grounding, Bias‑Annotation).
Forces
Solution — One template, enriched by style principles
Canonical Pattern Template
Within each pattern, the canonical section headings SHALL appear in the order below.
For each canonical content section heading (1–12), the <Title> component (after the heading separator, e.g. -) MUST start with the canonical section title (case-insensitive match; canonical capitalisation preferred); an optional clarifier after an em dash is allowed (e.g., Solution — …).
The Footer marker (section 13, if present) is a sentinel and is governed by H‑9 rather than the standard <FullId> - <Title> shape.
Extensibility.
Authors MAY add additional sections. Prefer expressing them as subsections under the nearest canonical section (e.g., 4.1, 4.1.1 under Solution). If an additional top-level section is necessary, it MUST NOT delete or reorder the canonical sections and its title MUST NOT shadow a canonical title.
Mandatory vs optional.
- Canonical sections 1–13 are mandatory in every pattern.
- The escape hatch
Not applicableis permitted only where explicitly stated below; when used, it MUST include a short justification (1 paragraph).
Template:
- Title line: Hashes + FullId +
-+ Pattern Title; optional(informative)note. - Header block: Type, Status; optional Normativity override.
- Problem frame
- Problem
- Forces
- Solution
- Archetypal Grounding (Tell–Show–Show; System / Episteme;
Not applicableallowed only with justification) - Bias‑Annotation
- Conformance Checklist
- Common Anti‑Patterns and How to Avoid Them (
Not applicableallowed only with justification) - Consequences
- Rationale
- SoTA‑Echoing (post‑2015 practice alignment; terminology drift & deltas;
Not applicableallowed only with justification) - Relations
- Footer marker
Footer marker. End each pattern with a single visible sentinel heading line on its own: ### <PatternId>:End. This makes truncation detectable even when HTML comments are stripped or surfaced by editors. The footer marker is intentionally content‑free: do not place prose under it.
Note. Pattern boundaries are still parseable by scanning for the next pattern heading (## …), but an explicit :End marker helps retrieval pipelines (and LLM prompts) distinguish “this chunk is the whole pattern” from “this chunk was cut mid‑pattern”.
Heading & ID discipline (human tooling + retrieval)
FPF is often consumed through full‑text search and retrieval (RAG). A reader or an LLM may see a subsection without its parent headings, so headings must be self‑identifying.
H‑1 (Heading shape). Every pattern heading and every subsection heading inside a pattern SHALL follow:
<hashes> <FullId> - <Title> (optional note of non‑normativity)
Exception. The Footer marker is a sentinel heading and is governed by H‑9, not by the standard <FullId> - <Title> shape.
H‑2 (Heading separator). The canonical separator between <FullId> and <Title> is - (ASCII, space-hyphen-space).
Legacy text may use -; tooling SHOULD treat the two as equivalent, and authors SHOULD migrate to - when touching a heading.
H‑3 (FullId). FullId is the full hierarchical address.
For a pattern heading it is the pattern ID (e.g., A.2, E.10.D1).
For headings inside a pattern, append dot‑separated ordinal section numbers after the colon (:) (e.g., A.2:4.4, E.10.D2:3).
Exception: the Footer marker uses the reserved sentinel token :End as defined in H‑9.
The colon (:) is reserved for section paths and MUST NOT appear in pattern IDs.
H‑4 (Ordinals). Ordinals in section paths SHOULD track the canonical template numbering (1 = Problem frame, …, 13 = Footer marker) to maximise cross‑pattern comparability. During refactors or in legacy patterns, ordinals MAY be local. In that case, the canonical section title at the start of <Title> is the semantic key; readers and tools MUST NOT infer section semantics from the ordinal alone.
Note: the Footer marker itself is exempt from ordinal encoding; it uses the reserved token :End (see H‑9).
H‑5 (Where kind and normativity live). Pattern kind (e.g., Architectural / Definitional) MUST be declared in the Header block, not encoded into the heading text. Normativity (normative / informative) MUST also live in the Header block when it deviates from the default. If a reminder is needed for readers, authors MAY add a short parenthetical note at the end of the heading (e.g., (informative) / (non‑normative)), but headings MUST NOT use square‑bracket tags.
H‑6 (Heading levels). Heading levels MUST preserve a fixed offset between structural layers (Part or Cluster (flat) → Pattern → Pattern sections):
- Part and Cluster headings MUST use
#(level 1) across the file. - A Pattern heading MUST use
##(level 2). - Inside a pattern, each nested section MUST add exactly one
#per level (e.g.,## A.2 - …,### A.2:2 - …,#### A.2:2.1 - …).
H‑7 (Ellipsis discipline). Authors MUST NOT use three consecutive full stops/dots (...) as punctuation in headings or narrative prose. Authors MUST use the Unicode ellipsis … (U+2026) instead. For editorial elisions in quotations, authors SHOULD prefer […] to make the omission explicit and distinguish it from retrieval truncation.
Exception: literal three‑dot sequences that are part of an external language’s syntax MAY appear only inside code spans or fenced code blocks.
H‑8 (Normative keywords). The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL are to be interpreted as described in RFC 2119, as clarified by RFC 8174 (only when capitalised). Authors SHOULD avoid informal deontic phrasing (“need to”, “is required to”) in normative clauses.
Deontics vs admissibility. Use RFC keywords only for deontic obligations (requirements on authors, reviewers, implementers/tooling, or published artefacts) — i.e., things an agent can choose to do or omit. Do not use RFC keywords to state definitions, structural invariants, typing rules, or other admissibility conditions of the modeled world.
When you need an enforceable constraint that is mathematical rather than deontic, express it as a non‑deontic predicate using one of: Definition:, Invariant:, or Well‑formedness constraint: (optionally with formal quantifiers). Prefer mathematical terms like cardinality 1..1 (total) / 0..1 (partial) / 0..n over deontic adjectives like “mandatory/optional” when the intent is cardinality, not duty.
Admissibility predicate discipline (recommended shape).
When expressing admissibility/validity constraints as predicates (Definition: / Invariant: / Well‑formedness constraint:):
- Authors MUST NOT use RFC keywords inside the predicate block.
- Authors SHOULD give each predicate a stable identifier and short name (e.g.,
RA‑1 (Locality),RE‑3 (Method gate)), so that Conformance Checklist items can reference it without re‑authoring the rule. - Authors SHOULD write the constraint as a declarative predicate (optionally quantified), e.g.,
role ∈ Roles(context), rather than as “X MUST …”. - If the constraint needs to be enforceable as part of a pattern’s contract, authors SHOULD reference the predicate identifier from the Conformance Checklist (and/or call out validator behaviour), rather than duplicating the predicate with RFC keywords.
H‑9 (Footer marker sentinel). Footer marker SHALL be a single heading line whose FullId is the pattern ID followed by the reserved sentinel token :End (no ordinals, no title, no square‑bracket tags):
### <PatternId>:End
It is the only allowed heading inside a pattern whose section token is non‑numeric. It MUST be the final line of the pattern and MUST NOT carry any prose. Tooling and readers MUST treat it as a boundary sentinel, not as a semantic section.
Unification note: historic A‑ and D‑templates differed only by the presence/absence of Bias‑Annotation and Relations; the unified template keeps the headings everywhere while allowing explicit Not applicable statements when justified.
The Alexandrian pattern canon historically calls Problem frame “Context”. FPF avoids that label because Context is already overloaded in FPF (e.g., U.BoundedContext and its Plain‑register label).
Stylistic Principles (S-0 ... S-19)
Authors use the principles as a scaffold, not a straitjacket: the goal is coherent, engaging insight.
S-0 (Narrative Flow Seven-Step Heuristic) — explanation Narrative flow is recommended to follow these steps: Hook -> Frame -> Weave -> Anchor -> Bridge -> Flow -> Close.
Brief explanations:
Narrative Flow Heuristic also operationalises S-1 (Density w/o Jargon), S-2 (Internal Cohesion), S-4 (Contextualisation), and S-6 (Quotable Closers).
Recognition surface and assurance surface
Every canonical pattern SHALL stabilise one governed object early enough that a cold reader can tell what kind of thing the pattern is actually governing. If ordinary forms vary (note, sheet, guided UI, rendering, review aid), the text must make explicit which of those are merely surface forms of one governed object and which would instead name a different act, process, work-product, or owner lane. Recognition and assurance surfaces may refine that object differently, but they must not silently swap the central object kind.
If a pattern uses a broad umbrella or head together with a narrower operative branch, the text must also make the stack explicit early enough for first reading: what the broad head names, what the current narrowed branch is, what governed object is actually in play, what move is being carried by that object, and what wider work or process remains outside the pattern. A qualifier alone does not restore that stack.
Under F.18 local-first naming, the canonical pair here is recognition surface and assurance surface.
The earlier provisional recognition shell / assurance shell wording is retired.
These names refer to two reading-order surfaces inside one pattern; they do not mint new owner kinds, new publication-surface kinds, or a second face family.
A later third didactic support surface remains optional and is justified only when the family is especially easy to misuse, easy to over-read, or hard to teach without extra scaffolding.
The recognition surface is the first reading surface.
It is the part of the pattern that lets a cold working reader recognise the situation quickly enough to decide whether to keep reading.
It should start from a subject-domain or practice moment before internal taxonomy whenever the pattern is meant to help real work rather than only internal canon maintenance.
In practice it usually lives in an early Use this when line or equivalent opening, plus the upper parts of Problem frame, Problem, Solution, Consequences, and nearby worked slices.
Its job is to make visible:
- what ordinary working situation this pattern is for;
- what goes wrong if the pattern is missed;
- what the pattern buys the reader in practice;
- when this is not the right pattern;
- what governed object is actually being kept stable;
- and, when technical terms must appear early, a pairwise plain gloss for each early high-pressure term.
The assurance surface is the second reading surface. It carries the heavier load-bearing material that makes the pattern reviewable and auditable:
- declaration blocks and typed fields when those are part of the contract;
- representation ontology or object-of-talk discipline;
- any minimal modeling or mathematical lens that keeps the governed object stable;
- law, invariants, admissibility, and reroute or neighbouring-owner conditions;
SoTA-Echoingwhen it is carrying live explanatory load;- and the review hooks that let a stronger reading be checked explicitly.
The assurance surface may sharpen, justify, and discipline the recognition surface. It must not silently replace, strengthen, or universalize the claim that the recognition surface made visible. If the recognition surface says “this pattern helps with a bounded working situation”, the assurance surface must not quietly turn that into a stronger owner, stronger guarantee, or broader universality claim.
If a pattern claims universal or transdisciplinary status, that claim must already be visible in the recognition surface.
It is not enough for universality to appear only later in a law sheet, declaration block, or SoTA-Echoing rationale.
A broad claim should therefore be demonstrated in the recognition surface through at least three heterogeneous reader or domain situations.
When a compact matrix helps, F.16 is the preferred template for showing that breadth.
If SoTA-Echoing is load-bearing, the practical implication of those rows should be recoverable from the recognition surface and case bank rather than remaining a late-only justification layer.
A third didactic support surface means enough didactic and operational support that the pattern survives without nearby project documents. Typical signs include:
- at least one concrete source/result slice in Archetypal Grounding when the pattern governs transforms or publication change;
- at least one boundary-heavy example or anti-example when nearby owners are easy to confuse;
- reviewer guidance that tells what to inspect first and what failure mode forces reroute;
- local mini-definitions or glossary support for recurring terms that would otherwise be recovered only from project context.
Pattern density is therefore not “more metadata” and not “longer tag lists”. It is the presence of enough recognition, assurance, and, when needed, extra didactic support that a reader can understand the pattern, apply it lightly in ordinary cases, and recognise when a heavier review path is required.
Package-form and host-relation role-word discipline
FPF pattern prose is not free-form descriptive English. When authors name a package-form or a host relation, they must use role words with stable semantic intent.
Use the following distinctions explicitly:
This is a cross-cutting review discipline, not a replacement for local host lexica. For example, A.6.7 / A.19.CHR already carry the suite/kit/pack distinction, and E.17.1 already carries the viewpoint bundle/family/library distinction.
- owner = the pattern that owns the primary semantic law surface for the family;
- specialization = a named refinement under an existing owner;
- overlay = a cross-cutting governance or reading layer over existing owners;
- profile = a declarative review/use surface derived from a host owner rather than a replacement owner;
- family = a recurring class of cases governed by one owner surface;
- bundle = a packaged set of defaults, allowances, or coordinated members;
- cluster = a navigation or reading grouping; not by itself an owner claim;
- suite = a coordinated set of members with explicit suite semantics under the right host law;
- pack = an editorial or review grouping, not automatically a semantic owner;
- kit = a reusable coordinated publication or contract surface with kit-level semantics under the right host law;
- record = a case/report/review artefact;
- umbrella = a provisional or review-stage head spanning possible subfamilies before final owner freeze.
These words are not interchangeable. In particular, authors must not let cluster, bundle, suite, family, profile, overlay, or umbrella do the work of an unnamed host relation. When the host relation matters, it must be stated directly: specialization under ..., hosted profile under ..., overlay over ..., bundle under ..., or another equally explicit formulation.
A pattern may reuse a host-native role word when that role is already owned and defined by the host pattern. Outside that case, authors must not improvise near-synonyms or shift between role words for stylistic variety.
Reader-role discipline for live pattern prose
A live pattern is written for its intended FPF user: the person who will use the pattern to organise thought, inspect a case, publish a note, or review a result under that pattern. Its load-bearing sections therefore explain what the pattern lets that user do, what it forbids, what it costs, and how it relates to neighbouring patterns in user terms.
Authors must keep FPF-development or package-architecture material separate from that user-facing body.
In particular, Problem, Solution, Consequences, Rationale, worked slices, and ordinary-vs-load-bearing guidance must not do the work of:
- arguing that the material is worth isolating;
- justifying overlay/profile/owner choice as a package decision;
- discussing owner freeze, naming freeze, merge posture, blast radius, or safest landing form;
- or narrating future package promotion or defer decisions.
If architecture-placement commentary is still helpful, the default home is a separate companion note or ADR-like architecture surface.
A live pattern may include a short optional informative subsection such as Architectural placement note (informative) only when that placement materially helps users avoid misuse; even then, it must stay clearly separated from the user-facing solution and rationale rather than replacing them.
Human-facing fit beyond surface correctness
Human-facing fit is also subject-domain fit. A recognition surface that starts from internal taxonomy, owner-lane convenience, or package-architecture wording before the problem-owning domain moment is still under-authored even if its later law surface is correct. When a broader umbrella name and a narrower operative branch are both live, the first surface should also tell the reader which stack is actually active rather than leaving that reconstruction to a later declaration block or companion note.
A pattern can already be surface-clean, boundary-clean, and reader-role-clean, yet still fail the first minute of use for a cold working reader. That failure usually appears when the text is lawful but does not yet make the working situation, practical payoff, governed object, or first reading surface visible enough.
For canonical patterns, the first reading surface should behave as a recognition surface and the heavier burden should remain in an assurance surface. When a pattern claims practice guidance or is meant to be used by engineers, managers, researchers, or other working readers, authors should make the following visible before the heavier harness takes over:
- a recognisable
Use this whenor equivalent first-minute entry; - a concrete working situation in
Problem frame, not only taxonomic or owner-lane language; - a short statement of what goes wrong if the pattern is missed or misread;
- a short statement of what this pattern buys the reader in practice;
- a short
Not this pattern whenboundary for the ordinary nearby misroutes; - one minimally viable worked case or use slice that shows what changes in practice;
- when a typed declaration block, formal lens, or other compact modeling support is load-bearing, a short user-facing statement of what kind of object the pattern is governing and what minimal lens keeps that object reviewable;
- pairwise plain glosses for any high-pressure technical terms that must appear before the heavier declaration surface arrives;
- when
SoTA-Echoingis carrying live explanatory load, a short working-reader implication for each row or cluster of rows and a visible link back to the case bank or worked slices that those rows discipline; - a visible split between the recognition surface and the heavier declaration / review / assurance surface;
- and, if the draft implicitly serves several reader families, an explicit primary working reader, primary concern surface, or primary viewpoint.
Entry-bearing mini-block (informative). When a canonical pattern genuinely functions as a local front door for one first practical route, the recognition surface SHOULD add one short routing block near the top with: Start here when, First output, Typical next owners, and Common wrong escalations / reroutes.
This mini-block does not replace Use this when, Problem frame, Consequences, or ordinary Not this pattern when guidance. Its job is to shorten first-minute routing for a cold reader without silently widening owner scope, changing route-count decisions, or relocating semantics out of the pattern that actually owns them.
If the block points to neighbouring owners, it should name those owners as next moves or reroutes rather than as hidden co-owners of the current pattern.
If the pattern claims broad, universal, or transdisciplinary usefulness, that breadth should already be visible in the recognition surface.
At minimum the recognition surface should show at least three heterogeneous reader or domain situations rather than one narrow lane with a later broad claim attached.
When a compact matrix helps, F.16 is the preferred template for making that breadth legible.
This is not a request to flatten the pattern into plain language only. It is a rule about ordering, layering, and surface consistency: the recognition surface must help a working reader recognise the pattern early, while the assurance surface continues to carry the full semantic burden. If the pattern uses technical lexicon, ontological distinctions, or a mathematical lens, those supports must remain recoverable, but the first reading surface should not require the reader to decode that full stack before recognising the working situation. The assurance surface may tighten or discipline the recognition surface; it must not silently shift what the recognition surface claimed. If a pattern or example claims autonomy for any Role/Method/Service:
- Add a subsection “Autonomy (RoC‑E.16)” that lists:
AutonomyBudgetDeclRef(id, version, Scope (G), Γ_time),Aut-Guard policy-id (PolicyIdRef),OverrideProtocolRef(SpeechAct names, SoD),- pointer to where Green‑Gate applies in the Method steps,
- where AutonomyLedgerEntry is recorded on
U.Work.
- Include one Tell‑Show‑Show vignette that demonstrates depletion and override handling.
- Use LEX‑BUNDLE terms (Scope (G), Γ_time, Role/Method/Work). Avoid “validity”, “process”, “actor”, “system”, “mechanism” unless mapped to kernel types.
Archetypal Grounding (System / Episteme)
Note: Prefer examples that reuse FPF’s own characteristics vocabulary (e.g., F (Formality) rather than “F‑score”) unless you explicitly mean an external metric and name it as such.
Bias‑Annotation
Lenses tested: Gov, Arch, Onto/Epist, Prag, Did. Scope: Universal for the authoring conventions in this pattern.
This guidance biases toward Did (readability, narrative flow) and Arch (template regularity) by design; the mitigation is explicit optionality (Not applicable) and the requirement to justify omissions in‑text.
Conformance Checklist
CC style (canonical). Conformance Checklist items are obligations/conditions in the authoring plane: they constrain artefacts that claim conformance (and the reviewers/validators that accept them). A CC clause of the form “X SHALL ...” is to be read as “In a conforming artefact, X SHALL ...”, not as a deontic statement about the modeled world.
Preferred wording for new or edited CC items: start with an explicit conformance subject (e.g., “Authors ...”, “Reviewers ...”, “A conforming implementation ...”, “A validator ...”). If a CC item is enforcing an admissibility predicate, it SHOULD cite the predicate’s identifier (from a Definition: / Invariant: / Well-formedness constraint: block) rather than restating the predicate as “X MUST ...”. For boundary/interface/protocol/contract patterns, prefer A.6.B-routed claim IDs (L/A/D/E) or cite an existing Claim Register (A.6.B:7) instead of restating mixed prose.
Common Anti-Patterns and How to Avoid Them
These failure modes recur in drafts and in downstream application. They are predictable ways the Forces in this pattern get violated.
Consequences
Rationale
Structure and style function as FPF’s grammar. By unifying what were once separate “template” and “style guide” patterns, authors face a single reference point that satisfies:
- P‑1 Cognitive Elegance – uniform, minimal surprises.
- P‑2 Didactic Primacy – narrative flow, dual archetype examples.
- Guard‑Rails 1 & 2 – no tool jargon, no notation lock‑in inside prose.
A unified template also improves retrieval: a chunk containing A.2:<n> - Bias‑Annotation remains self‑identifying even when parent headings are missing, and the recommended footer marker makes truncation detectable.
International and industry standards often speak in terms of conformance criteria. FPF uses the label Conformance Checklist to make adoption easier for engineers and managers.
SoTA‑Echoing (normative; lineage & deltas to contemporary State‑of‑the‑Art)
Purpose. Make each pattern’s relationship to contemporary best-known practice explicit and comparable without importing tooling or data governance. This section is prose‑first and notation‑independent. It does not mint an independent second rule layer, but it is a load-bearing alignment surface: the Solution, Conformance Checklist, Relations, and other load-bearing sections must reflect the stance stated here or explicitly justify divergence.
Minimum contents (obligations).
- Evidence binding (no duplicate SoTA). If a SoTA Synthesis Pack exists (G.2), this section SHALL cite its ClaimSheet IDs / CorpusLedger entries / BridgeMatrix rows as the source‑of‑truth for claims and report
adopt/adapt/rejectconsistent with those IDs. Avoid forking an untracked SoTA narrative. - Sources (post‑2015). For Architectural patterns, cite ≥ 3 primary SoTA sources (standards/papers/books), with at least two independent Traditions. For Definitional patterns, cite ≥ 1 post‑2015 primary source and, where relevant, a short note on terminology drift/deprecations.
- Best-known, not merely popular. Authors SHALL distinguish best-known currently defensible practice from merely widespread or fashionable defaults. If the pattern adopts, adapts, or rejects a popular-but-weaker practice, that divergence MUST be stated explicitly.
- Practice alignment. For each cited item, state what is adopted/adapted/rejected and why (2–4 sentences).
- Scale legality. If numeric operations are implied, bind to ComparatorSet/CG‑Spec and declare partial‑order stance (no hidden scalarisation).
- Cross‑Context reuse. Any reuse across
U.BoundedContextmust surface Bridge+CL/Φ_plane policy‑ids (penalties affect onlyR_eff). - Lexical hygiene. Avoid “mapping” unless you mean an explicit Bridge/translation relation with loss notes.
Writing guidance (readability). Write short paragraphs, not tag lists. For each Tradition, provide (a) a one‑sentence capsule of the practice, (b) a one‑sentence comparison to the pattern’s Solution, (c) a one‑sentence adoption status with reason. Where helpful, add one System and one Episteme micro‑example (Tell–Show–Show).
Format: human‑first. A small table is allowed, but each row MUST be accompanied by 1–2 sentences as above. Vendor/tool tokens, file formats, or data schemas are out of scope.
SoTA alignment for this pattern (E.8 self‑echo)
Relations
- Builds on: E.6, E.7
- Constrained by: Guard‑Rails E.5.1–E.5.4 (lexical firewall, notation independence, etc.)
- Constrains: All patterns; the DRR template references the same section order.