Principle-Framework Architecture Decision
About this pattern
This is a generated FPF pattern page projected from the published FPF source. It is canonical FPF content for this ID; it is not a FPF Reference product feature page.
How to use this pattern
Read the ID, status, type, and normativity first. Use the content for exact wording, the relations for adjacent concepts, and citations to keep active work grounded without pasting the whole specification.
Type: Architectural (A) Status: Stable Normativity: Normative unless marked informative.
Use this pattern when a framework author or steward must decide the architecture of one FPF-grounded domain principle framework or local practice framework: its purpose, selected pattern set, relation structure, publication or access carrier, dependency boundary, names, source basis, quality route, and currentness route.
Relations
Content
Problem frame
Use this pattern when a framework author or steward must decide the architecture of one FPF-grounded domain principle framework or local practice framework: its purpose, selected pattern set, relation structure, publication or access carrier, dependency boundary, names, source basis, quality route, and currentness route.
Primary EntityOfConcern: PrincipleFrameworkArchitectureDecision@Context, a framework-local architecture decision relation with explicit slots. The first useful output is a filled decision relation, not an ADR document and not the realized framework itself.
Use this pattern only when the decision has framework-specific obligations beyond generic architecture-decision practice. If the decision only needs ordinary decision rationale or ordinary project architecture decision slots, use E.9, C.32.PAD, and C.32.ADR directly.
Problem
Framework architecture decisions recur in FPF-grounded work. A steward must decide whether a set of patterns belongs in Core, in a domain framework, in a local framework, or in publication and pedagogy. They must also decide how the framework depends on FPF Core, what edition boundary it has, what sources ground it, what names are admissible, and which carriers publish or expose the framework.
If those decisions are hidden in prose, table shape, or an ADR-like file, later maintainers cannot tell which structure was selected, which alternative was rejected, what consequences were accepted, or when the decision should be repaired or superseded.
Forces
Solution
Create one PrincipleFrameworkArchitectureDecision@Context relation before publishing the decision through any ADR-like carrier.
Fill the relation in this order:
- State the decision question as an architecture question about the framework edition.
- Name the bounded context, governed framework, and FPF Core edition dependency.
- List the source basis and SoTA synthesis packs that make the decision admissible.
- Select the pattern set and relation records, or state why the decision is not yet ready.
- Select the publication or access carrier only after the structure being exposed is clear.
- Record dependency and edition effects under
[E.5.3](/generated/patterns/E.5.3)and[E.4.PFR](/generated/patterns/E.4.PFR). - Record naming decisions or required
[F.18](/generated/patterns/F.18)name-card work. - Record rejected alternatives, rationale, consequences, quality route, source-return route, and refresh or supersession conditions.
- Publish the decision projection through
[C.32.ADR](/generated/patterns/C.32.ADR)or[E.17](/generated/patterns/E.17)only after the decision relation exists.
qualityEvaluationRefs and admissionReviewRefs are distinct reference families. qualityEvaluationRefs point to [E.4.DPF.DA](/generated/patterns/E.4.DPF.DA) package adequacy, [E.21](/generated/patterns/E.21) pattern-quality evaluation, or [E.23](/generated/patterns/E.23) improvement evidence. admissionReviewRefs point to [E.19](/generated/patterns/E.19) only when the decision is being used to claim admission, profile gating, external-review readiness, or landing readiness.
Demotion condition: if no framework-specific slots are live, do not keep this pattern in play. Use [E.9](/generated/patterns/E.9) for rationale, [C.32.PAD](/generated/patterns/C.32.PAD) for project architecture decision structure, and [C.32.ADR](/generated/patterns/C.32.ADR) for the publication projection.
Archetypal Grounding
Tell: A team wants a hydroponic-cucumber domain principle framework. The PFAD decision asks whether the framework depends directly on FPF Core only, or also on an agriculture-domain framework edition; which crop-growth concerns become first patterns; which source packs are strong enough; and which publication or access carrier will expose the framework.
Show: A Codex local practice framework has process patterns for baton handoff and prelanding checks. The decision records that these are local practice framework patterns, not FPF Core patterns. It names the FPF Core edition, selected local process patterns, local publication unit, source-return owners, and refresh conditions.
Show: An ADR-like file saying "accepted: create domain framework" is insufficient. The decision relation must name selected pattern set, dependencies, source basis, rejected alternatives, consequences, and repair conditions before the ADR-like carrier can be trusted as a projection.
Filled decision slice:
Bias-Annotation
The main drift is carrier-first decision making: a team starts from ADR headings, a status field, or a template and assumes that filling the file has made the decision. The repair is to fill the decision relation first and publish a projection second.
The second drift is child-pattern duplication: PFAD can become a local restatement of generic decision practice. The repair is to keep only the framework-specific slots live and return generic decision work to E.9, C.32.PAD, and C.32.ADR.
Conformance Checklist
Common Anti-Patterns and How to Avoid Them
Consequences
PFAD makes framework decisions more inspectable, because a later maintainer can recover the decision question, source basis, selected structures, rejected alternatives, and repair conditions. The cost is an extra decision relation before publication.
The pattern also constrains ADR use. ADR-like records remain useful, but they become projections of a decision relation rather than the place where the ontology is invented.
Rationale
FPF already has decision, architecture decision, and ADR-projection patterns. The reason PFAD exists is narrower: framework authors repeatedly need the same framework-specific slots that generic decision patterns do not keep visible by default. Those slots are edition dependency, selected pattern set, relation structure, publication carrier, access carrier, source-return, naming, quality route, and currentness route.
PFAD is therefore a specialization by obligation, not by vocabulary. If those obligations are not live, the specialization has no value.
SoTA-Echoing
Relations
- Uses:
E.9as the rationale kernel for framework-local architecture decisions; it specializes only the recurring framework-specific obligations and does not create a second generic decision ontology. - Coordinates with:
C.32.PADfor architecture-decision slot discipline. - Coordinates with:
C.32.ADRandE.17for decision publication projections. - Coordinates with:
E.4for family membership and selected structures. - Coordinates with:
E.4.PFRfor dependency, edition, compatibility, relation, and supersession effects. - Coordinates with:
F.18,G.2,G.11,E.4.DPF.DA,E.21,E.23,C.33,C.34, andC.35for name, source, currentness, package adequacy, pattern quality, preservation, and produced-carrier claims.
E.4.PFAD:End
Last Updated: 2026-06-26 — this section last modified in upstream FPF commit f1d0f931 (github.com/ailev/FPF)