-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpatterns.json
More file actions
105 lines (105 loc) · 5.14 KB
/
Copy pathpatterns.json
File metadata and controls
105 lines (105 loc) · 5.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "BE Framework Demo Pattern Catalog",
"description": "Machine-readable index of all demos in this repository. Class counts include only classes actively connected to the live transformation graph: Inputs and intermediate Beings linked via `#[Be]` transitions, Moments injected into Finals via `#[Inject]`, and the Finals themselves. Standalone exemplar classes that exist under `src/<Layer>/` but are never reached from the chain are excluded, as are `MomentInterface.php` and `Potential/` sub-namespaces. Paths are relative to the repository root.",
"version": "1.2.0",
"generatedFrom": "Direct enumeration of #[Be] attributes and Final constructor #[Inject] parameters",
"relatedSkill": {
"id": "be",
"repository": "be-framework/be-skills",
"url": "https://github.com/be-framework/be-skills",
"note": "The `be` skill in be-skills delegates to this repository for canonical examples. Agents running that skill should consume this catalog when asked to find a demo of a specific pattern."
},
"patterns": [
{
"id": "minimal",
"demo": "hello-world",
"level": "beginner",
"flow": "Input -> Final",
"classes": { "input": 1, "being": 0, "moment": 0, "final": 1 },
"entryFiles": ["demos/hello-world/src/Input/HelloInput.php"],
"finalFiles": ["demos/hello-world/src/Final/Hello.php"],
"keyConcepts": ["#[Be] attribute", "Input-to-Final direct transformation"]
},
{
"id": "linear",
"demo": "contact-form",
"level": "beginner",
"flow": "Input -> Being -> Final",
"classes": { "input": 1, "being": 1, "moment": 0, "final": 1 },
"entryFiles": ["demos/contact-form/src/Input/ContactInput.php"],
"finalFiles": ["demos/contact-form/src/Final/ContactReceived.php"],
"keyConcepts": ["single Being transformation", "Semantic validation", "injected Reason service"]
},
{
"id": "sequential-chain",
"demo": "user-registration",
"level": "beginner",
"flow": "Input -> Being(A) -> Being(B) -> Being(C) -> Final",
"classes": { "input": 1, "being": 3, "moment": 0, "final": 1 },
"entryFiles": ["demos/user-registration/src/Input/RegistrationInput.php"],
"finalFiles": ["demos/user-registration/src/Final/UserRegistered.php"],
"keyConcepts": ["chained #[Be] transitions", "stepwise enrichment"]
},
{
"id": "diamond",
"demo": "order-processing",
"level": "intermediate",
"flow": "Input -> Final (with three Moments converging via #[Inject])",
"classes": { "input": 1, "being": 0, "moment": 3, "final": 1 },
"entryFiles": ["demos/order-processing/src/Input/OrderInput.php"],
"finalFiles": ["demos/order-processing/src/Final/OrderConfirmed.php"],
"keyConcepts": ["Moment convergence", "diamond metamorphosis", "self-completion via be()"]
},
{
"id": "staged-sequential",
"demo": "blog-publishing",
"level": "intermediate",
"flow": "Input -> Being -> Final",
"classes": { "input": 1, "being": 1, "moment": 0, "final": 1 },
"entryFiles": ["demos/blog-publishing/src/Input/ArticleInput.php"],
"finalFiles": ["demos/blog-publishing/src/Final/ArticlePublished.php"],
"keyConcepts": ["multi-Reason Being", "markdown rendering", "slug generation", "excerpt extraction"]
},
{
"id": "branching",
"demo": "medical-triage",
"level": "advanced",
"flow": "Input -> Being (sets $being discriminator) -> Final(A) | Final(B) | Final(C) (chosen by $being type matching)",
"classes": { "input": 1, "being": 1, "moment": 0, "final": 3 },
"entryFiles": ["demos/medical-triage/src/Input/PatientInput.php"],
"finalFiles": [
"demos/medical-triage/src/Final/EmergencyAdmitted.php",
"demos/medical-triage/src/Final/UrgentQueued.php",
"demos/medical-triage/src/Final/OutpatientReferred.php"
],
"keyConcepts": ["$being type matching", "Reason strategy classes", "JTAS protocol"]
},
{
"id": "cascade-diamond",
"demo": "loan-application",
"level": "advanced",
"flow": "Input -> Final (with two Moments converging via #[Inject])",
"classes": { "input": 1, "being": 0, "moment": 2, "final": 1 },
"entryFiles": ["demos/loan-application/src/Input/LoanInput.php"],
"finalFiles": ["demos/loan-application/src/Final/LoanApproved.php"],
"keyConcepts": ["staged Moment realization", "collateral and insurance convergence"]
},
{
"id": "complex-convergence",
"demo": "insurance-claim",
"level": "advanced",
"flow": "Input(A) + Input(B) -> Final(A) | Final(B) (each Final injects four Moments)",
"classes": { "input": 2, "being": 0, "moment": 5, "final": 2 },
"entryFiles": [
"demos/insurance-claim/src/Input/ClaimInput.php",
"demos/insurance-claim/src/Input/PolicyInput.php"
],
"finalFiles": [
"demos/insurance-claim/src/Final/ClaimSettled.php",
"demos/insurance-claim/src/Final/ClaimEscalated.php"
],
"keyConcepts": ["multi-input convergence", "shared Moments across branching Finals", "fraud screening"]
}
]
}