mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-13 00:34:43 +00:00
Restore delivery qualification trust
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Detect changed areas (push) Waiting to run
Build and Test / Frontend (push) Blocked by required conditions
Build and Test / Backend tests (api) (push) Blocked by required conditions
Build and Test / Backend tests (rest-0) (push) Blocked by required conditions
Build and Test / Backend tests (rest-1) (push) Blocked by required conditions
Build and Test / Script smoke tests & backend build (push) Blocked by required conditions
Build and Test / Benchmarks (push) Blocked by required conditions
Canonical Governance / governance (push) Waiting to run
Canonical Private Governance / private-governance (push) Waiting to run
Helm CI / Lint and Render Chart (push) Waiting to run
Public docs / check (push) Waiting to run
Core E2E Tests / Playwright Core E2E (shard 4/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 5/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 6/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 7/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 8/8) (push) Blocked by required conditions
Core E2E Tests / Validate E2E tier selection (push) Waiting to run
Core E2E Tests / Playwright Core E2E (shard 1/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 2/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 3/8) (push) Blocked by required conditions
Core E2E Tests / Agent registration lifecycle (push) Waiting to run
Core E2E Tests / E2E verdict (push) Blocked by required conditions
Unified Agent Native Verification / FreeBSD cross-build contract (push) Waiting to run
Unified Agent Native Verification / Linux ARM64 (push) Waiting to run
Unified Agent Native Verification / Linux x64 (push) Waiting to run
Unified Agent Native Verification / Windows x64 (push) Waiting to run
Unified Agent Native Verification / macOS ARM64 (push) Waiting to run
Unified Agent Native Verification / macOS Intel (push) Waiting to run
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Detect changed areas (push) Waiting to run
Build and Test / Frontend (push) Blocked by required conditions
Build and Test / Backend tests (api) (push) Blocked by required conditions
Build and Test / Backend tests (rest-0) (push) Blocked by required conditions
Build and Test / Backend tests (rest-1) (push) Blocked by required conditions
Build and Test / Script smoke tests & backend build (push) Blocked by required conditions
Build and Test / Benchmarks (push) Blocked by required conditions
Canonical Governance / governance (push) Waiting to run
Canonical Private Governance / private-governance (push) Waiting to run
Helm CI / Lint and Render Chart (push) Waiting to run
Public docs / check (push) Waiting to run
Core E2E Tests / Playwright Core E2E (shard 4/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 5/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 6/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 7/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 8/8) (push) Blocked by required conditions
Core E2E Tests / Validate E2E tier selection (push) Waiting to run
Core E2E Tests / Playwright Core E2E (shard 1/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 2/8) (push) Blocked by required conditions
Core E2E Tests / Playwright Core E2E (shard 3/8) (push) Blocked by required conditions
Core E2E Tests / Agent registration lifecycle (push) Waiting to run
Core E2E Tests / E2E verdict (push) Blocked by required conditions
Unified Agent Native Verification / FreeBSD cross-build contract (push) Waiting to run
Unified Agent Native Verification / Linux ARM64 (push) Waiting to run
Unified Agent Native Verification / Linux x64 (push) Waiting to run
Unified Agent Native Verification / Windows x64 (push) Waiting to run
Unified Agent Native Verification / macOS ARM64 (push) Waiting to run
Unified Agent Native Verification / macOS Intel (push) Waiting to run
Harden release workflow input transport and make native lifecycle proof honor each platform security boundary. Refresh stale telemetry and delivery qualifications. Contract-Neutral: Formatting-only catalog updates and browser-verified alert copy; release compiler and native lifecycle changes update their owning contracts.
This commit is contained in:
parent
fda955627f
commit
445ebacf24
20 changed files with 128 additions and 66 deletions
|
|
@ -6,6 +6,7 @@ import (
|
|||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
|
@ -19,6 +20,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
binaryName := "pulse-mcp-" + runtime.GOOS + "-" + runtime.GOARCH
|
||||
tests := []struct {
|
||||
name string
|
||||
manifest func(binary []byte) string
|
||||
|
|
@ -31,7 +33,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
name: "valid signed manifest",
|
||||
manifest: func(binary []byte) string {
|
||||
digest := sha256.Sum256(binary)
|
||||
return fmt.Sprintf("%x pulse-mcp-linux-amd64\n", digest)
|
||||
return fmt.Sprintf("%x %s\n", digest, binaryName)
|
||||
},
|
||||
wantSuccess: true,
|
||||
wantOutput: "release signature verified",
|
||||
|
|
@ -40,7 +42,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
name: "manifest unavailable",
|
||||
manifest: func(binary []byte) string {
|
||||
digest := sha256.Sum256(binary)
|
||||
return fmt.Sprintf("%x pulse-mcp-linux-amd64\n", digest)
|
||||
return fmt.Sprintf("%x %s\n", digest, binaryName)
|
||||
},
|
||||
missingAsset: "checksums.txt",
|
||||
wantOutput: "could not fetch checksums.txt; refusing unverified install",
|
||||
|
|
@ -49,7 +51,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
name: "signature unavailable",
|
||||
manifest: func(binary []byte) string {
|
||||
digest := sha256.Sum256(binary)
|
||||
return fmt.Sprintf("%x pulse-mcp-linux-amd64\n", digest)
|
||||
return fmt.Sprintf("%x %s\n", digest, binaryName)
|
||||
},
|
||||
missingAsset: "checksums.txt.sshsig",
|
||||
wantOutput: "could not fetch checksums.txt.sshsig; refusing unverified install",
|
||||
|
|
@ -58,7 +60,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
name: "signature invalid",
|
||||
manifest: func(binary []byte) string {
|
||||
digest := sha256.Sum256(binary)
|
||||
return fmt.Sprintf("%x pulse-mcp-linux-amd64\n", digest)
|
||||
return fmt.Sprintf("%x %s\n", digest, binaryName)
|
||||
},
|
||||
invalidSig: true,
|
||||
wantOutput: "cryptographic signature verification failed for checksums.txt",
|
||||
|
|
@ -75,16 +77,16 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
name: "binary duplicated",
|
||||
manifest: func(binary []byte) string {
|
||||
digest := sha256.Sum256(binary)
|
||||
return fmt.Sprintf("%x pulse-mcp-linux-amd64\n%x pulse-mcp-linux-amd64\n", digest, digest)
|
||||
return fmt.Sprintf("%x %s\n%x %s\n", digest, binaryName, digest, binaryName)
|
||||
},
|
||||
wantOutput: "checksums.txt must contain exactly one valid SHA256 entry",
|
||||
},
|
||||
{
|
||||
name: "digest mismatch",
|
||||
manifest: func(_ []byte) string {
|
||||
return strings.Repeat("0", 64) + " pulse-mcp-linux-amd64\n"
|
||||
return strings.Repeat("0", 64) + " " + binaryName + "\n"
|
||||
},
|
||||
wantOutput: "sha256 mismatch for pulse-mcp-linux-amd64",
|
||||
wantOutput: "sha256 mismatch for " + binaryName,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +103,7 @@ func TestInstallMCPRequiresSignedChecksumEvidence(t *testing.T) {
|
|||
}
|
||||
|
||||
binary := []byte("test pulse-mcp executable\n")
|
||||
writeTestFile(t, filepath.Join(fixtureDir, "pulse-mcp-linux-amd64"), binary, 0o644)
|
||||
writeTestFile(t, filepath.Join(fixtureDir, binaryName), binary, 0o644)
|
||||
manifestPath := filepath.Join(fixtureDir, "checksums.txt")
|
||||
writeTestFile(t, manifestPath, []byte(tt.manifest(binary)), 0o644)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue