2026-09-24 15:23:06 +02:00
|
|
|
|
# Pattern schema 0.1
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
Status: working contract · 2026-09-24 · FEP-WP-0002-T01
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
[Pattern template](../templates/Pattern.md) is the authoring skeleton;
|
|
|
|
|
|
[vocabulary.yaml](vocabulary.yaml) owns serialized enum values and force IDs.
|
|
|
|
|
|
The template is intentionally incomplete and is not a pattern record.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
## Identity and lifecycle
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
- `schema_version: '0.1'` identifies this metadata contract.
|
|
|
|
|
|
- `id`: `FEP-` followed by four digits, allocated once when creating a pattern file.
|
|
|
|
|
|
IDs do not encode families or scale; moving or renaming a pattern retains its ID.
|
|
|
|
|
|
Never reuse a retired ID. Check all pattern frontmatter before allocating the next
|
|
|
|
|
|
unused number. Candidate P01 identities remain scoped to their source workspace.
|
|
|
|
|
|
- `name`: human-readable name; `family`: nonempty list of family keys; `scales`:
|
|
|
|
|
|
nonempty list of distinct L0–L7 keys. Do not serialize `cross-scale` or `L3/L6`.
|
|
|
|
|
|
- `status`: draft, reviewed or deprecated. Reviewed means an editorial review is
|
|
|
|
|
|
recorded in Evidence; it does not establish empirical maturity. Deprecation must
|
|
|
|
|
|
explain the replacement or reason, and existing references remain resolvable.
|
|
|
|
|
|
- `evidence.maturity`: hypothesis (untested generalization), emerging (traceable
|
|
|
|
|
|
support and contrasting cases with explicit gaps), established (independent known
|
|
|
|
|
|
uses and documented limits), canonical (established evidence plus explicit corpus
|
|
|
|
|
|
review for reference use). None means universally desirable. Promotion requires
|
|
|
|
|
|
a linked review, never a model score or a count of citations alone.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
## Context, prerequisites and forces
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
`context` and `prerequisites` are lists of explanatory strings. Prerequisites are
|
|
|
|
|
|
conditions such as identifiable commands or a durability requirement. They are
|
|
|
|
|
|
not unresolved pattern names. Use a `requires` relation only when another pattern
|
|
|
|
|
|
is genuinely required, with its ID and a rationale.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
`forces.improves` and `forces.worsens` contain vocabulary keys such as
|
|
|
|
|
|
`interaction-latency` and `implementation-complexity`. At least two distinct forces
|
|
|
|
|
|
must be present overall, with both benefits and costs explained in prose. A force
|
|
|
|
|
|
may appear on both sides only when the Forces section explains the conditions.
|
|
|
|
|
|
Do not infer direction just from a label (lower latency is generally favorable).
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
## Relations
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
`relations` is a list of objects:
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
```yaml
|
|
|
|
|
|
- type: enables
|
|
|
|
|
|
target:
|
|
|
|
|
|
kind: pattern
|
|
|
|
|
|
ref: FEP-0002
|
|
|
|
|
|
rationale: Explain the conditional dependency or effect.
|
|
|
|
|
|
evidence: [E1]
|
|
|
|
|
|
```
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
The nine pattern relation types in vocabulary.yaml target a `pattern` by stable ID.
|
|
|
|
|
|
`implemented-by` targets `technology`; `observed-in` targets `system` or
|
|
|
|
|
|
`architecture`. External targets use a repository-relative Markdown path to an
|
|
|
|
|
|
existing mapping or case record. A product label or URL alone is not a graph node.
|
|
|
|
|
|
`rationale` is required. `evidence` contains local evidence-entry IDs, or is empty
|
|
|
|
|
|
when the relation is explicitly marked as a hypothesis in its rationale.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
Use kebab-case relation names everywhere. Relations are recorded from this pattern
|
|
|
|
|
|
to the target. Do not infer inverse edges, transitivity or symmetric closure.
|
|
|
|
|
|
In particular, a cycle of complements is not itself an inconsistency. Requires
|
|
|
|
|
|
cycles warrant review; a generic graph cycle count is not a correctness verdict.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
## Evidence and known uses
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
`evidence.sources` is a list with these fields:
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
```yaml
|
|
|
|
|
|
- id: E1
|
|
|
|
|
|
source: SRC-0001
|
|
|
|
|
|
locator: Source section, page, paragraph or repository revision.
|
|
|
|
|
|
review: research/cases/ExampleReview.md
|
|
|
|
|
|
claims: [C01]
|
2026-09-24 07:55:34 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
Source IDs resolve in `research/catalog/SourceCatalog.md`. Each review path exists;
|
|
|
|
|
|
claim IDs resolve within that review. E1 is local to the pattern, not a global ID.
|
|
|
|
|
|
Source statements and our interpretations must be separate in the review.
|
|
|
|
|
|
An empty evidence list is allowed for a draft hypothesis, with the gap stated.
|
|
|
|
|
|
A source citation is not independent confirmation of all claims in a pattern.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
`known_uses` is a list of `{name, locator, evidence}` objects: a named observed use,
|
|
|
|
|
|
a version-specific URL or source locator, and local evidence IDs supporting the
|
|
|
|
|
|
observation. A hypothetical example belongs in Implementation Notes, not Known Uses.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
## Prose and admission
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
All sections in the template are required. Explain a recurring problem, competing
|
|
|
|
|
|
forces, reusable solution, dynamics, resulting context, consequences and failure
|
|
|
|
|
|
modes. State unknowns explicitly rather than leaving misleading empty claims.
|
|
|
|
|
|
A technique or framework feature alone does not establish a reusable pattern.
|
2026-09-24 07:55:34 +02:00
|
|
|
|
|
2026-09-24 15:23:06 +02:00
|
|
|
|
[Worked fixtures](../research/examples/schema-contract.yaml) demonstrate resolution
|
|
|
|
|
|
in a deliberately isolated synthetic corpus. Their IDs are not reserved in the
|
|
|
|
|
|
real corpus and their contents provide no research evidence. The fixture check is
|
|
|
|
|
|
an acceptance check for this contract, not the future full corpus validator.
|