@x12i/memorix-docs 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/bundle.d.ts +4849 -3
- package/dist/generated/bundle.d.ts.map +1 -1
- package/dist/generated/bundle.js +7580 -45
- package/dist/generated/bundle.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/files/INDEX.md +84 -0
- package/files/SEARCH.json +3087 -0
- package/files/agent-manifest.json +1785 -0
- package/files/apis/memorix-records/overview.md +22 -0
- package/files/concepts/abstracts-bindings.md +27 -0
- package/files/concepts/agents-inheritance.md +28 -0
- package/files/concepts/analysis-objects.md +26 -0
- package/files/concepts/composition.md +27 -0
- package/files/concepts/decisions-content.md +27 -0
- package/files/concepts/effective-metadata.md +27 -0
- package/files/concepts/explicit-metadata-installation.md +26 -0
- package/files/concepts/intelligence-proposals.md +27 -0
- package/files/concepts/mappings-transforms.md +26 -0
- package/files/concepts/object-content-category.md +26 -0
- package/files/concepts/org-agent-scope.md +27 -0
- package/files/concepts/people-union.md +27 -0
- package/files/concepts/raw-records.md +26 -0
- package/files/concepts/record-revisions.md +26 -0
- package/files/concepts/relationship-definitions.md +26 -0
- package/files/concepts/relationship-references.md +27 -0
- package/files/concepts/resolved-unresolved.md +27 -0
- package/files/concepts/sources-and-memory.md +26 -0
- package/files/concepts/traversal.md +27 -0
- package/files/diagrams/agent-inheritance.md +34 -0
- package/files/diagrams/intelligence-journey.md +38 -0
- package/files/diagrams/memorix-central-journey.md +51 -0
- package/files/diagrams/metadata-lifecycle.md +40 -0
- package/files/diagrams/people-union-diagram.md +36 -0
- package/files/diagrams/record-content-model.md +43 -0
- package/files/diagrams/relationship-traversal.md +40 -0
- package/files/diagrams/revision-safe-write.md +39 -0
- package/files/examples/analysis-decision-records.md +11 -0
- package/files/examples/memorix-record-envelope.md +11 -0
- package/files/examples/metadata-pack-install.md +11 -0
- package/files/examples/people-abstract-query.md +11 -0
- package/files/examples/raw-vs-composed.md +11 -0
- package/files/examples/relationship-def-and-ref.md +11 -0
- package/files/examples/revision-conflict-response.md +11 -0
- package/files/examples/revision-safe-write.md +11 -0
- package/files/examples/traversal-resolved-unresolved.md +11 -0
- package/files/glossary/abstract.md +9 -0
- package/files/glossary/agent.md +9 -0
- package/files/glossary/analysis.md +9 -0
- package/files/glossary/binding.md +9 -0
- package/files/glossary/composition.md +9 -0
- package/files/glossary/content-type.md +9 -0
- package/files/glossary/data-category.md +9 -0
- package/files/glossary/decision.md +9 -0
- package/files/glossary/effective-metadata.md +9 -0
- package/files/glossary/intelligence-proposal.md +9 -0
- package/files/glossary/mapping.md +9 -0
- package/files/glossary/memory.md +9 -0
- package/files/glossary/object-type.md +9 -0
- package/files/glossary/relationship-definition.md +9 -0
- package/files/glossary/relationship-reference.md +9 -0
- package/files/glossary/revision.md +9 -0
- package/files/glossary/scope.md +9 -0
- package/files/glossary/source.md +9 -0
- package/files/glossary/traversal.md +9 -0
- package/files/guides/apply-scope.md +40 -0
- package/files/guides/choose-access-method.md +24 -0
- package/files/guides/compose-subject-ui.md +24 -0
- package/files/guides/define-traverse-relationship.md +26 -0
- package/files/guides/diagnose-unresolved.md +24 -0
- package/files/guides/evidence-to-decision.md +25 -0
- package/files/guides/first-revision-safe-write.md +30 -0
- package/files/guides/inspect-effective-metadata.md +30 -0
- package/files/guides/query-people-abstract.md +25 -0
- package/files/guides/reload-retry-conflict.md +32 -0
- package/files/guides/validate-install-pack.md +32 -0
- package/files/indexes/books.json +95 -0
- package/files/indexes/books.md +17 -0
- package/files/indexes/concepts.json +119 -0
- package/files/indexes/concepts.md +21 -0
- package/files/indexes/diagrams.json +53 -0
- package/files/indexes/diagrams.md +10 -0
- package/files/indexes/guides.json +71 -0
- package/files/indexes/guides.md +13 -0
- package/files/indexes/scenarios.json +41 -0
- package/files/indexes/scenarios.md +8 -0
- package/files/indexes/tutorials.json +47 -0
- package/files/indexes/tutorials.md +9 -0
- package/files/indexes/use-cases.json +239 -0
- package/files/indexes/use-cases.md +41 -0
- package/files/knowledge.json +2940 -0
- package/files/packs/concept/abstracts-bindings/PACK.md +11 -0
- package/files/packs/concept/abstracts-bindings/pack.json +13 -0
- package/files/packs/concept/agents-inheritance/PACK.md +11 -0
- package/files/packs/concept/agents-inheritance/pack.json +13 -0
- package/files/packs/concept/analysis-objects/PACK.md +11 -0
- package/files/packs/concept/analysis-objects/pack.json +14 -0
- package/files/packs/concept/composition/PACK.md +11 -0
- package/files/packs/concept/composition/pack.json +13 -0
- package/files/packs/concept/decisions-content/PACK.md +11 -0
- package/files/packs/concept/decisions-content/pack.json +13 -0
- package/files/packs/concept/effective-metadata/PACK.md +11 -0
- package/files/packs/concept/effective-metadata/pack.json +13 -0
- package/files/packs/concept/explicit-metadata-installation/PACK.md +11 -0
- package/files/packs/concept/explicit-metadata-installation/pack.json +14 -0
- package/files/packs/concept/intelligence-proposals/PACK.md +11 -0
- package/files/packs/concept/intelligence-proposals/pack.json +13 -0
- package/files/packs/concept/mappings-transforms/PACK.md +11 -0
- package/files/packs/concept/mappings-transforms/pack.json +13 -0
- package/files/packs/concept/object-content-category/PACK.md +11 -0
- package/files/packs/concept/object-content-category/pack.json +14 -0
- package/files/packs/concept/org-agent-scope/PACK.md +11 -0
- package/files/packs/concept/org-agent-scope/pack.json +14 -0
- package/files/packs/concept/people-union/PACK.md +11 -0
- package/files/packs/concept/people-union/pack.json +13 -0
- package/files/packs/concept/raw-records/PACK.md +11 -0
- package/files/packs/concept/raw-records/pack.json +14 -0
- package/files/packs/concept/record-revisions/PACK.md +11 -0
- package/files/packs/concept/record-revisions/pack.json +13 -0
- package/files/packs/concept/relationship-definitions/PACK.md +11 -0
- package/files/packs/concept/relationship-definitions/pack.json +14 -0
- package/files/packs/concept/relationship-references/PACK.md +11 -0
- package/files/packs/concept/relationship-references/pack.json +13 -0
- package/files/packs/concept/resolved-unresolved/PACK.md +11 -0
- package/files/packs/concept/resolved-unresolved/pack.json +13 -0
- package/files/packs/concept/sources-and-memory/PACK.md +11 -0
- package/files/packs/concept/sources-and-memory/pack.json +13 -0
- package/files/packs/concept/traversal/PACK.md +11 -0
- package/files/packs/concept/traversal/pack.json +13 -0
- package/files/packs/guide/apply-scope/PACK.md +11 -0
- package/files/packs/guide/apply-scope/pack.json +13 -0
- package/files/packs/guide/choose-access-method/PACK.md +11 -0
- package/files/packs/guide/choose-access-method/pack.json +15 -0
- package/files/packs/guide/compose-subject-ui/PACK.md +11 -0
- package/files/packs/guide/compose-subject-ui/pack.json +13 -0
- package/files/packs/guide/define-traverse-relationship/PACK.md +11 -0
- package/files/packs/guide/define-traverse-relationship/pack.json +14 -0
- package/files/packs/guide/diagnose-unresolved/PACK.md +11 -0
- package/files/packs/guide/diagnose-unresolved/pack.json +13 -0
- package/files/packs/guide/evidence-to-decision/PACK.md +11 -0
- package/files/packs/guide/evidence-to-decision/pack.json +14 -0
- package/files/packs/guide/first-revision-safe-write/PACK.md +11 -0
- package/files/packs/guide/first-revision-safe-write/pack.json +13 -0
- package/files/packs/guide/inspect-effective-metadata/PACK.md +11 -0
- package/files/packs/guide/inspect-effective-metadata/pack.json +13 -0
- package/files/packs/guide/query-people-abstract/PACK.md +11 -0
- package/files/packs/guide/query-people-abstract/pack.json +13 -0
- package/files/packs/guide/reload-retry-conflict/PACK.md +11 -0
- package/files/packs/guide/reload-retry-conflict/pack.json +13 -0
- package/files/packs/guide/validate-install-pack/PACK.md +11 -0
- package/files/packs/guide/validate-install-pack/pack.json +13 -0
- package/files/packs/scenario/choose-subject-view/PACK.md +11 -0
- package/files/packs/scenario/choose-subject-view/pack.json +11 -0
- package/files/packs/scenario/pack-valid-not-installed/PACK.md +11 -0
- package/files/packs/scenario/pack-valid-not-installed/pack.json +11 -0
- package/files/packs/scenario/scope-mismatch/PACK.md +11 -0
- package/files/packs/scenario/scope-mismatch/pack.json +11 -0
- package/files/packs/scenario/stale-revision-conflict/PACK.md +11 -0
- package/files/packs/scenario/stale-revision-conflict/pack.json +11 -0
- package/files/packs/scenario/traversal-direction/PACK.md +11 -0
- package/files/packs/scenario/traversal-direction/pack.json +11 -0
- package/files/packs/scenario/unresolved-relationship/PACK.md +11 -0
- package/files/packs/scenario/unresolved-relationship/pack.json +11 -0
- package/files/packs/tutorial/analysis-decision-lab/PACK.md +11 -0
- package/files/packs/tutorial/analysis-decision-lab/pack.json +14 -0
- package/files/packs/tutorial/compare-views/PACK.md +11 -0
- package/files/packs/tutorial/compare-views/pack.json +14 -0
- package/files/packs/tutorial/conflict-lab/PACK.md +11 -0
- package/files/packs/tutorial/conflict-lab/pack.json +13 -0
- package/files/packs/tutorial/first-revision-safe-record/PACK.md +11 -0
- package/files/packs/tutorial/first-revision-safe-record/pack.json +13 -0
- package/files/packs/tutorial/install-pack-lab/PACK.md +11 -0
- package/files/packs/tutorial/install-pack-lab/pack.json +13 -0
- package/files/packs/tutorial/relationships-lab/PACK.md +11 -0
- package/files/packs/tutorial/relationships-lab/pack.json +13 -0
- package/files/packs/tutorial/start-with-sample-data/PACK.md +11 -0
- package/files/packs/tutorial/start-with-sample-data/pack.json +13 -0
- package/files/sample-data/memorix-synthetic-basic.md +13 -0
- package/files/scenarios/choose-subject-view.md +36 -0
- package/files/scenarios/pack-valid-not-installed.md +33 -0
- package/files/scenarios/scope-mismatch.md +44 -0
- package/files/scenarios/stale-revision-conflict.md +38 -0
- package/files/scenarios/traversal-direction.md +30 -0
- package/files/scenarios/unresolved-relationship.md +31 -0
- package/files/tutorials/analysis-decision-lab.md +18 -0
- package/files/tutorials/compare-views.md +22 -0
- package/files/tutorials/conflict-lab.md +18 -0
- package/files/tutorials/first-revision-safe-record.md +18 -0
- package/files/tutorials/install-pack-lab.md +22 -0
- package/files/tutorials/relationships-lab.md +18 -0
- package/files/tutorials/start-with-sample-data.md +18 -0
- package/files/ui/clients/memorix-studio.md +9 -0
- package/files/use-cases/abstract-people-list.md +237 -0
- package/files/use-cases/ai-pipeline-fail-closed.md +117 -0
- package/files/use-cases/author-pipeline-e2e.md +339 -0
- package/files/use-cases/build-callable-service.md +347 -0
- package/files/use-cases/builder-acceptance-ops.md +112 -0
- package/files/use-cases/choose-access-method.md +111 -0
- package/files/use-cases/client-first-read-write.md +374 -0
- package/files/use-cases/compose-for-ui.md +97 -0
- package/files/use-cases/custom-kind-descriptors.md +137 -0
- package/files/use-cases/data-journey-evidence.md +115 -0
- package/files/use-cases/discriminated-content-writes.md +152 -0
- package/files/use-cases/embed-studio-host.md +165 -0
- package/files/use-cases/four-field-links.md +246 -0
- package/files/use-cases/http-process-compliance.md +225 -0
- package/files/use-cases/install-metadata-pack.md +180 -0
- package/files/use-cases/intelligence-propose-install.md +163 -0
- package/files/use-cases/knowx-claims-review.md +396 -0
- package/files/use-cases/learn-record-envelope.md +233 -0
- package/files/use-cases/lists-cursors-pagination.md +196 -0
- package/files/use-cases/local-acceptance-g12ops.md +160 -0
- package/files/use-cases/memory-hourly-ingest.md +276 -0
- package/files/use-cases/metadata-before-write.md +145 -0
- package/files/use-cases/migrate-associated-star.md +159 -0
- package/files/use-cases/openapi-typed-client.md +78 -0
- package/files/use-cases/ops-pack-fixtures.md +168 -0
- package/files/use-cases/orient-platform.md +172 -0
- package/files/use-cases/pipeline-retry-evidence.md +121 -0
- package/files/use-cases/relationship-rebuild-verify.md +128 -0
- package/files/use-cases/revision-stale-conflicts.md +194 -0
- package/files/use-cases/start-from-zero.md +171 -0
- package/files/use-cases/studio-design-types.md +122 -0
- package/files/use-cases/studio-explore-subject.md +89 -0
- package/files/use-cases/studio-operate-pipelines.md +100 -0
- package/files/use-cases/studio-review-intelligence.md +74 -0
- package/files/use-cases/studio-scope-isolation.md +67 -0
- package/files/use-cases/studio-stale-conflict-ui.md +54 -0
- package/files/use-cases/troubleshoot-http-matrix.md +164 -0
- package/files/use-cases/trusted-in-process-embed.md +94 -0
- package/files/use-cases/workflow-sibling-api.md +212 -0
- package/files/visuals/revision-conflict.md +19 -0
- package/files/visuals/scope-apply.md +19 -0
- package/package.json +4 -3
|
@@ -0,0 +1,2940 @@
|
|
|
1
|
+
{
|
|
2
|
+
"concepts": [
|
|
3
|
+
{
|
|
4
|
+
"summary": "Scope selects which organization and agent context reads and writes apply to.",
|
|
5
|
+
"problem": "Acting without explicit scope can touch the wrong workspace.",
|
|
6
|
+
"why": "Memorix isolates tenants and agent inheritance behind deliberate scope selection.",
|
|
7
|
+
"mentalModel": "Scope is a workspace lock, not decoration.",
|
|
8
|
+
"audiences": [
|
|
9
|
+
"developers",
|
|
10
|
+
"builders"
|
|
11
|
+
],
|
|
12
|
+
"whenItMatters": [],
|
|
13
|
+
"whenNotToUse": [],
|
|
14
|
+
"prerequisites": [],
|
|
15
|
+
"related": [
|
|
16
|
+
"agents-inheritance",
|
|
17
|
+
"effective-metadata"
|
|
18
|
+
],
|
|
19
|
+
"next": [
|
|
20
|
+
"agents-inheritance"
|
|
21
|
+
],
|
|
22
|
+
"exampleIds": [],
|
|
23
|
+
"commonMistakes": [],
|
|
24
|
+
"successCriteria": [],
|
|
25
|
+
"invariants": [],
|
|
26
|
+
"alternatives": [],
|
|
27
|
+
"tags": [
|
|
28
|
+
"scope"
|
|
29
|
+
],
|
|
30
|
+
"id": "org-agent-scope",
|
|
31
|
+
"type": "concept",
|
|
32
|
+
"title": "Organization and agent scope",
|
|
33
|
+
"visualIds": [],
|
|
34
|
+
"diagramIds": [],
|
|
35
|
+
"referenceIds": []
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"summary": "Child agents inherit definitions; Studio shows the effective result.",
|
|
39
|
+
"problem": "Reading only local files hides parent contributions and conflicts.",
|
|
40
|
+
"why": "Inheritance keeps shared definitions DRY while allowing replacement and additive behavior.",
|
|
41
|
+
"mentalModel": "Oldest-parent-first resolution into an effective model.",
|
|
42
|
+
"audiences": [
|
|
43
|
+
"developers",
|
|
44
|
+
"builders"
|
|
45
|
+
],
|
|
46
|
+
"whenItMatters": [],
|
|
47
|
+
"whenNotToUse": [],
|
|
48
|
+
"prerequisites": [
|
|
49
|
+
"org-agent-scope"
|
|
50
|
+
],
|
|
51
|
+
"related": [
|
|
52
|
+
"effective-metadata"
|
|
53
|
+
],
|
|
54
|
+
"next": [
|
|
55
|
+
"effective-metadata"
|
|
56
|
+
],
|
|
57
|
+
"exampleIds": [],
|
|
58
|
+
"commonMistakes": [],
|
|
59
|
+
"successCriteria": [],
|
|
60
|
+
"invariants": [],
|
|
61
|
+
"alternatives": [],
|
|
62
|
+
"tags": [
|
|
63
|
+
"agents"
|
|
64
|
+
],
|
|
65
|
+
"id": "agents-inheritance",
|
|
66
|
+
"type": "concept",
|
|
67
|
+
"title": "Agents and inheritance",
|
|
68
|
+
"visualIds": [],
|
|
69
|
+
"diagramIds": [],
|
|
70
|
+
"referenceIds": []
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"summary": "Sources feed Memory; Memory holds durable product records.",
|
|
74
|
+
"problem": "Without a clear boundary, pipelines and storage blur.",
|
|
75
|
+
"why": "Separating ingest from durable memory keeps provenance and retries understandable.",
|
|
76
|
+
"mentalModel": "Source → validated content → Memory record.",
|
|
77
|
+
"audiences": [
|
|
78
|
+
"developers",
|
|
79
|
+
"builders"
|
|
80
|
+
],
|
|
81
|
+
"whenItMatters": [],
|
|
82
|
+
"whenNotToUse": [],
|
|
83
|
+
"prerequisites": [],
|
|
84
|
+
"related": [
|
|
85
|
+
"raw-records"
|
|
86
|
+
],
|
|
87
|
+
"next": [],
|
|
88
|
+
"exampleIds": [],
|
|
89
|
+
"commonMistakes": [],
|
|
90
|
+
"successCriteria": [],
|
|
91
|
+
"invariants": [],
|
|
92
|
+
"alternatives": [],
|
|
93
|
+
"tags": [
|
|
94
|
+
"memory"
|
|
95
|
+
],
|
|
96
|
+
"id": "sources-and-memory",
|
|
97
|
+
"type": "concept",
|
|
98
|
+
"title": "Sources and Memory",
|
|
99
|
+
"visualIds": [],
|
|
100
|
+
"diagramIds": [],
|
|
101
|
+
"referenceIds": []
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"summary": "Identity, payload shape, and category are separate axes.",
|
|
105
|
+
"problem": "Collapsing them forces brittle one-size schemas.",
|
|
106
|
+
"why": "Memorix needs the same subject to carry multiple content shapes over time.",
|
|
107
|
+
"mentalModel": "Object identity × content type × category.",
|
|
108
|
+
"audiences": [
|
|
109
|
+
"developers"
|
|
110
|
+
],
|
|
111
|
+
"whenItMatters": [],
|
|
112
|
+
"whenNotToUse": [],
|
|
113
|
+
"prerequisites": [],
|
|
114
|
+
"related": [
|
|
115
|
+
"raw-records",
|
|
116
|
+
"composition"
|
|
117
|
+
],
|
|
118
|
+
"next": [],
|
|
119
|
+
"exampleIds": [],
|
|
120
|
+
"commonMistakes": [],
|
|
121
|
+
"successCriteria": [],
|
|
122
|
+
"invariants": [],
|
|
123
|
+
"alternatives": [],
|
|
124
|
+
"tags": [
|
|
125
|
+
"model"
|
|
126
|
+
],
|
|
127
|
+
"id": "object-content-category",
|
|
128
|
+
"type": "concept",
|
|
129
|
+
"title": "Object type, content type, and data category",
|
|
130
|
+
"visualIds": [],
|
|
131
|
+
"diagramIds": [],
|
|
132
|
+
"referenceIds": []
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"summary": "Validation does not install; installation requires confirmation.",
|
|
136
|
+
"problem": "Auto-applying packs or proposals would silently change runtime behavior.",
|
|
137
|
+
"why": "Reviewable, deterministic, reversible configuration changes.",
|
|
138
|
+
"mentalModel": "Treat metadata packs like deployments.",
|
|
139
|
+
"audiences": [
|
|
140
|
+
"builders",
|
|
141
|
+
"developers"
|
|
142
|
+
],
|
|
143
|
+
"whenItMatters": [],
|
|
144
|
+
"whenNotToUse": [],
|
|
145
|
+
"prerequisites": [],
|
|
146
|
+
"related": [
|
|
147
|
+
"intelligence-proposals",
|
|
148
|
+
"effective-metadata"
|
|
149
|
+
],
|
|
150
|
+
"next": [],
|
|
151
|
+
"exampleIds": [],
|
|
152
|
+
"commonMistakes": [],
|
|
153
|
+
"successCriteria": [],
|
|
154
|
+
"invariants": [
|
|
155
|
+
"Intelligence proposals never auto-install"
|
|
156
|
+
],
|
|
157
|
+
"alternatives": [],
|
|
158
|
+
"tags": [
|
|
159
|
+
"metadata"
|
|
160
|
+
],
|
|
161
|
+
"id": "explicit-metadata-installation",
|
|
162
|
+
"type": "concept",
|
|
163
|
+
"title": "Explicit metadata validation and installation",
|
|
164
|
+
"visualIds": [],
|
|
165
|
+
"diagramIds": [],
|
|
166
|
+
"referenceIds": []
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"summary": "The resolved definitions after inheritance and installation.",
|
|
170
|
+
"problem": "Authors confuse source files with what the runtime actually uses.",
|
|
171
|
+
"why": "Readers and writers must see the effective model before mutating data.",
|
|
172
|
+
"mentalModel": "Installed + inherited → effective.",
|
|
173
|
+
"audiences": [
|
|
174
|
+
"developers",
|
|
175
|
+
"builders"
|
|
176
|
+
],
|
|
177
|
+
"whenItMatters": [],
|
|
178
|
+
"whenNotToUse": [],
|
|
179
|
+
"prerequisites": [
|
|
180
|
+
"explicit-metadata-installation",
|
|
181
|
+
"agents-inheritance"
|
|
182
|
+
],
|
|
183
|
+
"related": [
|
|
184
|
+
"org-agent-scope"
|
|
185
|
+
],
|
|
186
|
+
"next": [],
|
|
187
|
+
"exampleIds": [],
|
|
188
|
+
"commonMistakes": [],
|
|
189
|
+
"successCriteria": [],
|
|
190
|
+
"invariants": [],
|
|
191
|
+
"alternatives": [],
|
|
192
|
+
"tags": [
|
|
193
|
+
"metadata"
|
|
194
|
+
],
|
|
195
|
+
"id": "effective-metadata",
|
|
196
|
+
"type": "concept",
|
|
197
|
+
"title": "Effective metadata",
|
|
198
|
+
"visualIds": [],
|
|
199
|
+
"diagramIds": [],
|
|
200
|
+
"referenceIds": []
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"summary": "An abstract is a virtual union projected through bindings — not stored rows.",
|
|
204
|
+
"problem": "Callers otherwise duplicate union queries across concrete types.",
|
|
205
|
+
"why": "Abstracts give stable read models without denormalizing storage.",
|
|
206
|
+
"mentalModel": "Bindings map concrete members into an abstract projection.",
|
|
207
|
+
"audiences": [
|
|
208
|
+
"developers",
|
|
209
|
+
"builders"
|
|
210
|
+
],
|
|
211
|
+
"whenItMatters": [],
|
|
212
|
+
"whenNotToUse": [],
|
|
213
|
+
"prerequisites": [],
|
|
214
|
+
"related": [
|
|
215
|
+
"people-union"
|
|
216
|
+
],
|
|
217
|
+
"next": [
|
|
218
|
+
"people-union"
|
|
219
|
+
],
|
|
220
|
+
"exampleIds": [],
|
|
221
|
+
"commonMistakes": [],
|
|
222
|
+
"successCriteria": [],
|
|
223
|
+
"invariants": [],
|
|
224
|
+
"alternatives": [],
|
|
225
|
+
"tags": [
|
|
226
|
+
"abstracts"
|
|
227
|
+
],
|
|
228
|
+
"id": "abstracts-bindings",
|
|
229
|
+
"type": "concept",
|
|
230
|
+
"title": "Abstracts and bindings",
|
|
231
|
+
"visualIds": [],
|
|
232
|
+
"diagramIds": [],
|
|
233
|
+
"referenceIds": []
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"summary": "People combines employees and contractors through explicit bindings.",
|
|
237
|
+
"problem": "UIs need one people list without merging tables by hand.",
|
|
238
|
+
"why": "Abstract projection preserves concrete types while enabling combined reads.",
|
|
239
|
+
"mentalModel": "employees ∪ contractors → People.",
|
|
240
|
+
"audiences": [
|
|
241
|
+
"developers",
|
|
242
|
+
"builders"
|
|
243
|
+
],
|
|
244
|
+
"whenItMatters": [],
|
|
245
|
+
"whenNotToUse": [],
|
|
246
|
+
"prerequisites": [
|
|
247
|
+
"abstracts-bindings"
|
|
248
|
+
],
|
|
249
|
+
"related": [
|
|
250
|
+
"composition"
|
|
251
|
+
],
|
|
252
|
+
"next": [],
|
|
253
|
+
"exampleIds": [],
|
|
254
|
+
"commonMistakes": [],
|
|
255
|
+
"successCriteria": [],
|
|
256
|
+
"invariants": [],
|
|
257
|
+
"alternatives": [],
|
|
258
|
+
"tags": [
|
|
259
|
+
"abstracts"
|
|
260
|
+
],
|
|
261
|
+
"id": "people-union",
|
|
262
|
+
"type": "concept",
|
|
263
|
+
"title": "People union",
|
|
264
|
+
"visualIds": [],
|
|
265
|
+
"diagramIds": [],
|
|
266
|
+
"referenceIds": []
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"summary": "Mappings describe how source shapes become Memory content.",
|
|
270
|
+
"problem": "Ad-hoc transforms hide field provenance.",
|
|
271
|
+
"why": "Explicit mappings make validation and recovery possible.",
|
|
272
|
+
"mentalModel": "Declared mapping, not implicit guesswork.",
|
|
273
|
+
"audiences": [
|
|
274
|
+
"developers"
|
|
275
|
+
],
|
|
276
|
+
"whenItMatters": [],
|
|
277
|
+
"whenNotToUse": [],
|
|
278
|
+
"prerequisites": [],
|
|
279
|
+
"related": [
|
|
280
|
+
"raw-records"
|
|
281
|
+
],
|
|
282
|
+
"next": [],
|
|
283
|
+
"exampleIds": [],
|
|
284
|
+
"commonMistakes": [],
|
|
285
|
+
"successCriteria": [],
|
|
286
|
+
"invariants": [],
|
|
287
|
+
"alternatives": [],
|
|
288
|
+
"tags": [
|
|
289
|
+
"mapping"
|
|
290
|
+
],
|
|
291
|
+
"id": "mappings-transforms",
|
|
292
|
+
"type": "concept",
|
|
293
|
+
"title": "Mappings and transforms",
|
|
294
|
+
"visualIds": [],
|
|
295
|
+
"diagramIds": [],
|
|
296
|
+
"referenceIds": []
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"summary": "Raw retains the original payload beside envelope metadata.",
|
|
300
|
+
"problem": "Losing raw makes audits and remapping impossible.",
|
|
301
|
+
"why": "Memorix keeps evidence of what arrived.",
|
|
302
|
+
"mentalModel": "Envelope + raw body; choose views deliberately.",
|
|
303
|
+
"audiences": [
|
|
304
|
+
"developers",
|
|
305
|
+
"builders"
|
|
306
|
+
],
|
|
307
|
+
"whenItMatters": [],
|
|
308
|
+
"whenNotToUse": [],
|
|
309
|
+
"prerequisites": [],
|
|
310
|
+
"related": [
|
|
311
|
+
"composition",
|
|
312
|
+
"object-content-category"
|
|
313
|
+
],
|
|
314
|
+
"next": [],
|
|
315
|
+
"exampleIds": [],
|
|
316
|
+
"commonMistakes": [],
|
|
317
|
+
"successCriteria": [],
|
|
318
|
+
"invariants": [],
|
|
319
|
+
"alternatives": [],
|
|
320
|
+
"tags": [
|
|
321
|
+
"records"
|
|
322
|
+
],
|
|
323
|
+
"id": "raw-records",
|
|
324
|
+
"type": "concept",
|
|
325
|
+
"title": "Raw records",
|
|
326
|
+
"visualIds": [],
|
|
327
|
+
"diagramIds": [],
|
|
328
|
+
"referenceIds": []
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"summary": "Multiple content instances can belong to one subject when composition is explicit.",
|
|
332
|
+
"problem": "Callers otherwise assume one row per subject.",
|
|
333
|
+
"why": "Subjects accumulate history and alternate content types.",
|
|
334
|
+
"mentalModel": "Subject → composed bag of content instances.",
|
|
335
|
+
"audiences": [
|
|
336
|
+
"developers",
|
|
337
|
+
"builders"
|
|
338
|
+
],
|
|
339
|
+
"whenItMatters": [],
|
|
340
|
+
"whenNotToUse": [],
|
|
341
|
+
"prerequisites": [
|
|
342
|
+
"raw-records"
|
|
343
|
+
],
|
|
344
|
+
"related": [
|
|
345
|
+
"people-union"
|
|
346
|
+
],
|
|
347
|
+
"next": [],
|
|
348
|
+
"exampleIds": [],
|
|
349
|
+
"commonMistakes": [],
|
|
350
|
+
"successCriteria": [],
|
|
351
|
+
"invariants": [],
|
|
352
|
+
"alternatives": [],
|
|
353
|
+
"tags": [
|
|
354
|
+
"composition"
|
|
355
|
+
],
|
|
356
|
+
"id": "composition",
|
|
357
|
+
"type": "concept",
|
|
358
|
+
"title": "Same-subject composition",
|
|
359
|
+
"visualIds": [],
|
|
360
|
+
"diagramIds": [],
|
|
361
|
+
"referenceIds": []
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"summary": "A relationship definition is metadata describing allowed links — not a stored edge on a record.",
|
|
365
|
+
"problem": "Confusing definitions with instances breaks traversal expectations.",
|
|
366
|
+
"why": "Definitions make forward/inverse traversal predictable.",
|
|
367
|
+
"mentalModel": "Definition first; references second.",
|
|
368
|
+
"audiences": [
|
|
369
|
+
"developers"
|
|
370
|
+
],
|
|
371
|
+
"whenItMatters": [],
|
|
372
|
+
"whenNotToUse": [],
|
|
373
|
+
"prerequisites": [],
|
|
374
|
+
"related": [
|
|
375
|
+
"relationship-references",
|
|
376
|
+
"traversal"
|
|
377
|
+
],
|
|
378
|
+
"next": [],
|
|
379
|
+
"exampleIds": [],
|
|
380
|
+
"commonMistakes": [],
|
|
381
|
+
"successCriteria": [],
|
|
382
|
+
"invariants": [],
|
|
383
|
+
"alternatives": [],
|
|
384
|
+
"tags": [
|
|
385
|
+
"relationships"
|
|
386
|
+
],
|
|
387
|
+
"id": "relationship-definitions",
|
|
388
|
+
"type": "concept",
|
|
389
|
+
"title": "Relationship definitions",
|
|
390
|
+
"visualIds": [],
|
|
391
|
+
"diagramIds": [],
|
|
392
|
+
"referenceIds": []
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"summary": "Records store relationship references that point at targets under a definition.",
|
|
396
|
+
"problem": "Without stored refs, graphs cannot be rebuilt or verified.",
|
|
397
|
+
"why": "References are the durable facts; definitions are the schema.",
|
|
398
|
+
"mentalModel": "Record holds refs typed by definition id.",
|
|
399
|
+
"audiences": [
|
|
400
|
+
"developers"
|
|
401
|
+
],
|
|
402
|
+
"whenItMatters": [],
|
|
403
|
+
"whenNotToUse": [],
|
|
404
|
+
"prerequisites": [
|
|
405
|
+
"relationship-definitions"
|
|
406
|
+
],
|
|
407
|
+
"related": [
|
|
408
|
+
"resolved-unresolved"
|
|
409
|
+
],
|
|
410
|
+
"next": [],
|
|
411
|
+
"exampleIds": [],
|
|
412
|
+
"commonMistakes": [],
|
|
413
|
+
"successCriteria": [],
|
|
414
|
+
"invariants": [],
|
|
415
|
+
"alternatives": [],
|
|
416
|
+
"tags": [
|
|
417
|
+
"relationships"
|
|
418
|
+
],
|
|
419
|
+
"id": "relationship-references",
|
|
420
|
+
"type": "concept",
|
|
421
|
+
"title": "Stored relationship references",
|
|
422
|
+
"visualIds": [],
|
|
423
|
+
"diagramIds": [],
|
|
424
|
+
"referenceIds": []
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"summary": "Traversal follows definitions forward or inverse, optionally expanding targets.",
|
|
428
|
+
"problem": "Callers guess direction and miss inverse edges.",
|
|
429
|
+
"why": "Explicit direction matches authored relationship semantics.",
|
|
430
|
+
"mentalModel": "Pick definition → direction → expand or not.",
|
|
431
|
+
"audiences": [
|
|
432
|
+
"developers"
|
|
433
|
+
],
|
|
434
|
+
"whenItMatters": [],
|
|
435
|
+
"whenNotToUse": [],
|
|
436
|
+
"prerequisites": [
|
|
437
|
+
"relationship-references"
|
|
438
|
+
],
|
|
439
|
+
"related": [
|
|
440
|
+
"resolved-unresolved"
|
|
441
|
+
],
|
|
442
|
+
"next": [],
|
|
443
|
+
"exampleIds": [],
|
|
444
|
+
"commonMistakes": [],
|
|
445
|
+
"successCriteria": [],
|
|
446
|
+
"invariants": [],
|
|
447
|
+
"alternatives": [],
|
|
448
|
+
"tags": [
|
|
449
|
+
"relationships"
|
|
450
|
+
],
|
|
451
|
+
"id": "traversal",
|
|
452
|
+
"type": "concept",
|
|
453
|
+
"title": "Forward and inverse traversal",
|
|
454
|
+
"visualIds": [],
|
|
455
|
+
"diagramIds": [],
|
|
456
|
+
"referenceIds": []
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"summary": "Unresolved targets are retained and shown — not silently dropped.",
|
|
460
|
+
"problem": "Hiding unresolved links loses operational truth.",
|
|
461
|
+
"why": "Operators need to repair, wait, or escalate deliberately.",
|
|
462
|
+
"mentalModel": "Absence of a target is a first-class state.",
|
|
463
|
+
"audiences": [
|
|
464
|
+
"developers",
|
|
465
|
+
"builders"
|
|
466
|
+
],
|
|
467
|
+
"whenItMatters": [],
|
|
468
|
+
"whenNotToUse": [],
|
|
469
|
+
"prerequisites": [
|
|
470
|
+
"traversal"
|
|
471
|
+
],
|
|
472
|
+
"related": [
|
|
473
|
+
"relationship-references"
|
|
474
|
+
],
|
|
475
|
+
"next": [],
|
|
476
|
+
"exampleIds": [],
|
|
477
|
+
"commonMistakes": [],
|
|
478
|
+
"successCriteria": [],
|
|
479
|
+
"invariants": [],
|
|
480
|
+
"alternatives": [],
|
|
481
|
+
"tags": [
|
|
482
|
+
"relationships"
|
|
483
|
+
],
|
|
484
|
+
"id": "resolved-unresolved",
|
|
485
|
+
"type": "concept",
|
|
486
|
+
"title": "Resolved and unresolved relationships",
|
|
487
|
+
"visualIds": [],
|
|
488
|
+
"diagramIds": [],
|
|
489
|
+
"referenceIds": []
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"summary": "Writes carry an expected revision; stale writers cannot overwrite newer data.",
|
|
493
|
+
"problem": "Lost updates when concurrent writers race.",
|
|
494
|
+
"why": "Revision preconditions preserve newer data and force explicit recovery.",
|
|
495
|
+
"mentalModel": "Load → mutate → write with expected revision → reload on conflict.",
|
|
496
|
+
"audiences": [
|
|
497
|
+
"developers",
|
|
498
|
+
"builders"
|
|
499
|
+
],
|
|
500
|
+
"whenItMatters": [],
|
|
501
|
+
"whenNotToUse": [],
|
|
502
|
+
"prerequisites": [],
|
|
503
|
+
"related": [
|
|
504
|
+
"raw-records"
|
|
505
|
+
],
|
|
506
|
+
"next": [],
|
|
507
|
+
"exampleIds": [],
|
|
508
|
+
"commonMistakes": [],
|
|
509
|
+
"successCriteria": [],
|
|
510
|
+
"invariants": [],
|
|
511
|
+
"alternatives": [],
|
|
512
|
+
"tags": [
|
|
513
|
+
"concurrency"
|
|
514
|
+
],
|
|
515
|
+
"id": "record-revisions",
|
|
516
|
+
"type": "concept",
|
|
517
|
+
"title": "Record revisions and stale-write conflicts",
|
|
518
|
+
"visualIds": [],
|
|
519
|
+
"diagramIds": [],
|
|
520
|
+
"referenceIds": []
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"summary": "Analysis captures evaluated evidence distinct from operational decisions.",
|
|
524
|
+
"problem": "Mixing analysis with decisions hides how conclusions formed.",
|
|
525
|
+
"why": "Separating analysis keeps auditability and replay.",
|
|
526
|
+
"mentalModel": "Evidence → analysis → (later) decision.",
|
|
527
|
+
"audiences": [
|
|
528
|
+
"developers",
|
|
529
|
+
"builders"
|
|
530
|
+
],
|
|
531
|
+
"whenItMatters": [],
|
|
532
|
+
"whenNotToUse": [],
|
|
533
|
+
"prerequisites": [],
|
|
534
|
+
"related": [
|
|
535
|
+
"decisions-content",
|
|
536
|
+
"intelligence-proposals"
|
|
537
|
+
],
|
|
538
|
+
"next": [],
|
|
539
|
+
"exampleIds": [],
|
|
540
|
+
"commonMistakes": [],
|
|
541
|
+
"successCriteria": [],
|
|
542
|
+
"invariants": [],
|
|
543
|
+
"alternatives": [],
|
|
544
|
+
"tags": [
|
|
545
|
+
"analysis"
|
|
546
|
+
],
|
|
547
|
+
"id": "analysis-objects",
|
|
548
|
+
"type": "concept",
|
|
549
|
+
"title": "Analysis objects",
|
|
550
|
+
"visualIds": [],
|
|
551
|
+
"diagramIds": [],
|
|
552
|
+
"referenceIds": []
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"summary": "Decisions record chosen actions distinct from analysis content.",
|
|
556
|
+
"problem": "If decisions are only implied in chats, systems cannot act reliably.",
|
|
557
|
+
"why": "Durable decisions drive workflows and audits.",
|
|
558
|
+
"mentalModel": "Analysis informs; decision commits.",
|
|
559
|
+
"audiences": [
|
|
560
|
+
"developers",
|
|
561
|
+
"builders"
|
|
562
|
+
],
|
|
563
|
+
"whenItMatters": [],
|
|
564
|
+
"whenNotToUse": [],
|
|
565
|
+
"prerequisites": [
|
|
566
|
+
"analysis-objects"
|
|
567
|
+
],
|
|
568
|
+
"related": [
|
|
569
|
+
"intelligence-proposals"
|
|
570
|
+
],
|
|
571
|
+
"next": [],
|
|
572
|
+
"exampleIds": [],
|
|
573
|
+
"commonMistakes": [],
|
|
574
|
+
"successCriteria": [],
|
|
575
|
+
"invariants": [],
|
|
576
|
+
"alternatives": [],
|
|
577
|
+
"tags": [
|
|
578
|
+
"decisions"
|
|
579
|
+
],
|
|
580
|
+
"id": "decisions-content",
|
|
581
|
+
"type": "concept",
|
|
582
|
+
"title": "Decisions",
|
|
583
|
+
"visualIds": [],
|
|
584
|
+
"diagramIds": [],
|
|
585
|
+
"referenceIds": []
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"summary": "Intelligence may propose metadata or actions but never auto-installs them.",
|
|
589
|
+
"problem": "Silent installation would violate reviewability.",
|
|
590
|
+
"why": "Humans remain the confirmation boundary for runtime-changing packs.",
|
|
591
|
+
"mentalModel": "Propose → review → explicit install or reject.",
|
|
592
|
+
"audiences": [
|
|
593
|
+
"builders",
|
|
594
|
+
"developers"
|
|
595
|
+
],
|
|
596
|
+
"whenItMatters": [],
|
|
597
|
+
"whenNotToUse": [],
|
|
598
|
+
"prerequisites": [
|
|
599
|
+
"explicit-metadata-installation"
|
|
600
|
+
],
|
|
601
|
+
"related": [
|
|
602
|
+
"explicit-metadata-installation"
|
|
603
|
+
],
|
|
604
|
+
"next": [],
|
|
605
|
+
"exampleIds": [],
|
|
606
|
+
"commonMistakes": [],
|
|
607
|
+
"successCriteria": [],
|
|
608
|
+
"invariants": [
|
|
609
|
+
"Proposals never auto-install"
|
|
610
|
+
],
|
|
611
|
+
"alternatives": [],
|
|
612
|
+
"tags": [
|
|
613
|
+
"intelligence"
|
|
614
|
+
],
|
|
615
|
+
"id": "intelligence-proposals",
|
|
616
|
+
"type": "concept",
|
|
617
|
+
"title": "Intelligence proposals",
|
|
618
|
+
"visualIds": [],
|
|
619
|
+
"diagramIds": [],
|
|
620
|
+
"referenceIds": []
|
|
621
|
+
}
|
|
622
|
+
],
|
|
623
|
+
"guides": [
|
|
624
|
+
{
|
|
625
|
+
"summary": "Set the workspace scope before reading or writing.",
|
|
626
|
+
"why": "Wrong scope violates isolation.",
|
|
627
|
+
"audiences": [
|
|
628
|
+
"builders",
|
|
629
|
+
"developers"
|
|
630
|
+
],
|
|
631
|
+
"whenItMatters": [],
|
|
632
|
+
"whenNotToUse": [],
|
|
633
|
+
"prerequisites": [],
|
|
634
|
+
"related": [
|
|
635
|
+
"org-agent-scope"
|
|
636
|
+
],
|
|
637
|
+
"next": [],
|
|
638
|
+
"exampleIds": [],
|
|
639
|
+
"commonMistakes": [],
|
|
640
|
+
"successCriteria": [],
|
|
641
|
+
"invariants": [
|
|
642
|
+
"Do not mutate another organization's data"
|
|
643
|
+
],
|
|
644
|
+
"alternatives": [],
|
|
645
|
+
"confirmationRequired": false,
|
|
646
|
+
"tags": [
|
|
647
|
+
"scope"
|
|
648
|
+
],
|
|
649
|
+
"id": "apply-scope",
|
|
650
|
+
"type": "guide",
|
|
651
|
+
"title": "Select and apply organization/agent scope",
|
|
652
|
+
"useWhen": [
|
|
653
|
+
"Entering Studio or an API session"
|
|
654
|
+
],
|
|
655
|
+
"doNotUseWhen": [
|
|
656
|
+
"You already confirmed the active scope matches the task"
|
|
657
|
+
],
|
|
658
|
+
"inputs": [],
|
|
659
|
+
"permissions": [],
|
|
660
|
+
"steps": [
|
|
661
|
+
{
|
|
662
|
+
"id": "choose-org",
|
|
663
|
+
"title": "Choose organization",
|
|
664
|
+
"expectedResult": "Org selected",
|
|
665
|
+
"optional": false
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"id": "choose-agent",
|
|
669
|
+
"title": "Choose agent",
|
|
670
|
+
"expectedResult": "Agent selected",
|
|
671
|
+
"optional": false
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"id": "apply",
|
|
675
|
+
"title": "Apply scope",
|
|
676
|
+
"expectedResult": "UI/API uses that scope",
|
|
677
|
+
"optional": false
|
|
678
|
+
}
|
|
679
|
+
],
|
|
680
|
+
"verification": [
|
|
681
|
+
"Subsequent reads show the expected workspace"
|
|
682
|
+
],
|
|
683
|
+
"recovery": [],
|
|
684
|
+
"tutorialIds": [],
|
|
685
|
+
"referenceIds": [],
|
|
686
|
+
"scenarioIds": []
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"summary": "Confirm effective definitions before mutating records.",
|
|
690
|
+
"why": "Source files alone may not match runtime.",
|
|
691
|
+
"audiences": [
|
|
692
|
+
"developers",
|
|
693
|
+
"builders"
|
|
694
|
+
],
|
|
695
|
+
"whenItMatters": [],
|
|
696
|
+
"whenNotToUse": [],
|
|
697
|
+
"prerequisites": [
|
|
698
|
+
"apply-scope"
|
|
699
|
+
],
|
|
700
|
+
"related": [
|
|
701
|
+
"effective-metadata"
|
|
702
|
+
],
|
|
703
|
+
"next": [],
|
|
704
|
+
"exampleIds": [],
|
|
705
|
+
"commonMistakes": [],
|
|
706
|
+
"successCriteria": [],
|
|
707
|
+
"invariants": [
|
|
708
|
+
"Writes assume the effective model"
|
|
709
|
+
],
|
|
710
|
+
"alternatives": [],
|
|
711
|
+
"tags": [
|
|
712
|
+
"metadata"
|
|
713
|
+
],
|
|
714
|
+
"id": "inspect-effective-metadata",
|
|
715
|
+
"type": "guide",
|
|
716
|
+
"title": "Inspect effective metadata before read/write",
|
|
717
|
+
"useWhen": [],
|
|
718
|
+
"doNotUseWhen": [],
|
|
719
|
+
"inputs": [],
|
|
720
|
+
"permissions": [],
|
|
721
|
+
"steps": [
|
|
722
|
+
{
|
|
723
|
+
"id": "open-effective",
|
|
724
|
+
"title": "Open effective metadata view",
|
|
725
|
+
"expectedResult": "Resolved definitions visible",
|
|
726
|
+
"optional": false
|
|
727
|
+
}
|
|
728
|
+
],
|
|
729
|
+
"verification": [
|
|
730
|
+
"Target object/content types appear as expected"
|
|
731
|
+
],
|
|
732
|
+
"recovery": [],
|
|
733
|
+
"tutorialIds": [],
|
|
734
|
+
"referenceIds": [],
|
|
735
|
+
"scenarioIds": []
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"summary": "Pick the fidelity that matches the caller goal.",
|
|
739
|
+
"why": "Wrong view wastes work or loses detail.",
|
|
740
|
+
"audiences": [
|
|
741
|
+
"developers"
|
|
742
|
+
],
|
|
743
|
+
"whenItMatters": [],
|
|
744
|
+
"whenNotToUse": [],
|
|
745
|
+
"prerequisites": [],
|
|
746
|
+
"related": [
|
|
747
|
+
"raw-records",
|
|
748
|
+
"composition",
|
|
749
|
+
"people-union"
|
|
750
|
+
],
|
|
751
|
+
"next": [],
|
|
752
|
+
"exampleIds": [],
|
|
753
|
+
"commonMistakes": [],
|
|
754
|
+
"successCriteria": [],
|
|
755
|
+
"invariants": [],
|
|
756
|
+
"alternatives": [],
|
|
757
|
+
"tags": [
|
|
758
|
+
"access"
|
|
759
|
+
],
|
|
760
|
+
"id": "choose-access-method",
|
|
761
|
+
"type": "guide",
|
|
762
|
+
"title": "Choose raw, composed, or abstract access",
|
|
763
|
+
"useWhen": [],
|
|
764
|
+
"doNotUseWhen": [],
|
|
765
|
+
"inputs": [],
|
|
766
|
+
"permissions": [],
|
|
767
|
+
"steps": [
|
|
768
|
+
{
|
|
769
|
+
"id": "decide",
|
|
770
|
+
"title": "Match goal to raw vs composition vs abstract",
|
|
771
|
+
"expectedResult": "Access method chosen",
|
|
772
|
+
"optional": false
|
|
773
|
+
}
|
|
774
|
+
],
|
|
775
|
+
"verification": [
|
|
776
|
+
"Response shape matches the chosen view"
|
|
777
|
+
],
|
|
778
|
+
"recovery": [],
|
|
779
|
+
"tutorialIds": [],
|
|
780
|
+
"referenceIds": [],
|
|
781
|
+
"scenarioIds": []
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"summary": "Read a record, write with expected revision, verify.",
|
|
785
|
+
"why": "Revision preconditions prevent lost updates.",
|
|
786
|
+
"audiences": [
|
|
787
|
+
"developers"
|
|
788
|
+
],
|
|
789
|
+
"whenItMatters": [],
|
|
790
|
+
"whenNotToUse": [],
|
|
791
|
+
"prerequisites": [],
|
|
792
|
+
"related": [
|
|
793
|
+
"record-revisions"
|
|
794
|
+
],
|
|
795
|
+
"next": [],
|
|
796
|
+
"exampleIds": [],
|
|
797
|
+
"commonMistakes": [],
|
|
798
|
+
"successCriteria": [],
|
|
799
|
+
"invariants": [
|
|
800
|
+
"Never omit expected revision on conditional writes"
|
|
801
|
+
],
|
|
802
|
+
"alternatives": [],
|
|
803
|
+
"tags": [
|
|
804
|
+
"concurrency"
|
|
805
|
+
],
|
|
806
|
+
"id": "first-revision-safe-write",
|
|
807
|
+
"type": "guide",
|
|
808
|
+
"title": "Perform a first revision-safe read/write",
|
|
809
|
+
"useWhen": [],
|
|
810
|
+
"doNotUseWhen": [],
|
|
811
|
+
"inputs": [],
|
|
812
|
+
"permissions": [],
|
|
813
|
+
"steps": [
|
|
814
|
+
{
|
|
815
|
+
"id": "read",
|
|
816
|
+
"title": "Read current record and revision",
|
|
817
|
+
"expectedResult": "Revision N known",
|
|
818
|
+
"optional": false
|
|
819
|
+
},
|
|
820
|
+
{
|
|
821
|
+
"id": "write",
|
|
822
|
+
"title": "Write with expected revision N",
|
|
823
|
+
"expectedResult": "Success or conflict",
|
|
824
|
+
"optional": false
|
|
825
|
+
}
|
|
826
|
+
],
|
|
827
|
+
"verification": [
|
|
828
|
+
"Record shows revision N+1 on success"
|
|
829
|
+
],
|
|
830
|
+
"recovery": [
|
|
831
|
+
"On conflict, follow reload-and-retry guide"
|
|
832
|
+
],
|
|
833
|
+
"tutorialIds": [],
|
|
834
|
+
"referenceIds": [],
|
|
835
|
+
"scenarioIds": []
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"summary": "Recover safely when a stale write is rejected.",
|
|
839
|
+
"why": "The record was not mutated; retry from current state.",
|
|
840
|
+
"audiences": [
|
|
841
|
+
"developers"
|
|
842
|
+
],
|
|
843
|
+
"whenItMatters": [],
|
|
844
|
+
"whenNotToUse": [],
|
|
845
|
+
"prerequisites": [],
|
|
846
|
+
"related": [
|
|
847
|
+
"record-revisions"
|
|
848
|
+
],
|
|
849
|
+
"next": [],
|
|
850
|
+
"exampleIds": [],
|
|
851
|
+
"commonMistakes": [],
|
|
852
|
+
"successCriteria": [],
|
|
853
|
+
"invariants": [
|
|
854
|
+
"Do not force overwrite without comparing meaning"
|
|
855
|
+
],
|
|
856
|
+
"alternatives": [],
|
|
857
|
+
"confirmationRequired": true,
|
|
858
|
+
"tags": [
|
|
859
|
+
"concurrency"
|
|
860
|
+
],
|
|
861
|
+
"id": "reload-retry-conflict",
|
|
862
|
+
"type": "guide",
|
|
863
|
+
"title": "Reload, compare, and retry after a revision conflict",
|
|
864
|
+
"useWhen": [],
|
|
865
|
+
"doNotUseWhen": [],
|
|
866
|
+
"inputs": [],
|
|
867
|
+
"permissions": [],
|
|
868
|
+
"steps": [
|
|
869
|
+
{
|
|
870
|
+
"id": "reload",
|
|
871
|
+
"title": "Reload current revision",
|
|
872
|
+
"expectedResult": "Fresh envelope",
|
|
873
|
+
"optional": false
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
"id": "compare",
|
|
877
|
+
"title": "Compare intended change to current meaning",
|
|
878
|
+
"expectedResult": "Decision to reapply or escalate",
|
|
879
|
+
"optional": false,
|
|
880
|
+
"confirmationRequired": true
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
"id": "retry",
|
|
884
|
+
"title": "Retry write with new expected revision",
|
|
885
|
+
"expectedResult": "Success or escalate",
|
|
886
|
+
"optional": false
|
|
887
|
+
}
|
|
888
|
+
],
|
|
889
|
+
"verification": [
|
|
890
|
+
"No silent overwrite of newer fields"
|
|
891
|
+
],
|
|
892
|
+
"recovery": [],
|
|
893
|
+
"tutorialIds": [],
|
|
894
|
+
"referenceIds": [],
|
|
895
|
+
"scenarioIds": [
|
|
896
|
+
"stale-revision-conflict"
|
|
897
|
+
]
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"summary": "Validate first, then confirm installation.",
|
|
901
|
+
"why": "Validation alone must not change runtime.",
|
|
902
|
+
"audiences": [
|
|
903
|
+
"builders",
|
|
904
|
+
"developers"
|
|
905
|
+
],
|
|
906
|
+
"whenItMatters": [],
|
|
907
|
+
"whenNotToUse": [],
|
|
908
|
+
"prerequisites": [],
|
|
909
|
+
"related": [
|
|
910
|
+
"explicit-metadata-installation"
|
|
911
|
+
],
|
|
912
|
+
"next": [],
|
|
913
|
+
"exampleIds": [],
|
|
914
|
+
"commonMistakes": [],
|
|
915
|
+
"successCriteria": [],
|
|
916
|
+
"invariants": [
|
|
917
|
+
"Intelligence proposals never auto-install"
|
|
918
|
+
],
|
|
919
|
+
"alternatives": [],
|
|
920
|
+
"confirmationRequired": true,
|
|
921
|
+
"tags": [
|
|
922
|
+
"metadata"
|
|
923
|
+
],
|
|
924
|
+
"id": "validate-install-pack",
|
|
925
|
+
"type": "guide",
|
|
926
|
+
"title": "Validate and explicitly install a metadata pack",
|
|
927
|
+
"useWhen": [],
|
|
928
|
+
"doNotUseWhen": [],
|
|
929
|
+
"inputs": [],
|
|
930
|
+
"permissions": [],
|
|
931
|
+
"steps": [
|
|
932
|
+
{
|
|
933
|
+
"id": "validate",
|
|
934
|
+
"title": "Validate pack",
|
|
935
|
+
"expectedResult": "Validation report",
|
|
936
|
+
"optional": false
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"id": "confirm",
|
|
940
|
+
"title": "Confirm install",
|
|
941
|
+
"expectedResult": "User confirms",
|
|
942
|
+
"optional": false,
|
|
943
|
+
"confirmationRequired": true
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
"id": "install",
|
|
947
|
+
"title": "Install pack",
|
|
948
|
+
"expectedResult": "Effective metadata updates",
|
|
949
|
+
"optional": false
|
|
950
|
+
}
|
|
951
|
+
],
|
|
952
|
+
"verification": [
|
|
953
|
+
"Effective metadata reflects the pack"
|
|
954
|
+
],
|
|
955
|
+
"recovery": [],
|
|
956
|
+
"tutorialIds": [],
|
|
957
|
+
"referenceIds": [],
|
|
958
|
+
"scenarioIds": []
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"summary": "Author a definition, store a reference, traverse forward/inverse.",
|
|
962
|
+
"why": "Traversal is only predictable with explicit definitions.",
|
|
963
|
+
"audiences": [
|
|
964
|
+
"developers"
|
|
965
|
+
],
|
|
966
|
+
"whenItMatters": [],
|
|
967
|
+
"whenNotToUse": [],
|
|
968
|
+
"prerequisites": [],
|
|
969
|
+
"related": [
|
|
970
|
+
"relationship-definitions",
|
|
971
|
+
"traversal"
|
|
972
|
+
],
|
|
973
|
+
"next": [],
|
|
974
|
+
"exampleIds": [],
|
|
975
|
+
"commonMistakes": [],
|
|
976
|
+
"successCriteria": [],
|
|
977
|
+
"invariants": [],
|
|
978
|
+
"alternatives": [],
|
|
979
|
+
"tags": [
|
|
980
|
+
"relationships"
|
|
981
|
+
],
|
|
982
|
+
"id": "define-traverse-relationship",
|
|
983
|
+
"type": "guide",
|
|
984
|
+
"title": "Define and traverse a relationship",
|
|
985
|
+
"useWhen": [],
|
|
986
|
+
"doNotUseWhen": [],
|
|
987
|
+
"inputs": [],
|
|
988
|
+
"permissions": [],
|
|
989
|
+
"steps": [
|
|
990
|
+
{
|
|
991
|
+
"id": "define",
|
|
992
|
+
"title": "Author relationship definition",
|
|
993
|
+
"expectedResult": "Definition installed",
|
|
994
|
+
"optional": false
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
"id": "store",
|
|
998
|
+
"title": "Store relationship reference",
|
|
999
|
+
"expectedResult": "Ref on record",
|
|
1000
|
+
"optional": false
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
"id": "traverse",
|
|
1004
|
+
"title": "Traverse with chosen direction",
|
|
1005
|
+
"expectedResult": "Targets returned",
|
|
1006
|
+
"optional": false
|
|
1007
|
+
}
|
|
1008
|
+
],
|
|
1009
|
+
"verification": [
|
|
1010
|
+
"Forward and inverse match the definition"
|
|
1011
|
+
],
|
|
1012
|
+
"recovery": [],
|
|
1013
|
+
"tutorialIds": [],
|
|
1014
|
+
"referenceIds": [],
|
|
1015
|
+
"scenarioIds": []
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
"summary": "Distinguish intentional unresolved from broken targets.",
|
|
1019
|
+
"why": "Unresolved is retained as a first-class state.",
|
|
1020
|
+
"audiences": [
|
|
1021
|
+
"developers",
|
|
1022
|
+
"builders"
|
|
1023
|
+
],
|
|
1024
|
+
"whenItMatters": [],
|
|
1025
|
+
"whenNotToUse": [],
|
|
1026
|
+
"prerequisites": [],
|
|
1027
|
+
"related": [
|
|
1028
|
+
"resolved-unresolved"
|
|
1029
|
+
],
|
|
1030
|
+
"next": [],
|
|
1031
|
+
"exampleIds": [],
|
|
1032
|
+
"commonMistakes": [],
|
|
1033
|
+
"successCriteria": [],
|
|
1034
|
+
"invariants": [],
|
|
1035
|
+
"alternatives": [],
|
|
1036
|
+
"tags": [
|
|
1037
|
+
"relationships"
|
|
1038
|
+
],
|
|
1039
|
+
"id": "diagnose-unresolved",
|
|
1040
|
+
"type": "guide",
|
|
1041
|
+
"title": "Diagnose an unresolved relationship target",
|
|
1042
|
+
"useWhen": [],
|
|
1043
|
+
"doNotUseWhen": [],
|
|
1044
|
+
"inputs": [],
|
|
1045
|
+
"permissions": [],
|
|
1046
|
+
"steps": [
|
|
1047
|
+
{
|
|
1048
|
+
"id": "inspect",
|
|
1049
|
+
"title": "Inspect unresolved marker and definition",
|
|
1050
|
+
"expectedResult": "Cause classified",
|
|
1051
|
+
"optional": false
|
|
1052
|
+
}
|
|
1053
|
+
],
|
|
1054
|
+
"verification": [
|
|
1055
|
+
"Chosen repair/wait/escalate path documented"
|
|
1056
|
+
],
|
|
1057
|
+
"recovery": [],
|
|
1058
|
+
"tutorialIds": [],
|
|
1059
|
+
"referenceIds": [],
|
|
1060
|
+
"scenarioIds": [
|
|
1061
|
+
"unresolved-relationship"
|
|
1062
|
+
]
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
"summary": "Load composition for a subject the UI will render.",
|
|
1066
|
+
"why": "UIs need the bag of content instances, not only raw.",
|
|
1067
|
+
"audiences": [
|
|
1068
|
+
"developers",
|
|
1069
|
+
"builders"
|
|
1070
|
+
],
|
|
1071
|
+
"whenItMatters": [],
|
|
1072
|
+
"whenNotToUse": [],
|
|
1073
|
+
"prerequisites": [],
|
|
1074
|
+
"related": [
|
|
1075
|
+
"composition"
|
|
1076
|
+
],
|
|
1077
|
+
"next": [],
|
|
1078
|
+
"exampleIds": [],
|
|
1079
|
+
"commonMistakes": [],
|
|
1080
|
+
"successCriteria": [],
|
|
1081
|
+
"invariants": [],
|
|
1082
|
+
"alternatives": [],
|
|
1083
|
+
"tags": [
|
|
1084
|
+
"composition"
|
|
1085
|
+
],
|
|
1086
|
+
"id": "compose-subject-ui",
|
|
1087
|
+
"type": "guide",
|
|
1088
|
+
"title": "Compose same-subject content for a UI",
|
|
1089
|
+
"useWhen": [],
|
|
1090
|
+
"doNotUseWhen": [],
|
|
1091
|
+
"inputs": [],
|
|
1092
|
+
"permissions": [],
|
|
1093
|
+
"steps": [
|
|
1094
|
+
{
|
|
1095
|
+
"id": "compose",
|
|
1096
|
+
"title": "Request same-subject composition",
|
|
1097
|
+
"expectedResult": "Composed payload",
|
|
1098
|
+
"optional": false
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
"verification": [
|
|
1102
|
+
"Expected content types present"
|
|
1103
|
+
],
|
|
1104
|
+
"recovery": [],
|
|
1105
|
+
"tutorialIds": [],
|
|
1106
|
+
"referenceIds": [],
|
|
1107
|
+
"scenarioIds": []
|
|
1108
|
+
},
|
|
1109
|
+
{
|
|
1110
|
+
"summary": "Read employees and contractors through People bindings.",
|
|
1111
|
+
"why": "Abstract projection avoids hand-merged lists.",
|
|
1112
|
+
"audiences": [
|
|
1113
|
+
"developers",
|
|
1114
|
+
"builders"
|
|
1115
|
+
],
|
|
1116
|
+
"whenItMatters": [],
|
|
1117
|
+
"whenNotToUse": [],
|
|
1118
|
+
"prerequisites": [
|
|
1119
|
+
"inspect-effective-metadata"
|
|
1120
|
+
],
|
|
1121
|
+
"related": [
|
|
1122
|
+
"people-union"
|
|
1123
|
+
],
|
|
1124
|
+
"next": [],
|
|
1125
|
+
"exampleIds": [],
|
|
1126
|
+
"commonMistakes": [],
|
|
1127
|
+
"successCriteria": [],
|
|
1128
|
+
"invariants": [],
|
|
1129
|
+
"alternatives": [],
|
|
1130
|
+
"tags": [
|
|
1131
|
+
"abstracts"
|
|
1132
|
+
],
|
|
1133
|
+
"id": "query-people-abstract",
|
|
1134
|
+
"type": "guide",
|
|
1135
|
+
"title": "Query the People abstract view",
|
|
1136
|
+
"useWhen": [],
|
|
1137
|
+
"doNotUseWhen": [],
|
|
1138
|
+
"inputs": [],
|
|
1139
|
+
"permissions": [],
|
|
1140
|
+
"steps": [
|
|
1141
|
+
{
|
|
1142
|
+
"id": "query",
|
|
1143
|
+
"title": "Query People abstract",
|
|
1144
|
+
"expectedResult": "Mixed concrete types under People",
|
|
1145
|
+
"optional": false
|
|
1146
|
+
}
|
|
1147
|
+
],
|
|
1148
|
+
"verification": [
|
|
1149
|
+
"Bindings explain each member"
|
|
1150
|
+
],
|
|
1151
|
+
"recovery": [],
|
|
1152
|
+
"tutorialIds": [],
|
|
1153
|
+
"referenceIds": [],
|
|
1154
|
+
"scenarioIds": []
|
|
1155
|
+
},
|
|
1156
|
+
{
|
|
1157
|
+
"summary": "Record analysis, then a distinct decision.",
|
|
1158
|
+
"why": "Keeping them separate preserves auditability.",
|
|
1159
|
+
"audiences": [
|
|
1160
|
+
"developers",
|
|
1161
|
+
"builders"
|
|
1162
|
+
],
|
|
1163
|
+
"whenItMatters": [],
|
|
1164
|
+
"whenNotToUse": [],
|
|
1165
|
+
"prerequisites": [],
|
|
1166
|
+
"related": [
|
|
1167
|
+
"analysis-objects",
|
|
1168
|
+
"decisions-content"
|
|
1169
|
+
],
|
|
1170
|
+
"next": [],
|
|
1171
|
+
"exampleIds": [],
|
|
1172
|
+
"commonMistakes": [],
|
|
1173
|
+
"successCriteria": [],
|
|
1174
|
+
"invariants": [],
|
|
1175
|
+
"alternatives": [],
|
|
1176
|
+
"tags": [
|
|
1177
|
+
"workflow"
|
|
1178
|
+
],
|
|
1179
|
+
"id": "evidence-to-decision",
|
|
1180
|
+
"type": "guide",
|
|
1181
|
+
"title": "Move from evidence to analysis and a decision",
|
|
1182
|
+
"useWhen": [],
|
|
1183
|
+
"doNotUseWhen": [],
|
|
1184
|
+
"inputs": [],
|
|
1185
|
+
"permissions": [],
|
|
1186
|
+
"steps": [
|
|
1187
|
+
{
|
|
1188
|
+
"id": "analysis",
|
|
1189
|
+
"title": "Create analysis from evidence",
|
|
1190
|
+
"expectedResult": "Analysis object",
|
|
1191
|
+
"optional": false
|
|
1192
|
+
},
|
|
1193
|
+
{
|
|
1194
|
+
"id": "decision",
|
|
1195
|
+
"title": "Record decision",
|
|
1196
|
+
"expectedResult": "Decision object",
|
|
1197
|
+
"optional": false,
|
|
1198
|
+
"confirmationRequired": true
|
|
1199
|
+
}
|
|
1200
|
+
],
|
|
1201
|
+
"verification": [
|
|
1202
|
+
"Decision references analysis"
|
|
1203
|
+
],
|
|
1204
|
+
"recovery": [],
|
|
1205
|
+
"tutorialIds": [],
|
|
1206
|
+
"referenceIds": [],
|
|
1207
|
+
"scenarioIds": []
|
|
1208
|
+
}
|
|
1209
|
+
],
|
|
1210
|
+
"scenarios": [
|
|
1211
|
+
{
|
|
1212
|
+
"summary": "Detected organization/agent scope differs from the task.",
|
|
1213
|
+
"audiences": [
|
|
1214
|
+
"builders",
|
|
1215
|
+
"developers"
|
|
1216
|
+
],
|
|
1217
|
+
"whenItMatters": [],
|
|
1218
|
+
"whenNotToUse": [],
|
|
1219
|
+
"prerequisites": [],
|
|
1220
|
+
"related": [],
|
|
1221
|
+
"next": [],
|
|
1222
|
+
"exampleIds": [],
|
|
1223
|
+
"commonMistakes": [],
|
|
1224
|
+
"successCriteria": [],
|
|
1225
|
+
"invariants": [
|
|
1226
|
+
"Do not write while scope is wrong"
|
|
1227
|
+
],
|
|
1228
|
+
"alternatives": [],
|
|
1229
|
+
"tags": [],
|
|
1230
|
+
"id": "scope-mismatch",
|
|
1231
|
+
"type": "scenario",
|
|
1232
|
+
"title": "Scope does not match the intended workspace",
|
|
1233
|
+
"situation": "Studio or API session is scoped to a different org/agent than intended.",
|
|
1234
|
+
"preconditions": [],
|
|
1235
|
+
"signals": [
|
|
1236
|
+
"Wrong org label",
|
|
1237
|
+
"Unexpected agent inheritance set"
|
|
1238
|
+
],
|
|
1239
|
+
"decisionQuestion": "Apply a different scope or stop?",
|
|
1240
|
+
"paths": [
|
|
1241
|
+
{
|
|
1242
|
+
"id": "reapply",
|
|
1243
|
+
"label": "Apply correct scope",
|
|
1244
|
+
"when": "You can select the intended org/agent",
|
|
1245
|
+
"rationale": "Isolation is restored before any mutation.",
|
|
1246
|
+
"guideIds": [
|
|
1247
|
+
"apply-scope"
|
|
1248
|
+
]
|
|
1249
|
+
},
|
|
1250
|
+
{
|
|
1251
|
+
"id": "stop",
|
|
1252
|
+
"label": "Stop",
|
|
1253
|
+
"when": "Correct scope is unavailable or unauthorized",
|
|
1254
|
+
"rationale": "Escalate rather than act in the wrong workspace.",
|
|
1255
|
+
"guideIds": [],
|
|
1256
|
+
"confirmationRequired": true
|
|
1257
|
+
}
|
|
1258
|
+
],
|
|
1259
|
+
"verification": [
|
|
1260
|
+
"Subsequent operations show the intended scope"
|
|
1261
|
+
],
|
|
1262
|
+
"recovery": [],
|
|
1263
|
+
"escalation": "Ask an operator for access to the intended workspace."
|
|
1264
|
+
},
|
|
1265
|
+
{
|
|
1266
|
+
"summary": "PATCH/PUT rejected because expected revision was stale.",
|
|
1267
|
+
"audiences": [
|
|
1268
|
+
"developers"
|
|
1269
|
+
],
|
|
1270
|
+
"whenItMatters": [],
|
|
1271
|
+
"whenNotToUse": [],
|
|
1272
|
+
"prerequisites": [],
|
|
1273
|
+
"related": [],
|
|
1274
|
+
"next": [],
|
|
1275
|
+
"exampleIds": [],
|
|
1276
|
+
"commonMistakes": [],
|
|
1277
|
+
"successCriteria": [],
|
|
1278
|
+
"invariants": [
|
|
1279
|
+
"Conflict means the prior write did not apply"
|
|
1280
|
+
],
|
|
1281
|
+
"alternatives": [],
|
|
1282
|
+
"tags": [],
|
|
1283
|
+
"id": "stale-revision-conflict",
|
|
1284
|
+
"type": "scenario",
|
|
1285
|
+
"title": "A write returns a stale-revision conflict",
|
|
1286
|
+
"situation": "API returned a revision conflict; record unchanged.",
|
|
1287
|
+
"preconditions": [],
|
|
1288
|
+
"signals": [
|
|
1289
|
+
"409/conflict",
|
|
1290
|
+
"expectedRevision mismatch"
|
|
1291
|
+
],
|
|
1292
|
+
"decisionQuestion": "Reapply from current revision or escalate?",
|
|
1293
|
+
"paths": [
|
|
1294
|
+
{
|
|
1295
|
+
"id": "retry",
|
|
1296
|
+
"label": "Reload and retry",
|
|
1297
|
+
"when": "Intended change still valid against current meaning",
|
|
1298
|
+
"rationale": "Safe recovery path.",
|
|
1299
|
+
"guideIds": [
|
|
1300
|
+
"reload-retry-conflict"
|
|
1301
|
+
]
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"id": "escalate",
|
|
1305
|
+
"label": "Escalate",
|
|
1306
|
+
"when": "Current meaning changed in a conflicting way",
|
|
1307
|
+
"guideIds": [],
|
|
1308
|
+
"confirmationRequired": true
|
|
1309
|
+
}
|
|
1310
|
+
],
|
|
1311
|
+
"verification": [
|
|
1312
|
+
"No forced overwrite without compare"
|
|
1313
|
+
],
|
|
1314
|
+
"recovery": [
|
|
1315
|
+
"Use reload-retry-conflict guide"
|
|
1316
|
+
]
|
|
1317
|
+
},
|
|
1318
|
+
{
|
|
1319
|
+
"summary": "Traversal returns an unresolved target marker.",
|
|
1320
|
+
"audiences": [
|
|
1321
|
+
"developers",
|
|
1322
|
+
"builders"
|
|
1323
|
+
],
|
|
1324
|
+
"whenItMatters": [],
|
|
1325
|
+
"whenNotToUse": [],
|
|
1326
|
+
"prerequisites": [],
|
|
1327
|
+
"related": [],
|
|
1328
|
+
"next": [],
|
|
1329
|
+
"exampleIds": [],
|
|
1330
|
+
"commonMistakes": [],
|
|
1331
|
+
"successCriteria": [],
|
|
1332
|
+
"invariants": [
|
|
1333
|
+
"Do not hide unresolved targets"
|
|
1334
|
+
],
|
|
1335
|
+
"alternatives": [],
|
|
1336
|
+
"tags": [],
|
|
1337
|
+
"id": "unresolved-relationship",
|
|
1338
|
+
"type": "scenario",
|
|
1339
|
+
"title": "A relationship target is unresolved",
|
|
1340
|
+
"situation": "Related record cannot be resolved under the active definition.",
|
|
1341
|
+
"preconditions": [],
|
|
1342
|
+
"signals": [],
|
|
1343
|
+
"decisionQuestion": "Repair, wait, or preserve/escalate?",
|
|
1344
|
+
"paths": [
|
|
1345
|
+
{
|
|
1346
|
+
"id": "repair",
|
|
1347
|
+
"label": "Repair target",
|
|
1348
|
+
"when": "Target should exist and can be created/linked",
|
|
1349
|
+
"guideIds": [
|
|
1350
|
+
"diagnose-unresolved",
|
|
1351
|
+
"define-traverse-relationship"
|
|
1352
|
+
]
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"id": "preserve",
|
|
1356
|
+
"label": "Preserve unresolved",
|
|
1357
|
+
"when": "Unresolved is intentional",
|
|
1358
|
+
"guideIds": [
|
|
1359
|
+
"diagnose-unresolved"
|
|
1360
|
+
]
|
|
1361
|
+
}
|
|
1362
|
+
],
|
|
1363
|
+
"verification": [
|
|
1364
|
+
"Chosen path matches authored relationship semantics"
|
|
1365
|
+
],
|
|
1366
|
+
"recovery": []
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"summary": "Validation succeeded; runtime still on previous effective metadata.",
|
|
1370
|
+
"audiences": [
|
|
1371
|
+
"builders"
|
|
1372
|
+
],
|
|
1373
|
+
"whenItMatters": [],
|
|
1374
|
+
"whenNotToUse": [],
|
|
1375
|
+
"prerequisites": [],
|
|
1376
|
+
"related": [],
|
|
1377
|
+
"next": [],
|
|
1378
|
+
"exampleIds": [],
|
|
1379
|
+
"commonMistakes": [],
|
|
1380
|
+
"successCriteria": [],
|
|
1381
|
+
"invariants": [
|
|
1382
|
+
"Intelligence proposals never auto-install"
|
|
1383
|
+
],
|
|
1384
|
+
"alternatives": [],
|
|
1385
|
+
"tags": [],
|
|
1386
|
+
"id": "pack-valid-not-installed",
|
|
1387
|
+
"type": "scenario",
|
|
1388
|
+
"title": "A metadata pack is valid but not installed",
|
|
1389
|
+
"situation": "Validate passed; install not confirmed.",
|
|
1390
|
+
"preconditions": [],
|
|
1391
|
+
"signals": [],
|
|
1392
|
+
"decisionQuestion": "Explicitly install or cancel?",
|
|
1393
|
+
"paths": [
|
|
1394
|
+
{
|
|
1395
|
+
"id": "install",
|
|
1396
|
+
"label": "Install",
|
|
1397
|
+
"when": "Change is reviewed and approved",
|
|
1398
|
+
"guideIds": [
|
|
1399
|
+
"validate-install-pack"
|
|
1400
|
+
],
|
|
1401
|
+
"confirmationRequired": true
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
"id": "cancel",
|
|
1405
|
+
"label": "Cancel",
|
|
1406
|
+
"when": "Not ready to change runtime",
|
|
1407
|
+
"rationale": "Validation alone must leave runtime unchanged.",
|
|
1408
|
+
"guideIds": []
|
|
1409
|
+
}
|
|
1410
|
+
],
|
|
1411
|
+
"verification": [
|
|
1412
|
+
"Cancel leaves effective metadata unchanged"
|
|
1413
|
+
],
|
|
1414
|
+
"recovery": []
|
|
1415
|
+
},
|
|
1416
|
+
{
|
|
1417
|
+
"summary": "Choose raw, composition, or abstract based on fidelity needs.",
|
|
1418
|
+
"audiences": [
|
|
1419
|
+
"developers"
|
|
1420
|
+
],
|
|
1421
|
+
"whenItMatters": [],
|
|
1422
|
+
"whenNotToUse": [],
|
|
1423
|
+
"prerequisites": [],
|
|
1424
|
+
"related": [],
|
|
1425
|
+
"next": [],
|
|
1426
|
+
"exampleIds": [],
|
|
1427
|
+
"commonMistakes": [],
|
|
1428
|
+
"successCriteria": [],
|
|
1429
|
+
"invariants": [],
|
|
1430
|
+
"alternatives": [],
|
|
1431
|
+
"tags": [],
|
|
1432
|
+
"id": "choose-subject-view",
|
|
1433
|
+
"type": "scenario",
|
|
1434
|
+
"title": "A caller needs a subject view",
|
|
1435
|
+
"situation": "UI or API caller needs subject data and is unsure which access method to use.",
|
|
1436
|
+
"preconditions": [],
|
|
1437
|
+
"signals": [],
|
|
1438
|
+
"decisionQuestion": "Raw, composed, or abstract?",
|
|
1439
|
+
"paths": [
|
|
1440
|
+
{
|
|
1441
|
+
"id": "raw",
|
|
1442
|
+
"label": "Raw",
|
|
1443
|
+
"when": "Need original payload/envelope fidelity",
|
|
1444
|
+
"guideIds": [
|
|
1445
|
+
"choose-access-method"
|
|
1446
|
+
]
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
"id": "composed",
|
|
1450
|
+
"label": "Composition",
|
|
1451
|
+
"when": "Need same-subject content instances for a UI",
|
|
1452
|
+
"guideIds": [
|
|
1453
|
+
"compose-subject-ui"
|
|
1454
|
+
]
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
"id": "abstract",
|
|
1458
|
+
"label": "Abstract",
|
|
1459
|
+
"when": "Need a projected union such as People",
|
|
1460
|
+
"guideIds": [
|
|
1461
|
+
"query-people-abstract"
|
|
1462
|
+
]
|
|
1463
|
+
}
|
|
1464
|
+
],
|
|
1465
|
+
"verification": [
|
|
1466
|
+
"Returned shape matches the caller goal"
|
|
1467
|
+
],
|
|
1468
|
+
"recovery": []
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
"summary": "Choose forward/inverse and expanded/unexpanded handling.",
|
|
1472
|
+
"audiences": [
|
|
1473
|
+
"developers"
|
|
1474
|
+
],
|
|
1475
|
+
"whenItMatters": [],
|
|
1476
|
+
"whenNotToUse": [],
|
|
1477
|
+
"prerequisites": [],
|
|
1478
|
+
"related": [],
|
|
1479
|
+
"next": [],
|
|
1480
|
+
"exampleIds": [],
|
|
1481
|
+
"commonMistakes": [],
|
|
1482
|
+
"successCriteria": [],
|
|
1483
|
+
"invariants": [],
|
|
1484
|
+
"alternatives": [],
|
|
1485
|
+
"tags": [],
|
|
1486
|
+
"id": "traversal-direction",
|
|
1487
|
+
"type": "scenario",
|
|
1488
|
+
"title": "Relationship traversal direction and expansion",
|
|
1489
|
+
"situation": "Caller must traverse a relationship and pick direction/expansion.",
|
|
1490
|
+
"preconditions": [],
|
|
1491
|
+
"signals": [],
|
|
1492
|
+
"decisionQuestion": "Which direction and expansion?",
|
|
1493
|
+
"paths": [
|
|
1494
|
+
{
|
|
1495
|
+
"id": "forward",
|
|
1496
|
+
"label": "Forward",
|
|
1497
|
+
"when": "Following the definition's forward semantics",
|
|
1498
|
+
"guideIds": [
|
|
1499
|
+
"define-traverse-relationship"
|
|
1500
|
+
]
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"id": "inverse",
|
|
1504
|
+
"label": "Inverse",
|
|
1505
|
+
"when": "Need inbound links",
|
|
1506
|
+
"guideIds": [
|
|
1507
|
+
"define-traverse-relationship"
|
|
1508
|
+
]
|
|
1509
|
+
}
|
|
1510
|
+
],
|
|
1511
|
+
"verification": [
|
|
1512
|
+
"Results match definition direction"
|
|
1513
|
+
],
|
|
1514
|
+
"recovery": []
|
|
1515
|
+
}
|
|
1516
|
+
],
|
|
1517
|
+
"decisions": [],
|
|
1518
|
+
"glossary": [
|
|
1519
|
+
{
|
|
1520
|
+
"id": "agent",
|
|
1521
|
+
"term": "Agent",
|
|
1522
|
+
"meaning": "An inheritance and configuration unit inside an organization.",
|
|
1523
|
+
"technicalName": "agent",
|
|
1524
|
+
"aliases": [],
|
|
1525
|
+
"relatedConceptIds": [
|
|
1526
|
+
"agents-inheritance"
|
|
1527
|
+
]
|
|
1528
|
+
},
|
|
1529
|
+
{
|
|
1530
|
+
"id": "scope",
|
|
1531
|
+
"term": "Scope",
|
|
1532
|
+
"meaning": "Selected organization and agent context for reads and writes.",
|
|
1533
|
+
"aliases": [],
|
|
1534
|
+
"relatedConceptIds": [
|
|
1535
|
+
"org-agent-scope"
|
|
1536
|
+
]
|
|
1537
|
+
},
|
|
1538
|
+
{
|
|
1539
|
+
"id": "source",
|
|
1540
|
+
"term": "Source",
|
|
1541
|
+
"meaning": "Origin that feeds content into Memory.",
|
|
1542
|
+
"aliases": [],
|
|
1543
|
+
"relatedConceptIds": [
|
|
1544
|
+
"sources-and-memory"
|
|
1545
|
+
]
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
"id": "memory",
|
|
1549
|
+
"term": "Memory",
|
|
1550
|
+
"meaning": "Durable store of Memorix records.",
|
|
1551
|
+
"aliases": [],
|
|
1552
|
+
"relatedConceptIds": [
|
|
1553
|
+
"sources-and-memory"
|
|
1554
|
+
]
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
"id": "object-type",
|
|
1558
|
+
"term": "Object type",
|
|
1559
|
+
"meaning": "Identity kind for a record subject.",
|
|
1560
|
+
"aliases": [],
|
|
1561
|
+
"relatedConceptIds": [
|
|
1562
|
+
"object-content-category"
|
|
1563
|
+
]
|
|
1564
|
+
},
|
|
1565
|
+
{
|
|
1566
|
+
"id": "content-type",
|
|
1567
|
+
"term": "Content type",
|
|
1568
|
+
"meaning": "Shape of a content instance on a subject.",
|
|
1569
|
+
"aliases": [],
|
|
1570
|
+
"relatedConceptIds": [
|
|
1571
|
+
"object-content-category"
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"id": "data-category",
|
|
1576
|
+
"term": "Data category",
|
|
1577
|
+
"meaning": "Category axis distinct from object and content type.",
|
|
1578
|
+
"aliases": [],
|
|
1579
|
+
"relatedConceptIds": [
|
|
1580
|
+
"object-content-category"
|
|
1581
|
+
]
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"id": "abstract",
|
|
1585
|
+
"term": "Abstract",
|
|
1586
|
+
"meaning": "Virtual projected union over concrete types via bindings.",
|
|
1587
|
+
"aliases": [],
|
|
1588
|
+
"relatedConceptIds": [
|
|
1589
|
+
"abstracts-bindings"
|
|
1590
|
+
]
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"id": "binding",
|
|
1594
|
+
"term": "Binding",
|
|
1595
|
+
"meaning": "Maps concrete members into an abstract.",
|
|
1596
|
+
"aliases": [],
|
|
1597
|
+
"relatedConceptIds": [
|
|
1598
|
+
"abstracts-bindings"
|
|
1599
|
+
]
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"id": "effective-metadata",
|
|
1603
|
+
"term": "Effective metadata",
|
|
1604
|
+
"meaning": "Resolved definitions after inheritance and installation.",
|
|
1605
|
+
"aliases": [],
|
|
1606
|
+
"relatedConceptIds": [
|
|
1607
|
+
"effective-metadata"
|
|
1608
|
+
]
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"id": "mapping",
|
|
1612
|
+
"term": "Mapping",
|
|
1613
|
+
"meaning": "Declared transform from source shape to Memory content.",
|
|
1614
|
+
"aliases": [],
|
|
1615
|
+
"relatedConceptIds": [
|
|
1616
|
+
"mappings-transforms"
|
|
1617
|
+
]
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"id": "composition",
|
|
1621
|
+
"term": "Composition",
|
|
1622
|
+
"meaning": "Explicit same-subject aggregation of content instances.",
|
|
1623
|
+
"aliases": [],
|
|
1624
|
+
"relatedConceptIds": [
|
|
1625
|
+
"composition"
|
|
1626
|
+
]
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"id": "relationship-definition",
|
|
1630
|
+
"term": "Relationship definition",
|
|
1631
|
+
"meaning": "Metadata describing an allowed relationship kind.",
|
|
1632
|
+
"aliases": [],
|
|
1633
|
+
"relatedConceptIds": [
|
|
1634
|
+
"relationship-definitions"
|
|
1635
|
+
]
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"id": "relationship-reference",
|
|
1639
|
+
"term": "Relationship reference",
|
|
1640
|
+
"meaning": "Stored link instance on a record.",
|
|
1641
|
+
"aliases": [],
|
|
1642
|
+
"relatedConceptIds": [
|
|
1643
|
+
"relationship-references"
|
|
1644
|
+
]
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"id": "traversal",
|
|
1648
|
+
"term": "Traversal",
|
|
1649
|
+
"meaning": "Forward or inverse walk of relationship references.",
|
|
1650
|
+
"aliases": [],
|
|
1651
|
+
"relatedConceptIds": [
|
|
1652
|
+
"traversal"
|
|
1653
|
+
]
|
|
1654
|
+
},
|
|
1655
|
+
{
|
|
1656
|
+
"id": "revision",
|
|
1657
|
+
"term": "Revision",
|
|
1658
|
+
"meaning": "Optimistic concurrency token on a record.",
|
|
1659
|
+
"aliases": [],
|
|
1660
|
+
"relatedConceptIds": [
|
|
1661
|
+
"record-revisions"
|
|
1662
|
+
]
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
"id": "analysis",
|
|
1666
|
+
"term": "Analysis",
|
|
1667
|
+
"meaning": "Evaluated evidence content distinct from a decision.",
|
|
1668
|
+
"aliases": [],
|
|
1669
|
+
"relatedConceptIds": [
|
|
1670
|
+
"analysis-objects"
|
|
1671
|
+
]
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
"id": "decision",
|
|
1675
|
+
"term": "Decision",
|
|
1676
|
+
"meaning": "Committed choice recorded separately from analysis.",
|
|
1677
|
+
"aliases": [],
|
|
1678
|
+
"relatedConceptIds": [
|
|
1679
|
+
"decisions-content"
|
|
1680
|
+
]
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"id": "intelligence-proposal",
|
|
1684
|
+
"term": "Intelligence proposal",
|
|
1685
|
+
"meaning": "Suggested change that never auto-installs.",
|
|
1686
|
+
"aliases": [],
|
|
1687
|
+
"relatedConceptIds": [
|
|
1688
|
+
"intelligence-proposals"
|
|
1689
|
+
]
|
|
1690
|
+
}
|
|
1691
|
+
],
|
|
1692
|
+
"visuals": [
|
|
1693
|
+
{
|
|
1694
|
+
"id": "scope-apply",
|
|
1695
|
+
"src": "images/scope-apply.png",
|
|
1696
|
+
"alt": "Studio scope selector with organization and agent chosen before Apply scope",
|
|
1697
|
+
"caption": "Scope must be applied explicitly before work begins.",
|
|
1698
|
+
"conceptIds": [
|
|
1699
|
+
"org-agent-scope"
|
|
1700
|
+
],
|
|
1701
|
+
"guideIds": [],
|
|
1702
|
+
"whatToNotice": [
|
|
1703
|
+
"Organization and agent are named",
|
|
1704
|
+
"Apply scope is a deliberate action",
|
|
1705
|
+
"Scope is not decorative chrome"
|
|
1706
|
+
],
|
|
1707
|
+
"whyItMatters": "Wrong scope risks cross-workspace writes.",
|
|
1708
|
+
"clientId": "memorix-studio",
|
|
1709
|
+
"screenId": "scope",
|
|
1710
|
+
"flowId": "apply-scope"
|
|
1711
|
+
},
|
|
1712
|
+
{
|
|
1713
|
+
"id": "revision-conflict",
|
|
1714
|
+
"src": "images/revision-conflict.png",
|
|
1715
|
+
"alt": "Conflict dialog showing stale expected revision while record remains unchanged",
|
|
1716
|
+
"caption": "Stale writers are rejected; the record stays at the newer revision.",
|
|
1717
|
+
"conceptIds": [
|
|
1718
|
+
"record-revisions"
|
|
1719
|
+
],
|
|
1720
|
+
"guideIds": [],
|
|
1721
|
+
"whatToNotice": [
|
|
1722
|
+
"Expected revision is shown",
|
|
1723
|
+
"Record was not mutated",
|
|
1724
|
+
"Recovery is reload and retry"
|
|
1725
|
+
],
|
|
1726
|
+
"whyItMatters": "Revision preconditions preserve newer data.",
|
|
1727
|
+
"clientId": "memorix-studio",
|
|
1728
|
+
"screenId": "workflow",
|
|
1729
|
+
"flowId": "handle-revision-conflict"
|
|
1730
|
+
}
|
|
1731
|
+
],
|
|
1732
|
+
"diagrams": [
|
|
1733
|
+
{
|
|
1734
|
+
"id": "memorix-central-journey",
|
|
1735
|
+
"type": "journey",
|
|
1736
|
+
"title": "Memorix central product journey",
|
|
1737
|
+
"summary": "Conceptual path from scope through metadata, records, relationships, analysis, and decisions.",
|
|
1738
|
+
"why": "Orients every concept page in the same mental model.",
|
|
1739
|
+
"nodes": [
|
|
1740
|
+
{
|
|
1741
|
+
"id": "scope",
|
|
1742
|
+
"label": "Scope",
|
|
1743
|
+
"conceptId": "org-agent-scope"
|
|
1744
|
+
},
|
|
1745
|
+
{
|
|
1746
|
+
"id": "metadata",
|
|
1747
|
+
"label": "Explicit metadata",
|
|
1748
|
+
"conceptId": "explicit-metadata-installation"
|
|
1749
|
+
},
|
|
1750
|
+
{
|
|
1751
|
+
"id": "effective",
|
|
1752
|
+
"label": "Effective model",
|
|
1753
|
+
"conceptId": "effective-metadata"
|
|
1754
|
+
},
|
|
1755
|
+
{
|
|
1756
|
+
"id": "raw",
|
|
1757
|
+
"label": "Raw/concrete",
|
|
1758
|
+
"conceptId": "raw-records"
|
|
1759
|
+
},
|
|
1760
|
+
{
|
|
1761
|
+
"id": "compose",
|
|
1762
|
+
"label": "Composition/abstracts",
|
|
1763
|
+
"conceptId": "composition"
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
"id": "rels",
|
|
1767
|
+
"label": "Relationships",
|
|
1768
|
+
"conceptId": "relationship-definitions"
|
|
1769
|
+
},
|
|
1770
|
+
{
|
|
1771
|
+
"id": "analysis",
|
|
1772
|
+
"label": "Analysis",
|
|
1773
|
+
"conceptId": "analysis-objects"
|
|
1774
|
+
},
|
|
1775
|
+
{
|
|
1776
|
+
"id": "decisions",
|
|
1777
|
+
"label": "Decisions",
|
|
1778
|
+
"conceptId": "decisions-content"
|
|
1779
|
+
}
|
|
1780
|
+
],
|
|
1781
|
+
"edges": [
|
|
1782
|
+
{
|
|
1783
|
+
"from": "scope",
|
|
1784
|
+
"to": "metadata",
|
|
1785
|
+
"label": "select"
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
"from": "metadata",
|
|
1789
|
+
"to": "effective",
|
|
1790
|
+
"label": "install/resolve"
|
|
1791
|
+
},
|
|
1792
|
+
{
|
|
1793
|
+
"from": "effective",
|
|
1794
|
+
"to": "raw",
|
|
1795
|
+
"label": "shape data"
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"from": "raw",
|
|
1799
|
+
"to": "compose",
|
|
1800
|
+
"label": "project"
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"from": "compose",
|
|
1804
|
+
"to": "rels",
|
|
1805
|
+
"label": "link"
|
|
1806
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
"from": "rels",
|
|
1809
|
+
"to": "analysis",
|
|
1810
|
+
"label": "evaluate"
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"from": "analysis",
|
|
1814
|
+
"to": "decisions",
|
|
1815
|
+
"label": "commit"
|
|
1816
|
+
}
|
|
1817
|
+
],
|
|
1818
|
+
"howToRead": "Left to right is conceptual learning order — not an auto-discovered runtime trace.",
|
|
1819
|
+
"keyTakeaways": [
|
|
1820
|
+
"Conceptual journey",
|
|
1821
|
+
"Each stage links to concepts",
|
|
1822
|
+
"Not a discovered trace"
|
|
1823
|
+
],
|
|
1824
|
+
"textAlternative": "Scope leads to explicit metadata and an effective model, then to concrete/raw data, composition and abstracts, relationships, analysis, and decisions/operation.",
|
|
1825
|
+
"audiences": [
|
|
1826
|
+
"developers",
|
|
1827
|
+
"builders"
|
|
1828
|
+
],
|
|
1829
|
+
"related": [],
|
|
1830
|
+
"tags": [
|
|
1831
|
+
"overview"
|
|
1832
|
+
]
|
|
1833
|
+
},
|
|
1834
|
+
{
|
|
1835
|
+
"id": "agent-inheritance",
|
|
1836
|
+
"type": "hierarchy",
|
|
1837
|
+
"title": "Agent inheritance",
|
|
1838
|
+
"summary": "Parent and child agents resolve into effective definitions.",
|
|
1839
|
+
"why": "Explains why Studio shows effective results, not only local files.",
|
|
1840
|
+
"nodes": [
|
|
1841
|
+
{
|
|
1842
|
+
"id": "parent",
|
|
1843
|
+
"label": "Parent agent",
|
|
1844
|
+
"conceptId": "agents-inheritance"
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
"id": "child",
|
|
1848
|
+
"label": "Child agent",
|
|
1849
|
+
"conceptId": "agents-inheritance"
|
|
1850
|
+
},
|
|
1851
|
+
{
|
|
1852
|
+
"id": "effective",
|
|
1853
|
+
"label": "Effective definitions",
|
|
1854
|
+
"conceptId": "effective-metadata"
|
|
1855
|
+
}
|
|
1856
|
+
],
|
|
1857
|
+
"edges": [
|
|
1858
|
+
{
|
|
1859
|
+
"from": "parent",
|
|
1860
|
+
"to": "child",
|
|
1861
|
+
"label": "inherit"
|
|
1862
|
+
},
|
|
1863
|
+
{
|
|
1864
|
+
"from": "child",
|
|
1865
|
+
"to": "effective",
|
|
1866
|
+
"label": "resolve"
|
|
1867
|
+
}
|
|
1868
|
+
],
|
|
1869
|
+
"howToRead": "Parents contribute first; children may replace or add.",
|
|
1870
|
+
"keyTakeaways": [],
|
|
1871
|
+
"textAlternative": "Parent agent definitions flow to a child agent; the effective model is what runtime uses after resolution.",
|
|
1872
|
+
"audiences": [],
|
|
1873
|
+
"related": [],
|
|
1874
|
+
"tags": []
|
|
1875
|
+
},
|
|
1876
|
+
{
|
|
1877
|
+
"id": "metadata-lifecycle",
|
|
1878
|
+
"type": "flow",
|
|
1879
|
+
"title": "Metadata lifecycle",
|
|
1880
|
+
"summary": "Pack → validate → explicit install → effective resolution → runtime; proposals stay off the auto path.",
|
|
1881
|
+
"why": "Separates proposal, approval, installation, and use.",
|
|
1882
|
+
"nodes": [
|
|
1883
|
+
{
|
|
1884
|
+
"id": "pack",
|
|
1885
|
+
"label": "Pack",
|
|
1886
|
+
"conceptId": "explicit-metadata-installation"
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
"id": "validate",
|
|
1890
|
+
"label": "Validate"
|
|
1891
|
+
},
|
|
1892
|
+
{
|
|
1893
|
+
"id": "install",
|
|
1894
|
+
"label": "Explicit install"
|
|
1895
|
+
},
|
|
1896
|
+
{
|
|
1897
|
+
"id": "effective",
|
|
1898
|
+
"label": "Effective",
|
|
1899
|
+
"conceptId": "effective-metadata"
|
|
1900
|
+
},
|
|
1901
|
+
{
|
|
1902
|
+
"id": "runtime",
|
|
1903
|
+
"label": "Runtime"
|
|
1904
|
+
},
|
|
1905
|
+
{
|
|
1906
|
+
"id": "proposal",
|
|
1907
|
+
"label": "Intelligence proposal",
|
|
1908
|
+
"conceptId": "intelligence-proposals"
|
|
1909
|
+
}
|
|
1910
|
+
],
|
|
1911
|
+
"edges": [
|
|
1912
|
+
{
|
|
1913
|
+
"from": "pack",
|
|
1914
|
+
"to": "validate",
|
|
1915
|
+
"label": "check"
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"from": "validate",
|
|
1919
|
+
"to": "install",
|
|
1920
|
+
"label": "confirm"
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"from": "install",
|
|
1924
|
+
"to": "effective",
|
|
1925
|
+
"label": "resolve"
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
"from": "effective",
|
|
1929
|
+
"to": "runtime",
|
|
1930
|
+
"label": "use"
|
|
1931
|
+
},
|
|
1932
|
+
{
|
|
1933
|
+
"from": "proposal",
|
|
1934
|
+
"to": "validate",
|
|
1935
|
+
"label": "review only"
|
|
1936
|
+
}
|
|
1937
|
+
],
|
|
1938
|
+
"howToRead": "Follow the solid path; proposals branch and never auto-join install.",
|
|
1939
|
+
"keyTakeaways": [],
|
|
1940
|
+
"textAlternative": "A metadata pack is validated, then explicitly installed, resolved into the effective model, and consumed at runtime. Intelligence proposals require a separate explicit install path and never auto-install.",
|
|
1941
|
+
"audiences": [],
|
|
1942
|
+
"related": [],
|
|
1943
|
+
"tags": []
|
|
1944
|
+
},
|
|
1945
|
+
{
|
|
1946
|
+
"id": "record-content-model",
|
|
1947
|
+
"type": "entity-relationship",
|
|
1948
|
+
"title": "Record and content model",
|
|
1949
|
+
"summary": "Record identity relates to object type, content type, category, raw, snapshots, and composition.",
|
|
1950
|
+
"why": "Keeps identity and payload axes distinct.",
|
|
1951
|
+
"nodes": [
|
|
1952
|
+
{
|
|
1953
|
+
"id": "record",
|
|
1954
|
+
"label": "Record identity",
|
|
1955
|
+
"conceptId": "raw-records"
|
|
1956
|
+
},
|
|
1957
|
+
{
|
|
1958
|
+
"id": "object",
|
|
1959
|
+
"label": "Object type",
|
|
1960
|
+
"conceptId": "object-content-category"
|
|
1961
|
+
},
|
|
1962
|
+
{
|
|
1963
|
+
"id": "content",
|
|
1964
|
+
"label": "Content type"
|
|
1965
|
+
},
|
|
1966
|
+
{
|
|
1967
|
+
"id": "category",
|
|
1968
|
+
"label": "Data category"
|
|
1969
|
+
},
|
|
1970
|
+
{
|
|
1971
|
+
"id": "raw",
|
|
1972
|
+
"label": "Raw"
|
|
1973
|
+
},
|
|
1974
|
+
{
|
|
1975
|
+
"id": "snap",
|
|
1976
|
+
"label": "Snapshot"
|
|
1977
|
+
},
|
|
1978
|
+
{
|
|
1979
|
+
"id": "compose",
|
|
1980
|
+
"label": "Composition",
|
|
1981
|
+
"conceptId": "composition"
|
|
1982
|
+
}
|
|
1983
|
+
],
|
|
1984
|
+
"edges": [
|
|
1985
|
+
{
|
|
1986
|
+
"from": "record",
|
|
1987
|
+
"to": "object"
|
|
1988
|
+
},
|
|
1989
|
+
{
|
|
1990
|
+
"from": "record",
|
|
1991
|
+
"to": "content"
|
|
1992
|
+
},
|
|
1993
|
+
{
|
|
1994
|
+
"from": "record",
|
|
1995
|
+
"to": "category"
|
|
1996
|
+
},
|
|
1997
|
+
{
|
|
1998
|
+
"from": "record",
|
|
1999
|
+
"to": "raw"
|
|
2000
|
+
},
|
|
2001
|
+
{
|
|
2002
|
+
"from": "record",
|
|
2003
|
+
"to": "snap"
|
|
2004
|
+
},
|
|
2005
|
+
{
|
|
2006
|
+
"from": "raw",
|
|
2007
|
+
"to": "compose"
|
|
2008
|
+
},
|
|
2009
|
+
{
|
|
2010
|
+
"from": "snap",
|
|
2011
|
+
"to": "compose"
|
|
2012
|
+
}
|
|
2013
|
+
],
|
|
2014
|
+
"howToRead": "Center on the record; spokes are model axes and views.",
|
|
2015
|
+
"keyTakeaways": [],
|
|
2016
|
+
"textAlternative": "A record identity has an object type, content type, and data category. Raw content and snapshots are content instances that can be composed for the same subject.",
|
|
2017
|
+
"audiences": [],
|
|
2018
|
+
"related": [],
|
|
2019
|
+
"tags": []
|
|
2020
|
+
},
|
|
2021
|
+
{
|
|
2022
|
+
"id": "people-union-diagram",
|
|
2023
|
+
"type": "relationship-map",
|
|
2024
|
+
"title": "People abstract union",
|
|
2025
|
+
"summary": "Employees and contractors bind into the People abstract projection.",
|
|
2026
|
+
"why": "Shows virtual union without stored merged rows.",
|
|
2027
|
+
"nodes": [
|
|
2028
|
+
{
|
|
2029
|
+
"id": "employees",
|
|
2030
|
+
"label": "employees"
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"id": "contractors",
|
|
2034
|
+
"label": "contractors"
|
|
2035
|
+
},
|
|
2036
|
+
{
|
|
2037
|
+
"id": "bindings",
|
|
2038
|
+
"label": "Bindings",
|
|
2039
|
+
"conceptId": "abstracts-bindings"
|
|
2040
|
+
},
|
|
2041
|
+
{
|
|
2042
|
+
"id": "people",
|
|
2043
|
+
"label": "People",
|
|
2044
|
+
"conceptId": "people-union"
|
|
2045
|
+
}
|
|
2046
|
+
],
|
|
2047
|
+
"edges": [
|
|
2048
|
+
{
|
|
2049
|
+
"from": "employees",
|
|
2050
|
+
"to": "bindings"
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
"from": "contractors",
|
|
2054
|
+
"to": "bindings"
|
|
2055
|
+
},
|
|
2056
|
+
{
|
|
2057
|
+
"from": "bindings",
|
|
2058
|
+
"to": "people",
|
|
2059
|
+
"label": "project"
|
|
2060
|
+
}
|
|
2061
|
+
],
|
|
2062
|
+
"howToRead": "Concrete types feed bindings into People.",
|
|
2063
|
+
"keyTakeaways": [],
|
|
2064
|
+
"textAlternative": "Employees and contractors are bound into the People abstract. Combined reads return concrete members under the People projection.",
|
|
2065
|
+
"audiences": [],
|
|
2066
|
+
"related": [],
|
|
2067
|
+
"tags": []
|
|
2068
|
+
},
|
|
2069
|
+
{
|
|
2070
|
+
"id": "relationship-traversal",
|
|
2071
|
+
"type": "flow",
|
|
2072
|
+
"title": "Relationship definition to traversal",
|
|
2073
|
+
"summary": "Definition versus stored reference; forward/inverse; resolved versus unresolved.",
|
|
2074
|
+
"why": "Prevents treating definitions as edges.",
|
|
2075
|
+
"nodes": [
|
|
2076
|
+
{
|
|
2077
|
+
"id": "def",
|
|
2078
|
+
"label": "Definition",
|
|
2079
|
+
"conceptId": "relationship-definitions"
|
|
2080
|
+
},
|
|
2081
|
+
{
|
|
2082
|
+
"id": "ref",
|
|
2083
|
+
"label": "Stored ref",
|
|
2084
|
+
"conceptId": "relationship-references"
|
|
2085
|
+
},
|
|
2086
|
+
{
|
|
2087
|
+
"id": "fwd",
|
|
2088
|
+
"label": "Forward",
|
|
2089
|
+
"conceptId": "traversal"
|
|
2090
|
+
},
|
|
2091
|
+
{
|
|
2092
|
+
"id": "inv",
|
|
2093
|
+
"label": "Inverse"
|
|
2094
|
+
},
|
|
2095
|
+
{
|
|
2096
|
+
"id": "resolved",
|
|
2097
|
+
"label": "Resolved",
|
|
2098
|
+
"conceptId": "resolved-unresolved"
|
|
2099
|
+
},
|
|
2100
|
+
{
|
|
2101
|
+
"id": "unresolved",
|
|
2102
|
+
"label": "Unresolved"
|
|
2103
|
+
}
|
|
2104
|
+
],
|
|
2105
|
+
"edges": [
|
|
2106
|
+
{
|
|
2107
|
+
"from": "def",
|
|
2108
|
+
"to": "ref"
|
|
2109
|
+
},
|
|
2110
|
+
{
|
|
2111
|
+
"from": "ref",
|
|
2112
|
+
"to": "fwd"
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"from": "ref",
|
|
2116
|
+
"to": "inv"
|
|
2117
|
+
},
|
|
2118
|
+
{
|
|
2119
|
+
"from": "fwd",
|
|
2120
|
+
"to": "resolved"
|
|
2121
|
+
},
|
|
2122
|
+
{
|
|
2123
|
+
"from": "fwd",
|
|
2124
|
+
"to": "unresolved"
|
|
2125
|
+
}
|
|
2126
|
+
],
|
|
2127
|
+
"howToRead": "Definition enables references; traversal yields resolved or unresolved targets.",
|
|
2128
|
+
"keyTakeaways": [],
|
|
2129
|
+
"textAlternative": "A relationship definition enables stored references. Traversal may go forward or inverse and can return resolved or unresolved targets.",
|
|
2130
|
+
"audiences": [],
|
|
2131
|
+
"related": [],
|
|
2132
|
+
"tags": []
|
|
2133
|
+
},
|
|
2134
|
+
{
|
|
2135
|
+
"id": "revision-safe-write",
|
|
2136
|
+
"type": "state",
|
|
2137
|
+
"title": "Revision-safe write flow",
|
|
2138
|
+
"summary": "Load, write with expected revision, success or conflict with reload/retry.",
|
|
2139
|
+
"why": "Makes stale-write recovery explicit.",
|
|
2140
|
+
"nodes": [
|
|
2141
|
+
{
|
|
2142
|
+
"id": "load",
|
|
2143
|
+
"label": "Load",
|
|
2144
|
+
"conceptId": "record-revisions"
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
"id": "write",
|
|
2148
|
+
"label": "Write + expected rev"
|
|
2149
|
+
},
|
|
2150
|
+
{
|
|
2151
|
+
"id": "ok",
|
|
2152
|
+
"label": "Success"
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"id": "conflict",
|
|
2156
|
+
"label": "Conflict"
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
"id": "reload",
|
|
2160
|
+
"label": "Reload/retry"
|
|
2161
|
+
}
|
|
2162
|
+
],
|
|
2163
|
+
"edges": [
|
|
2164
|
+
{
|
|
2165
|
+
"from": "load",
|
|
2166
|
+
"to": "write"
|
|
2167
|
+
},
|
|
2168
|
+
{
|
|
2169
|
+
"from": "write",
|
|
2170
|
+
"to": "ok",
|
|
2171
|
+
"label": "match"
|
|
2172
|
+
},
|
|
2173
|
+
{
|
|
2174
|
+
"from": "write",
|
|
2175
|
+
"to": "conflict",
|
|
2176
|
+
"label": "stale"
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"from": "conflict",
|
|
2180
|
+
"to": "reload"
|
|
2181
|
+
},
|
|
2182
|
+
{
|
|
2183
|
+
"from": "reload",
|
|
2184
|
+
"to": "write"
|
|
2185
|
+
}
|
|
2186
|
+
],
|
|
2187
|
+
"howToRead": "Conflict path returns to reload; success updates revision.",
|
|
2188
|
+
"keyTakeaways": [],
|
|
2189
|
+
"textAlternative": "Load a record and its revision. Write with that expected revision. On success the revision advances. On conflict, reload and retry or escalate; the record was not changed by the failed write.",
|
|
2190
|
+
"audiences": [],
|
|
2191
|
+
"related": [],
|
|
2192
|
+
"tags": []
|
|
2193
|
+
},
|
|
2194
|
+
{
|
|
2195
|
+
"id": "intelligence-journey",
|
|
2196
|
+
"type": "flow",
|
|
2197
|
+
"title": "Intelligence journey",
|
|
2198
|
+
"summary": "Evidence can yield analysis, decision, and proposals that still require explicit install.",
|
|
2199
|
+
"why": "Keeps human confirmation on runtime-changing actions.",
|
|
2200
|
+
"nodes": [
|
|
2201
|
+
{
|
|
2202
|
+
"id": "evidence",
|
|
2203
|
+
"label": "Evidence"
|
|
2204
|
+
},
|
|
2205
|
+
{
|
|
2206
|
+
"id": "analysis",
|
|
2207
|
+
"label": "Analysis",
|
|
2208
|
+
"conceptId": "analysis-objects"
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"id": "decision",
|
|
2212
|
+
"label": "Decision",
|
|
2213
|
+
"conceptId": "decisions-content"
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"id": "proposal",
|
|
2217
|
+
"label": "Proposal",
|
|
2218
|
+
"conceptId": "intelligence-proposals"
|
|
2219
|
+
},
|
|
2220
|
+
{
|
|
2221
|
+
"id": "install",
|
|
2222
|
+
"label": "Explicit action",
|
|
2223
|
+
"conceptId": "explicit-metadata-installation"
|
|
2224
|
+
}
|
|
2225
|
+
],
|
|
2226
|
+
"edges": [
|
|
2227
|
+
{
|
|
2228
|
+
"from": "evidence",
|
|
2229
|
+
"to": "analysis"
|
|
2230
|
+
},
|
|
2231
|
+
{
|
|
2232
|
+
"from": "analysis",
|
|
2233
|
+
"to": "decision"
|
|
2234
|
+
},
|
|
2235
|
+
{
|
|
2236
|
+
"from": "decision",
|
|
2237
|
+
"to": "proposal"
|
|
2238
|
+
},
|
|
2239
|
+
{
|
|
2240
|
+
"from": "proposal",
|
|
2241
|
+
"to": "install",
|
|
2242
|
+
"label": "confirm"
|
|
2243
|
+
}
|
|
2244
|
+
],
|
|
2245
|
+
"howToRead": "Proposals do not skip the install confirmation gate.",
|
|
2246
|
+
"keyTakeaways": [],
|
|
2247
|
+
"textAlternative": "Source and content evidence can produce analysis and a decision. An intelligence proposal may follow but requires explicit human-controlled installation or operational action.",
|
|
2248
|
+
"audiences": [],
|
|
2249
|
+
"related": [],
|
|
2250
|
+
"tags": []
|
|
2251
|
+
}
|
|
2252
|
+
],
|
|
2253
|
+
"relationships": [
|
|
2254
|
+
{
|
|
2255
|
+
"id": "scope-prereq-effective",
|
|
2256
|
+
"type": "prerequisiteOf",
|
|
2257
|
+
"from": "org-agent-scope",
|
|
2258
|
+
"to": "effective-metadata"
|
|
2259
|
+
},
|
|
2260
|
+
{
|
|
2261
|
+
"id": "install-explains-proposals",
|
|
2262
|
+
"type": "explains",
|
|
2263
|
+
"from": "explicit-metadata-installation",
|
|
2264
|
+
"to": "intelligence-proposals"
|
|
2265
|
+
},
|
|
2266
|
+
{
|
|
2267
|
+
"id": "people-part-of-abstracts",
|
|
2268
|
+
"type": "partOf",
|
|
2269
|
+
"from": "people-union",
|
|
2270
|
+
"to": "abstracts-bindings"
|
|
2271
|
+
}
|
|
2272
|
+
],
|
|
2273
|
+
"tutorials": [
|
|
2274
|
+
{
|
|
2275
|
+
"summary": "Load the synthetic dataset and confirm scope.",
|
|
2276
|
+
"audiences": [
|
|
2277
|
+
"developers",
|
|
2278
|
+
"builders"
|
|
2279
|
+
],
|
|
2280
|
+
"whenItMatters": [],
|
|
2281
|
+
"whenNotToUse": [],
|
|
2282
|
+
"prerequisites": [],
|
|
2283
|
+
"related": [
|
|
2284
|
+
"org-agent-scope"
|
|
2285
|
+
],
|
|
2286
|
+
"next": [],
|
|
2287
|
+
"exampleIds": [],
|
|
2288
|
+
"commonMistakes": [],
|
|
2289
|
+
"successCriteria": [],
|
|
2290
|
+
"invariants": [],
|
|
2291
|
+
"alternatives": [],
|
|
2292
|
+
"tags": [],
|
|
2293
|
+
"id": "start-with-sample-data",
|
|
2294
|
+
"type": "tutorial",
|
|
2295
|
+
"title": "Start Memorix with the sample dataset",
|
|
2296
|
+
"requiredServices": [],
|
|
2297
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2298
|
+
"setup": [
|
|
2299
|
+
"Start local Memorix stack",
|
|
2300
|
+
"Load sample dataset"
|
|
2301
|
+
],
|
|
2302
|
+
"steps": [
|
|
2303
|
+
{
|
|
2304
|
+
"id": "scope",
|
|
2305
|
+
"kind": "ui",
|
|
2306
|
+
"title": "Apply demo scope",
|
|
2307
|
+
"expected": "Scope applied"
|
|
2308
|
+
},
|
|
2309
|
+
{
|
|
2310
|
+
"id": "verify",
|
|
2311
|
+
"kind": "verification",
|
|
2312
|
+
"title": "List sample subjects",
|
|
2313
|
+
"expected": "Stable fictional IDs visible"
|
|
2314
|
+
}
|
|
2315
|
+
],
|
|
2316
|
+
"verification": [
|
|
2317
|
+
"Sample entities listed"
|
|
2318
|
+
],
|
|
2319
|
+
"reset": [
|
|
2320
|
+
"Reset sample dataset"
|
|
2321
|
+
],
|
|
2322
|
+
"troubleshooting": [],
|
|
2323
|
+
"runnable": false
|
|
2324
|
+
},
|
|
2325
|
+
{
|
|
2326
|
+
"summary": "Practice expected-revision writes on sample data.",
|
|
2327
|
+
"audiences": [
|
|
2328
|
+
"developers"
|
|
2329
|
+
],
|
|
2330
|
+
"whenItMatters": [],
|
|
2331
|
+
"whenNotToUse": [],
|
|
2332
|
+
"prerequisites": [],
|
|
2333
|
+
"related": [
|
|
2334
|
+
"record-revisions"
|
|
2335
|
+
],
|
|
2336
|
+
"next": [],
|
|
2337
|
+
"exampleIds": [],
|
|
2338
|
+
"commonMistakes": [],
|
|
2339
|
+
"successCriteria": [],
|
|
2340
|
+
"invariants": [],
|
|
2341
|
+
"alternatives": [],
|
|
2342
|
+
"tags": [],
|
|
2343
|
+
"id": "first-revision-safe-record",
|
|
2344
|
+
"type": "tutorial",
|
|
2345
|
+
"title": "Read and write the first revision-safe record",
|
|
2346
|
+
"requiredServices": [],
|
|
2347
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2348
|
+
"setup": [],
|
|
2349
|
+
"steps": [
|
|
2350
|
+
{
|
|
2351
|
+
"id": "read",
|
|
2352
|
+
"kind": "api",
|
|
2353
|
+
"title": "Read record",
|
|
2354
|
+
"expected": "Revision present"
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
"id": "write",
|
|
2358
|
+
"kind": "api",
|
|
2359
|
+
"title": "Write with expected revision",
|
|
2360
|
+
"expected": "Success"
|
|
2361
|
+
}
|
|
2362
|
+
],
|
|
2363
|
+
"verification": [
|
|
2364
|
+
"Revision advanced"
|
|
2365
|
+
],
|
|
2366
|
+
"reset": [
|
|
2367
|
+
"Restore sample record"
|
|
2368
|
+
],
|
|
2369
|
+
"troubleshooting": [],
|
|
2370
|
+
"runnable": false
|
|
2371
|
+
},
|
|
2372
|
+
{
|
|
2373
|
+
"summary": "See fidelity differences on the same subjects.",
|
|
2374
|
+
"audiences": [
|
|
2375
|
+
"developers",
|
|
2376
|
+
"builders"
|
|
2377
|
+
],
|
|
2378
|
+
"whenItMatters": [],
|
|
2379
|
+
"whenNotToUse": [],
|
|
2380
|
+
"prerequisites": [],
|
|
2381
|
+
"related": [
|
|
2382
|
+
"composition",
|
|
2383
|
+
"people-union"
|
|
2384
|
+
],
|
|
2385
|
+
"next": [],
|
|
2386
|
+
"exampleIds": [],
|
|
2387
|
+
"commonMistakes": [],
|
|
2388
|
+
"successCriteria": [],
|
|
2389
|
+
"invariants": [],
|
|
2390
|
+
"alternatives": [],
|
|
2391
|
+
"tags": [],
|
|
2392
|
+
"id": "compare-views",
|
|
2393
|
+
"type": "tutorial",
|
|
2394
|
+
"title": "Compare raw, composed, and abstract views",
|
|
2395
|
+
"requiredServices": [],
|
|
2396
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2397
|
+
"setup": [],
|
|
2398
|
+
"steps": [
|
|
2399
|
+
{
|
|
2400
|
+
"id": "raw",
|
|
2401
|
+
"kind": "ui",
|
|
2402
|
+
"title": "Open raw",
|
|
2403
|
+
"expected": "Envelope + raw"
|
|
2404
|
+
},
|
|
2405
|
+
{
|
|
2406
|
+
"id": "compose",
|
|
2407
|
+
"kind": "ui",
|
|
2408
|
+
"title": "Open composition",
|
|
2409
|
+
"expected": "Multiple instances"
|
|
2410
|
+
},
|
|
2411
|
+
{
|
|
2412
|
+
"id": "people",
|
|
2413
|
+
"kind": "ui",
|
|
2414
|
+
"title": "Open People",
|
|
2415
|
+
"expected": "Union projection"
|
|
2416
|
+
}
|
|
2417
|
+
],
|
|
2418
|
+
"verification": [
|
|
2419
|
+
"Each view explained"
|
|
2420
|
+
],
|
|
2421
|
+
"reset": [],
|
|
2422
|
+
"troubleshooting": [],
|
|
2423
|
+
"runnable": false
|
|
2424
|
+
},
|
|
2425
|
+
{
|
|
2426
|
+
"summary": "Hands-on relationship definition and traversal.",
|
|
2427
|
+
"audiences": [
|
|
2428
|
+
"developers"
|
|
2429
|
+
],
|
|
2430
|
+
"whenItMatters": [],
|
|
2431
|
+
"whenNotToUse": [],
|
|
2432
|
+
"prerequisites": [],
|
|
2433
|
+
"related": [
|
|
2434
|
+
"traversal"
|
|
2435
|
+
],
|
|
2436
|
+
"next": [],
|
|
2437
|
+
"exampleIds": [],
|
|
2438
|
+
"commonMistakes": [],
|
|
2439
|
+
"successCriteria": [],
|
|
2440
|
+
"invariants": [],
|
|
2441
|
+
"alternatives": [],
|
|
2442
|
+
"tags": [],
|
|
2443
|
+
"id": "relationships-lab",
|
|
2444
|
+
"type": "tutorial",
|
|
2445
|
+
"title": "Define, store, and traverse relationships",
|
|
2446
|
+
"requiredServices": [],
|
|
2447
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2448
|
+
"setup": [],
|
|
2449
|
+
"steps": [
|
|
2450
|
+
{
|
|
2451
|
+
"id": "def",
|
|
2452
|
+
"kind": "explanation",
|
|
2453
|
+
"title": "Review definition",
|
|
2454
|
+
"body": "Use sample relationship definition."
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
"id": "traverse",
|
|
2458
|
+
"kind": "api",
|
|
2459
|
+
"title": "Traverse forward and inverse",
|
|
2460
|
+
"expected": "Resolved and unresolved cases"
|
|
2461
|
+
}
|
|
2462
|
+
],
|
|
2463
|
+
"verification": [
|
|
2464
|
+
"Unresolved retained"
|
|
2465
|
+
],
|
|
2466
|
+
"reset": [],
|
|
2467
|
+
"troubleshooting": [],
|
|
2468
|
+
"runnable": false
|
|
2469
|
+
},
|
|
2470
|
+
{
|
|
2471
|
+
"summary": "Trigger and recover from a conflict using sample data.",
|
|
2472
|
+
"audiences": [
|
|
2473
|
+
"developers"
|
|
2474
|
+
],
|
|
2475
|
+
"whenItMatters": [],
|
|
2476
|
+
"whenNotToUse": [],
|
|
2477
|
+
"prerequisites": [],
|
|
2478
|
+
"related": [
|
|
2479
|
+
"record-revisions"
|
|
2480
|
+
],
|
|
2481
|
+
"next": [],
|
|
2482
|
+
"exampleIds": [],
|
|
2483
|
+
"commonMistakes": [],
|
|
2484
|
+
"successCriteria": [],
|
|
2485
|
+
"invariants": [],
|
|
2486
|
+
"alternatives": [],
|
|
2487
|
+
"tags": [],
|
|
2488
|
+
"id": "conflict-lab",
|
|
2489
|
+
"type": "tutorial",
|
|
2490
|
+
"title": "Recover from a stale revision conflict",
|
|
2491
|
+
"requiredServices": [],
|
|
2492
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2493
|
+
"setup": [],
|
|
2494
|
+
"steps": [
|
|
2495
|
+
{
|
|
2496
|
+
"id": "stale",
|
|
2497
|
+
"kind": "api",
|
|
2498
|
+
"title": "Submit stale revision",
|
|
2499
|
+
"expected": "Conflict"
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"id": "retry",
|
|
2503
|
+
"kind": "api",
|
|
2504
|
+
"title": "Reload and retry",
|
|
2505
|
+
"expected": "Success"
|
|
2506
|
+
}
|
|
2507
|
+
],
|
|
2508
|
+
"verification": [
|
|
2509
|
+
"Record unchanged by failed write"
|
|
2510
|
+
],
|
|
2511
|
+
"reset": [],
|
|
2512
|
+
"troubleshooting": [],
|
|
2513
|
+
"runnable": false
|
|
2514
|
+
},
|
|
2515
|
+
{
|
|
2516
|
+
"summary": "Practice validation versus confirmation.",
|
|
2517
|
+
"audiences": [
|
|
2518
|
+
"builders"
|
|
2519
|
+
],
|
|
2520
|
+
"whenItMatters": [],
|
|
2521
|
+
"whenNotToUse": [],
|
|
2522
|
+
"prerequisites": [],
|
|
2523
|
+
"related": [
|
|
2524
|
+
"explicit-metadata-installation"
|
|
2525
|
+
],
|
|
2526
|
+
"next": [],
|
|
2527
|
+
"exampleIds": [],
|
|
2528
|
+
"commonMistakes": [],
|
|
2529
|
+
"successCriteria": [],
|
|
2530
|
+
"invariants": [],
|
|
2531
|
+
"alternatives": [],
|
|
2532
|
+
"tags": [],
|
|
2533
|
+
"id": "install-pack-lab",
|
|
2534
|
+
"type": "tutorial",
|
|
2535
|
+
"title": "Validate and explicitly install a metadata pack",
|
|
2536
|
+
"requiredServices": [],
|
|
2537
|
+
"setup": [],
|
|
2538
|
+
"steps": [
|
|
2539
|
+
{
|
|
2540
|
+
"id": "validate",
|
|
2541
|
+
"kind": "ui",
|
|
2542
|
+
"title": "Validate",
|
|
2543
|
+
"expected": "Valid"
|
|
2544
|
+
},
|
|
2545
|
+
{
|
|
2546
|
+
"id": "cancel",
|
|
2547
|
+
"kind": "ui",
|
|
2548
|
+
"title": "Cancel once",
|
|
2549
|
+
"expected": "Runtime unchanged"
|
|
2550
|
+
},
|
|
2551
|
+
{
|
|
2552
|
+
"id": "install",
|
|
2553
|
+
"kind": "ui",
|
|
2554
|
+
"title": "Confirm install",
|
|
2555
|
+
"expected": "Effective updated"
|
|
2556
|
+
}
|
|
2557
|
+
],
|
|
2558
|
+
"verification": [
|
|
2559
|
+
"Cancel path proven"
|
|
2560
|
+
],
|
|
2561
|
+
"reset": [],
|
|
2562
|
+
"troubleshooting": [],
|
|
2563
|
+
"runnable": false
|
|
2564
|
+
},
|
|
2565
|
+
{
|
|
2566
|
+
"summary": "Create analysis then a distinct decision on sample evidence.",
|
|
2567
|
+
"audiences": [
|
|
2568
|
+
"developers",
|
|
2569
|
+
"builders"
|
|
2570
|
+
],
|
|
2571
|
+
"whenItMatters": [],
|
|
2572
|
+
"whenNotToUse": [],
|
|
2573
|
+
"prerequisites": [],
|
|
2574
|
+
"related": [
|
|
2575
|
+
"analysis-objects",
|
|
2576
|
+
"decisions-content"
|
|
2577
|
+
],
|
|
2578
|
+
"next": [],
|
|
2579
|
+
"exampleIds": [],
|
|
2580
|
+
"commonMistakes": [],
|
|
2581
|
+
"successCriteria": [],
|
|
2582
|
+
"invariants": [],
|
|
2583
|
+
"alternatives": [],
|
|
2584
|
+
"tags": [],
|
|
2585
|
+
"id": "analysis-decision-lab",
|
|
2586
|
+
"type": "tutorial",
|
|
2587
|
+
"title": "Move from records to analysis and a decision",
|
|
2588
|
+
"requiredServices": [],
|
|
2589
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2590
|
+
"setup": [],
|
|
2591
|
+
"steps": [
|
|
2592
|
+
{
|
|
2593
|
+
"id": "analysis",
|
|
2594
|
+
"kind": "api",
|
|
2595
|
+
"title": "Write analysis",
|
|
2596
|
+
"expected": "Analysis stored"
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
"id": "decision",
|
|
2600
|
+
"kind": "api",
|
|
2601
|
+
"title": "Write decision",
|
|
2602
|
+
"expected": "Decision stored"
|
|
2603
|
+
}
|
|
2604
|
+
],
|
|
2605
|
+
"verification": [
|
|
2606
|
+
"Types remain distinct"
|
|
2607
|
+
],
|
|
2608
|
+
"reset": [],
|
|
2609
|
+
"troubleshooting": [],
|
|
2610
|
+
"runnable": false
|
|
2611
|
+
}
|
|
2612
|
+
],
|
|
2613
|
+
"examples": [
|
|
2614
|
+
{
|
|
2615
|
+
"id": "memorix-record-envelope",
|
|
2616
|
+
"type": "record",
|
|
2617
|
+
"title": "memorix-record/2 envelope",
|
|
2618
|
+
"purpose": "Show identity, revision, and content envelope fields.",
|
|
2619
|
+
"explanation": "Envelope metadata is distinct from product payload.",
|
|
2620
|
+
"audiences": [
|
|
2621
|
+
"developers"
|
|
2622
|
+
],
|
|
2623
|
+
"datasetId": "memorix-synthetic-basic",
|
|
2624
|
+
"conceptIds": [
|
|
2625
|
+
"raw-records",
|
|
2626
|
+
"record-revisions"
|
|
2627
|
+
],
|
|
2628
|
+
"operationIds": []
|
|
2629
|
+
},
|
|
2630
|
+
{
|
|
2631
|
+
"id": "revision-safe-write",
|
|
2632
|
+
"type": "api",
|
|
2633
|
+
"title": "Revision-safe write",
|
|
2634
|
+
"purpose": "Write with expected revision.",
|
|
2635
|
+
"audiences": [
|
|
2636
|
+
"developers"
|
|
2637
|
+
],
|
|
2638
|
+
"conceptIds": [
|
|
2639
|
+
"record-revisions"
|
|
2640
|
+
],
|
|
2641
|
+
"operationIds": [
|
|
2642
|
+
"patch-record"
|
|
2643
|
+
]
|
|
2644
|
+
},
|
|
2645
|
+
{
|
|
2646
|
+
"id": "revision-conflict-response",
|
|
2647
|
+
"type": "error",
|
|
2648
|
+
"title": "Revision conflict response and retry",
|
|
2649
|
+
"purpose": "Show conflict payload and retry input.",
|
|
2650
|
+
"audiences": [
|
|
2651
|
+
"developers"
|
|
2652
|
+
],
|
|
2653
|
+
"conceptIds": [
|
|
2654
|
+
"record-revisions"
|
|
2655
|
+
],
|
|
2656
|
+
"operationIds": []
|
|
2657
|
+
},
|
|
2658
|
+
{
|
|
2659
|
+
"id": "raw-vs-composed",
|
|
2660
|
+
"type": "api",
|
|
2661
|
+
"title": "Raw versus composed subject responses",
|
|
2662
|
+
"purpose": "Compare fidelity of raw and composition.",
|
|
2663
|
+
"audiences": [],
|
|
2664
|
+
"conceptIds": [
|
|
2665
|
+
"raw-records",
|
|
2666
|
+
"composition"
|
|
2667
|
+
],
|
|
2668
|
+
"operationIds": []
|
|
2669
|
+
},
|
|
2670
|
+
{
|
|
2671
|
+
"id": "people-abstract-query",
|
|
2672
|
+
"type": "api",
|
|
2673
|
+
"title": "People abstract query/result",
|
|
2674
|
+
"purpose": "Demonstrate union projection.",
|
|
2675
|
+
"audiences": [],
|
|
2676
|
+
"conceptIds": [
|
|
2677
|
+
"people-union"
|
|
2678
|
+
],
|
|
2679
|
+
"operationIds": []
|
|
2680
|
+
},
|
|
2681
|
+
{
|
|
2682
|
+
"id": "relationship-def-and-ref",
|
|
2683
|
+
"type": "record",
|
|
2684
|
+
"title": "Relationship definition and stored reference",
|
|
2685
|
+
"purpose": "Contrast metadata definition with stored ref.",
|
|
2686
|
+
"audiences": [],
|
|
2687
|
+
"conceptIds": [
|
|
2688
|
+
"relationship-definitions",
|
|
2689
|
+
"relationship-references"
|
|
2690
|
+
],
|
|
2691
|
+
"operationIds": []
|
|
2692
|
+
},
|
|
2693
|
+
{
|
|
2694
|
+
"id": "traversal-resolved-unresolved",
|
|
2695
|
+
"type": "api",
|
|
2696
|
+
"title": "Forward/inverse traversal with resolved and unresolved targets",
|
|
2697
|
+
"purpose": "Show both target states.",
|
|
2698
|
+
"audiences": [],
|
|
2699
|
+
"conceptIds": [
|
|
2700
|
+
"traversal",
|
|
2701
|
+
"resolved-unresolved"
|
|
2702
|
+
],
|
|
2703
|
+
"operationIds": []
|
|
2704
|
+
},
|
|
2705
|
+
{
|
|
2706
|
+
"id": "metadata-pack-install",
|
|
2707
|
+
"type": "ui",
|
|
2708
|
+
"title": "Metadata-pack validation and explicit installation",
|
|
2709
|
+
"purpose": "Evidence that validate ≠ install.",
|
|
2710
|
+
"audiences": [],
|
|
2711
|
+
"conceptIds": [
|
|
2712
|
+
"explicit-metadata-installation"
|
|
2713
|
+
],
|
|
2714
|
+
"operationIds": []
|
|
2715
|
+
},
|
|
2716
|
+
{
|
|
2717
|
+
"id": "analysis-decision-records",
|
|
2718
|
+
"type": "record",
|
|
2719
|
+
"title": "Analysis and decision records",
|
|
2720
|
+
"purpose": "Keep analysis and decision content types distinct.",
|
|
2721
|
+
"audiences": [],
|
|
2722
|
+
"conceptIds": [
|
|
2723
|
+
"analysis-objects",
|
|
2724
|
+
"decisions-content"
|
|
2725
|
+
],
|
|
2726
|
+
"operationIds": []
|
|
2727
|
+
}
|
|
2728
|
+
],
|
|
2729
|
+
"sampleData": [
|
|
2730
|
+
{
|
|
2731
|
+
"id": "memorix-synthetic-basic",
|
|
2732
|
+
"version": "1.0.0",
|
|
2733
|
+
"purpose": "Deterministic synthetic Memorix subjects for docs, screenshots, and tutorials.",
|
|
2734
|
+
"files": [
|
|
2735
|
+
"files/README.md"
|
|
2736
|
+
],
|
|
2737
|
+
"schemas": [],
|
|
2738
|
+
"seedInstructions": "Load the synthetic fixture pack into a local Memorix workspace reserved for docs.",
|
|
2739
|
+
"resetInstructions": "Re-seed the fixture pack; do not use production data.",
|
|
2740
|
+
"entities": [
|
|
2741
|
+
"employee-e1",
|
|
2742
|
+
"contractor-c1",
|
|
2743
|
+
"work-item-w1",
|
|
2744
|
+
"procedure-p1",
|
|
2745
|
+
"analysis-a1",
|
|
2746
|
+
"decision-d1"
|
|
2747
|
+
],
|
|
2748
|
+
"expectedRelationships": [
|
|
2749
|
+
"employee-e1 reports-to unresolved-manager",
|
|
2750
|
+
"work-item-w1 assigned-to employee-e1"
|
|
2751
|
+
],
|
|
2752
|
+
"sensitivity": "public",
|
|
2753
|
+
"origin": "synthetic"
|
|
2754
|
+
}
|
|
2755
|
+
],
|
|
2756
|
+
"uiClients": [
|
|
2757
|
+
{
|
|
2758
|
+
"id": "memorix-studio",
|
|
2759
|
+
"title": "Memorix Studio",
|
|
2760
|
+
"summary": "Service-oriented UI for designing, operating, and exploring Memorix.",
|
|
2761
|
+
"audiences": [
|
|
2762
|
+
"builders",
|
|
2763
|
+
"developers"
|
|
2764
|
+
],
|
|
2765
|
+
"baseUrl": "http://127.0.0.1:4173",
|
|
2766
|
+
"screenIds": [
|
|
2767
|
+
"scope",
|
|
2768
|
+
"agents",
|
|
2769
|
+
"raw-records",
|
|
2770
|
+
"composition",
|
|
2771
|
+
"abstracts",
|
|
2772
|
+
"relationships",
|
|
2773
|
+
"workflow"
|
|
2774
|
+
],
|
|
2775
|
+
"flowIds": [
|
|
2776
|
+
"apply-scope",
|
|
2777
|
+
"inspect-effective-metadata",
|
|
2778
|
+
"load-raw",
|
|
2779
|
+
"load-composition",
|
|
2780
|
+
"query-abstract",
|
|
2781
|
+
"traverse-relationship",
|
|
2782
|
+
"handle-unresolved",
|
|
2783
|
+
"handle-revision-conflict",
|
|
2784
|
+
"validate-install-metadata"
|
|
2785
|
+
],
|
|
2786
|
+
"screens": [
|
|
2787
|
+
{
|
|
2788
|
+
"id": "scope",
|
|
2789
|
+
"title": "Scope selector",
|
|
2790
|
+
"route": "/",
|
|
2791
|
+
"purpose": "Choose organization and agent scope.",
|
|
2792
|
+
"audiences": [
|
|
2793
|
+
"builders"
|
|
2794
|
+
],
|
|
2795
|
+
"prerequisites": [],
|
|
2796
|
+
"controls": [],
|
|
2797
|
+
"states": [
|
|
2798
|
+
"empty",
|
|
2799
|
+
"selected",
|
|
2800
|
+
"applied"
|
|
2801
|
+
],
|
|
2802
|
+
"screenshotIds": [],
|
|
2803
|
+
"conceptIds": [
|
|
2804
|
+
"org-agent-scope"
|
|
2805
|
+
],
|
|
2806
|
+
"operationIds": [],
|
|
2807
|
+
"next": []
|
|
2808
|
+
},
|
|
2809
|
+
{
|
|
2810
|
+
"id": "workflow",
|
|
2811
|
+
"title": "Workflow explorer",
|
|
2812
|
+
"route": "/explore/workflow",
|
|
2813
|
+
"purpose": "Inspect workflow records and conflicts.",
|
|
2814
|
+
"audiences": [],
|
|
2815
|
+
"prerequisites": [],
|
|
2816
|
+
"controls": [],
|
|
2817
|
+
"states": [
|
|
2818
|
+
"loading",
|
|
2819
|
+
"success",
|
|
2820
|
+
"conflict"
|
|
2821
|
+
],
|
|
2822
|
+
"screenshotIds": [],
|
|
2823
|
+
"conceptIds": [
|
|
2824
|
+
"record-revisions"
|
|
2825
|
+
],
|
|
2826
|
+
"operationIds": [],
|
|
2827
|
+
"next": []
|
|
2828
|
+
}
|
|
2829
|
+
],
|
|
2830
|
+
"flows": [
|
|
2831
|
+
{
|
|
2832
|
+
"id": "apply-scope",
|
|
2833
|
+
"title": "Apply scope",
|
|
2834
|
+
"goal": "Lock the intended workspace.",
|
|
2835
|
+
"steps": [
|
|
2836
|
+
{
|
|
2837
|
+
"id": "select",
|
|
2838
|
+
"action": "Select org and agent",
|
|
2839
|
+
"expectedState": "Selected"
|
|
2840
|
+
},
|
|
2841
|
+
{
|
|
2842
|
+
"id": "apply",
|
|
2843
|
+
"action": "Apply scope",
|
|
2844
|
+
"expectedState": "Applied"
|
|
2845
|
+
}
|
|
2846
|
+
],
|
|
2847
|
+
"operationIds": []
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"id": "handle-revision-conflict",
|
|
2851
|
+
"title": "Handle revision conflict",
|
|
2852
|
+
"goal": "Recover from stale write.",
|
|
2853
|
+
"steps": [
|
|
2854
|
+
{
|
|
2855
|
+
"id": "submit",
|
|
2856
|
+
"action": "Submit stale update",
|
|
2857
|
+
"expectedState": "conflict"
|
|
2858
|
+
},
|
|
2859
|
+
{
|
|
2860
|
+
"id": "reload",
|
|
2861
|
+
"action": "Reload and retry",
|
|
2862
|
+
"expectedState": "success"
|
|
2863
|
+
}
|
|
2864
|
+
],
|
|
2865
|
+
"sampleDataId": "memorix-synthetic-basic",
|
|
2866
|
+
"operationIds": []
|
|
2867
|
+
},
|
|
2868
|
+
{
|
|
2869
|
+
"id": "validate-install-metadata",
|
|
2870
|
+
"title": "Validate and explicitly install metadata",
|
|
2871
|
+
"goal": "Install only after confirmation.",
|
|
2872
|
+
"steps": [
|
|
2873
|
+
{
|
|
2874
|
+
"id": "validate",
|
|
2875
|
+
"action": "Validate pack",
|
|
2876
|
+
"expectedState": "valid"
|
|
2877
|
+
},
|
|
2878
|
+
{
|
|
2879
|
+
"id": "confirm",
|
|
2880
|
+
"action": "Confirm install",
|
|
2881
|
+
"expectedState": "installed"
|
|
2882
|
+
}
|
|
2883
|
+
],
|
|
2884
|
+
"operationIds": []
|
|
2885
|
+
}
|
|
2886
|
+
]
|
|
2887
|
+
}
|
|
2888
|
+
],
|
|
2889
|
+
"apis": [
|
|
2890
|
+
{
|
|
2891
|
+
"id": "memorix-records",
|
|
2892
|
+
"title": "Memorix records API",
|
|
2893
|
+
"summary": "Read and conditionally write Memorix records with revision preconditions.",
|
|
2894
|
+
"why": "Agents and services need exact revision-safe operations.",
|
|
2895
|
+
"audiences": [
|
|
2896
|
+
"developers"
|
|
2897
|
+
],
|
|
2898
|
+
"basePaths": [
|
|
2899
|
+
"/api/records"
|
|
2900
|
+
],
|
|
2901
|
+
"authExplanation": "Uses the product's configured auth; never embed secrets in docs.",
|
|
2902
|
+
"operations": [
|
|
2903
|
+
{
|
|
2904
|
+
"id": "get-record",
|
|
2905
|
+
"title": "Get record",
|
|
2906
|
+
"summary": "Read a record envelope and content.",
|
|
2907
|
+
"whenToUse": "Need current revision and payload",
|
|
2908
|
+
"method": "GET",
|
|
2909
|
+
"path": "/api/records/{id}",
|
|
2910
|
+
"exampleIds": [],
|
|
2911
|
+
"conceptIds": [
|
|
2912
|
+
"raw-records",
|
|
2913
|
+
"record-revisions"
|
|
2914
|
+
],
|
|
2915
|
+
"guideIds": []
|
|
2916
|
+
},
|
|
2917
|
+
{
|
|
2918
|
+
"id": "patch-record",
|
|
2919
|
+
"title": "Patch record",
|
|
2920
|
+
"summary": "Conditionally update a record with expected revision.",
|
|
2921
|
+
"whenToUse": "Safe write",
|
|
2922
|
+
"whenNotToUse": "When you do not know the current revision",
|
|
2923
|
+
"method": "PATCH",
|
|
2924
|
+
"path": "/api/records/{id}",
|
|
2925
|
+
"exampleIds": [
|
|
2926
|
+
"revision-safe-write"
|
|
2927
|
+
],
|
|
2928
|
+
"conceptIds": [
|
|
2929
|
+
"record-revisions"
|
|
2930
|
+
],
|
|
2931
|
+
"guideIds": []
|
|
2932
|
+
}
|
|
2933
|
+
],
|
|
2934
|
+
"related": [
|
|
2935
|
+
"record-revisions",
|
|
2936
|
+
"first-revision-safe-write"
|
|
2937
|
+
]
|
|
2938
|
+
}
|
|
2939
|
+
]
|
|
2940
|
+
}
|