Skip to content

fix(storage): safely retire the Longhorn V1 benchmark storage - #6030

Draft
devantler wants to merge 19 commits into
mainfrom
codex/storage-verify-benchmark-runtime-5665
Draft

devantler wants to merge 19 commits into
mainfrom
codex/storage-verify-benchmark-runtime-5665

Conversation

@devantler

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

The V1 benchmark uses disposable storage. Cleanup must prove that the run still owns that storage and that Longhorn can retire it safely before the migration can rely on the benchmark.

What

Bind each benchmark to its verified runtime and original storage. Require the serving APIs and instance managers to confirm the retirement safeguards before the workflow removes its scratch storage. Preserve the run evidence when a safeguard cannot be verified.

Part of #5665

@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

✅⚠️MegaLinter analysis: Success with warnings

⚠️ BASH / bash-exec - 20 errors
CCESS] scripts/tests/test-publish-workflow-signing-revision-resolvers.sh
✅ [SUCCESS] scripts/tests/test-publish-workflow-signing-revisions.sh
✅ [SUCCESS] scripts/tests/test-pvc-prune-safety.sh
✅ [SUCCESS] scripts/tests/test-read-actual-budget-userns-maps.sh
✅ [SUCCESS] scripts/tests/test-read-cilium-api-limiter.sh
✅ [SUCCESS] scripts/tests/test-reassert-flux-root-verify.sh
✅ [SUCCESS] scripts/tests/test-redeploy-main-when-behind.sh
✅ [SUCCESS] scripts/tests/test-refresh-flux-ghcr-auth-safety.sh
✅ [SUCCESS] scripts/tests/test-regenerate-publish-workflow-approved-revisions.sh
✅ [SUCCESS] scripts/tests/test-registry-auth-lib.sh
✅ [SUCCESS] scripts/tests/test-release-recovery.sh
✅ [SUCCESS] scripts/tests/test-release-writer-refusal.sh
✅ [SUCCESS] scripts/tests/test-reloader-placement-selection.sh
✅ [SUCCESS] scripts/tests/test-reloader-rendered-placement.sh
✅ [SUCCESS] scripts/tests/test-report-kubescape-scan-orphans.sh
✅ [SUCCESS] scripts/tests/test-report-prod-convergence.sh
✅ [SUCCESS] scripts/tests/test-required-merge-workflows.sh
✅ [SUCCESS] scripts/tests/test-restart-uncapped-talos-coredns.sh
✅ [SUCCESS] scripts/tests/test-restore-stranded-prod-workflow.sh
✅ [SUCCESS] scripts/tests/test-restrict-homepage-service-groups.sh
✅ [SUCCESS] scripts/tests/test-restrict-tenant-network-policies.sh
✅ [SUCCESS] scripts/tests/test-restrict-tenant-secret-stores.sh
✅ [SUCCESS] scripts/tests/test-retire-arc-pool.sh
✅ [SUCCESS] scripts/tests/test-rgd-template-static-scan-wiring.sh
✅ [SUCCESS] scripts/tests/test-rgd-template-static-scan.sh
✅ [SUCCESS] scripts/tests/test-run-go-regressions.sh
✅ [SUCCESS] scripts/tests/test-run-parallel-guard-cases.sh
✅ [SUCCESS] scripts/tests/test-run-publication-generator-tests.sh
✅ [SUCCESS] scripts/tests/test-setup-ksail.sh
✅ [SUCCESS] scripts/tests/test-setup-supply-chain-tools.sh
✅ [SUCCESS] scripts/tests/test-setup-talosctl.sh
✅ [SUCCESS] scripts/tests/test-shared-publish-workflow-pin-guard.sh
✅ [SUCCESS] scripts/tests/test-signing-report-publisher-families.sh
✅ [SUCCESS] scripts/tests/test-stranded-autoscaler-node-alerter.sh
✅ [SUCCESS] scripts/tests/test-stranded-volume-attach-alert.sh
✅ [SUCCESS] scripts/tests/test-substrate-bucket-init-hook.sh
✅ [SUCCESS] scripts/tests/test-summarize-sarif-findings.sh
✅ [SUCCESS] scripts/tests/test-talos-apparmor-lsm-regressions.sh
✅ [SUCCESS] scripts/tests/test-talos-apparmor-lsm.sh
✅ [SUCCESS] scripts/tests/test-talos-drain-budget.sh
✅ [SUCCESS] scripts/tests/test-talos-factory-schematic-registration.sh
✅ [SUCCESS] scripts/tests/test-talos-render-kernel-args.sh
✅ [SUCCESS] scripts/tests/test-talos-schematic-readback.sh
✅ [SUCCESS] scripts/tests/test-talos-version-pins.sh
✅ [SUCCESS] scripts/tests/test-tenant-controller-namespace-coverage.sh
✅ [SUCCESS] scripts/tests/test-tenant-edit-networkpolicy-write.sh
✅ [SUCCESS] scripts/tests/test-tenant-kro-pull-secret.sh
✅ [SUCCESS] scripts/tests/test-tenant-publication-binding.sh
✅ [SUCCESS] scripts/tests/test-tenant-route-hostname-boundary.sh
✅ [SUCCESS] scripts/tests/test-tenant-source-constructors.sh
✅ [SUCCESS] scripts/tests/test-tenant-source-discovery.sh
✅ [SUCCESS] scripts/tests/test-tenant-webapp-boundary.sh
✅ [SUCCESS] scripts/tests/test-tetragon-agent-priority.sh
✅ [SUCCESS] scripts/tests/test-tofu-controller-retirement.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-configmap-content-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-first-party-rbac-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-private-mail-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vault-backup-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vault-config-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vendored-operator-boundary.sh
✅ [SUCCESS] scripts/tests/test-umami-provisioning-bootstrap.sh
✅ [SUCCESS] scripts/tests/test-umami-rendered-placement.sh
✅ [SUCCESS] scripts/tests/test-umami-sso-dashboard-route.sh
✅ [SUCCESS] scripts/tests/test-umami-tracking-probe.sh
✅ [SUCCESS] scripts/tests/test-use-prod-stable-api-endpoint.sh
✅ [SUCCESS] scripts/tests/test-validate-homepage-bookmarks.sh
✅ [SUCCESS] scripts/tests/test-validate-image-verifier-liveness-workflow.sh
✅ [SUCCESS] scripts/tests/test-validate-image-verifier-liveness.sh
✅ [SUCCESS] scripts/tests/test-validate-kyverno-fixture-evaluation.sh
✅ [SUCCESS] scripts/tests/test-vault-snapshot-group-readable.sh
✅ [SUCCESS] scripts/tests/test-velero-cancellation-release.sh
✅ [SUCCESS] scripts/tests/test-velero-data-mover-resources.sh
✅ [SUCCESS] scripts/tests/test-velero-kopia-renovate-pin.sh
✅ [SUCCESS] scripts/tests/test-velero-maintenance-oom-alert.sh
✅ [SUCCESS] scripts/tests/test-velero-node-agent-priority.sh
✅ [SUCCESS] scripts/tests/test-verify-arc-transport.sh
✅ [SUCCESS] scripts/tests/test-verify-gateway-routes-applied.sh
✅ [SUCCESS] scripts/tests/test-verify-image-unsigned.sh
✅ [SUCCESS] scripts/tests/test-verify-matcher-accepts-digest.sh
✅ [SUCCESS] scripts/tests/test-verify-published-evidence.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-backup-cutover.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-backup-denial.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-shared-backup-coverage.sh
✅ [SUCCESS] scripts/tests/test-vpa-updater-event-rbac.sh
✅ [SUCCESS] scripts/tests/test-wait-for-prod-api-stability.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiled-scan.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiler-wiring.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiler.sh
✅ [SUCCESS] scripts/tests/test-webapp-container-security.sh
✅ [SUCCESS] scripts/tests/test-webapp-inputs-wiring.sh
✅ [SUCCESS] scripts/tests/test-webapp-inputs.sh
✅ [SUCCESS] scripts/tests/test-webapp-runtime-hosted.sh
✅ [SUCCESS] scripts/tests/test-wedding-backup-denial-runtime.sh
✅ [SUCCESS] scripts/tests/test-world-zone-signatures.sh
✅ [SUCCESS] scripts/tests/test-world-zone-trial.sh
✅ [SUCCESS] scripts/tests/test-write-publish-workflow-matchers.sh
✅ [SUCCESS] scripts/update-vendored-operators.sh
✅ [SUCCESS] scripts/use-prod-stable-api-endpoint.sh
✅ [SUCCESS] scripts/validate-alert-coverage.sh
✅ [SUCCESS] scripts/validate-embedded-json.sh
✅ [SUCCESS] scripts/validate-homepage-bookmarks.sh
✅ [SUCCESS] scripts/validate-image-verifier-liveness.sh
✅ [SUCCESS] scripts/validate-kyverno-fixture-evaluation.sh
❌ [ERROR] scripts/validate-webapp-inputs.sh
    Error: File:[scripts/validate-webapp-inputs.sh] is not executable

✅ [SUCCESS] scripts/verify-arc-transport.sh
✅ [SUCCESS] scripts/verify-data-product-rollout.sh
❌ [ERROR] scripts/verify-email-provider/probe-client.sh
    Error: File:[scripts/verify-email-provider/probe-client.sh] is not executable

❌ [ERROR] scripts/verify-email-provider/run.sh
    Error: File:[scripts/verify-email-provider/run.sh] is not executable

✅ [SUCCESS] scripts/verify-gateway-routes-applied.sh
✅ [SUCCESS] scripts/verify-heartbeat-cleanup.sh
✅ [SUCCESS] scripts/verify-image-unsigned.sh
✅ [SUCCESS] scripts/verify-kubelet-config-readback.sh
✅ [SUCCESS] scripts/verify-matcher-accepts-digest.sh
❌ [ERROR] scripts/verify-private-mail-storage-recovery.sh
    Error: File:[scripts/verify-private-mail-storage-recovery.sh] is not executable

✅ [SUCCESS] scripts/verify-prod-recovery-source.sh
✅ [SUCCESS] scripts/verify-published-evidence.sh
❌ [ERROR] scripts/verify-shared-backup-consumers.sh
    Error: File:[scripts/verify-shared-backup-consumers.sh] is not executable

✅ [SUCCESS] scripts/verify-talos-schematic-readback.sh
✅ [SUCCESS] scripts/verify-umami-tracking.sh
✅ [SUCCESS] scripts/verify-wedding-backup-cutover.sh
✅ [SUCCESS] scripts/verify-wedding-backup-denial-pod.sh
✅ [SUCCESS] scripts/verify-wedding-backup-denial.sh
✅ [SUCCESS] scripts/verify-wedding-shared-backup-coverage-pod.sh
✅ [SUCCESS] scripts/verify-wedding-shared-backup-coverage.sh
✅ [SUCCESS] scripts/wait-for-platform-flux-revision.sh
✅ [SUCCESS] scripts/wait-for-prod-api-stability.sh
✅ [SUCCESS] scripts/write-publish-workflow-matchers.sh
✅ [SUCCESS] tests/kyverno-stale-report-prune/assert-probe-result.sh


(Truncated to last 8000 characters out of 26751)
⚠️ SPELL / cspell - 1 error
"overclaimed",
        "overprovisioning",
        "packagemetadata",
        "parallelised",
        "pasteable",
        "pdbs",
        "permissioning",
        "perr",
        "persistentvolume",
        "persistentvolumeclaim",
        "persistentvolumeclaims",
        "persistentvolumes",
        "pgdata",
        "pids",
        "pipefail",
        "plugincel",
        "poddisruptionbudgets",
        "podkey",
        "podperiods",
        "podthrottled",
        "polic",
        "policyexceptions",
        "policyreport",
        "policyreports",
        "portforward",
        "postcheck",
        "postrender",
        "postrenderer",
        "precheck",
        "preclaim",
        "preferredversion",
        "prefilter",
        "preimage",
        "premerge",
        "preservingly",
        "prestop",
        "prioritisable",
        "prioritisation",
        "prioritise",
        "prioritised",
        "prioritising",
        "privesc",
        "promtool",
        "protojson",
        "providerconfigs",
        "proxyprotocol",
        "pseudonymization",
        "pseudonymized",
        "pseudonymizes",
        "psql",
        "psqlrc",
        "publishapp",
        "publishcorootcheckpoint",
        "publishcorootnodeagent",
        "publishcustomeridentity",
        "publishdexsecurity",
        "publishksailanalysis",
        "publishkubescapenodeagent",
        "publishkubescapestorage",
        "publishkyvernobackground",
        "publishkyvernomigrate",
        "publishkyvernoreports",
        "publishprivatemail",
        "publishprovider",
        "publishwarzone",
        "pullable",
        "pushsecret",
        "pushsecrets",
        "qrbvrml",
        "quiescing",
        "randomises",
        "randread",
        "randrepeat",
        "randrw",
        "randseed",
        "randwrite",
        "rawfile",
        "rbacv",
        "rdqwpktr",
        "readarray",
        "readback",
        "readbacks",
        "readyz",
        "realpath",
        "reattributed",
        "reaudit",
        "rebuildable",
        "recharacterize",
        "recognisable",
        "recognisably",
        "recognise",
        "recognised",
        "recognises",
        "recolour",
        "reconverges",
        "redir",
        "redirs",
        "referencegrants",
        "regenerable",
        "registrationv",
        "rego",
        "releaserc",
        "relpath",
        "rematerialise",
        "rematerialised",
        "remediations",
        "replayable",
        "replicaset",
        "replicasets",
        "repoint",
        "repointed",
        "repoints",
        "repositorypermissions",
        "repositoryrulesets",
        "rescan",
        "rescanned",
        "rescanned's",
        "rescans",
        "reserialize",
        "resizer",
        "resourcegraphdefinitions",
        "resourcesets",
        "restic",
        "restrictor",
        "retabbed",
        "retagged",
        "retagging",
        "retarget",
        "retirementproof",
        "rocksdb",
        "rollouts",
        "rtrimstr",
        "rulemanager",
        "runnergroups",
        "runtimerulealertbindings",
        "rustfs",
        "rwmixread",
        "sanitised",
        "sanitiser",
        "sanitising",
        "santhosh",
        "sarif",
        "sasl",
        "sbommanager",
        "scheckov",
        "schedulability",
        "schedulable",
        "scheduledbackups",
        "scopeable",
        "scopeless",
        "seccomp",
        "secretbox",
        "secretstore",
        "seedable",
        "selfsubjectaccessreviews",
        "selfsubjectrulesreviews",
        "serialise",
        "serialises",
        "serviceaccount",
        "setcap",
        "setgid",
        "setsid",
        "shellcheck",
        "shfmt",
        "shopt",
        "siderolabs",
        "sigstore",
        "skmde",
        "slicelabels",
        "slsa",
        "slurpfile",
        "snapshotfs",
        "snapshotgroups",
        "softwarecomposition",
        "specnull",
        "spiffe",
        "ssooidc",
        "stalwartlabs",
        "standbyok",
        "startswith",
        "statefulset",
        "statefulsets",
        "statemanager",
        "stdlib",
        "storageclass",
        "storageclasses",
        "storageconfig",
        "strenv",
        "strictjson",
        "strvals",
        "subaddress",
        "subjectaccessreviews",
        "subrequest",
        "subresource",
        "subresources",
        "subshell",
        "subtest",
        "summ",
        "summarise",
        "summarised",
        "supplychain",
        "supportbundles",
        "surfaceless",
        "syft",
        "syfttypes",
        "syscall",
        "sysctls",
        "sysfs",
        "syste",
        "systeminformation",
        "tablespace",
        "talosconfig",
        "talosctl",
        "tanzu",
        "targetless",
        "tdir",
        "tekuri",
        "templatesyncignore",
        "testbin",
        "testdata",
        "testonly",
        "thresholded",
        "tlsv",
        "tmpfs",
        "todate",
        "tokenreviews",
        "tolerations",
        "tolower",
        "tonumber",
        "toomanyrequests",
        "toplevel",
        "tostring",
        "tracepoints",
        "trimpath",
        "trixie",
        "trueish",
        "trunc",
        "trunnergroups",
        "uids",
        "umami",
        "umami's",
        "unablated",
        "uncharacterized",
        "unclickable",
        "uncompilable",
        "unconfigured",
        "uncordon",
        "uncordoned",
        "uncordoning",
        "uncordons",
        "undecoded",
        "undeployed",
        "undercounts",
        "undispositioned",
        "unexcepted",
        "unexempted",
        "unfetched",
        "unfiled",
        "ungated",
        "ungenerated",
        "unidiff",
        "unifi",
        "uninspectable",
        "uninspected",
        "unjournaled",
        "unjudged",
        "unmarshals",
        "unmatch",
        "unmodelled",
        "unopenable",
        "unparseable",
        "unpartitioned",
        "unpatchable",
        "unprovisioned",
        "unpublishing",
        "unrankable",
        "unrecognisable",
        "unrecognised",
        "unrenderable",
        "unrequested",
        "unretained",
        "unretried",
        "unreviewed",
        "unrewritten",
        "unrouted",
        "unrun",
        "unscanned",
        "unshippable",
        "unsignalled",
        "unstarted",
        "unsuspended",
        "unvalidated",
        "unwaited",
        "unwired",
        "upbound",
        "updatekeys",
        "upjet",
        "uprobes",
        "urandom",
        "urlencode",
        "usec",
        "userns",
        "ushfn",
        "validatable",
        "validatingadmissionpolicies",
        "validatingadmissionpolicybindings",
        "validatingpolicy",
        "validatingwebhookconfigurations",
        "valuesfrom",
        "vcluster",
        "vcunav",
        "velero",
        "verticalpodautoscalers",
        "vfio",
        "virt",
        "volumeattachments",
        "volumeconfig",
        "volumesnapshot",
        "volumestatus",
        "vpas",
        "vulnerabilitymanifests",
        "vulnerabilitymanifestsummaries",
        "vulnerabilitymanifestsummary",
        "vulns",
        "wailsapp",
        "wals",
        "webadmin",
        "webapps",
        "webui",
        "wffc",
        "wgpolicyk",
        "wildcarding",
        "wlid",
        "workloadconfigurationscan",
        "workloadconfigurationscans",
        "workloadconfigurationscansummaries",
        "workloadconfigurationscansummary",
        "worktree",
        "worktrees",
        "xcrun",
        "xcrun's",
        "xform",
        "xlated",
        "xpkg",
        "yannh",
        "yubikey",
        "yzwvjjmcyfnl",
        "zizmor",
        "zizmorcore",
        "\u017ftatus"
    ]
}


You can also copy-paste megalinter-reports/.cspell.json at the root of your repository

(Truncated to last 8000 characters out of 1630314)
⚠️ COPYPASTE / jscpd - 671 errors
matcher-efficacy/main_test.go [82:38 - 90:31] (9 lines, 55 tokens)
   scripts/validate-matcher-efficacy/main_test.go [133:41 - 141:31]
Clone found (go)
 - scripts/validate-merge-group-heal/main.go [59:33 - 64:68] (6 lines, 54 tokens)
   scripts/validate-merge-group-heal/main_test.go [85:9 - 92:2]
Clone found (go)
 - scripts/validate-merge-group-heal/main_test.go [184:335 - 191:7] (8 lines, 61 tokens)
   scripts/validate-merge-group-heal/main_test.go [553:3 - 562:7]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [27:4 - 33:14] (7 lines, 75 tokens)
   scripts/validate-policy-actions/main_test.go [161:2 - 165:49]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [30:67 - 39:3] (10 lines, 64 tokens)
   scripts/validate-policy-actions/main_test.go [218:64 - 227:3]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [179:65 - 186:41] (8 lines, 83 tokens)
   scripts/validate-policy-actions/main_test.go [255:191 - 262:41]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [215:69 - 228:3] (14 lines, 101 tokens)
   scripts/validate-policy-actions/main_test.go [259:72 - 272:2]
Clone found (go)
 - scripts/verify-arc-app-identity/runner_group.go [170:2 - 176:30] (7 lines, 77 tokens)
   scripts/verify-arc-app-identity/verify.go [249:2 - 255:30]
Clone found (bash)
 - scripts/verify-data-product-rollout.sh [281:78 - 286:7] (6 lines, 129 tokens)
   scripts/verify-data-product-rollout.sh [362:72 - 366:79]
Clone found (go)
 - scripts/verify-email-data-recovery/cleanup.go [55:3 - 64:15] (10 lines, 58 tokens)
   scripts/verify-email-data-recovery/retained_entry.go [238:82 - 247:15]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [17:37 - 29:2] (13 lines, 72 tokens)
   scripts/verify-email-storage-canary/main.go [45:1 - 58:2]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [33:2 - 38:13] (6 lines, 53 tokens)
   scripts/verify-email-provider/main.go [71:2 - 76:13]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [92:16 - 101:33] (10 lines, 88 tokens)
   scripts/verify-email-storage-canary/main.go [108:16 - 117:33]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [269:18 - 288:2] (20 lines, 117 tokens)
   scripts/verify-email-storage-canary/main.go [160:13 - 179:2]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_lifecycle_test.go [163:76 - 168:46] (6 lines, 63 tokens)
   scripts/verify-email-data-recovery/observation_lifecycle_test.go [221:94 - 226:46]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [14:85 - 39:16] (26 lines, 190 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [14:85 - 39:16]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [48:111 - 57:36] (10 lines, 66 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [48:108 - 57:36]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [71:46 - 80:4] (10 lines, 100 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [63:4 - 72:4]
Clone found (go)
 - scripts/verify-email-data-recovery/proof.go [86:62 - 93:3] (8 lines, 53 tokens)
   scripts/verify-email-data-recovery/retained_disposal.go [81:76 - 88:5]
Clone found (go)
 - scripts/verify-email-data-recovery/resources_test.go [93:2 - 101:3] (9 lines, 62 tokens)
   scripts/verify-email-data-recovery/resources_test.go [128:4 - 136:5]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [350:22 - 357:4] (8 lines, 68 tokens)
   scripts/verify-email-storage-canary/main.go [382:22 - 389:4]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [458:2 - 467:11] (10 lines, 62 tokens)
   scripts/verify-email-storage-canary/main.go [472:2 - 481:11]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [458:37 - 467:11] (10 lines, 50 tokens)
   scripts/verify-email-storage-canary/main.go [486:5 - 495:11]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [468:35 - 477:3] (10 lines, 50 tokens)
   scripts/verify-email-storage-canary/main.go [517:39 - 526:3]
Clone found (bash)
 - scripts/verify-kubelet-config-readback.sh [52:1 - 57:10] (6 lines, 63 tokens)
   scripts/verify-talos-schematic-readback.sh [16:46 - 20:42]
Clone found (bash)
 - scripts/verify-shared-backup-consumers.sh [55:86 - 60:47] (6 lines, 72 tokens)
   scripts/verify-wedding-backup-cutover.sh [74:45 - 80:47]
Clone found (go)
 - scripts/verify-wedding-backup-bootstrap/proof_test.go [95:67 - 100:62] (6 lines, 63 tokens)
   scripts/verify-wedding-backup-bootstrap/proof_test.go [165:70 - 170:62]
Clone found (go)
 - scripts/verify-wedding-backup-bootstrap/runtime.go [39:2 - 59:41] (21 lines, 172 tokens)
   scripts/verify-wedding-dedicated-restore/main.go [163:2 - 183:41]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [114:1 - 128:68] (15 lines, 136 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [133:1 - 147:68]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [131:8 - 141:6] (11 lines, 136 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [155:30 - 165:6]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [144:87 - 150:113] (7 lines, 73 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [166:47 - 172:113]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [164:47 - 169:96] (6 lines, 82 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [223:37 - 228:96]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [253:5 - 280:12] (28 lines, 110 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [302:5 - 329:12]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [282:49 - 294:16] (13 lines, 54 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [331:62 - 343:16]
┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash       │ 419            │ 121063      │ 637984       │ 208          │ 2589 (2.14%)     │ 18431 (2.89%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ diff       │ 16             │ 8648        │ 95561        │ 66           │ 502 (5.80%)      │ 8606 (9.01%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ go         │ 695            │ 164716      │ 1284667      │ 397          │ 3246 (1.97%)     │ 29991 (2.33%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 9              │ 694         │ 12086        │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml       │ 1              │ 32          │ 86           │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt        │ 3              │ 2282        │ 16805        │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 1143           │ 297435      │ 2047189      │ 671          │ 6337 (2.13%)     │ 57028 (2.79%)     │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 671 clones.
HTML report saved to megalinter-reports/copy-paste/jscpd-report.html
ERROR: jscpd found too many duplicates (2.1%) over threshold (0.0%)
time: 4.90s

(Truncated to last 8000 characters out of 126671)
⚠️ SPELL / lychee - 44 errors
📝 Summary
---------------------
🔍 Total..........689
🔗 Unique.........463
✅ Successful.....542
⏳ Timeouts.........0
🔀 Redirected......15
👻 Excluded.......100
❓ Unknown..........0
🚫 Errors..........44
⛔ Unsupported.....44

Errors in .github/workflows/ci.yaml
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 886:14) | Error (cached)
[404] https://get.helm.sh/$archive (at 1166:77) | Rejected status code: 404 Not Found
[404] https://get.helm.sh/$archive (at 1639:77) | Error (cached)
[404] https://get.helm.sh/$archive (at 4178:65) | Error (cached)
[404] https://get.helm.sh/$archive.sha256sum (at 4179:75) | Rejected status code: 404 Not Found

Errors in .github/workflows/copy-email-credential-custody.yaml
[ERROR] http://127.0.0.1:38200/ (at 132:27) | Error (cached)
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 112:17) | Error (cached)

Errors in .github/workflows/measure-ci-runtime.yaml
[404] https://get.helm.sh/$archive (at 114:77) | Rejected status code: 404 Not Found

Errors in .github/workflows/prepare-email-storage-key.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 109:17) | Error (cached)

Errors in .github/workflows/publish-coroot-checkpoint-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-coroot-checkpoint-hotfix.yaml@refs/heads/main (at 212:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-coroot-node-agent-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-coroot-node-agent-hotfix.yaml@refs/heads/main (at 248:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-dex-security-image.yaml
[404] https://devantler.tech/attestations/dex-build/v1 (at 153:82) | Rejected status code: 404 Not Found
[404] https://devantler.tech/attestations/dex-build/v1 (at 157:23) | Error (cached)
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-dex-security-image.yaml@refs/heads/main (at 155:20) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kagent-claude-harness.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kagent-claude-harness.yaml@refs/heads/main (at 129:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kubescape-node-agent-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kubescape-node-agent-hotfix.yaml@refs/heads/main (at 186:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kubescape-storage-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kubescape-storage-hotfix.yaml@refs/heads/main (at 270:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-background-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-background-hotfix.yaml@refs/heads/main (at 205:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-migration-runtime.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-migration-runtime.yaml@refs/heads/main (at 187:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-reports-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-reports-hotfix.yaml@refs/heads/main (at 183:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-longhorn-v1-retirement.yaml
[404] https://devantler.tech/attestations/longhorn-retirement-build/v1 (at 206:24) | Rejected status code: 404 Not Found
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-longhorn-v1-retirement.yaml@refs/heads/main (at 204:20) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-private-mail-bootstrap.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-private-mail-bootstrap.yaml@refs/heads/main (at 127:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-release-recovery.yaml
[404] https://api.github.com/repos/$REPOSITORY/releases/generate-notes (at 192:14) | Rejected status code: 404 Not Found
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 257:14) | Rejected status code: 404 Not Found
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 97:14) | Rejected status code: 404 Not Found

Errors in .github/workflows/validate-coroot-security-progress.yaml
[ERROR] http://127.0.0.1:1/ (at 137:67) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:8080/metrics (at 89:36) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:8080/metrics (at 90:25) | Error (cached)
[ERROR] http://127.0.0.1:9090/ (at 130:80) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:9090/ (at 135:66) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:9090/ (at 136:64) | Connection refused - server may be down or port blocked

Errors in .github/workflows/verify-email-credential-custody.yaml
[ERROR] http://127.0.0.1:38200/ (at 110:27) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 103:17) | Connection refused - server may be down or port blocked

Errors in .github/workflows/verify-email-storage-key-recovery.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 110:17) | Error (cached)

Errors in .github/workflows/verify-openbao-backup-recovery.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 114:17) | Error (cached)

Errors in docs/costs.md
[404] https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/#cloud-servers (at 24:27) | Rejected status code: 404 Not Found

Errors in scripts/check-hubble-ui-streaming/testdata/frontend-v0.13.6-index.html
[ERROR] error: (at 1:78) | Cannot resolve root-relative link '/': To resolve root-relative links in local files, provide a root dir
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/bundle.main.841ee8bbb7cc9d85b79e.css (at 1:536) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon-16x16.png (at 1:401) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon-32x32.png (at 1:336) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon.ico (at 1:450) | File not found. Check if file exists and path is correct

Errors in scripts/reconcile-talos-kernel-args/README.md
[404] https://github.com/devantler-tech/ksail/actions/runs/37591901167 (at 587:23) | Rejected status code: 404 Not Found

Errors in talos/control-planes/wireguard.yaml
[404] https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig/ (at 49:5) | Rejected status code: 404 Not Found | Followed 1 redirect. Redirects: https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig/ --[308]--> https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig

Hint: Followed 15 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 92 errors
[Expected: 400; Actual: 523]
AGENTS.md:470:401 error MD013/line-length Line length [Expected: 400; Actual: 613]
AGENTS.md:471:401 error MD013/line-length Line length [Expected: 400; Actual: 711]
AGENTS.md:475:401 error MD013/line-length Line length [Expected: 400; Actual: 509]
AGENTS.md:479:401 error MD013/line-length Line length [Expected: 400; Actual: 458]
AGENTS.md:480:401 error MD013/line-length Line length [Expected: 400; Actual: 525]
AGENTS.md:484:401 error MD013/line-length Line length [Expected: 400; Actual: 444]
AGENTS.md:521:401 error MD013/line-length Line length [Expected: 400; Actual: 1565]
AGENTS.md:522:401 error MD013/line-length Line length [Expected: 400; Actual: 2266]
AGENTS.md:584:401 error MD013/line-length Line length [Expected: 400; Actual: 1217]
AGENTS.md:586:401 error MD013/line-length Line length [Expected: 400; Actual: 463]
AGENTS.md:588:401 error MD013/line-length Line length [Expected: 400; Actual: 1741]
AGENTS.md:602:401 error MD013/line-length Line length [Expected: 400; Actual: 1396]
AGENTS.md:610:401 error MD013/line-length Line length [Expected: 400; Actual: 542]
AGENTS.md:681:401 error MD013/line-length Line length [Expected: 400; Actual: 790]
AGENTS.md:686:401 error MD013/line-length Line length [Expected: 400; Actual: 515]
CLAUDE.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "@AGENTS.md"]
docs/adr/headless-cms.md:66:401 error MD013/line-length Line length [Expected: 400; Actual: 450]
docs/adr/headless-cms.md:67:401 error MD013/line-length Line length [Expected: 400; Actual: 457]
docs/crossplane-sync-recovery.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 427]
docs/crossplane-sync-recovery.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 577]
docs/dr/alerting.md:263:28 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:22:389 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:23:264 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:35 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:161 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:239 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:114 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Custody recommendations"]
docs/dr/crypto-custody.md:263 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Custody recommendations"]
docs/dr/crypto-custody.md:269 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "What to do if it leaks"]
docs/dr/crypto-custody.md:276 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "What to do if it is *lost* (no..."]
docs/dr/restore-drill.md:161 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:23:102 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/runbook.md:23:487 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/runbook.md:34 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:44 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:53 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:263 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:708:92 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/spire-server-ha.md:93 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/dr/velero-cnpg.md:11 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/github-management.md:38:401 error MD013/line-length Line length [Expected: 400; Actual: 419]
docs/github-management.md:40:401 error MD013/line-length Line length [Expected: 400; Actual: 522]
docs/node-autoscaling.md:14 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/oidc-kubectl.md:111 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/operations/email-client-identity.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/gateway-receiver-boundary.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/ingress-client-address.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/production-recovery.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 491]
docs/release-recovery.md:10:401 error MD013/line-length Line length [Expected: 400; Actual: 576]
docs/release-recovery.md:12:401 error MD013/line-length Line length [Expected: 400; Actual: 793]
docs/release-recovery.md:14:401 error MD013/line-length Line length [Expected: 400; Actual: 477]
docs/runtime-security.md:140 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/rwx-storage.md:38 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/unifi-management.md:14 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/unifi-management.md:60 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
k8s/bases/infrastructure/controllers/tetragon/README.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 505]
k8s/bases/README.md:10:141 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/bases/README.md:11:39 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/bases/README.md:11:138 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:8:91 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:8:207 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:9:234 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/judge-openbao-quorum/README.md:25:401 error MD013/line-length Line length [Expected: 400; Actual: 437]
scripts/README.md:15:159 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:16:185 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:18:98 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:18:171 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:20:255 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]

(Truncated to last 8000 characters out of 10096)

✅ Linters with no issues

actionlint, betterleaks, checkov, git_diff, grype, hadolint, jsonlint, osv-scanner, prettier, prettier, revive, secretlint, shellcheck, shfmt, syft, trivy, trivy-sbom, trufflehog, v8r, v8r, yamllint, zizmor

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: REPOSITORY_GITLEAKS. See Removed linters to find their replacements.

See detailed reports in MegaLinter artifacts

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

✅⚠️MegaLinter analysis: Success with warnings

⚠️ BASH / bash-exec - 20 errors
CCESS] scripts/tests/test-publish-workflow-signing-revision-resolvers.sh
✅ [SUCCESS] scripts/tests/test-publish-workflow-signing-revisions.sh
✅ [SUCCESS] scripts/tests/test-pvc-prune-safety.sh
✅ [SUCCESS] scripts/tests/test-read-actual-budget-userns-maps.sh
✅ [SUCCESS] scripts/tests/test-read-cilium-api-limiter.sh
✅ [SUCCESS] scripts/tests/test-reassert-flux-root-verify.sh
✅ [SUCCESS] scripts/tests/test-redeploy-main-when-behind.sh
✅ [SUCCESS] scripts/tests/test-refresh-flux-ghcr-auth-safety.sh
✅ [SUCCESS] scripts/tests/test-regenerate-publish-workflow-approved-revisions.sh
✅ [SUCCESS] scripts/tests/test-registry-auth-lib.sh
✅ [SUCCESS] scripts/tests/test-release-recovery.sh
✅ [SUCCESS] scripts/tests/test-release-writer-refusal.sh
✅ [SUCCESS] scripts/tests/test-reloader-placement-selection.sh
✅ [SUCCESS] scripts/tests/test-reloader-rendered-placement.sh
✅ [SUCCESS] scripts/tests/test-report-kubescape-scan-orphans.sh
✅ [SUCCESS] scripts/tests/test-report-prod-convergence.sh
✅ [SUCCESS] scripts/tests/test-required-merge-workflows.sh
✅ [SUCCESS] scripts/tests/test-restart-uncapped-talos-coredns.sh
✅ [SUCCESS] scripts/tests/test-restore-stranded-prod-workflow.sh
✅ [SUCCESS] scripts/tests/test-restrict-homepage-service-groups.sh
✅ [SUCCESS] scripts/tests/test-restrict-tenant-network-policies.sh
✅ [SUCCESS] scripts/tests/test-restrict-tenant-secret-stores.sh
✅ [SUCCESS] scripts/tests/test-retire-arc-pool.sh
✅ [SUCCESS] scripts/tests/test-rgd-template-static-scan-wiring.sh
✅ [SUCCESS] scripts/tests/test-rgd-template-static-scan.sh
✅ [SUCCESS] scripts/tests/test-run-go-regressions.sh
✅ [SUCCESS] scripts/tests/test-run-parallel-guard-cases.sh
✅ [SUCCESS] scripts/tests/test-run-publication-generator-tests.sh
✅ [SUCCESS] scripts/tests/test-setup-ksail.sh
✅ [SUCCESS] scripts/tests/test-setup-supply-chain-tools.sh
✅ [SUCCESS] scripts/tests/test-setup-talosctl.sh
✅ [SUCCESS] scripts/tests/test-shared-publish-workflow-pin-guard.sh
✅ [SUCCESS] scripts/tests/test-signing-report-publisher-families.sh
✅ [SUCCESS] scripts/tests/test-stranded-autoscaler-node-alerter.sh
✅ [SUCCESS] scripts/tests/test-stranded-volume-attach-alert.sh
✅ [SUCCESS] scripts/tests/test-substrate-bucket-init-hook.sh
✅ [SUCCESS] scripts/tests/test-summarize-sarif-findings.sh
✅ [SUCCESS] scripts/tests/test-talos-apparmor-lsm-regressions.sh
✅ [SUCCESS] scripts/tests/test-talos-apparmor-lsm.sh
✅ [SUCCESS] scripts/tests/test-talos-drain-budget.sh
✅ [SUCCESS] scripts/tests/test-talos-factory-schematic-registration.sh
✅ [SUCCESS] scripts/tests/test-talos-render-kernel-args.sh
✅ [SUCCESS] scripts/tests/test-talos-schematic-readback.sh
✅ [SUCCESS] scripts/tests/test-talos-version-pins.sh
✅ [SUCCESS] scripts/tests/test-tenant-controller-namespace-coverage.sh
✅ [SUCCESS] scripts/tests/test-tenant-edit-networkpolicy-write.sh
✅ [SUCCESS] scripts/tests/test-tenant-kro-pull-secret.sh
✅ [SUCCESS] scripts/tests/test-tenant-publication-binding.sh
✅ [SUCCESS] scripts/tests/test-tenant-route-hostname-boundary.sh
✅ [SUCCESS] scripts/tests/test-tenant-source-constructors.sh
✅ [SUCCESS] scripts/tests/test-tenant-source-discovery.sh
✅ [SUCCESS] scripts/tests/test-tenant-webapp-boundary.sh
✅ [SUCCESS] scripts/tests/test-tetragon-agent-priority.sh
✅ [SUCCESS] scripts/tests/test-tofu-controller-retirement.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-configmap-content-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-first-party-rbac-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-private-mail-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vault-backup-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vault-config-identity-boundary.sh
✅ [SUCCESS] scripts/tests/test-trivyignore-vendored-operator-boundary.sh
✅ [SUCCESS] scripts/tests/test-umami-provisioning-bootstrap.sh
✅ [SUCCESS] scripts/tests/test-umami-rendered-placement.sh
✅ [SUCCESS] scripts/tests/test-umami-sso-dashboard-route.sh
✅ [SUCCESS] scripts/tests/test-umami-tracking-probe.sh
✅ [SUCCESS] scripts/tests/test-use-prod-stable-api-endpoint.sh
✅ [SUCCESS] scripts/tests/test-validate-homepage-bookmarks.sh
✅ [SUCCESS] scripts/tests/test-validate-image-verifier-liveness-workflow.sh
✅ [SUCCESS] scripts/tests/test-validate-image-verifier-liveness.sh
✅ [SUCCESS] scripts/tests/test-validate-kyverno-fixture-evaluation.sh
✅ [SUCCESS] scripts/tests/test-vault-snapshot-group-readable.sh
✅ [SUCCESS] scripts/tests/test-velero-cancellation-release.sh
✅ [SUCCESS] scripts/tests/test-velero-data-mover-resources.sh
✅ [SUCCESS] scripts/tests/test-velero-kopia-renovate-pin.sh
✅ [SUCCESS] scripts/tests/test-velero-maintenance-oom-alert.sh
✅ [SUCCESS] scripts/tests/test-velero-node-agent-priority.sh
✅ [SUCCESS] scripts/tests/test-verify-arc-transport.sh
✅ [SUCCESS] scripts/tests/test-verify-gateway-routes-applied.sh
✅ [SUCCESS] scripts/tests/test-verify-image-unsigned.sh
✅ [SUCCESS] scripts/tests/test-verify-matcher-accepts-digest.sh
✅ [SUCCESS] scripts/tests/test-verify-published-evidence.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-backup-cutover.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-backup-denial.sh
✅ [SUCCESS] scripts/tests/test-verify-wedding-shared-backup-coverage.sh
✅ [SUCCESS] scripts/tests/test-vpa-updater-event-rbac.sh
✅ [SUCCESS] scripts/tests/test-wait-for-prod-api-stability.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiled-scan.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiler-wiring.sh
✅ [SUCCESS] scripts/tests/test-webapp-compiler.sh
✅ [SUCCESS] scripts/tests/test-webapp-container-security.sh
✅ [SUCCESS] scripts/tests/test-webapp-inputs-wiring.sh
✅ [SUCCESS] scripts/tests/test-webapp-inputs.sh
✅ [SUCCESS] scripts/tests/test-webapp-runtime-hosted.sh
✅ [SUCCESS] scripts/tests/test-wedding-backup-denial-runtime.sh
✅ [SUCCESS] scripts/tests/test-world-zone-signatures.sh
✅ [SUCCESS] scripts/tests/test-world-zone-trial.sh
✅ [SUCCESS] scripts/tests/test-write-publish-workflow-matchers.sh
✅ [SUCCESS] scripts/update-vendored-operators.sh
✅ [SUCCESS] scripts/use-prod-stable-api-endpoint.sh
✅ [SUCCESS] scripts/validate-alert-coverage.sh
✅ [SUCCESS] scripts/validate-embedded-json.sh
✅ [SUCCESS] scripts/validate-homepage-bookmarks.sh
✅ [SUCCESS] scripts/validate-image-verifier-liveness.sh
✅ [SUCCESS] scripts/validate-kyverno-fixture-evaluation.sh
❌ [ERROR] scripts/validate-webapp-inputs.sh
    Error: File:[scripts/validate-webapp-inputs.sh] is not executable

✅ [SUCCESS] scripts/verify-arc-transport.sh
✅ [SUCCESS] scripts/verify-data-product-rollout.sh
❌ [ERROR] scripts/verify-email-provider/probe-client.sh
    Error: File:[scripts/verify-email-provider/probe-client.sh] is not executable

❌ [ERROR] scripts/verify-email-provider/run.sh
    Error: File:[scripts/verify-email-provider/run.sh] is not executable

✅ [SUCCESS] scripts/verify-gateway-routes-applied.sh
✅ [SUCCESS] scripts/verify-heartbeat-cleanup.sh
✅ [SUCCESS] scripts/verify-image-unsigned.sh
✅ [SUCCESS] scripts/verify-kubelet-config-readback.sh
✅ [SUCCESS] scripts/verify-matcher-accepts-digest.sh
❌ [ERROR] scripts/verify-private-mail-storage-recovery.sh
    Error: File:[scripts/verify-private-mail-storage-recovery.sh] is not executable

✅ [SUCCESS] scripts/verify-prod-recovery-source.sh
✅ [SUCCESS] scripts/verify-published-evidence.sh
❌ [ERROR] scripts/verify-shared-backup-consumers.sh
    Error: File:[scripts/verify-shared-backup-consumers.sh] is not executable

✅ [SUCCESS] scripts/verify-talos-schematic-readback.sh
✅ [SUCCESS] scripts/verify-umami-tracking.sh
✅ [SUCCESS] scripts/verify-wedding-backup-cutover.sh
✅ [SUCCESS] scripts/verify-wedding-backup-denial-pod.sh
✅ [SUCCESS] scripts/verify-wedding-backup-denial.sh
✅ [SUCCESS] scripts/verify-wedding-shared-backup-coverage-pod.sh
✅ [SUCCESS] scripts/verify-wedding-shared-backup-coverage.sh
✅ [SUCCESS] scripts/wait-for-platform-flux-revision.sh
✅ [SUCCESS] scripts/wait-for-prod-api-stability.sh
✅ [SUCCESS] scripts/write-publish-workflow-matchers.sh
✅ [SUCCESS] tests/kyverno-stale-report-prune/assert-probe-result.sh


(Truncated to last 8000 characters out of 26751)
⚠️ SPELL / cspell - 1 error
"dorny",
        "dpkg",
        "ealed",
        "ebpftracer",
        "elif",
        "emptydir",
        "encryptkey",
        "endgroup",
        "endswith",
        "enqueueable",
        "envsubst",
        "ephemeralrunners",
        "ephemeralrunnersets",
        "esac",
        "etcdctl",
        "evanphx",
        "externalartifacts",
        "externalauth",
        "externalsecret",
        "externalsecrets",
        "extldflags",
        "fanout",
        "featureflagsource",
        "fervices",
        "filesize",
        "finalizer",
        "finalizers",
        "fleetdm",
        "fleetdm's",
        "forprovider",
        "fromdateiso",
        "gatewayapi",
        "generatable",
        "generatingpolicies",
        "genkey",
        "getconf",
        "gethomepage",
        "getline",
        "ghinstallation",
        "gitrepositories",
        "gitrepository",
        "golangci",
        "gomod",
        "gosec",
        "govulncheck",
        "gpol",
        "grjtvs",
        "gsub",
        "healthcheck",
        "healthchecks",
        "healthz",
        "helmrelease",
        "helmreleases",
        "helmv",
        "homelab",
        "hostdata",
        "hostnames",
        "httproute",
        "httproutes",
        "hugepages",
        "idna",
        "ignorefile",
        "imageuid",
        "imranismail",
        "initprovider",
        "interprocedural",
        "ipcache",
        "irreproducible",
        "iscsi",
        "jlql",
        "jmap",
        "journaled",
        "jsonpatch",
        "jsonpb",
        "kagent",
        "kagent's",
        "keylessly",
        "keypair",
        "khoist",
        "kopia",
        "kprobes",
        "kptr",
        "krew",
        "ksail",
        "ksail's",
        "kstatus",
        "kubeconfig",
        "kubeconfig's",
        "kubeconform",
        "kubeconform's",
        "kubelet",
        "kubelet's",
        "kubelets",
        "kubescape",
        "kubevirt",
        "kubevuln",
        "kustomization",
        "kustomization's",
        "kustomizations",
        "ldflags",
        "libc",
        "libgcc",
        "libgnutls",
        "libqcow",
        "libqcow's",
        "libsystemd",
        "licence",
        "licences",
        "limitrange",
        "linkmode",
        "lintable",
        "loadtester",
        "localisation",
        "localised",
        "logparser",
        "longhorninventory",
        "longhornio",
        "longhornmigration",
        "lookarounds",
        "ltrimstr",
        "luks",
        "lycheeignore",
        "machineconfig",
        "mapfile",
        "materialised",
        "materialises",
        "maxx",
        "mikefarah",
        "milters",
        "misrouted",
        "mktemp",
        "modfile",
        "mutatingadmissionpolicies",
        "mutatingadmissionpolicybindings",
        "mvdan",
        "myapp",
        "najsk",
        "namerefs",
        "namespaceinventory",
        "neighbours",
        "nesac",
        "netgo",
        "netpol",
        "netpols",
        "networkneighborhood",
        "networkneighborhoods",
        "nextjs",
        "nilnil",
        "noclobber",
        "nodepod",
        "nohooks",
        "nolint",
        "nonaggregated",
        "nonlocal",
        "nonmatching",
        "nonregular",
        "nonroot",
        "noprofile",
        "noproxy",
        "norc",
        "normalisation",
        "nounset",
        "nsterrr",
        "nullglob",
        "objectcache",
        "ocirepositories",
        "ocirepository",
        "openbao",
        "opencontainers",
        "openfeature",
        "optin",
        "organisation",
        "organisation's",
        "originissuers",
        "osusergo",
        "overprovisioning",
        "packagemetadata",
        "parallelised",
        "pasteable",
        "permissioning",
        "perr",
        "persistentvolume",
        "persistentvolumeclaim",
        "persistentvolumeclaims",
        "persistentvolumes",
        "pipefail",
        "policyreports",
        "portforward",
        "preimage",
        "premerge",
        "preservingly",
        "prestop",
        "prioritise",
        "prioritised",
        "prioritising",
        "privesc",
        "promtool",
        "protojson",
        "providerconfigs",
        "proxyprotocol",
        "pushsecret",
        "pushsecrets",
        "rdqwpktr",
        "readarray",
        "readback",
        "readbacks",
        "readyz",
        "realpath",
        "recognise",
        "recognised",
        "reconverges",
        "redir",
        "redirs",
        "referencegrants",
        "regenerable",
        "rego",
        "releaserc",
        "rematerialise",
        "rematerialised",
        "remediations",
        "replicaset",
        "repoint",
        "repointed",
        "repoints",
        "repositoryrulesets",
        "rescan",
        "rescans",
        "reserialize",
        "resizer",
        "restic",
        "retabbed",
        "retagged",
        "rollouts",
        "rulemanager",
        "sarif",
        "sbommanager",
        "scheckov",
        "schedulable",
        "scopeable",
        "seccomp",
        "secretbox",
        "secretstore",
        "seedable",
        "serialise",
        "setcap",
        "setgid",
        "shellcheck",
        "shfmt",
        "shopt",
        "siderolabs",
        "sigstore",
        "skmde",
        "slicelabels",
        "slurpfile",
        "snapshotfs",
        "softwarecomposition",
        "spiffe",
        "stalwartlabs",
        "standbyok",
        "startswith",
        "statefulset",
        "statefulsets",
        "statemanager",
        "stdlib",
        "storageclass",
        "storageclasses",
        "storageconfig",
        "strenv",
        "strictjson",
        "subaddress",
        "subjectaccessreviews",
        "subrequest",
        "subresource",
        "subresources",
        "subshell",
        "summ",
        "summarise",
        "supplychain",
        "syft",
        "syfttypes",
        "syscall",
        "sysctls",
        "sysfs",
        "syste",
        "talosconfig",
        "talosctl",
        "tanzu",
        "templatesyncignore",
        "testdata",
        "testonly",
        "thresholded",
        "tmpfs",
        "todate",
        "tolerations",
        "tonumber",
        "toomanyrequests",
        "tostring",
        "tracepoints",
        "trimpath",
        "trixie",
        "trueish",
        "uids",
        "umami",
        "umami's",
        "uncharacterized",
        "unconfigured",
        "undeployed",
        "undispositioned",
        "unexcepted",
        "unexempted",
        "unfetched",
        "ungated",
        "unidiff",
        "unifi",
        "uninspectable",
        "uninspected",
        "unjournaled",
        "unjudged",
        "unparseable",
        "unpartitioned",
        "unpatchable",
        "unrecognised",
        "unrequested",
        "unreviewed",
        "unrun",
        "unscanned",
        "unshippable",
        "unsignalled",
        "unstarted",
        "unsuspended",
        "unwaited",
        "upbound",
        "updatekeys",
        "upjet",
        "uprobes",
        "userns",
        "ushfn",
        "validatable",
        "validatingadmissionpolicies",
        "validatingadmissionpolicybindings",
        "vcunav",
        "velero",
        "verticalpodautoscalers",
        "virt",
        "volumesnapshot",
        "vpas",
        "vulnerabilitymanifestsummaries",
        "vulnerabilitymanifestsummary",
        "webapps",
        "webui",
        "wffc",
        "wgpolicyk",
        "wildcarding",
        "wlid",
        "workloadconfigurationscan",
        "workloadconfigurationscans",
        "workloadconfigurationscansummaries",
        "xlated",
        "xpkg",
        "yannh",
        "yubikey",
        "yzwvjjmcyfnl",
        "zizmor",
        "zizmorcore"
    ]
}


You can also copy-paste megalinter-reports/.cspell.json at the root of your repository

(Truncated to last 8000 characters out of 790927)
⚠️ COPYPASTE / jscpd - 709 errors
ain_test.go [32:19 - 40:2] (9 lines, 50 tokens)
   scripts/validate-policy-actions/main_test.go [264:19 - 272:2]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [179:65 - 186:41] (8 lines, 83 tokens)
   scripts/validate-policy-actions/main_test.go [255:191 - 262:41]
Clone found (go)
 - scripts/validate-policy-actions/main_test.go [215:69 - 227:3] (13 lines, 100 tokens)
   scripts/validate-policy-actions/main_test.go [259:72 - 271:3]
Clone found (go)
 - scripts/verify-arc-app-identity/runner_group.go [170:2 - 176:30] (7 lines, 77 tokens)
   scripts/verify-arc-app-identity/verify.go [249:2 - 255:30]
Clone found (bash)
 - scripts/verify-data-product-rollout.sh [281:78 - 286:7] (6 lines, 129 tokens)
   scripts/verify-data-product-rollout.sh [362:72 - 366:79]
Clone found (go)
 - scripts/verify-email-data-recovery/cleanup.go [55:3 - 64:15] (10 lines, 58 tokens)
   scripts/verify-email-data-recovery/retained_entry.go [238:82 - 247:15]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [17:37 - 29:2] (13 lines, 72 tokens)
   scripts/verify-email-storage-canary/main.go [45:1 - 58:2]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [33:2 - 38:13] (6 lines, 53 tokens)
   scripts/verify-email-provider/main.go [71:2 - 76:13]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [92:16 - 101:33] (10 lines, 88 tokens)
   scripts/verify-email-storage-canary/main.go [108:16 - 117:33]
Clone found (go)
 - scripts/verify-email-data-recovery/kubernetes.go [269:18 - 288:2] (20 lines, 117 tokens)
   scripts/verify-email-storage-canary/main.go [160:13 - 179:2]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_lifecycle_test.go [163:76 - 168:46] (6 lines, 63 tokens)
   scripts/verify-email-data-recovery/observation_lifecycle_test.go [221:94 - 226:46]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [14:85 - 39:16] (26 lines, 190 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [14:85 - 39:16]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [48:111 - 57:36] (10 lines, 66 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [48:108 - 57:36]
Clone found (go)
 - scripts/verify-email-data-recovery/observation_workflow_test.go [71:46 - 80:4] (10 lines, 100 tokens)
   scripts/verify-email-data-recovery/retained_workflow_test.go [63:4 - 72:4]
Clone found (go)
 - scripts/verify-email-data-recovery/proof.go [86:62 - 93:3] (8 lines, 53 tokens)
   scripts/verify-email-data-recovery/retained_disposal.go [81:76 - 88:5]
Clone found (go)
 - scripts/verify-email-data-recovery/resources_test.go [93:2 - 101:3] (9 lines, 62 tokens)
   scripts/verify-email-data-recovery/resources_test.go [128:4 - 136:5]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [350:22 - 357:4] (8 lines, 68 tokens)
   scripts/verify-email-storage-canary/main.go [382:22 - 389:4]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [458:2 - 467:11] (10 lines, 62 tokens)
   scripts/verify-email-storage-canary/main.go [472:2 - 481:11]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [458:37 - 467:11] (10 lines, 50 tokens)
   scripts/verify-email-storage-canary/main.go [486:5 - 495:11]
Clone found (go)
 - scripts/verify-email-storage-canary/main.go [468:35 - 477:3] (10 lines, 50 tokens)
   scripts/verify-email-storage-canary/main.go [517:39 - 526:3]
Clone found (bash)
 - scripts/verify-kubelet-config-readback.sh [52:1 - 57:10] (6 lines, 63 tokens)
   scripts/verify-talos-schematic-readback.sh [16:46 - 20:42]
Clone found (bash)
 - scripts/verify-shared-backup-consumers.sh [55:86 - 60:47] (6 lines, 72 tokens)
   scripts/verify-wedding-backup-cutover.sh [74:45 - 80:47]
Clone found (go)
 - scripts/verify-wedding-backup-bootstrap/proof_test.go [95:67 - 100:62] (6 lines, 63 tokens)
   scripts/verify-wedding-backup-bootstrap/proof_test.go [165:70 - 170:62]
Clone found (go)
 - scripts/verify-wedding-backup-bootstrap/runtime.go [39:2 - 59:41] (21 lines, 172 tokens)
   scripts/verify-wedding-dedicated-restore/main.go [163:2 - 183:41]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [114:1 - 128:68] (15 lines, 136 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [133:1 - 147:68]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [131:8 - 141:6] (11 lines, 136 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [155:30 - 165:6]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [144:87 - 150:113] (7 lines, 73 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [166:47 - 172:113]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [164:47 - 169:96] (6 lines, 82 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [223:37 - 228:96]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [253:5 - 280:12] (28 lines, 110 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [302:5 - 329:12]
Clone found (bash)
 - scripts/verify-wedding-backup-denial.sh [282:49 - 294:16] (13 lines, 54 tokens)
   scripts/verify-wedding-shared-backup-coverage.sh [331:62 - 343:16]
┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash       │ 419            │ 121063      │ 637984       │ 214          │ 2807 (2.32%)     │ 18459 (2.89%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ diff       │ 16             │ 8648        │ 95561        │ 70           │ 590 (6.82%)      │ 8802 (9.21%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ docker     │ 9              │ 260         │ 2780         │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ go         │ 695            │ 164716      │ 1284667      │ 406          │ 3705 (2.25%)     │ 29374 (2.29%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ go-module  │ 9              │ 1128        │ 14222        │ 19           │ 285 (25.27%)     │ 3322 (23.36%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 9              │ 694         │ 12086        │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ jq         │ 2              │ 147         │ 2709         │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml       │ 1              │ 32          │ 86           │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt        │ 3              │ 2282        │ 16868        │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 1163           │ 298970      │ 2066963      │ 709          │ 7387 (2.47%)     │ 59957 (2.90%)     │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 709 clones.
HTML report saved to megalinter-reports/copy-paste/jscpd-report.html
ERROR: jscpd found too many duplicates (2.5%) over threshold (0.0%)
time: 6.72s

(Truncated to last 8000 characters out of 134444)
⚠️ SPELL / lychee - 44 errors
📝 Summary
---------------------
🔍 Total..........689
🔗 Unique.........463
✅ Successful.....542
⏳ Timeouts.........0
🔀 Redirected......15
👻 Excluded.......100
❓ Unknown..........0
🚫 Errors..........44
⛔ Unsupported.....44

Errors in .github/workflows/ci.yaml
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 886:14) | Error (cached)
[404] https://get.helm.sh/$archive (at 1166:77) | Error (cached)
[404] https://get.helm.sh/$archive (at 1639:77) | Error (cached)
[404] https://get.helm.sh/$archive (at 4178:65) | Error (cached)
[404] https://get.helm.sh/$archive.sha256sum (at 4179:75) | Rejected status code: 404 Not Found

Errors in .github/workflows/copy-email-credential-custody.yaml
[ERROR] http://127.0.0.1:38200/ (at 132:27) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 112:17) | Error (cached)

Errors in .github/workflows/measure-ci-runtime.yaml
[404] https://get.helm.sh/$archive (at 114:77) | Rejected status code: 404 Not Found

Errors in .github/workflows/prepare-email-storage-key.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 109:17) | Error (cached)

Errors in .github/workflows/publish-coroot-checkpoint-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-coroot-checkpoint-hotfix.yaml@refs/heads/main (at 212:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-coroot-node-agent-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-coroot-node-agent-hotfix.yaml@refs/heads/main (at 248:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-dex-security-image.yaml
[404] https://devantler.tech/attestations/dex-build/v1 (at 153:82) | Rejected status code: 404 Not Found
[404] https://devantler.tech/attestations/dex-build/v1 (at 157:23) | Rejected status code: 404 Not Found
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-dex-security-image.yaml@refs/heads/main (at 155:20) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kagent-claude-harness.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kagent-claude-harness.yaml@refs/heads/main (at 129:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kubescape-node-agent-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kubescape-node-agent-hotfix.yaml@refs/heads/main (at 186:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kubescape-storage-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kubescape-storage-hotfix.yaml@refs/heads/main (at 270:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-background-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-background-hotfix.yaml@refs/heads/main (at 205:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-migration-runtime.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-migration-runtime.yaml@refs/heads/main (at 187:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-kyverno-reports-hotfix.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-kyverno-reports-hotfix.yaml@refs/heads/main (at 183:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-longhorn-v1-retirement.yaml
[404] https://devantler.tech/attestations/longhorn-retirement-build/v1 (at 206:24) | Rejected status code: 404 Not Found
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-longhorn-v1-retirement.yaml@refs/heads/main (at 204:20) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-private-mail-bootstrap.yaml
[404] https://github.com/devantler-tech/platform/.github/workflows/publish-private-mail-bootstrap.yaml@refs/heads/main (at 127:37) | Rejected status code: 404 Not Found

Errors in .github/workflows/publish-release-recovery.yaml
[404] https://api.github.com/repos/$REPOSITORY/releases/generate-notes (at 192:14) | Rejected status code: 404 Not Found
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 257:14) | Rejected status code: 404 Not Found
[404] https://codeload.github.com/$CATALOGUE_REPOSITORY/tar.gz/$CATALOGUE_SHA (at 97:14) | Rejected status code: 404 Not Found

Errors in .github/workflows/validate-coroot-security-progress.yaml
[ERROR] http://127.0.0.1:1/ (at 137:67) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:8080/metrics (at 89:36) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:8080/metrics (at 90:25) | Error (cached)
[ERROR] http://127.0.0.1:9090/ (at 130:80) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:9090/ (at 135:66) | Connection refused - server may be down or port blocked
[ERROR] http://127.0.0.1:9090/ (at 136:64) | Error (cached)

Errors in .github/workflows/verify-email-credential-custody.yaml
[ERROR] http://127.0.0.1:38200/ (at 110:27) | Error (cached)
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 103:17) | Error (cached)

Errors in .github/workflows/verify-email-storage-key-recovery.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 110:17) | Error (cached)

Errors in .github/workflows/verify-openbao-backup-recovery.yaml
[ERROR] http://127.0.0.1:38200/v1/sys/health (at 114:17) | Connection refused - server may be down or port blocked

Errors in docs/costs.md
[404] https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/#cloud-servers (at 24:27) | Rejected status code: 404 Not Found

Errors in scripts/check-hubble-ui-streaming/testdata/frontend-v0.13.6-index.html
[ERROR] error: (at 1:78) | Cannot resolve root-relative link '/': To resolve root-relative links in local files, provide a root dir
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/bundle.main.841ee8bbb7cc9d85b79e.css (at 1:536) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon-16x16.png (at 1:401) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon-32x32.png (at 1:336) | File not found. Check if file exists and path is correct
[ERROR] file://scripts/check-hubble-ui-streaming/testdata/favicon.ico (at 1:450) | File not found. Check if file exists and path is correct

Errors in scripts/reconcile-talos-kernel-args/README.md
[404] https://github.com/devantler-tech/ksail/actions/runs/37591901167 (at 587:23) | Rejected status code: 404 Not Found

Errors in talos/control-planes/wireguard.yaml
[404] https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig/ (at 49:5) | Rejected status code: 404 Not Found | Followed 1 redirect. Redirects: https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig/ --[308]--> https://docs.siderolabs.com/talos/v1.13/reference/configuration/network/deviceconfig

Hint: Followed 15 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 92 errors
[Expected: 400; Actual: 523]
AGENTS.md:470:401 error MD013/line-length Line length [Expected: 400; Actual: 613]
AGENTS.md:471:401 error MD013/line-length Line length [Expected: 400; Actual: 711]
AGENTS.md:475:401 error MD013/line-length Line length [Expected: 400; Actual: 509]
AGENTS.md:479:401 error MD013/line-length Line length [Expected: 400; Actual: 458]
AGENTS.md:480:401 error MD013/line-length Line length [Expected: 400; Actual: 525]
AGENTS.md:484:401 error MD013/line-length Line length [Expected: 400; Actual: 444]
AGENTS.md:521:401 error MD013/line-length Line length [Expected: 400; Actual: 1565]
AGENTS.md:522:401 error MD013/line-length Line length [Expected: 400; Actual: 2266]
AGENTS.md:584:401 error MD013/line-length Line length [Expected: 400; Actual: 1217]
AGENTS.md:586:401 error MD013/line-length Line length [Expected: 400; Actual: 463]
AGENTS.md:588:401 error MD013/line-length Line length [Expected: 400; Actual: 1741]
AGENTS.md:602:401 error MD013/line-length Line length [Expected: 400; Actual: 1396]
AGENTS.md:610:401 error MD013/line-length Line length [Expected: 400; Actual: 542]
AGENTS.md:681:401 error MD013/line-length Line length [Expected: 400; Actual: 790]
AGENTS.md:686:401 error MD013/line-length Line length [Expected: 400; Actual: 515]
CLAUDE.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "@AGENTS.md"]
docs/adr/headless-cms.md:66:401 error MD013/line-length Line length [Expected: 400; Actual: 450]
docs/adr/headless-cms.md:67:401 error MD013/line-length Line length [Expected: 400; Actual: 457]
docs/crossplane-sync-recovery.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 427]
docs/crossplane-sync-recovery.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 577]
docs/dr/alerting.md:263:28 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:22:389 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:23:264 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:35 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:161 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:27:239 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/crypto-custody.md:114 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Custody recommendations"]
docs/dr/crypto-custody.md:263 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Custody recommendations"]
docs/dr/crypto-custody.md:269 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "What to do if it leaks"]
docs/dr/crypto-custody.md:276 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "What to do if it is *lost* (no..."]
docs/dr/restore-drill.md:161 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:23:102 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/runbook.md:23:487 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/runbook.md:34 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:44 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:53 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:263 error MD028/no-blanks-blockquote Blank line inside blockquote
docs/dr/runbook.md:708:92 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
docs/dr/spire-server-ha.md:93 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/dr/velero-cnpg.md:11 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/github-management.md:38:401 error MD013/line-length Line length [Expected: 400; Actual: 419]
docs/github-management.md:40:401 error MD013/line-length Line length [Expected: 400; Actual: 522]
docs/node-autoscaling.md:14 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/oidc-kubectl.md:111 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/operations/email-client-identity.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/gateway-receiver-boundary.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/ingress-client-address.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "> 🤖 Generated by the Agentic ..."]
docs/operations/production-recovery.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 491]
docs/release-recovery.md:10:401 error MD013/line-length Line length [Expected: 400; Actual: 576]
docs/release-recovery.md:12:401 error MD013/line-length Line length [Expected: 400; Actual: 793]
docs/release-recovery.md:14:401 error MD013/line-length Line length [Expected: 400; Actual: 477]
docs/runtime-security.md:140 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/rwx-storage.md:38 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/unifi-management.md:14 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
docs/unifi-management.md:60 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
k8s/bases/infrastructure/controllers/tetragon/README.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 505]
k8s/bases/README.md:10:141 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/bases/README.md:11:39 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/bases/README.md:11:138 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:8:91 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:8:207 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
k8s/providers/README.md:9:234 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/judge-openbao-quorum/README.md:25:401 error MD013/line-length Line length [Expected: 400; Actual: 437]
scripts/README.md:15:159 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:16:185 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:18:98 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:18:171 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
scripts/README.md:20:255 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]

(Truncated to last 8000 characters out of 10096)

✅ Linters with no issues

actionlint, betterleaks, checkov, git_diff, grype, hadolint, jsonlint, osv-scanner, prettier, prettier, revive, secretlint, shellcheck, shfmt, syft, trivy, trivy-sbom, trufflehog, v8r, v8r, yamllint, zizmor

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: REPOSITORY_GITLEAKS. See Removed linters to find their replacements.

See detailed reports in MegaLinter artifacts

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

@github-code-quality

github-code-quality Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Code coverage overview

Languages: Go

Go / code-coverage/go

main codex/storage-verify... 721d728 +/-
— 72% —

Line coverage data for the main branch is not yet available.

View coverage of the 10 most covered files.
File main codex/storage-verify... 721d728 +/-
scripts/kubesca...-bridge/main.go — 91% —
scripts/validat...eworks/shell.go — 89% —
scripts/validat...signing/main.go — 85% —
scripts/validat...-policy/main.go — 84% —
scripts/validat...meworks/main.go — 83% —
scripts/diagnos...artup/access.go — 83% —
scripts/replace...y/quarantine.go — 83% —
scripts/replace...standby/main.go — 79% —
scripts/maintai...clients/main.go — 66% —
scripts/annotat...checkov/main.go — 53% —

ℹ️ Calculations represent line coverage. Results may change as calculations are updated.


Updated November 10, 2026 22:32 UTC

botantler-1 Bot and others added 4 commits November 10, 2026 20:52
…orage-verify-benchmark-runtime-5665

# Conflicts:
#	scripts/migrate-longhorn-v2/testdata/retirement-fence-proof/runtime-admission.json
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor
Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 50 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between ced5a65 and 721d728.

Files selected for processing: 32

  • .github/workflows/prepare-longhorn-v2-node.yaml
  • go.mod
  • internal/namespaceinventory/credentials.go
  • internal/namespaceinventory/credentials_test.go
  • k8s/providers/hetzner/infrastructure/controllers/longhorn/kustomization.yaml
  • k8s/providers/hetzner/infrastructure/controllers/longhorn/namespace-benchmark.yaml
  • scripts/migrate-longhorn-v2/README.md
  • scripts/migrate-longhorn-v2/benchmark.go
  • scripts/migrate-longhorn-v2/benchmark_admission_install.go
  • scripts/migrate-longhorn-v2/benchmark_admission_install_test.go
  • scripts/migrate-longhorn-v2/benchmark_admission_instance.go
  • scripts/migrate-longhorn-v2/benchmark_admission_instance_test.go
  • scripts/migrate-longhorn-v2/benchmark_admission_probe.go
  • scripts/migrate-longhorn-v2/benchmark_admission_probe_test.go
  • scripts/migrate-longhorn-v2/benchmark_admission_provider.go
  • scripts/migrate-longhorn-v2/benchmark_admission_provider_test.go
  • scripts/migrate-longhorn-v2/benchmark_admission_roster.go
  • scripts/migrate-longhorn-v2/benchmark_admission_roster_test.go
  • scripts/migrate-longhorn-v2/benchmark_admission_status.go
  • scripts/migrate-longhorn-v2/benchmark_admission_status_test.go
  • scripts/migrate-longhorn-v2/benchmark_assets.go
  • scripts/migrate-longhorn-v2/benchmark_cleanup.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_fence.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_fence_test.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_instances.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_instances_test.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_no_start.go
  • scripts/migrate-longhorn-v2/benchmark_recovery_quiescence.go
  • scripts/migrate-longhorn-v2/benchmark_retirement_runtime.go
  • scripts/migrate-longhorn-v2/benchmark_retirement_runtime_test.go
  • scripts/migrate-longhorn-v2/benchmark_test.go
  • scripts/migrate-longhorn-v2/testdata/retirement-fence-proof/instances_test.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review for ownership and native cleanup safety for Longhorn V1 benchmark storage

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T23:01:33.511176Z 721d728 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 721d728647

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🫴 Ready

Development

Successfully merging this pull request may close these issues.

2 participants