Skip to content

fix(opencode): scope libvirt SSH restriction to IaC ownership - #134

Merged
xnoto merged 2 commits into
mainfrom
fix/libvirt-ssh-ownership-scope
Oct 28, 2026
Merged

xnoto merged 2 commits into
mainfrom
fix/libvirt-ssh-ownership-scope

Conversation

@xnoto

@xnoto xnoto commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Correct the packaged libvirt recovery skill’s blanket SSH/host-operation prohibition. The owner clarified that this boundary prevents manual changes owned by tfroot-libvirt from bypassing OpenTofu; it does not prohibit authorized Hero SSH diagnostics or separately scoped, explicitly approved host work such as live migration. Establish actual ownership first; a later repository follow-up does not make an operation forbidden.

Retain exact-operation/target confirmation for every live mutation, SSH tool and privilege gates, the local OpenTofu prohibition, sensitive-data restrictions, and authoritative firewall/network evidence. No host operation is performed by this change.

Fixes: N/A — owner-requested instruction correction.

Type of change

  • Bug fix
  • Documentation
  • GitOps desired state (manifests, kustomize, charts, SOPS/KSOPS secrets)
  • CI / reusable workflow

Validation

  • Required pull-request checks pass — test, detect, and package opencode-server succeeded at b9b147040bc8af015792454a4bd1f26e967a18bb; post-publish GitOps update correctly skipped on the PR. CI is the validation environment. No local validation run.
  • Generated or centrally distributed files were regenerated by their owning automation, not hand-edited — edit canonical chart inputs only; existing Helm CI generates ConfigMap and volume inputs.

Expected checks: test, detect, package opencode-server. Existing hygiene, strict Helm lint/render, source/render parity and packaging checks remain. Add a unique exact old-paragraph-to-new-boundary historical transform, missing/changed/duplicate-match rejection, prefix/suffix and unrelated-file preservation, source/render policy assertions, and packaged skill byte comparison. Both historical baselines and full parity comparisons remain unchanged. Static tests do not prove agent behavioral compliance.

Independent supplied-diff pre-PR reviews at b9b147040bc8af015792454a4bd1f26e967a18bb: adversarial ADVANCE, infrastructure-security ADVANCE, DevOps ADVANCE; QA COVERED; release-readiness READY. No Critical/High findings. These are independent agent assessments, not GitHub approvals. DevOps flags the consumer coordination below.

Impact and rollout

Producer: makeitworkcloud/charts, target main. Five paths: packaged recovery skill, Chart.yaml, chart README, Makefile, and existing memory-pilot/render test file. Chart 0.5.8 → 0.5.9; appVersion/image 2.0.22, API selector 2, workflows, templates, permissions, MCP integration and consumer source are unchanged. No new dependency or operational artifact.

  • Authored: this branch. PR validation and packaging: automatic, succeeded in run 40622645966.
  • Merge/publication: confirmation-gated; neither authorized nor performed. A confirmed merge initiates existing main OCI publication to GHCR.
  • Consumer handoff: unchanged automation opens/updates the kustomize-cluster pin PR with auto-merge enabled, gated by destination checks. Verified consumer main at 15ddc751beae462600c260094907b49b92fc2a7e pins 0.5.8; .github/workflows/test.yml::test_chart_pin_and_selector_coupled expects (0.5.8, 2). The future generated 0.5.9 pin PR must also update that exact assertion to (0.5.9, 2) in the same PR. Pin-only automation cannot pass it. Do not merge an assertion-only precursor or bypass checks. No consumer edit is included here.
  • Reconciliation/runtime: future GitOps selection may trigger root/child reconciliation and the existing single-replica Recreate checksum replacement. Configuration loads at startup, not hot reload. No sync/restart/deployment is performed here.
  • Functional verification after an approved rollout: fresh session distinguishes authorized read-only Hero diagnostics, refused unapproved mutation, approved non-IaC host operation, refused IaC bypass, and ownership ambiguity requiring clarification. These behaviors are not yet verified.
  • Rollback: separately approved GitOps selection of the previously published chart 0.5.8, with the consumer exact assertion coordinated; not an application-image downgrade.

Safety and secrets

  • Contains no plaintext secrets, decrypted SOPS values, state files, kubeconfigs, tokens, or private endpoints
  • No local OpenTofu init/plan/apply/destroy/import/state operations were run or claimed — plans come from pull-request checks
  • Breaking or irreversible effects are described above with rollback notes

AI-assisted implementation and independent review. This PR does not authorize any Hero SSH command or host mutation, merge, publication, or deployment.

@github-actions

Copy link
Copy Markdown

Chart CI passed

Repository hygiene and Helm validation passed. View the workflow run.

@xnoto
xnoto merged commit c57c877 into main Oct 28, 2026
4 checks passed
@xnoto
xnoto deleted the fix/libvirt-ssh-ownership-scope branch October 28, 2026 02:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant