[hermes] soteria: go:S1192 #73

Open
opened 2026-09-30 10:33:24 +00:00 by hermes-automation · 0 comments

SonarQube reports go:S1192 in internal/k8s/job_manifests.go. The build is green; this is a standing finding, not a failure.

What is wrong

The string literal "/cache" is duplicated three times in job_manifests.go: as the cache volume MountPath in buildBackupJob, as the cache volume MountPath in buildRestoreJob, and as the RESTIC_CACHE_DIR value in resticEnv. If the cache path ever changes, the three sites can drift apart silently, which is exactly what go:S1192 guards against.

Ariadne opened no pull request for it: no automated patch was possible for this finding.

Facts

  • gitea — Define a constant instead of duplicating this literal "/cache" 3 times. (CRITICAL, 6min estimated) (internal/k8s/job_manifests.go:45)

Suggested fix (not applied)

Hermes could not open a pull request for this, so the change below was not written, validated, or pushed anywhere. It is a starting point for whoever picks this up, not a reviewed patch.

internal/k8s/job_manifests.go — Declare a single package-level constant for the restic cache directory and reference it at all three duplication sites. Add the constant after the import block, then replace the literal in the backup job's VolumeMounts, the restore job's VolumeMounts, and the RESTIC_CACHE_DIR env var in resticEnv. The rendered manifests are byte-for-byte identical, so behaviour is unchanged. The "/cache/restore" paths inside restoreCommand are a different literal and are not flagged, so they are intentionally left alone.

// Add after the import block:
const resticCacheDir = "/cache"

// In buildBackupJob, VolumeMounts:
VolumeMounts: []corev1.VolumeMount{
	{Name: "data", MountPath: "/data", ReadOnly: true},
	{Name: "cache", MountPath: resticCacheDir},
},

// In buildRestoreJob, VolumeMounts:
VolumeMounts: []corev1.VolumeMount{
	{Name: "restore", MountPath: "/restore"},
	{Name: "cache", MountPath: resticCacheDir},
},

// In resticEnv:
{Name: "RESTIC_CACHE_DIR", Value: resticCacheDir},

Filed automatically by Ariadne from a Hermes Agent diagnosis (run run_8f21a5d14845447eb706c88ff8e4493c). Hermes has no write access to this repository; no files or infrastructure were changed.

SonarQube reports **go:S1192** in `internal/k8s/job_manifests.go`. The build is green; this is a standing finding, not a failure. ## What is wrong The string literal "/cache" is duplicated three times in job_manifests.go: as the cache volume MountPath in buildBackupJob, as the cache volume MountPath in buildRestoreJob, and as the RESTIC_CACHE_DIR value in resticEnv. If the cache path ever changes, the three sites can drift apart silently, which is exactly what go:S1192 guards against. Ariadne opened no pull request for it: no automated patch was possible for this finding. ## Facts - **gitea** — Define a constant instead of duplicating this literal "/cache" 3 times. (CRITICAL, 6min estimated) (`internal/k8s/job_manifests.go:45`) ## Suggested fix (not applied) Hermes could not open a pull request for this, so the change below was not written, validated, or pushed anywhere. It is a starting point for whoever picks this up, not a reviewed patch. **`internal/k8s/job_manifests.go`** — Declare a single package-level constant for the restic cache directory and reference it at all three duplication sites. Add the constant after the import block, then replace the literal in the backup job's VolumeMounts, the restore job's VolumeMounts, and the RESTIC_CACHE_DIR env var in resticEnv. The rendered manifests are byte-for-byte identical, so behaviour is unchanged. The "/cache/restore" paths inside restoreCommand are a different literal and are not flagged, so they are intentionally left alone. ``` // Add after the import block: const resticCacheDir = "/cache" // In buildBackupJob, VolumeMounts: VolumeMounts: []corev1.VolumeMount{ {Name: "data", MountPath: "/data", ReadOnly: true}, {Name: "cache", MountPath: resticCacheDir}, }, // In buildRestoreJob, VolumeMounts: VolumeMounts: []corev1.VolumeMount{ {Name: "restore", MountPath: "/restore"}, {Name: "cache", MountPath: resticCacheDir}, }, // In resticEnv: {Name: "RESTIC_CACHE_DIR", Value: resticCacheDir}, ``` ## Links - SonarQube finding: https://quality.bstein.dev/project/issues?resolved=false&id=soteria&open=AZ9pTqVcN0JrBQvDGDs3 - Full evidence bundle and audit trail live in Ariadne at `/api/admin/audit/events`, event types `hermes_autotriage_incident` and `hermes_autotriage_diagnosis`. Filed automatically by Ariadne from a Hermes Agent diagnosis (run [run_8f21a5d14845447eb706c88ff8e4493c](https://triage.bstein.dev/chat?resume=run_8f21a5d14845447eb706c88ff8e4493c)). Hermes has no write access to this repository; no files or infrastructure were changed. <!-- hermes-triage job=soteria classification=go:S1192 incident=sonar/soteria/go:S1192/AZ9pTqVcN0JrBQvDGDs3 -->
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: titan/soteria#73
No description provided.