@intentius/chant-lexicon-k8s 0.37.2 → 0.38.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.
@@ -625,6 +625,86 @@
625
625
  "scope": "Namespaced",
626
626
  "verbs": []
627
627
  },
628
+ "K8s::Cnpg::Backup": {
629
+ "entityType": "K8s::Cnpg::Backup",
630
+ "apiVersion": "postgresql.cnpg.io/v1",
631
+ "kind": "Backup",
632
+ "plural": "backups",
633
+ "scope": "Namespaced",
634
+ "verbs": [
635
+ "delete",
636
+ "get",
637
+ "list",
638
+ "patch",
639
+ "post",
640
+ "put",
641
+ "watch"
642
+ ]
643
+ },
644
+ "K8s::Cnpg::Cluster": {
645
+ "entityType": "K8s::Cnpg::Cluster",
646
+ "apiVersion": "postgresql.cnpg.io/v1",
647
+ "kind": "Cluster",
648
+ "plural": "clusters",
649
+ "scope": "Namespaced",
650
+ "verbs": [
651
+ "delete",
652
+ "get",
653
+ "list",
654
+ "patch",
655
+ "post",
656
+ "put",
657
+ "watch"
658
+ ]
659
+ },
660
+ "K8s::Cnpg::ObjectStore": {
661
+ "entityType": "K8s::Cnpg::ObjectStore",
662
+ "apiVersion": "barmancloud.cnpg.io/v1",
663
+ "kind": "ObjectStore",
664
+ "plural": "objectstores",
665
+ "scope": "Namespaced",
666
+ "verbs": [
667
+ "delete",
668
+ "get",
669
+ "list",
670
+ "patch",
671
+ "post",
672
+ "put",
673
+ "watch"
674
+ ]
675
+ },
676
+ "K8s::Cnpg::Pooler": {
677
+ "entityType": "K8s::Cnpg::Pooler",
678
+ "apiVersion": "postgresql.cnpg.io/v1",
679
+ "kind": "Pooler",
680
+ "plural": "poolers",
681
+ "scope": "Namespaced",
682
+ "verbs": [
683
+ "delete",
684
+ "get",
685
+ "list",
686
+ "patch",
687
+ "post",
688
+ "put",
689
+ "watch"
690
+ ]
691
+ },
692
+ "K8s::Cnpg::ScheduledBackup": {
693
+ "entityType": "K8s::Cnpg::ScheduledBackup",
694
+ "apiVersion": "postgresql.cnpg.io/v1",
695
+ "kind": "ScheduledBackup",
696
+ "plural": "scheduledbackups",
697
+ "scope": "Namespaced",
698
+ "verbs": [
699
+ "delete",
700
+ "get",
701
+ "list",
702
+ "patch",
703
+ "post",
704
+ "put",
705
+ "watch"
706
+ ]
707
+ },
628
708
  "K8s::Coordination::Lease": {
629
709
  "entityType": "K8s::Coordination::Lease",
630
710
  "apiVersion": "coordination.k8s.io/v1",
@@ -1537,6 +1617,54 @@
1537
1617
  "watch"
1538
1618
  ]
1539
1619
  },
1620
+ "K8s::Infisical::InfisicalDynamicSecret": {
1621
+ "entityType": "K8s::Infisical::InfisicalDynamicSecret",
1622
+ "apiVersion": "secrets.infisical.com/v1alpha1",
1623
+ "kind": "InfisicalDynamicSecret",
1624
+ "plural": "infisicaldynamicsecrets",
1625
+ "scope": "Namespaced",
1626
+ "verbs": [
1627
+ "delete",
1628
+ "get",
1629
+ "list",
1630
+ "patch",
1631
+ "post",
1632
+ "put",
1633
+ "watch"
1634
+ ]
1635
+ },
1636
+ "K8s::Infisical::InfisicalPushSecret": {
1637
+ "entityType": "K8s::Infisical::InfisicalPushSecret",
1638
+ "apiVersion": "secrets.infisical.com/v1alpha1",
1639
+ "kind": "InfisicalPushSecret",
1640
+ "plural": "infisicalpushsecrets",
1641
+ "scope": "Namespaced",
1642
+ "verbs": [
1643
+ "delete",
1644
+ "get",
1645
+ "list",
1646
+ "patch",
1647
+ "post",
1648
+ "put",
1649
+ "watch"
1650
+ ]
1651
+ },
1652
+ "K8s::Infisical::InfisicalSecret": {
1653
+ "entityType": "K8s::Infisical::InfisicalSecret",
1654
+ "apiVersion": "secrets.infisical.com/v1alpha1",
1655
+ "kind": "InfisicalSecret",
1656
+ "plural": "infisicalsecrets",
1657
+ "scope": "Namespaced",
1658
+ "verbs": [
1659
+ "delete",
1660
+ "get",
1661
+ "list",
1662
+ "patch",
1663
+ "post",
1664
+ "put",
1665
+ "watch"
1666
+ ]
1667
+ },
1540
1668
  "K8s::KubeMicroVM::MicroVM": {
1541
1669
  "entityType": "K8s::KubeMicroVM::MicroVM",
1542
1670
  "apiVersion": "lambda.aws.amazon.com/v1alpha1",
@@ -2232,5 +2360,165 @@
2232
2360
  "plural": "storageversionmigrationlists",
2233
2361
  "scope": "Namespaced",
2234
2362
  "verbs": []
2363
+ },
2364
+ "K8s::Traefik::IngressRoute": {
2365
+ "entityType": "K8s::Traefik::IngressRoute",
2366
+ "apiVersion": "traefik.io/v1alpha1",
2367
+ "kind": "IngressRoute",
2368
+ "plural": "ingressroutes",
2369
+ "scope": "Namespaced",
2370
+ "verbs": [
2371
+ "delete",
2372
+ "get",
2373
+ "list",
2374
+ "patch",
2375
+ "post",
2376
+ "put",
2377
+ "watch"
2378
+ ]
2379
+ },
2380
+ "K8s::Traefik::IngressRouteTCP": {
2381
+ "entityType": "K8s::Traefik::IngressRouteTCP",
2382
+ "apiVersion": "traefik.io/v1alpha1",
2383
+ "kind": "IngressRouteTCP",
2384
+ "plural": "ingressroutetcps",
2385
+ "scope": "Namespaced",
2386
+ "verbs": [
2387
+ "delete",
2388
+ "get",
2389
+ "list",
2390
+ "patch",
2391
+ "post",
2392
+ "put",
2393
+ "watch"
2394
+ ]
2395
+ },
2396
+ "K8s::Traefik::IngressRouteUDP": {
2397
+ "entityType": "K8s::Traefik::IngressRouteUDP",
2398
+ "apiVersion": "traefik.io/v1alpha1",
2399
+ "kind": "IngressRouteUDP",
2400
+ "plural": "ingressrouteudps",
2401
+ "scope": "Namespaced",
2402
+ "verbs": [
2403
+ "delete",
2404
+ "get",
2405
+ "list",
2406
+ "patch",
2407
+ "post",
2408
+ "put",
2409
+ "watch"
2410
+ ]
2411
+ },
2412
+ "K8s::Traefik::Middleware": {
2413
+ "entityType": "K8s::Traefik::Middleware",
2414
+ "apiVersion": "traefik.io/v1alpha1",
2415
+ "kind": "Middleware",
2416
+ "plural": "middlewares",
2417
+ "scope": "Namespaced",
2418
+ "verbs": [
2419
+ "delete",
2420
+ "get",
2421
+ "list",
2422
+ "patch",
2423
+ "post",
2424
+ "put",
2425
+ "watch"
2426
+ ]
2427
+ },
2428
+ "K8s::Traefik::MiddlewareTCP": {
2429
+ "entityType": "K8s::Traefik::MiddlewareTCP",
2430
+ "apiVersion": "traefik.io/v1alpha1",
2431
+ "kind": "MiddlewareTCP",
2432
+ "plural": "middlewaretcps",
2433
+ "scope": "Namespaced",
2434
+ "verbs": [
2435
+ "delete",
2436
+ "get",
2437
+ "list",
2438
+ "patch",
2439
+ "post",
2440
+ "put",
2441
+ "watch"
2442
+ ]
2443
+ },
2444
+ "K8s::Traefik::ServersTransport": {
2445
+ "entityType": "K8s::Traefik::ServersTransport",
2446
+ "apiVersion": "traefik.io/v1alpha1",
2447
+ "kind": "ServersTransport",
2448
+ "plural": "serverstransports",
2449
+ "scope": "Namespaced",
2450
+ "verbs": [
2451
+ "delete",
2452
+ "get",
2453
+ "list",
2454
+ "patch",
2455
+ "post",
2456
+ "put",
2457
+ "watch"
2458
+ ]
2459
+ },
2460
+ "K8s::Traefik::ServersTransportTCP": {
2461
+ "entityType": "K8s::Traefik::ServersTransportTCP",
2462
+ "apiVersion": "traefik.io/v1alpha1",
2463
+ "kind": "ServersTransportTCP",
2464
+ "plural": "serverstransporttcps",
2465
+ "scope": "Namespaced",
2466
+ "verbs": [
2467
+ "delete",
2468
+ "get",
2469
+ "list",
2470
+ "patch",
2471
+ "post",
2472
+ "put",
2473
+ "watch"
2474
+ ]
2475
+ },
2476
+ "K8s::Traefik::TLSOption": {
2477
+ "entityType": "K8s::Traefik::TLSOption",
2478
+ "apiVersion": "traefik.io/v1alpha1",
2479
+ "kind": "TLSOption",
2480
+ "plural": "tlsoptions",
2481
+ "scope": "Namespaced",
2482
+ "verbs": [
2483
+ "delete",
2484
+ "get",
2485
+ "list",
2486
+ "patch",
2487
+ "post",
2488
+ "put",
2489
+ "watch"
2490
+ ]
2491
+ },
2492
+ "K8s::Traefik::TLSStore": {
2493
+ "entityType": "K8s::Traefik::TLSStore",
2494
+ "apiVersion": "traefik.io/v1alpha1",
2495
+ "kind": "TLSStore",
2496
+ "plural": "tlsstores",
2497
+ "scope": "Namespaced",
2498
+ "verbs": [
2499
+ "delete",
2500
+ "get",
2501
+ "list",
2502
+ "patch",
2503
+ "post",
2504
+ "put",
2505
+ "watch"
2506
+ ]
2507
+ },
2508
+ "K8s::Traefik::TraefikService": {
2509
+ "entityType": "K8s::Traefik::TraefikService",
2510
+ "apiVersion": "traefik.io/v1alpha1",
2511
+ "kind": "TraefikService",
2512
+ "plural": "traefikservices",
2513
+ "scope": "Namespaced",
2514
+ "verbs": [
2515
+ "delete",
2516
+ "get",
2517
+ "list",
2518
+ "patch",
2519
+ "post",
2520
+ "put",
2521
+ "watch"
2522
+ ]
2235
2523
  }
2236
2524
  }
@@ -211,6 +211,7 @@ describe("k8s lifecycle integration (#163)", () => {
211
211
  // The shared conformance suite (#1089) — every observing lexicon runs it.
212
212
  describeObservationConformance({
213
213
  lexicon: "k8s",
214
+ ownershipChannel: k8sPlugin.ownershipChannel,
214
215
  scenarios: [
215
216
  {
216
217
  name: "an RBAC-denied read alongside a confirmed absence",
package/src/plugin.ts CHANGED
@@ -26,9 +26,11 @@ import { k8sHover } from "./lsp/hover";
26
26
  import { K8sParser } from "./import/parser";
27
27
  import { K8sGenerator } from "./import/generator";
28
28
  import { k8sDeepNormalizationHooks } from "./deep-observe-hooks";
29
+ import { LABEL_OWNERSHIP_KEYS } from "@intentius/chant/ownership";
29
30
 
30
31
  export const k8sPlugin: LexiconPlugin = {
31
32
  name: "k8s",
33
+ ownershipChannel: { keys: LABEL_OWNERSHIP_KEYS, reads: ["describeResources", "observeResourcesDeep", "exportResources"] },
32
34
  auditCatalog: () => k8sAuditCatalog,
33
35
  serializer: k8sSerializer,
34
36
  // Self-upgrade: where the pinned Kubernetes schema version lives + its upstream (#685).
package/src/serializer.ts CHANGED
@@ -153,6 +153,10 @@ function toYAMLValue(value: unknown, entityNames: Map<Declarable, string>): unkn
153
153
  export const k8sSerializer: Serializer = {
154
154
  name: "k8s",
155
155
  rulePrefix: "WK8",
156
+ // The Argo CD checks are a distinct product surface this lexicon covers, and
157
+ // their ids are published — renaming them would break every `chant-disable
158
+ // ARGO001` already written (#1349).
159
+ extraRulePrefixes: ["ARGO"],
156
160
 
157
161
  serialize(entities: Map<string, Declarable>, _outputs?: LexiconOutput[], context?: SerializeContext): string {
158
162
  // Build reverse map: entity → name