@x12i/memorix-metadata 3.1.0 → 3.2.1

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.
@@ -172,7 +172,7 @@
172
172
  "name": "Content",
173
173
  "dataCategory": "knowledge",
174
174
  "abstractTypes": [
175
- "KnowXContent"
175
+ "Content"
176
176
  ],
177
177
  "notes": "Ingested documents (raw/snapshots) plus free-floating KnowX knowledge items (knowx NODE/EDGE with own recordId). Entity NODE facets stay on people/work-items.",
178
178
  "contentTypes": [
@@ -311,7 +311,7 @@
311
311
  "required": false
312
312
  },
313
313
  {
314
- "id": "knowxEdgesFrom",
314
+ "id": "contentEdgesFrom",
315
315
  "valueType": "array",
316
316
  "required": false
317
317
  }
@@ -352,9 +352,9 @@
352
352
  "concreteValueType": "string"
353
353
  },
354
354
  {
355
- "abstractProperty": "knowxEdgesFrom",
355
+ "abstractProperty": "contentEdgesFrom",
356
356
  "contentType": "relationships",
357
- "propertyPath": "data.nav.knowxEdgesFrom"
357
+ "propertyPath": "data.nav.contentEdgesFrom"
358
358
  }
359
359
  ]
360
360
  }
@@ -384,7 +384,7 @@
384
384
  "required": false
385
385
  },
386
386
  {
387
- "id": "knowxEdgesTo",
387
+ "id": "contentEdgesTo",
388
388
  "valueType": "array",
389
389
  "required": false
390
390
  }
@@ -413,9 +413,9 @@
413
413
  "concreteValueType": "string"
414
414
  },
415
415
  {
416
- "abstractProperty": "knowxEdgesTo",
416
+ "abstractProperty": "contentEdgesTo",
417
417
  "contentType": "relationships",
418
- "propertyPath": "data.nav.knowxEdgesTo"
418
+ "propertyPath": "data.nav.contentEdgesTo"
419
419
  }
420
420
  ]
421
421
  }
@@ -423,9 +423,9 @@
423
423
  "union": false
424
424
  },
425
425
  {
426
- "id": "KnowXContent",
427
- "name": "KnowX Content",
428
- "meaning": "Canonical ingested document representation (Markdown + provenance). Knowledge claims are derived from content; post-processing uses content types on this OT (raw → snapshots).",
426
+ "id": "Content",
427
+ "name": "Content",
428
+ "meaning": "Canonical ingested documents and derived knowledge items (Markdown + provenance). Knowledge claims are derived from content; content is the source of claims, not the claims themselves.",
429
429
  "category": "knowledge",
430
430
  "properties": [
431
431
  {
@@ -677,21 +677,22 @@
677
677
  ]
678
678
  }
679
679
  ],
680
- "union": false
680
+ "union": false,
681
+ "notes": "Content abstract ↔ content OT. Domain noun — not product-branded. Documents (raw/snapshots) and derived knowledge items (knowx) share this abstract; writers always target concrete content types on the OT."
681
682
  }
682
683
  ],
683
684
  "relationshipDefinitions": [
684
685
  {
685
686
  "id": "knowx-same-as",
686
- "name": "KnowX same as",
687
- "meaning": "Two KnowX claims refer to the same underlying assertion",
687
+ "name": "Same as",
688
+ "meaning": "Two knowledge claims refer to the same underlying assertion",
688
689
  "directionality": "undirected",
689
690
  "from": {
690
- "abstractType": "KnowXContent",
691
+ "abstractType": "Content",
691
692
  "path": "sameAs"
692
693
  },
693
694
  "to": {
694
- "abstractType": "KnowXContent",
695
+ "abstractType": "Content",
695
696
  "path": "sameAs"
696
697
  },
697
698
  "discoveryRules": [
@@ -704,15 +705,15 @@
704
705
  },
705
706
  {
706
707
  "id": "knowx-supports",
707
- "name": "KnowX supports",
708
- "meaning": "One KnowX claim supports another",
708
+ "name": "Supports",
709
+ "meaning": "One knowledge claim supports another",
709
710
  "directionality": "directed",
710
711
  "from": {
711
- "abstractType": "KnowXContent",
712
+ "abstractType": "Content",
712
713
  "path": "supports"
713
714
  },
714
715
  "to": {
715
- "abstractType": "KnowXContent",
716
+ "abstractType": "Content",
716
717
  "path": "supportedBy"
717
718
  },
718
719
  "discoveryRules": [
@@ -725,15 +726,15 @@
725
726
  },
726
727
  {
727
728
  "id": "knowx-contradicts",
728
- "name": "KnowX contradicts",
729
- "meaning": "Two KnowX claims contradict each other",
729
+ "name": "Contradicts",
730
+ "meaning": "Two knowledge claims contradict each other",
730
731
  "directionality": "directed",
731
732
  "from": {
732
- "abstractType": "KnowXContent",
733
+ "abstractType": "Content",
733
734
  "path": "contradicts"
734
735
  },
735
736
  "to": {
736
- "abstractType": "KnowXContent",
737
+ "abstractType": "Content",
737
738
  "path": "contradictedBy"
738
739
  },
739
740
  "discoveryRules": [
@@ -746,15 +747,15 @@
746
747
  },
747
748
  {
748
749
  "id": "knowx-derived-from",
749
- "name": "KnowX derived from claim",
750
- "meaning": "A KnowX claim is derived from another KnowX claim",
750
+ "name": "Derived from claim",
751
+ "meaning": "A knowledge claim is derived from another knowledge claim",
751
752
  "directionality": "directed",
752
753
  "from": {
753
- "abstractType": "KnowXContent",
754
+ "abstractType": "Content",
754
755
  "path": "derivedFrom"
755
756
  },
756
757
  "to": {
757
- "abstractType": "KnowXContent",
758
+ "abstractType": "Content",
758
759
  "path": "derivedClaims"
759
760
  },
760
761
  "discoveryRules": [
@@ -767,15 +768,15 @@
767
768
  },
768
769
  {
769
770
  "id": "knowx-derived-from-content",
770
- "name": "KnowX derived from content",
771
- "meaning": "A KnowX claim is derived from ingested content",
771
+ "name": "Derived from content",
772
+ "meaning": "A knowledge claim is derived from ingested content",
772
773
  "directionality": "directed",
773
774
  "from": {
774
- "abstractType": "KnowXContent",
775
+ "abstractType": "Content",
775
776
  "path": "derivedFromContent"
776
777
  },
777
778
  "to": {
778
- "abstractType": "KnowXContent",
779
+ "abstractType": "Content",
779
780
  "path": "derivedKnowledge"
780
781
  },
781
782
  "discoveryRules": [
@@ -788,16 +789,16 @@
788
789
  },
789
790
  {
790
791
  "id": "knowx-edge-from",
791
- "name": "KnowX edge from",
792
- "meaning": "A KnowX EDGE claim starts at an entity",
792
+ "name": "Edge from",
793
+ "meaning": "A knowledge EDGE claim starts at an entity",
793
794
  "directionality": "directed",
794
795
  "from": {
795
- "abstractType": "KnowXContent",
796
+ "abstractType": "Content",
796
797
  "path": "edgeFrom"
797
798
  },
798
799
  "to": {
799
800
  "abstractType": "People",
800
- "path": "knowxEdgesFrom"
801
+ "path": "contentEdgesFrom"
801
802
  },
802
803
  "discoveryRules": [
803
804
  {
@@ -809,16 +810,16 @@
809
810
  },
810
811
  {
811
812
  "id": "knowx-edge-to",
812
- "name": "KnowX edge to",
813
- "meaning": "A KnowX EDGE claim ends at an entity",
813
+ "name": "Edge to",
814
+ "meaning": "A knowledge EDGE claim ends at an entity",
814
815
  "directionality": "directed",
815
816
  "from": {
816
- "abstractType": "KnowXContent",
817
+ "abstractType": "Content",
817
818
  "path": "edgeTo"
818
819
  },
819
820
  "to": {
820
821
  "abstractType": "WorkItems",
821
- "path": "knowxEdgesTo"
822
+ "path": "contentEdgesTo"
822
823
  },
823
824
  "discoveryRules": [
824
825
  {
@@ -835,7 +836,7 @@
835
836
  "sources": [
836
837
  {
837
838
  "id": "knowx-source",
838
- "name": "KnowX knowledge source",
839
+ "name": "Knowledge source",
839
840
  "kind": "rest",
840
841
  "baseUrlEnv": "KNOWX_SOURCE_URL",
841
842
  "defaultBaseUrl": "http://127.0.0.1:5104",
@@ -883,7 +884,7 @@
883
884
  },
884
885
  {
885
886
  "id": "knowx-managed",
886
- "name": "KnowX Knowledge Drive (managed)",
887
+ "name": "Knowledge Drive (managed)",
887
888
  "kind": "knowx-managed",
888
889
  "connectorRef": "knowx-managed",
889
890
  "endpoints": [
@@ -930,8 +931,8 @@
930
931
  "services": [
931
932
  {
932
933
  "id": "knowx-folder-pull",
933
- "name": "KnowX folder connector pull",
934
- "description": "Runs the remote-hosted knowx-folder defineConnector (collectStream + fullScanHash). Lands exact file raw only — does not extract Markdown or derive Knowledge. Connector-adjacent worker — not agent vocabulary.",
934
+ "name": "Folder connector pull",
935
+ "description": "Runs the remote-hosted knowx-folder defineConnector (collectStream + fullScanHash). Lands exact file raw only — does not extract Markdown or derive knowledge. Connector-adjacent worker — not agent vocabulary.",
935
936
  "role": "connector",
936
937
  "capabilities": [
937
938
  "analyze"
@@ -976,7 +977,7 @@
976
977
  },
977
978
  {
978
979
  "id": "knowx-managed-pull",
979
- "name": "KnowX managed Knowledge Drive pull",
980
+ "name": "Managed drive pull",
980
981
  "description": "Runs the remote-hosted knowx-managed defineConnector over managed upload events / item versions. Lands exact bytes as content/raw via collectStream. Connector-adjacent worker — not agent vocabulary.",
981
982
  "role": "connector",
982
983
  "capabilities": [
@@ -1017,8 +1018,8 @@
1017
1018
  },
1018
1019
  {
1019
1020
  "id": "knowx-promote-content",
1020
- "name": "KnowX promote content",
1021
- "description": "Reads landed content/raw file envelopes, runs format→Markdown extractors, writes KnowXContent snapshots. Connector-pipeline step — promotes concrete raw onto the KnowXContent abstract member.",
1021
+ "name": "Promote content",
1022
+ "description": "Reads landed content/raw file envelopes, runs format→Markdown extractors, writes Content snapshots. Connector-pipeline step — promotes concrete raw onto the Content abstract member.",
1022
1023
  "role": "connector",
1023
1024
  "capabilities": [
1024
1025
  "analyze"
@@ -1047,13 +1048,13 @@
1047
1048
  "outputs": [
1048
1049
  {
1049
1050
  "id": "contentDrafts",
1050
- "abstractType": "KnowXContent",
1051
- "description": "Canonical ContentRecordData drafts on KnowXContent"
1051
+ "abstractType": "Content",
1052
+ "description": "Canonical ContentRecordData drafts on Content"
1052
1053
  },
1053
1054
  {
1054
1055
  "id": "contentIds",
1055
- "abstractType": "KnowXContent",
1056
- "description": "Promoted KnowXContent record ids"
1056
+ "abstractType": "Content",
1057
+ "description": "Promoted Content record ids"
1057
1058
  }
1058
1059
  ],
1059
1060
  "invocation": {
@@ -1063,8 +1064,8 @@
1063
1064
  },
1064
1065
  {
1065
1066
  "id": "knowx-extract",
1066
- "name": "KnowX extract",
1067
- "description": "Extract KnowX NODE/EDGE knowledge-item drafts from KnowXContent (text + knowledge source, or promoted content). Each draft includes data.identity.category (claim|fact|opinion|assumption). Returns drafts only — does not persist. Pipeline write-record applies knowx content. When aiService is bound and AI_SKILLS_URL is set, Memorix invokes Catalox skill knowx.extract via ai-services/1. Fallback: KnowX worker; test-only KNOWX_AI_SIM=1 routes to APS AI sim (:5112).",
1067
+ "name": "Extract knowledge",
1068
+ "description": "Extract NODE/EDGE knowledge-item drafts from Content (text + knowledge source, or promoted content). Each draft includes data.identity.category (claim|fact|opinion|assumption). Returns drafts only — does not persist. Pipeline write-record applies knowx content. When aiService is bound and AI_SKILLS_URL is set, Memorix invokes Catalox skill knowx.extract via ai-services/1. Fallback: pack worker; test-only KNOWX_AI_SIM=1 routes to APS AI sim (:5112).",
1068
1069
  "role": "agent",
1069
1070
  "capabilities": [
1070
1071
  "analyze"
@@ -1076,33 +1077,33 @@
1076
1077
  {
1077
1078
  "id": "text",
1078
1079
  "control": true,
1079
- "description": "Input text to analyze (inline string or resolved from KnowXContent)"
1080
+ "description": "Input text to analyze (inline string or resolved from Content)"
1080
1081
  },
1081
1082
  {
1082
1083
  "id": "knowledgeSource",
1083
- "abstractType": "KnowXContent",
1084
- "description": "Exact source bytes / provenance envelope for KnowXContent"
1084
+ "abstractType": "Content",
1085
+ "description": "Exact source bytes / provenance envelope for Content"
1085
1086
  },
1086
1087
  {
1087
1088
  "id": "contentId",
1088
- "abstractType": "KnowXContent",
1089
- "description": "Promoted KnowXContent record id — open via Explore"
1089
+ "abstractType": "Content",
1090
+ "description": "Promoted Content record id — open via Explore"
1090
1091
  },
1091
1092
  {
1092
1093
  "id": "contentIds",
1093
- "abstractType": "KnowXContent",
1094
- "description": "Batch of promoted KnowXContent ids"
1094
+ "abstractType": "Content",
1095
+ "description": "Batch of promoted Content ids"
1095
1096
  },
1096
1097
  {
1097
1098
  "id": "contentDrafts",
1098
- "abstractType": "KnowXContent",
1099
+ "abstractType": "Content",
1099
1100
  "description": "In-pipeline ContentRecordData from knowx-promote-content"
1100
1101
  }
1101
1102
  ],
1102
1103
  "outputs": [
1103
1104
  {
1104
1105
  "id": "knowxDrafts",
1105
- "abstractType": "KnowXContent",
1106
+ "abstractType": "Content",
1106
1107
  "description": "Array of knowx knowledge-item drafts (NODE/EDGE + data.identity.category claim|fact|opinion|assumption) with mandatory provenance and content lineage"
1107
1108
  }
1108
1109
  ],
@@ -1118,10 +1119,108 @@
1118
1119
  "notes": "Worker fallback when AI_SKILLS_URL unset / compile cannot resolve skill origin. KNOWX_EXTRACT_WORKER_URL honored only when KNOWX_AI_SIM=1 (test-only)."
1119
1120
  }
1120
1121
  },
1122
+ {
1123
+ "id": "knowx-retrieval-index",
1124
+ "name": "Index / candidates (candidate-retrieval)",
1125
+ "description": "Companion step for @x12i/candidate-retrival-service (MEMORIX_RETRIEVAL_URL, default local :6560). (1) POST /v1/candidates for open knowx drafts so associate sees corpus-scale priors, (2) POST /v1/index/upsert for knowx drafts (knowx.knowledge) and Content snapshots (knowx.snapshot). Soft-skips when URL unset or companion down — associate then falls back to Explore.",
1126
+ "role": "agent",
1127
+ "capabilities": [
1128
+ "analyze"
1129
+ ],
1130
+ "memorixAccess": [],
1131
+ "inputs": [
1132
+ {
1133
+ "id": "knowxDrafts",
1134
+ "abstractType": "Content",
1135
+ "description": "Drafts from knowx-extract / write path (candidates + upsert)"
1136
+ },
1137
+ {
1138
+ "id": "contentDrafts",
1139
+ "abstractType": "Content",
1140
+ "description": "Optional Content snapshot drafts from knowx-promote-content (knowx.snapshot upsert)"
1141
+ },
1142
+ {
1143
+ "id": "fetchCandidates",
1144
+ "control": true,
1145
+ "description": "When false, index only (no /v1/candidates). Default true when knowxDrafts present."
1146
+ }
1147
+ ],
1148
+ "outputs": [
1149
+ {
1150
+ "id": "existingKnowx",
1151
+ "abstractType": "Content",
1152
+ "description": "Ranked prior knowx from /v1/candidates for associate (self-ids excluded)"
1153
+ },
1154
+ {
1155
+ "id": "retrieval",
1156
+ "control": true,
1157
+ "description": "enabled / upserted / warnings for ops"
1158
+ },
1159
+ {
1160
+ "id": "indexedRecordIds",
1161
+ "control": true,
1162
+ "description": "recordId / contentId list submitted for upsert"
1163
+ }
1164
+ ],
1165
+ "invocation": {
1166
+ "kind": "worker",
1167
+ "operation": "knowx-retrieval-index",
1168
+ "notes": "Requires MEMORIX_RETRIEVAL_URL (or CANDIDATE_RETRIEVAL_URL) pointing at the candidate-retrieval companion."
1169
+ }
1170
+ },
1171
+ {
1172
+ "id": "knowx-graphify",
1173
+ "name": "Knowledge graph analyze (graphifier)",
1174
+ "description": "Adapter for @x12i/memorix-graphifier (MEMORIX_GRAPHIFIER_URL, default local :7500). Maps KnowX pipeline bags (extract/promote/write) to graphifier items[], POSTs memorix-capability/1 analyze, returns graphDraft/patchPlan. Soft-skips when URL unset or companion down unless MEMORIX_GRAPHIFIER_REQUIRED=1. Persistence is platform write-record (create-or-update) after this step.",
1175
+ "role": "agent",
1176
+ "capabilities": [
1177
+ "analyze"
1178
+ ],
1179
+ "memorixAccess": [],
1180
+ "inputs": [
1181
+ {
1182
+ "id": "knowxDrafts",
1183
+ "abstractType": "Content",
1184
+ "description": "Drafts from knowx-extract / write path (structured items for graphifier)"
1185
+ },
1186
+ {
1187
+ "id": "contentDrafts",
1188
+ "abstractType": "Content",
1189
+ "description": "Optional Content snapshot drafts from knowx-promote-content"
1190
+ }
1191
+ ],
1192
+ "outputs": [
1193
+ {
1194
+ "id": "graphDraft",
1195
+ "control": true,
1196
+ "description": "Deterministic nodes/edges draft from memorix-graphifier"
1197
+ },
1198
+ {
1199
+ "id": "patchPlan",
1200
+ "control": true,
1201
+ "description": "Graph patch plan + sourceRefs (not applied by this step)"
1202
+ },
1203
+ {
1204
+ "id": "graphify",
1205
+ "control": true,
1206
+ "description": "enabled / itemCount / warnings for ops"
1207
+ },
1208
+ {
1209
+ "id": "diagnostics",
1210
+ "control": true,
1211
+ "description": "Remote worker diagnostics"
1212
+ }
1213
+ ],
1214
+ "invocation": {
1215
+ "kind": "worker",
1216
+ "operation": "knowx-graphify",
1217
+ "notes": "KnowX control-plane adapter; remote target is memorix-graphifier via MEMORIX_GRAPHIFIER_URL (alias GRAPHIFIER_URL)."
1218
+ }
1219
+ },
1121
1220
  {
1122
1221
  "id": "knowx-associate-knowledge",
1123
- "name": "KnowX associate knowledge",
1124
- "description": "Classify extracted drafts against existing KnowXContent scope: known, novel, contradicts. When aiService is bound, Memorix invokes Catalox skill knowx.associate-knowledge and pushes existingKnowx from Explore. Worker fallback fetches via memorix callback or accepts pushed existingKnowx. Returns classification buckets + candidate knowledge relationship plans. Does not persist.",
1222
+ "name": "Associate knowledge",
1223
+ "description": "Classify extracted drafts against existing Content scope: known, novel, contradicts. Prefer existingKnowx from knowx-retrieval-index (/v1/candidates). When aiService is bound, Memorix invokes Catalox skill knowx.associate-knowledge and may also push explore/catalog. Worker fallback uses pushed existingKnowx or Explore list. Returns classification buckets + candidate knowledge relationship plans. Does not persist.",
1125
1224
  "role": "agent",
1126
1225
  "capabilities": [
1127
1226
  "analyze"
@@ -1132,25 +1231,25 @@
1132
1231
  "inputs": [
1133
1232
  {
1134
1233
  "id": "knowxDrafts",
1135
- "abstractType": "KnowXContent",
1234
+ "abstractType": "Content",
1136
1235
  "description": "Drafts from knowx-extract"
1137
1236
  },
1138
1237
  {
1139
1238
  "id": "existingKnowx",
1140
- "abstractType": "KnowXContent",
1141
- "description": "Optional pushed existing KnowXContent for offline/fixture runs"
1239
+ "abstractType": "Content",
1240
+ "description": "Optional: pipeline output from knowx-retrieval-index, fixtures, or Explore push"
1142
1241
  }
1143
1242
  ],
1144
1243
  "outputs": [
1145
1244
  {
1146
1245
  "id": "classification",
1147
- "abstractType": "KnowXContent",
1246
+ "abstractType": "Content",
1148
1247
  "description": "known / novel / contradicts buckets"
1149
1248
  },
1150
1249
  {
1151
1250
  "id": "relationshipPlans",
1152
- "abstractType": "KnowXContent",
1153
- "description": "Candidate knowledge relationship plans on KnowXContent"
1251
+ "abstractType": "Content",
1252
+ "description": "Candidate knowledge relationship plans on Content"
1154
1253
  }
1155
1254
  ],
1156
1255
  "aiService": {
@@ -1166,8 +1265,8 @@
1166
1265
  },
1167
1266
  {
1168
1267
  "id": "knowx-associate-entities",
1169
- "name": "KnowX associate entities",
1170
- "description": "Plan EDGE endpoint relationships for novel drafts against entity abstracts (People, WorkItems) and KnowXContent. Does not persist.",
1268
+ "name": "Associate entities",
1269
+ "description": "Plan EDGE endpoint relationships for novel drafts against entity abstracts (People, WorkItems) and Content. Does not persist.",
1171
1270
  "role": "agent",
1172
1271
  "capabilities": [
1173
1272
  "analyze"
@@ -1178,7 +1277,7 @@
1178
1277
  "inputs": [
1179
1278
  {
1180
1279
  "id": "novelDrafts",
1181
- "abstractType": "KnowXContent",
1280
+ "abstractType": "Content",
1182
1281
  "description": "Novel drafts from associate-knowledge classification"
1183
1282
  }
1184
1283
  ],
@@ -1186,7 +1285,7 @@
1186
1285
  {
1187
1286
  "id": "entityRelationshipPlans",
1188
1287
  "abstractType": "People",
1189
- "description": "EDGE endpoint relationship plans toward People, WorkItems, and KnowXContent abstracts"
1288
+ "description": "EDGE endpoint relationship plans toward People, WorkItems, and Content abstracts"
1190
1289
  }
1191
1290
  ],
1192
1291
  "invocation": {
@@ -1212,9 +1311,9 @@
1212
1311
  },
1213
1312
  {
1214
1313
  "id": "knowx-ingest-associate",
1215
- "name": "KnowX ingest then associate knowledge and entities",
1314
+ "name": "Ingest then associate knowledge and entities",
1216
1315
  "trigger": "explicit",
1217
- "description": "extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write. Services do not persist; write-record and relationship-write do.",
1316
+ "description": "extract → write knowx → retrieval-index (candidate-retrieval upsert + candidates) → graphify (memorix-graphifier draft) → write-graph (persist) → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write. Services do not persist; write-record and relationship-write do.",
1218
1317
  "steps": [
1219
1318
  {
1220
1319
  "id": "extract",
@@ -1235,17 +1334,111 @@
1235
1334
  }
1236
1335
  ]
1237
1336
  },
1337
+ {
1338
+ "id": "index-knowx",
1339
+ "kind": "analyze",
1340
+ "serviceId": "knowx-retrieval-index",
1341
+ "dependsOn": [
1342
+ "write-knowx"
1343
+ ],
1344
+ "inputs": [
1345
+ {
1346
+ "fromStep": "extract",
1347
+ "key": "extract"
1348
+ },
1349
+ {
1350
+ "fromStep": "write-knowx",
1351
+ "key": "write-knowx"
1352
+ }
1353
+ ],
1354
+ "notes": "POST /v1/candidates for associate + /v1/index/upsert (knowx.knowledge). Soft-skip when MEMORIX_RETRIEVAL_URL unset."
1355
+ },
1356
+ {
1357
+ "id": "graphify",
1358
+ "kind": "analyze",
1359
+ "serviceId": "knowx-graphify",
1360
+ "dependsOn": [
1361
+ "index-knowx"
1362
+ ],
1363
+ "inputs": [
1364
+ {
1365
+ "fromStep": "extract",
1366
+ "key": "extract"
1367
+ },
1368
+ {
1369
+ "fromStep": "write-knowx",
1370
+ "key": "write-knowx"
1371
+ }
1372
+ ],
1373
+ "notes": "Remote memorix-graphifier analyze (graphDraft/patchPlan). Soft-skip when MEMORIX_GRAPHIFIER_URL unset/down. Platform write-record applies the draft."
1374
+ },
1375
+ {
1376
+ "id": "write-graph",
1377
+ "kind": "write-record",
1378
+ "contentType": "snapshots",
1379
+ "portConfig": {
1380
+ "mode": "graphifier",
1381
+ "objectType": "content",
1382
+ "contentType": "snapshots",
1383
+ "edgeDefinitionId": "knowx-derived-from"
1384
+ },
1385
+ "dependsOn": [
1386
+ "graphify"
1387
+ ],
1388
+ "inputs": [
1389
+ {
1390
+ "fromStep": "graphify",
1391
+ "key": "graphify"
1392
+ }
1393
+ ],
1394
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots Knowledge graph artifact. Empty graph when companion soft-skips is a no-op success."
1395
+ },
1396
+ {
1397
+ "id": "write-graph-links",
1398
+ "kind": "relationship-write",
1399
+ "dependsOn": [
1400
+ "write-graph"
1401
+ ],
1402
+ "inputs": [
1403
+ {
1404
+ "fromStep": "write-graph",
1405
+ "key": "write-graph"
1406
+ }
1407
+ ],
1408
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1409
+ },
1410
+ {
1411
+ "id": "index-graph",
1412
+ "kind": "analyze",
1413
+ "serviceId": "knowx-retrieval-index",
1414
+ "dependsOn": [
1415
+ "write-graph"
1416
+ ],
1417
+ "inputs": [
1418
+ {
1419
+ "fromStep": "write-graph",
1420
+ "key": "write-graph"
1421
+ }
1422
+ ],
1423
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1424
+ },
1238
1425
  {
1239
1426
  "id": "associate-knowledge",
1240
1427
  "kind": "analyze",
1241
1428
  "serviceId": "knowx-associate-knowledge",
1242
1429
  "dependsOn": [
1243
- "write-knowx"
1430
+ "index-knowx",
1431
+ "write-graph-links",
1432
+ "index-graph"
1244
1433
  ],
1245
1434
  "inputs": [
1246
1435
  {
1247
1436
  "fromStep": "extract",
1248
1437
  "key": "extract"
1438
+ },
1439
+ {
1440
+ "fromStep": "index-knowx",
1441
+ "key": "index-knowx"
1249
1442
  }
1250
1443
  ]
1251
1444
  },
@@ -1295,9 +1488,9 @@
1295
1488
  },
1296
1489
  {
1297
1490
  "id": "knowx-ingest-content-source",
1298
- "name": "KnowX folder connector ingest then derive Knowledge",
1491
+ "name": "Folder connector ingest then derive knowledge",
1299
1492
  "trigger": "explicit",
1300
- "description": "knowx-folder-pull (exact raw via CF collectStream) → knowx-promote-content (format→Markdown snapshots) → knowx-extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1493
+ "description": "knowx-folder-pull → promote-content → index-snapshots (CRS knowx.snapshot) → extract → write knowx → index-knowx (CRS candidates + knowx.knowledge) → graphify (memorix-graphifier) → write-graph → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1301
1494
  "steps": [
1302
1495
  {
1303
1496
  "id": "folder-pull",
@@ -1318,12 +1511,27 @@
1318
1511
  }
1319
1512
  ]
1320
1513
  },
1514
+ {
1515
+ "id": "index-snapshots",
1516
+ "kind": "analyze",
1517
+ "serviceId": "knowx-retrieval-index",
1518
+ "dependsOn": [
1519
+ "promote-content"
1520
+ ],
1521
+ "inputs": [
1522
+ {
1523
+ "fromStep": "promote-content",
1524
+ "key": "promote-content"
1525
+ }
1526
+ ],
1527
+ "notes": "Index Content snapshots only (knowx.snapshot; no knowxDrafts → no candidates). Soft-skip when CRS unset/down."
1528
+ },
1321
1529
  {
1322
1530
  "id": "extract",
1323
1531
  "kind": "analyze",
1324
1532
  "serviceId": "knowx-extract",
1325
1533
  "dependsOn": [
1326
- "promote-content"
1534
+ "index-snapshots"
1327
1535
  ],
1328
1536
  "inputs": [
1329
1537
  {
@@ -1346,12 +1554,110 @@
1346
1554
  }
1347
1555
  ]
1348
1556
  },
1557
+ {
1558
+ "id": "index-knowx",
1559
+ "kind": "analyze",
1560
+ "serviceId": "knowx-retrieval-index",
1561
+ "dependsOn": [
1562
+ "write-knowx"
1563
+ ],
1564
+ "inputs": [
1565
+ {
1566
+ "fromStep": "extract",
1567
+ "key": "extract"
1568
+ },
1569
+ {
1570
+ "fromStep": "write-knowx",
1571
+ "key": "write-knowx"
1572
+ },
1573
+ {
1574
+ "fromStep": "promote-content",
1575
+ "key": "promote-content"
1576
+ }
1577
+ ],
1578
+ "notes": "POST /v1/candidates for associate + upsert knowx + re-touch snapshots."
1579
+ },
1580
+ {
1581
+ "id": "graphify",
1582
+ "kind": "analyze",
1583
+ "serviceId": "knowx-graphify",
1584
+ "dependsOn": [
1585
+ "index-knowx"
1586
+ ],
1587
+ "inputs": [
1588
+ {
1589
+ "fromStep": "extract",
1590
+ "key": "extract"
1591
+ },
1592
+ {
1593
+ "fromStep": "write-knowx",
1594
+ "key": "write-knowx"
1595
+ },
1596
+ {
1597
+ "fromStep": "promote-content",
1598
+ "key": "promote-content"
1599
+ }
1600
+ ],
1601
+ "notes": "Remote memorix-graphifier analyze from promote + extract bags. Soft-skip when graphifier unset/down. write-graph applies draft."
1602
+ },
1603
+ {
1604
+ "id": "write-graph",
1605
+ "kind": "write-record",
1606
+ "contentType": "snapshots",
1607
+ "portConfig": {
1608
+ "mode": "graphifier",
1609
+ "objectType": "content",
1610
+ "contentType": "snapshots",
1611
+ "edgeDefinitionId": "knowx-derived-from"
1612
+ },
1613
+ "dependsOn": [
1614
+ "graphify"
1615
+ ],
1616
+ "inputs": [
1617
+ {
1618
+ "fromStep": "graphify",
1619
+ "key": "graphify"
1620
+ }
1621
+ ],
1622
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots graph artifact."
1623
+ },
1624
+ {
1625
+ "id": "write-graph-links",
1626
+ "kind": "relationship-write",
1627
+ "dependsOn": [
1628
+ "write-graph"
1629
+ ],
1630
+ "inputs": [
1631
+ {
1632
+ "fromStep": "write-graph",
1633
+ "key": "write-graph"
1634
+ }
1635
+ ],
1636
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1637
+ },
1638
+ {
1639
+ "id": "index-graph",
1640
+ "kind": "analyze",
1641
+ "serviceId": "knowx-retrieval-index",
1642
+ "dependsOn": [
1643
+ "write-graph"
1644
+ ],
1645
+ "inputs": [
1646
+ {
1647
+ "fromStep": "write-graph",
1648
+ "key": "write-graph"
1649
+ }
1650
+ ],
1651
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1652
+ },
1349
1653
  {
1350
1654
  "id": "associate-knowledge",
1351
1655
  "kind": "analyze",
1352
1656
  "serviceId": "knowx-associate-knowledge",
1353
1657
  "dependsOn": [
1354
- "write-knowx"
1658
+ "index-knowx",
1659
+ "write-graph-links",
1660
+ "index-graph"
1355
1661
  ],
1356
1662
  "inputs": [
1357
1663
  {
@@ -1361,6 +1667,10 @@
1361
1667
  {
1362
1668
  "fromStep": "write-knowx",
1363
1669
  "key": "write-knowx"
1670
+ },
1671
+ {
1672
+ "fromStep": "index-knowx",
1673
+ "key": "index-knowx"
1364
1674
  }
1365
1675
  ]
1366
1676
  },
@@ -1414,9 +1724,9 @@
1414
1724
  },
1415
1725
  {
1416
1726
  "id": "knowx-ingest-managed-item",
1417
- "name": "KnowX managed Drive item ingest then derive Knowledge",
1727
+ "name": "Managed Drive item ingest then derive knowledge",
1418
1728
  "trigger": "explicit",
1419
- "description": "knowx-managed-pull (exact raw via CF collectStream) → knowx-promote-content → knowx-extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1729
+ "description": "knowx-managed-pull → promote-content → index-snapshots (CRS) → extract → write knowx → index-knowx (CRS candidates + upsert) → graphify (memorix-graphifier) → write-graph → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1420
1730
  "steps": [
1421
1731
  {
1422
1732
  "id": "managed-pull",
@@ -1437,12 +1747,27 @@
1437
1747
  }
1438
1748
  ]
1439
1749
  },
1750
+ {
1751
+ "id": "index-snapshots",
1752
+ "kind": "analyze",
1753
+ "serviceId": "knowx-retrieval-index",
1754
+ "dependsOn": [
1755
+ "promote-content"
1756
+ ],
1757
+ "inputs": [
1758
+ {
1759
+ "fromStep": "promote-content",
1760
+ "key": "promote-content"
1761
+ }
1762
+ ],
1763
+ "notes": "Index Content snapshots only (knowx.snapshot; no knowxDrafts → no candidates). Soft-skip when CRS unset/down."
1764
+ },
1440
1765
  {
1441
1766
  "id": "extract",
1442
1767
  "kind": "analyze",
1443
1768
  "serviceId": "knowx-extract",
1444
1769
  "dependsOn": [
1445
- "promote-content"
1770
+ "index-snapshots"
1446
1771
  ],
1447
1772
  "inputs": [
1448
1773
  {
@@ -1465,12 +1790,110 @@
1465
1790
  }
1466
1791
  ]
1467
1792
  },
1793
+ {
1794
+ "id": "index-knowx",
1795
+ "kind": "analyze",
1796
+ "serviceId": "knowx-retrieval-index",
1797
+ "dependsOn": [
1798
+ "write-knowx"
1799
+ ],
1800
+ "inputs": [
1801
+ {
1802
+ "fromStep": "extract",
1803
+ "key": "extract"
1804
+ },
1805
+ {
1806
+ "fromStep": "write-knowx",
1807
+ "key": "write-knowx"
1808
+ },
1809
+ {
1810
+ "fromStep": "promote-content",
1811
+ "key": "promote-content"
1812
+ }
1813
+ ],
1814
+ "notes": "POST /v1/candidates for associate + upsert knowx + re-touch snapshots."
1815
+ },
1816
+ {
1817
+ "id": "graphify",
1818
+ "kind": "analyze",
1819
+ "serviceId": "knowx-graphify",
1820
+ "dependsOn": [
1821
+ "index-knowx"
1822
+ ],
1823
+ "inputs": [
1824
+ {
1825
+ "fromStep": "extract",
1826
+ "key": "extract"
1827
+ },
1828
+ {
1829
+ "fromStep": "write-knowx",
1830
+ "key": "write-knowx"
1831
+ },
1832
+ {
1833
+ "fromStep": "promote-content",
1834
+ "key": "promote-content"
1835
+ }
1836
+ ],
1837
+ "notes": "Remote memorix-graphifier analyze from promote + extract bags. Soft-skip when graphifier unset/down. write-graph applies draft."
1838
+ },
1839
+ {
1840
+ "id": "write-graph",
1841
+ "kind": "write-record",
1842
+ "contentType": "snapshots",
1843
+ "portConfig": {
1844
+ "mode": "graphifier",
1845
+ "objectType": "content",
1846
+ "contentType": "snapshots",
1847
+ "edgeDefinitionId": "knowx-derived-from"
1848
+ },
1849
+ "dependsOn": [
1850
+ "graphify"
1851
+ ],
1852
+ "inputs": [
1853
+ {
1854
+ "fromStep": "graphify",
1855
+ "key": "graphify"
1856
+ }
1857
+ ],
1858
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots graph artifact."
1859
+ },
1860
+ {
1861
+ "id": "write-graph-links",
1862
+ "kind": "relationship-write",
1863
+ "dependsOn": [
1864
+ "write-graph"
1865
+ ],
1866
+ "inputs": [
1867
+ {
1868
+ "fromStep": "write-graph",
1869
+ "key": "write-graph"
1870
+ }
1871
+ ],
1872
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1873
+ },
1874
+ {
1875
+ "id": "index-graph",
1876
+ "kind": "analyze",
1877
+ "serviceId": "knowx-retrieval-index",
1878
+ "dependsOn": [
1879
+ "write-graph"
1880
+ ],
1881
+ "inputs": [
1882
+ {
1883
+ "fromStep": "write-graph",
1884
+ "key": "write-graph"
1885
+ }
1886
+ ],
1887
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1888
+ },
1468
1889
  {
1469
1890
  "id": "associate-knowledge",
1470
1891
  "kind": "analyze",
1471
1892
  "serviceId": "knowx-associate-knowledge",
1472
1893
  "dependsOn": [
1473
- "write-knowx"
1894
+ "index-knowx",
1895
+ "write-graph-links",
1896
+ "index-graph"
1474
1897
  ],
1475
1898
  "inputs": [
1476
1899
  {
@@ -1480,6 +1903,10 @@
1480
1903
  {
1481
1904
  "fromStep": "write-knowx",
1482
1905
  "key": "write-knowx"
1906
+ },
1907
+ {
1908
+ "fromStep": "index-knowx",
1909
+ "key": "index-knowx"
1483
1910
  }
1484
1911
  ]
1485
1912
  },