Skip to content

feat: emergency execution and deployment to k8s - #11

Merged
GauJosh merged 3 commits into
mainfrom
feat/emergency-execution
Nov 2, 2026
Merged

GauJosh merged 3 commits into
mainfrom
feat/emergency-execution

Conversation

@GauJosh

@GauJosh GauJosh commented Nov 2, 2026

Copy link
Copy Markdown
Owner

This pull request significantly expands the documentation and deployment options for the project by introducing a new "Emergency Execution" feature, which allows running pre-packaged GitHub Actions workflows on a Kubernetes cluster during a GitHub outage. The README has been reorganized and extended to explain this feature in detail, including its security model, compatibility, and deployment steps. Additionally, a new Helm chart (gha-emergency) is added for deploying the emergency execution component.

Key additions and changes:

Emergency Execution feature:

  • Added a comprehensive section to README.md describing Emergency Execution, which enables running prepared workflow snapshots on Kubernetes when GitHub Actions is unavailable. This includes a step-by-step explanation, security model, compatibility notes, and project status.
  • Clarified that the main investigation views remain read-only and require no backend, while Emergency Execution is an optional, separately deployed component. [1] [2]

Kubernetes deployment:

  • Documented deployment instructions for both the investigation views (gha-ui chart) and the new Emergency Execution service (gha-emergency chart), including prerequisites and Helm usage.
  • Added charts/gha-emergency/Chart.yaml, defining the new Helm chart for Emergency Execution, with metadata and requirements.

Security and documentation:

  • Detailed the security protections for Emergency Execution, such as sign-in, audit logging, job and network isolation, secret handling, and snapshot validation.
  • Updated the FAQ and documentation links to reflect the new features and clarify the differences between the investigation views and Emergency Execution. [1] [2]

Other improvements:

  • Updated badges, keywords, and introductory sections in README.md to reflect the new architecture and features. [1] [2]

GauJosh and others added 3 commits November 2, 2026 11:23
Emergency execution runs prepared, immutable workflow snapshots as Kubernetes
Jobs when GitHub Actions is unavailable. It is a separate, optional component
(charts/gha-emergency, deploy/emergency, src/emergency, #/emergency); the
read-only investigation app keeps its token, permissions, GET-only client and CSP.

Security review findings remediated (docs/EMERGENCY_EXECUTION_SECURITY_REVIEW.md):
- C1: Secrets bound to exact snapshot digests; only required keys mounted.
- C2: NetworkPolicy isolation, proven by a canary before isolated runs.
- H1: server-side re-validation of uploaded snapshots; name ownership.
- H3: runner made non-dumpable; signed, chained events checked against the
  container's exit code.
- H4: ValidatingAdmissionPolicy pins runner Jobs and pods; runner image by
  digest; the executor proves enforcement before each run.
- H2: OpenID Connect sign-in with server-side sessions, viewer/operator/
  approver/administrator roles, ownership and restricted snapshots, digest-bound
  approvals with separation of duties, break-glass accounts, a durable audit
  log; the runner signs events with its own Ed25519 key, so no event key exists
  outside it.

Not deployed. Open: M1-M7 and the low findings; H2 is untested with a real
identity provider, and its custom ID-token verification needs a focused review.

Tests: 641 unit tests passed (1 skipped); full browser suite 184 passed,
4 opt-in skipped; H3 attack check 30/30; runner check 6/6; H4 admission
check 66/66 against Kubernetes 1.35.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…README

Explain the two parts of the project: the read-only investigation views, and
the optional Emergency Execution component. Covers the prepare-then-run
workflow (with a diagram), its protections in plain language, its supported
and refused GitHub Actions features, the Helm deployment path for both charts,
and an honest project status: implemented and tested locally, not deployed as
a production service, never used in a real GitHub outage. The "no backend"
claims are now scoped to the investigation views.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The demo pipeline's stamp action ships its bundle at
examples/emergency-demo/.github/actions/stamp/dist/index.js, as real
JavaScript actions do, but the repository-wide dist/ ignore rule kept it out
of the checkpoint commit. On a clean checkout the action had no entry file,
so preparation reported an error and the demo snapshot wasn't executable:
44 unit tests and the 2 mocked emergency browser tests failed in CI. Local
runs passed because the file existed on disk.

Add a .gitignore exception for dist/ directories under examples/ and commit
the bundle. Verified on a clean export of the commit: the four affected test
files pass (114 passed, 1 skipped) and the emergency browser tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@GauJosh
GauJosh merged commit 425eeb8 into main Nov 2, 2026
6 checks passed
@GauJosh
GauJosh deleted the feat/emergency-execution branch November 2, 2026 19:02
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