@scoutflo/topology-contracts 0.7.27 → 0.8.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.
@@ -480,7 +480,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
480
480
  } | {
481
481
  readonly key: "k8s_workload_sends_metrics_to_prometheus_compatible";
482
482
  readonly version: "v1";
483
- readonly status: "experimental";
483
+ readonly status: "active";
484
484
  readonly family: "integrations";
485
485
  readonly source_endpoint: {
486
486
  readonly entity_type: "resource";
@@ -495,7 +495,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
495
495
  };
496
496
  readonly relation_class: "associative";
497
497
  readonly attribute_schema_key: "relationship.observability_binding.v1";
498
- readonly evidence_level: "pre_prod_validation";
498
+ readonly evidence_level: "implemented";
499
499
  readonly provider_family: "prometheus_compatible";
500
500
  readonly provider_category: "observability";
501
501
  readonly claim_layers: {
@@ -504,12 +504,12 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
504
504
  readonly diagnostic: readonly ["release", "version", "commit_sha"];
505
505
  readonly contract_scoped_identity: readonly [];
506
506
  };
507
- readonly notes: readonly ["Legacy workload endpoint retained for migration compatibility; new writes use the service endpoint contract."];
507
+ readonly notes: readonly ["Ratified and implemented Connection Contract V1 active key; also covers Mimir and VictoriaMetrics via helper mapping."];
508
508
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
509
509
  } | {
510
510
  readonly key: "service_sends_metrics_to_prometheus_compatible";
511
511
  readonly version: "v1";
512
- readonly status: "active";
512
+ readonly status: "experimental";
513
513
  readonly family: "integrations";
514
514
  readonly source_endpoint: {
515
515
  readonly entity_type: "service";
@@ -523,15 +523,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
523
523
  };
524
524
  readonly relation_class: "associative";
525
525
  readonly attribute_schema_key: "relationship.observability_binding.v1";
526
- readonly evidence_level: "implemented";
526
+ readonly evidence_level: "pre_prod_validation";
527
527
  readonly provider_family: "prometheus_compatible";
528
528
  readonly provider_category: "observability";
529
- readonly notes: readonly ["Canonical Prometheus-compatible binding uses the Scoutflo service endpoint; Kubernetes workload identity remains supporting evidence."];
530
529
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
531
530
  } | {
532
531
  readonly key: "workload_reports_errors_to_sentry";
533
532
  readonly version: "v1";
534
- readonly status: "experimental";
533
+ readonly status: "active";
535
534
  readonly family: "integrations";
536
535
  readonly source_endpoint: {
537
536
  readonly entity_type: "resource";
@@ -546,7 +545,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
546
545
  };
547
546
  readonly relation_class: "associative";
548
547
  readonly attribute_schema_key: "relationship.observability_binding.v1";
549
- readonly evidence_level: "pre_prod_validation";
548
+ readonly evidence_level: "implemented";
550
549
  readonly provider_family: "sentry";
551
550
  readonly provider_category: "observability";
552
551
  readonly claim_layers: {
@@ -555,12 +554,12 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
555
554
  readonly scope: readonly ["cluster", "environment"];
556
555
  readonly diagnostic: readonly ["release", "version", "commit_sha"];
557
556
  };
558
- readonly notes: readonly ["Legacy workload endpoint retained for compatibility; new writes use the service endpoint contract."];
557
+ readonly notes: readonly ["Ratified and implemented Connection Contract V1 active key."];
559
558
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
560
559
  } | {
561
560
  readonly key: "service_reports_errors_to_sentry";
562
561
  readonly version: "v1";
563
- readonly status: "active";
562
+ readonly status: "experimental";
564
563
  readonly family: "integrations";
565
564
  readonly source_endpoint: {
566
565
  readonly entity_type: "service";
@@ -574,21 +573,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
574
573
  };
575
574
  readonly relation_class: "associative";
576
575
  readonly attribute_schema_key: "relationship.observability_binding.v1";
577
- readonly evidence_level: "implemented";
576
+ readonly evidence_level: "pre_prod_validation";
578
577
  readonly provider_family: "sentry";
579
578
  readonly provider_category: "observability";
580
- readonly claim_layers: {
581
- readonly contract_scoped_identity: readonly ["project"];
582
- readonly identity: readonly ["service", "workload", "namespace", "app", "pod", "container"];
583
- readonly scope: readonly ["cluster", "environment"];
584
- readonly diagnostic: readonly ["release", "version", "commit_sha"];
585
- };
586
- readonly notes: readonly ["Canonical Sentry binding uses the Scoutflo service endpoint; Kubernetes workload identity remains supporting evidence."];
587
579
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
588
580
  } | {
589
581
  readonly key: "k8s_workload_sends_logs_to_loki";
590
582
  readonly version: "v1";
591
- readonly status: "experimental";
583
+ readonly status: "active";
592
584
  readonly family: "integrations";
593
585
  readonly source_endpoint: {
594
586
  readonly entity_type: "resource";
@@ -603,14 +595,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
603
595
  };
604
596
  readonly relation_class: "associative";
605
597
  readonly attribute_schema_key: "relationship.observability_binding.v1";
606
- readonly evidence_level: "pre_prod_validation";
598
+ readonly evidence_level: "implemented";
607
599
  readonly provider_family: "loki";
608
600
  readonly provider_category: "logging";
609
601
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
610
602
  } | {
611
603
  readonly key: "k8s_workload_sends_logs_to_elk";
612
604
  readonly version: "v1";
613
- readonly status: "experimental";
605
+ readonly status: "active";
614
606
  readonly family: "integrations";
615
607
  readonly source_endpoint: {
616
608
  readonly entity_type: "resource";
@@ -625,14 +617,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
625
617
  };
626
618
  readonly relation_class: "associative";
627
619
  readonly attribute_schema_key: "relationship.observability_binding.v1";
628
- readonly evidence_level: "pre_prod_validation";
620
+ readonly evidence_level: "implemented";
629
621
  readonly provider_family: "elk";
630
622
  readonly provider_category: "logging";
631
623
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
632
624
  } | {
633
625
  readonly key: "k8s_workload_sends_logs_to_victorialogs";
634
626
  readonly version: "v1";
635
- readonly status: "experimental";
627
+ readonly status: "active";
636
628
  readonly family: "integrations";
637
629
  readonly source_endpoint: {
638
630
  readonly entity_type: "resource";
@@ -647,14 +639,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
647
639
  };
648
640
  readonly relation_class: "associative";
649
641
  readonly attribute_schema_key: "relationship.observability_binding.v1";
650
- readonly evidence_level: "pre_prod_validation";
642
+ readonly evidence_level: "implemented";
651
643
  readonly provider_family: "victorialogs";
652
644
  readonly provider_category: "logging";
653
645
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
654
646
  } | {
655
647
  readonly key: "service_sends_logs_to_logging_provider";
656
648
  readonly version: "v1";
657
- readonly status: "active";
649
+ readonly status: "experimental";
658
650
  readonly family: "integrations";
659
651
  readonly source_endpoint: {
660
652
  readonly entity_type: "service";
@@ -668,14 +660,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
668
660
  };
669
661
  readonly relation_class: "associative";
670
662
  readonly attribute_schema_key: "relationship.observability_binding.v1";
671
- readonly evidence_level: "implemented";
663
+ readonly evidence_level: "pre_prod_validation";
672
664
  readonly provider_family: "logging_provider";
673
665
  readonly provider_category: "logging";
674
666
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
675
667
  } | {
676
668
  readonly key: "k8s_workload_sends_traces_to_tempo";
677
669
  readonly version: "v1";
678
- readonly status: "experimental";
670
+ readonly status: "active";
679
671
  readonly family: "integrations";
680
672
  readonly source_endpoint: {
681
673
  readonly entity_type: "resource";
@@ -690,14 +682,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
690
682
  };
691
683
  readonly relation_class: "associative";
692
684
  readonly attribute_schema_key: "relationship.observability_binding.v1";
693
- readonly evidence_level: "pre_prod_validation";
685
+ readonly evidence_level: "implemented";
694
686
  readonly provider_family: "tempo";
695
687
  readonly provider_category: "tracing";
696
688
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
697
689
  } | {
698
690
  readonly key: "k8s_workload_sends_traces_to_victoriatraces";
699
691
  readonly version: "v1";
700
- readonly status: "experimental";
692
+ readonly status: "active";
701
693
  readonly family: "integrations";
702
694
  readonly source_endpoint: {
703
695
  readonly entity_type: "resource";
@@ -712,14 +704,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
712
704
  };
713
705
  readonly relation_class: "associative";
714
706
  readonly attribute_schema_key: "relationship.observability_binding.v1";
715
- readonly evidence_level: "pre_prod_validation";
707
+ readonly evidence_level: "implemented";
716
708
  readonly provider_family: "victoriatraces";
717
709
  readonly provider_category: "tracing";
718
710
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
719
711
  } | {
720
712
  readonly key: "service_sends_traces_to_tracing_provider";
721
713
  readonly version: "v1";
722
- readonly status: "active";
714
+ readonly status: "experimental";
723
715
  readonly family: "integrations";
724
716
  readonly source_endpoint: {
725
717
  readonly entity_type: "service";
@@ -733,7 +725,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
733
725
  };
734
726
  readonly relation_class: "associative";
735
727
  readonly attribute_schema_key: "relationship.observability_binding.v1";
736
- readonly evidence_level: "implemented";
728
+ readonly evidence_level: "pre_prod_validation";
737
729
  readonly provider_family: "tracing_provider";
738
730
  readonly provider_category: "tracing";
739
731
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
@@ -763,7 +755,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
763
755
  } | {
764
756
  readonly key: "service_monitored_by_observability_provider";
765
757
  readonly version: "v1";
766
- readonly status: "active";
758
+ readonly status: "experimental";
767
759
  readonly family: "integrations";
768
760
  readonly source_endpoint: {
769
761
  readonly entity_type: "service";
@@ -777,15 +769,15 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
777
769
  };
778
770
  readonly relation_class: "associative";
779
771
  readonly attribute_schema_key: "relationship.observability_binding.v1";
780
- readonly evidence_level: "implemented";
772
+ readonly evidence_level: "pre_prod_validation";
781
773
  readonly provider_family: "multi_signal_observability";
782
774
  readonly provider_category: "observability";
783
- readonly notes: readonly ["Canonical multi-signal observability binding uses the Scoutflo service endpoint; Kubernetes workload identity remains supporting evidence."];
775
+ readonly notes: readonly ["Experimental umbrella for Datadog/Grafana/Groundcover-style providers; do not ratify from capability declarations alone."];
784
776
  readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
785
777
  } | {
786
778
  readonly key: "k8s_workload_monitored_by_datadog";
787
779
  readonly version: "v1";
788
- readonly status: "experimental";
780
+ readonly status: "active";
789
781
  readonly family: "integrations";
790
782
  readonly source_endpoint: {
791
783
  readonly entity_type: "resource";
@@ -800,7 +792,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
800
792
  };
801
793
  readonly relation_class: "associative";
802
794
  readonly attribute_schema_key: "relationship.observability_binding.v1";
803
- readonly evidence_level: "pre_prod_validation";
795
+ readonly evidence_level: "implemented";
804
796
  readonly provider_family: "datadog";
805
797
  readonly provider_category: "observability";
806
798
  readonly notes: readonly ["Active after Gateway runtime verification proved bounded provider API evidence can normalize to canonical workload/service signals."];
@@ -808,7 +800,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
808
800
  } | {
809
801
  readonly key: "k8s_workload_monitored_by_grafana";
810
802
  readonly version: "v1";
811
- readonly status: "experimental";
803
+ readonly status: "active";
812
804
  readonly family: "integrations";
813
805
  readonly source_endpoint: {
814
806
  readonly entity_type: "resource";
@@ -823,7 +815,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
823
815
  };
824
816
  readonly relation_class: "associative";
825
817
  readonly attribute_schema_key: "relationship.observability_binding.v1";
826
- readonly evidence_level: "pre_prod_validation";
818
+ readonly evidence_level: "implemented";
827
819
  readonly provider_family: "grafana";
828
820
  readonly provider_category: "observability";
829
821
  readonly notes: readonly ["Active for canonical observability evidence only; Gateway still requires strong source/provider claim overlap before emitting relationships."];
@@ -104,7 +104,7 @@ const src_1 = require("../src");
104
104
  strict_1.default.equal(endpoint.resource_type, src_1.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT);
105
105
  strict_1.default.equal(src_1.topologyCorrelationRelationClassSchema.parse('associative'), 'associative');
106
106
  strict_1.default.equal(src_1.topologyCorrelationContractFamilySchema.parse('observability.metrics'), 'observability.metrics');
107
- strict_1.default.equal(src_1.topologyCorrelationContractKeySchema.parse(ref.correlation_contract_key), 'k8s_workload_sends_metrics_to_prometheus_compatible', 'service_sends_metrics_to_prometheus_compatible');
107
+ strict_1.default.equal(src_1.topologyCorrelationContractKeySchema.parse(ref.correlation_contract_key), 'k8s_workload_sends_metrics_to_prometheus_compatible');
108
108
  });
109
109
  (0, node_test_1.default)('exports observed service call relationship contracts', () => {
110
110
  strict_1.default.equal(src_1.OBSERVED_SERVICE_CALLS_SERVICE_CONTRACT_KEY, 'observed_service_calls_service');
@@ -226,9 +226,7 @@ const src_1 = require("../src");
226
226
  'observed_service_calls_service',
227
227
  'observed_service_bidirectional_calls_service',
228
228
  'k8s_workload_sends_metrics_to_prometheus_compatible',
229
- 'service_sends_metrics_to_prometheus_compatible',
230
229
  'workload_reports_errors_to_sentry',
231
- 'service_reports_errors_to_sentry',
232
230
  'k8s_workload_sends_logs_to_loki',
233
231
  'k8s_workload_sends_logs_to_elk',
234
232
  'k8s_workload_sends_logs_to_victorialogs',
@@ -236,14 +234,10 @@ const src_1 = require("../src");
236
234
  'k8s_workload_sends_traces_to_victoriatraces',
237
235
  'k8s_workload_monitored_by_datadog',
238
236
  'k8s_workload_monitored_by_grafana',
239
- 'service_sends_logs_to_logging_provider',
240
- 'service_sends_traces_to_tracing_provider',
241
- 'service_monitored_by_observability_provider',
242
237
  ]);
243
238
  strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_KEY), src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_KEY);
244
239
  strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY), src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY);
245
240
  strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY), src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY);
246
- strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.SERVICE_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY), src_1.SERVICE_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY);
247
241
  strict_1.default.throws(() => src_1.connectionContractV1KeySchema.parse('pagerduty_service_alerts_workload'));
248
242
  strict_1.default.deepEqual([...src_1.CONNECTION_CONTRACT_V1_REFS], [
249
243
  {
@@ -310,18 +304,10 @@ const src_1 = require("../src");
310
304
  correlation_contract_key: 'k8s_workload_sends_metrics_to_prometheus_compatible',
311
305
  correlation_contract_version: 'v1',
312
306
  },
313
- {
314
- correlation_contract_key: 'service_sends_metrics_to_prometheus_compatible',
315
- correlation_contract_version: 'v1',
316
- },
317
307
  {
318
308
  correlation_contract_key: 'workload_reports_errors_to_sentry',
319
309
  correlation_contract_version: 'v1',
320
310
  },
321
- {
322
- correlation_contract_key: 'service_reports_errors_to_sentry',
323
- correlation_contract_version: 'v1',
324
- },
325
311
  {
326
312
  correlation_contract_key: 'k8s_workload_sends_logs_to_loki',
327
313
  correlation_contract_version: 'v1',
@@ -350,18 +336,6 @@ const src_1 = require("../src");
350
336
  correlation_contract_key: 'k8s_workload_monitored_by_grafana',
351
337
  correlation_contract_version: 'v1',
352
338
  },
353
- {
354
- correlation_contract_key: 'service_sends_logs_to_logging_provider',
355
- correlation_contract_version: 'v1',
356
- },
357
- {
358
- correlation_contract_key: 'service_sends_traces_to_tracing_provider',
359
- correlation_contract_version: 'v1',
360
- },
361
- {
362
- correlation_contract_key: 'service_monitored_by_observability_provider',
363
- correlation_contract_version: 'v1',
364
- },
365
339
  ]);
366
340
  strict_1.default.deepEqual(src_1.connectionContractV1RefSchema.parse(src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_REF), src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_REF);
367
341
  strict_1.default.throws(() => src_1.connectionContractV1RefSchema.parse({
@@ -430,7 +404,7 @@ const src_1 = require("../src");
430
404
  diagnostic: ['release', 'version', 'commit_sha'],
431
405
  contract_scoped_identity: [],
432
406
  });
433
- const sentry = (0, src_1.getConnectionContract)(src_1.SERVICE_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY, src_1.CONNECTION_CONTRACT_VERSION_V1);
407
+ const sentry = (0, src_1.getConnectionContract)(src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY, src_1.CONNECTION_CONTRACT_VERSION_V1);
434
408
  strict_1.default.deepEqual(sentry?.claim_layers, {
435
409
  identity: ['service', 'workload', 'namespace', 'app', 'pod', 'container'],
436
410
  scope: ['cluster', 'environment'],
@@ -457,14 +431,9 @@ const src_1 = require("../src");
457
431
  });
458
432
  strict_1.default.deepEqual((0, src_1.sentryContractForProvider)(' SENTRY '), {
459
433
  attribute_schema_key: 'relationship.observability_binding.v1',
460
- correlation_contract_key: 'service_reports_errors_to_sentry',
434
+ correlation_contract_key: 'workload_reports_errors_to_sentry',
461
435
  correlation_contract_version: 'v1',
462
436
  });
463
- strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)(' Prometheus ')?.correlation_contract_key, 'service_sends_metrics_to_prometheus_compatible');
464
- strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('victorialogs')?.correlation_contract_key, 'service_sends_logs_to_logging_provider');
465
- strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('tempo')?.correlation_contract_key, 'service_sends_traces_to_tracing_provider');
466
- strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('datadog')?.correlation_contract_key, 'service_monitored_by_observability_provider');
467
- strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('sentry'), undefined);
468
437
  for (const provider of ['datadog', 'grafana', 'loki', 'tempo', 'pagerduty', 'zenduty']) {
469
438
  strict_1.default.equal((0, src_1.prometheusCompatibleContractForProvider)(provider), undefined);
470
439
  strict_1.default.equal((0, src_1.sentryContractForProvider)(provider), undefined);
@@ -488,8 +457,12 @@ const src_1 = require("../src");
488
457
  strict_1.default.equal((0, src_1.argocdCandidateForTarget)({ provider: 'github', sourceType: 'github_account' }), undefined);
489
458
  });
490
459
  (0, node_test_1.default)('exports manual relationship authoring contracts from active SDK registry', () => {
491
- const serviceToPrometheus = (0, src_1.resolveAuthorableRelationshipContract)({
492
- from: { entity_type: 'service' },
460
+ const workloadToPrometheus = (0, src_1.resolveAuthorableRelationshipContract)({
461
+ from: {
462
+ entity_type: 'resource',
463
+ resource_type: src_1.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT,
464
+ provider: src_1.TOPOLOGY_PROVIDER.K8S,
465
+ },
493
466
  relation: src_1.TOPOLOGY_RELATION_TYPE.SENDS_METRICS_TO,
494
467
  to: {
495
468
  entity_type: 'resource',
@@ -497,20 +470,24 @@ const src_1 = require("../src");
497
470
  provider: src_1.TOPOLOGY_PROVIDER.PROMETHEUS,
498
471
  },
499
472
  });
500
- strict_1.default.equal(serviceToPrometheus?.attribute_schema_key, 'relationship.observability_binding.v1');
501
- strict_1.default.equal(serviceToPrometheus?.correlation_contract_key, src_1.SERVICE_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY);
502
- strict_1.default.deepEqual((0, src_1.relationshipAuthoringRequiredAttributeKeys)(serviceToPrometheus?.attribute_schema_key || ''), [
473
+ strict_1.default.equal(workloadToPrometheus?.attribute_schema_key, 'relationship.observability_binding.v1');
474
+ strict_1.default.equal(workloadToPrometheus?.correlation_contract_key, src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY);
475
+ strict_1.default.deepEqual((0, src_1.relationshipAuthoringRequiredAttributeKeys)(workloadToPrometheus?.attribute_schema_key || ''), [
503
476
  'relationship_kind',
504
477
  'observed_service_id',
505
478
  'signal_type',
506
479
  'basis',
507
480
  'from_role',
508
481
  'to_role',
482
+ 'cluster_id',
483
+ 'namespace',
484
+ 'workload_name',
485
+ 'workload_type',
509
486
  ]);
510
- strict_1.default.deepEqual((0, src_1.defaultRelationshipAuthoringAttributes)(serviceToPrometheus), {
487
+ strict_1.default.deepEqual((0, src_1.defaultRelationshipAuthoringAttributes)(workloadToPrometheus), {
511
488
  relationship_kind: 'observability_binding',
512
489
  basis: 'manual_mapping',
513
- from_role: 'service',
490
+ from_role: 'workload',
514
491
  to_role: 'observability_tool',
515
492
  signal_type: 'metrics',
516
493
  });
@@ -579,11 +556,15 @@ const src_1 = require("../src");
579
556
  'service_deployed_as_k8s_workload/v1',
580
557
  'observed_service_calls_service/v1',
581
558
  'observed_service_bidirectional_calls_service/v1',
582
- 'service_sends_metrics_to_prometheus_compatible/v1',
583
- 'service_reports_errors_to_sentry/v1',
584
- 'service_sends_logs_to_logging_provider/v1',
585
- 'service_sends_traces_to_tracing_provider/v1',
586
- 'service_monitored_by_observability_provider/v1',
559
+ 'k8s_workload_sends_metrics_to_prometheus_compatible/v1',
560
+ 'workload_reports_errors_to_sentry/v1',
561
+ 'k8s_workload_sends_logs_to_loki/v1',
562
+ 'k8s_workload_sends_logs_to_elk/v1',
563
+ 'k8s_workload_sends_logs_to_victorialogs/v1',
564
+ 'k8s_workload_sends_traces_to_tempo/v1',
565
+ 'k8s_workload_sends_traces_to_victoriatraces/v1',
566
+ 'k8s_workload_monitored_by_datadog/v1',
567
+ 'k8s_workload_monitored_by_grafana/v1',
587
568
  ]);
588
569
  strict_1.default.deepEqual(src_1.ACTIVE_CONNECTION_CONTRACT_REFS, activeCompositeKeys.map((key) => {
589
570
  const [correlation_contract_key, correlation_contract_version] = key.split('/');
@@ -591,18 +572,17 @@ const src_1 = require("../src");
591
572
  }));
592
573
  strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_part_of_namespace', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
593
574
  strict_1.default.equal((0, src_1.getConnectionContract)('aws_vpc_part_of_account', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
594
- strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_logs_to_logging_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
595
- strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_metrics_to_prometheus_compatible', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
596
- strict_1.default.equal((0, src_1.getConnectionContract)('service_reports_errors_to_sentry', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
597
- strict_1.default.equal((0, src_1.getConnectionContract)('workload_reports_errors_to_sentry', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
598
- strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_traces_to_tracing_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
599
- strict_1.default.equal((0, src_1.getConnectionContract)('service_monitored_by_observability_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
575
+ strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_logs_to_logging_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
576
+ strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_metrics_to_prometheus_compatible', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
577
+ strict_1.default.equal((0, src_1.getConnectionContract)('service_reports_errors_to_sentry', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
578
+ strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_traces_to_tracing_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
579
+ strict_1.default.equal((0, src_1.getConnectionContract)('service_monitored_by_observability_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
600
580
  strict_1.default.equal((0, src_1.getConnectionContract)('github_account_owns_repository', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.RESERVED);
601
581
  strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_deploys_to_k8s_workload', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
602
582
  strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_sources_github_repository', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
603
583
  strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_deploys_to_k8s_service', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
604
- strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_datadog', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
605
- strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_grafana', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
584
+ strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_datadog', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
585
+ strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_grafana', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
606
586
  strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_groundcover', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
607
587
  strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_pagerduty_alerting', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
608
588
  strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_zenduty_alerting', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
@@ -619,7 +599,7 @@ const src_1 = require("../src");
619
599
  strict_1.default.equal((0, src_1.getConnectionContract)('pagerduty_service_alerts_workload', 'v1'), undefined);
620
600
  strict_1.default.equal((0, src_1.getConnectionContract)('service_uses_jira', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
621
601
  strict_1.default.equal((0, src_1.getConnectionContract)('service_uses_jsm', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
622
- const legacyWorkloadObservabilityKeys = [
602
+ const activeObservabilityKeys = [
623
603
  'k8s_workload_sends_logs_to_loki',
624
604
  'k8s_workload_sends_logs_to_elk',
625
605
  'k8s_workload_sends_logs_to_victorialogs',
@@ -628,13 +608,13 @@ const src_1 = require("../src");
628
608
  'k8s_workload_monitored_by_datadog',
629
609
  'k8s_workload_monitored_by_grafana',
630
610
  ];
631
- strict_1.default.deepEqual(legacyWorkloadObservabilityKeys.map((key) => (0, src_1.getConnectionContract)(key, 'v1')?.status), legacyWorkloadObservabilityKeys.map(() => src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL));
611
+ strict_1.default.deepEqual(activeObservabilityKeys.map((key) => (0, src_1.getConnectionContract)(key, 'v1')?.status), activeObservabilityKeys.map(() => src_1.CONNECTION_CONTRACT_STATUS.ACTIVE));
632
612
  const observabilityBindingKeys = [
633
613
  'k8s_workload_sends_metrics_to_prometheus_compatible',
634
614
  'workload_reports_errors_to_sentry',
635
- 'service_reports_errors_to_sentry',
636
- ...legacyWorkloadObservabilityKeys,
615
+ ...activeObservabilityKeys,
637
616
  'service_sends_metrics_to_prometheus_compatible',
617
+ 'service_reports_errors_to_sentry',
638
618
  'service_sends_logs_to_logging_provider',
639
619
  'service_sends_traces_to_tracing_provider',
640
620
  'k8s_workload_monitored_by_observability_provider',
@@ -662,8 +642,12 @@ const src_1 = require("../src");
662
642
  'argocd_app_sources_github_repository',
663
643
  'argocd_app_deploys_to_k8s_service',
664
644
  'argocd_app_deploys_to_k8s_workload',
665
- 'workload_reports_errors_to_sentry',
645
+ 'service_sends_metrics_to_prometheus_compatible',
646
+ 'service_reports_errors_to_sentry',
647
+ 'service_sends_logs_to_logging_provider',
648
+ 'service_sends_traces_to_tracing_provider',
666
649
  'k8s_workload_monitored_by_observability_provider',
650
+ 'service_monitored_by_observability_provider',
667
651
  'k8s_workload_monitored_by_groundcover',
668
652
  'k8s_workload_monitored_by_pagerduty_alerting',
669
653
  'k8s_workload_monitored_by_zenduty_alerting',