Uh oh!
There was an error while loading. Please reload this page.
chore(ci): harden supply chain — pin actions to SHA + least-privilege permissions - #1
Merged
Conversation
… permissions Pin GitHub Actions to full commit SHA (floating tags are a supply-chain injection vector), add least-privilege permissions, and add dependabot to maintain the pins.
This was referenced Aug 3, 2026
mdheller added a commit
that referenced
this pull request
Aug 4, 2026
…-sealed (march #1) Closes#15. Superiority-march move #1: closes the #1 competitive gap (agent-native MCP ops surface — 8 competitors ahead) while keeping the properties the SaaS incumbents (Qovery, Port, Render, ...) lack. tools/mcp_ops_server.py — a minimal stdio JSON-RPC (MCP) server, ZERO external deps, exposing continuum's owned surface as agent-callable tools (list CapD capabilities, lifecycle status, list evidence, run the promotion gate). Drivable by Claude Code / Cursor. Our open edge, all shipped here: - FAIL-CLOSED by default: read tools run; guarded tools are REFUSED unless an explicit policy grant (CONTINUUM_MCP_ALLOW_GUARDED) is present — never execute-then-audit. - A HASH-SEALED receipt on EVERY call (allow or refuse) in the evidence bundle — a tamper- evident ledger, not a mutable audit log. - FULLY OPEN: MIT, self-hosted, stdio, no SaaS, no dependency, scale-to-zero. Consumes (not reimplements): the review verdict via tools/promotion_gate.py. `make mcp` runs it; validate.py requires it. Verified: initialize/tools/list/tools/call over real stdio; read tools seal + return data; guarded tool refused fail-closed without a grant, runs with one; 8 tests green.
mdheller added a commit
that referenced
this pull request
Aug 4, 2026
…-sealed (#16) Closes#15. Superiority-march move #1: closes the #1 competitive gap (agent-native MCP ops surface — 8 competitors ahead) while keeping the properties the SaaS incumbents (Qovery, Port, Render, ...) lack. tools/mcp_ops_server.py — a minimal stdio JSON-RPC (MCP) server, ZERO external deps, exposing continuum's owned surface as agent-callable tools (list CapD capabilities, lifecycle status, list evidence, run the promotion gate). Drivable by Claude Code / Cursor. Our open edge, all shipped here: - FAIL-CLOSED by default: read tools run; guarded tools are REFUSED unless an explicit policy grant (CONTINUUM_MCP_ALLOW_GUARDED) is present — never execute-then-audit. - A HASH-SEALED receipt on EVERY call (allow or refuse) in the evidence bundle — a tamper- evident ledger, not a mutable audit log. - FULLY OPEN: MIT, self-hosted, stdio, no SaaS, no dependency, scale-to-zero. Consumes (not reimplements): the review verdict via tools/promotion_gate.py. `make mcp` runs it; validate.py requires it. Verified: initialize/tools/list/tools/call over real stdio; read tools seal + return data; guarded tool refused fail-closed without a grant, runs with one; 8 tests green.
mdheller added a commit
that referenced
this pull request
Aug 4, 2026
…mount (#23) Integrates the demonstrated dev-environment patterns and proves real k8s dispatch end to end. tools/devspace.py: - devspace_manifests: Nocalhost-style isolated DevSpace — Namespace + ResourceQuota + default-deny NetworkPolicy + the agent-machine's persistent INCEPTION MOUNT (a TopoLVM PVC at /var/lib/sourceos/inception). Tenancy-labelled (tenant/user/space), grant-labelled. - sandbox_manifests: Signadot / Nocalhost-MeshSpace sandbox — a fork Deployment + Istio VirtualService routing `x-sandbox-routing-key` to the fork, else the baseline (share the stack, don't duplicate it). - agent_machine_statefulset: the agent-machine as a STATEFUL app — StatefulSet + headless Service + per-replica TopoLVM inception mount via volumeClaimTemplates. (We weren't using StatefulSets before; Jobs/Deployments can't give stable identity + per-replica storage.) - DevSpacePlane: the User->Space->App tenancy model. Real-cluster proof (kind on podman): the governed spine dispatched a real Job that printed "hello-from-real-mesh"; the inception mount persisted across pods (wrote in pod #1, read the same bytes in pod #2). Two real bugs the cluster caught + fixed in executor.py: - image "": get(k, default) returns "" for a present-but-empty key -> Job invalid. Use or-default. - a DevSpace ResourceQuota requires pod resource limits -> always set requests+limits defaults. Also: K8sAdapter mounts the inception PVC when workload.inception_pvc is set; sourceosctl gains --inception. deploy/topolvm/ (StorageClass topolvm-provisioner + install runbook — production storage). docs/PATTERN_INTEGRATION.md: every demonstrated pattern (Nocalhost, Signadot, ShellHub, Edge/Fog K3s twin, 7-layer PaaS, IBM PE/Eclipse) mapped to our capability, honestly graded. Tests: +6 devspace +1 executor inception = 105 tools tests green. Wired validate + CapD links.
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 freeto 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.
Supply-chain + least-privilege hardening (opened by a keeper pass — for your review, not auto-merged).
@vNtags are a supply-chain injection vector.permissions: contents: readwhere absent..github/dependabot.yml(github-actions, weekly) to keep pins current.Changed: images.yml, dependabot.yml (new)
🤖 Generated with Claude Code