ci: pin GitHub Actions to commit SHAs + add Dependabot - #1
Open
allenfbyrd wants to merge 1 commit into
Open
Conversation
Pin actions to immutable commit SHAs (with # vX comments) to defend against mutable-tag supply-chain attacks; add/extend a github-actions Dependabot config so the pins still receive reviewed update PRs.
allenfbyrd
added a commit
that referenced
this pull request
Jun 29, 2026
…lution + fold-in #6 stderr surfacing at the gate seam Fold-in #1 (Resolve-PythonExe): Hard `& python3` breaks Windows hosts — the Windows Python installer provides `python` not `python3`. Resolve-PythonExe probes python3 first (Linux/macOS), then python (Windows/cross-platform); throws fail-closed naming both if neither resolves. Defined in Invoke-Voidseal.ps1 (before Resolve-DeployProfile); BuilderVM.ps1 reuses it via the dot-source chain rather than duplicating it. Changed in Invoke-Voidseal.ps1 seam-#2 gate (line ~548): - was: `& python $readScript ...` + now: `$pyExe = Resolve-PythonExe; $pyOut = & $pyExe $readScript ...` Fold-in #6 (stderr surfacing): The original `2>&1 | Out-Null` swallowed read_outbox.py diagnostics. stderr is now captured and appended to the throw message on non-zero exit so the operator sees the actual OutboxError / parse-failure rather than a bare exit-code. Example (now visible in the InvokeVoidseal test WARNING line): "...releasing nothing. stderr: read_outbox: FAIL-CLOSED: OutboxError: sha256 mismatch for '...' (tamper)" Cross-reference comments added at the seam listing the outbox container constants (MAGIC=VSOUTBX1, 24-byte header, 104-byte record) pointing to guest/outbox.py as the single source of truth (consistent with the existing reference in host/read_outbox.py). Test floor: 564/566 Pester green (0 new failures, 2 pre-existing skips); 20/20 pytest.
allenfbyrd
added a commit
that referenced
this pull request
Jun 29, 2026
…image-hash match; fail-closed on mismatch/absence; deps.vhdx stays builder-owned)
allenfbyrd
added a commit
that referenced
this pull request
Jul 19, 2026
Closes the #1 onboarding gap: a newcomer previously had to reverse- engineer profiles/ralph.psd1 or profiles/firefox.psd1 to author their own workload. Modeled on CAPEv2's packages.rst — document the profile interface contract, then ship one deliberately trivial skeleton. - docs/authoring-a-workload-profile.md: the two-layer (tier profile vs workload profile) model, a full field-contract table derived from ProfileLoader.ps1 (including WorkloadMode/Inputs/InputFiles/DepsSpec/ ScreenConfig/OutboxOutput — fields SCHEMA.md doesn't yet list), the five loader invariants, the INIT..DESTROYED lifecycle mapped to field effects, a synthetic Tier-0 worked walkthrough, and a "scaffold from firefox.psd1" fast-path note. - profiles/example-skeleton.psd1: minimal valid offline Tier-0 Serial- mode profile, every editable field marked "<-- EDIT", carrying an explicit honesty note that this shape (unlike firefox's Disk-mode path) has not been live-run. - tests/Profiles.Tests.ps1: pin that the skeleton loads clean through Import-WorkloadProfile, stays offline, and carries no secret-shaped mount (+6 tests). Profiles.Tests.ps1/ProfileLoader.Tests.ps1 don't enumerate profiles/, so the new file is safe to ship there. - README.md / docs/operator-runbook.md: cross-link the new guide from the quickstart and the runbook intro. Suite: Pester 764 -> 770 (768 passed, 0 failed, 2 skipped, unchanged) — +6 are the new skeleton-validation tests. Docs/config only, no engine change.
allenfbyrd
added a commit
that referenced
this pull request
Jul 19, 2026
New community-surface files (benchmark 'Community' lens): the repo is built via Claude Code and already ships SKILL.md, so a root AGENTS.md documenting the AI/human contributor workflow is a natural extension (gVisor/CAPEv2-style convention), plus the universal-floor GitHub templates. - AGENTS.md: a thin map, not a restatement -- points at CONTRIBUTING.md (fake-must-match-real backend parity, the project's #1 bug class), SKILL.md, and docs/{authoring-a-workload-profile,tier-reference, threat-model}.md. States the 3 load-bearing rules (parity discipline, both suites green, honesty discipline) plus an AI-contribution norm: review AI output as your own, be transparent about substantial AI assistance. Explicitly scoped to NOT be a commit-attribution mandate -- that stays the maintainer's own personal choice, never imposed on contributors. - .github/ISSUE_TEMPLATE/bug_report.md + feature_request.md + config.yml (routes security reports away from public issues, to SECURITY.md). - .github/pull_request_template.md: checklist encoding the real bar (Pester green, pytest green if guest/host touched, fake!=real parity if HyperVBackend.ps1 touched, CHANGELOG + docs updated). - CODE_OF_CONDUCT.md: stock Contributor Covenant v2.1. Enforcement contact routes to a GitHub issue or SECURITY.md's private channel -- no invented personal email. Explicitly skipped (cargo-cult for a solo-maintainer repo, per plan): GOVERNANCE.md, CHARTER.md, MAINTAINERS.md, CODEOWNERS, PGP-canary infra. Discussions left off. Docs/config only, no engine change. Invoke-Pester -Path tests: 768/0/2 (770 total), unchanged from the pre-Q3 baseline.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Pin all GitHub Actions in this repo to immutable commit SHAs (with
# vXcomments) and add/extend agithub-actionsDependabot config.Why
Tag refs like
@v4are mutable: a compromised or re-pointed tag silently changes what runs in CI (the top GitHub Actions supply-chain vector). Pinning to an immutable commit SHA removes that risk; Dependabot keeps the pins current via reviewed update PRs. Part of an org-wide move toward enablingsha_pinning_required.