feat: verify frontend supply chain
This commit is contained in:
+30
-5
@@ -58,7 +58,10 @@
|
||||
"gates": {
|
||||
"FE-GATE-001": {
|
||||
"name": "manifest-lockfile",
|
||||
"steps": [{ "script": "verify:lockfile", "expect": "pass" }],
|
||||
"steps": [
|
||||
{ "script": "verify:lockfile", "expect": "pass" },
|
||||
{ "script": "check:frozen-lockfile:fixture", "expect": "pass" }
|
||||
],
|
||||
"logPath": "artifacts/quality/install.txt",
|
||||
"evidence": ["artifacts/quality/install.txt"],
|
||||
"retentionClass": "merge-cycle"
|
||||
@@ -239,14 +242,32 @@
|
||||
"FE-GATE-013": {
|
||||
"name": "security",
|
||||
"steps": [
|
||||
{ "script": "verify:reproducible-build", "expect": "pass" },
|
||||
{ "script": "build:release", "expect": "pass" },
|
||||
{ "script": "verify:supply-chain", "expect": "pass" },
|
||||
{ "script": "check:supply-chain:fixtures", "expect": "pass" },
|
||||
{
|
||||
"script": "check:supply-chain:provider-fixtures",
|
||||
"expect": "pass"
|
||||
},
|
||||
{ "script": "scan:security:fixture", "expect": "fail" },
|
||||
{ "script": "check:browser-security", "expect": "pass" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-013.txt",
|
||||
"evidence": [
|
||||
"artifacts/security/scan.sarif",
|
||||
"artifacts/security/scan-fixture.sarif",
|
||||
"artifacts/release/dependency-inventory.json",
|
||||
"artifacts/security/dependency-diff.json"
|
||||
"artifacts/release/sbom.cdx.json",
|
||||
"artifacts/release/provenance.json",
|
||||
"artifacts/release/reproducible-build.json",
|
||||
"artifacts/security/dependency-diff.json",
|
||||
"artifacts/security/license-report.json",
|
||||
"artifacts/security/vulnerability-report.json",
|
||||
"artifacts/security/supply-chain-verification.json",
|
||||
"artifacts/security/supply-chain-coherence.json",
|
||||
"artifacts/security/supply-chain-fixtures.json",
|
||||
"artifacts/security/supply-chain-provider-fixtures.json"
|
||||
],
|
||||
"retentionClass": "release-coherence"
|
||||
},
|
||||
@@ -260,11 +281,15 @@
|
||||
"FE-GATE-015": {
|
||||
"name": "release-coherence",
|
||||
"steps": [
|
||||
{ "script": "build", "expect": "pass" },
|
||||
{ "script": "verify:release", "expect": "pass" }
|
||||
{ "script": "build:release", "expect": "pass" },
|
||||
{ "script": "verify:release", "expect": "pass" },
|
||||
{ "script": "verify:supply-chain:promotion", "expect": "pass" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-015.txt",
|
||||
"evidence": ["artifacts/release/verification.json"],
|
||||
"evidence": [
|
||||
"artifacts/release/verification.json",
|
||||
"artifacts/security/promotion-verification.json"
|
||||
],
|
||||
"retentionClass": "release-coherence"
|
||||
},
|
||||
"FE-GATE-016": {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"snapshotDigest": "ce4fa9b7944f27553067228bd6c9e73e7dc05875c283255b50d7eb3ad2923f6d",
|
||||
"owner": "frontend-platform",
|
||||
"reason": "RP-11-initial-transitive-inventory",
|
||||
"approvedAt": "2026-07-26T08:27:17.874Z"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"changes": []
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"allowedLicenses": [
|
||||
"(MIT OR CC0-1.0)",
|
||||
"0BSD",
|
||||
"Apache-2.0",
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
"BlueOak-1.0.0",
|
||||
"CC-BY-4.0",
|
||||
"CC0-1.0",
|
||||
"ISC",
|
||||
"MIT",
|
||||
"MIT-0",
|
||||
"MPL-2.0"
|
||||
],
|
||||
"deniedLicensePatterns": [
|
||||
"(^|\\s)AGPL",
|
||||
"(^|\\s)GPL",
|
||||
"SSPL",
|
||||
"BUSL"
|
||||
],
|
||||
"unknownLicensePolicy": "allow-only-unmaterialized-platform-optional"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"trackedRoots": [
|
||||
"src",
|
||||
"scripts",
|
||||
"tests",
|
||||
"config",
|
||||
"public",
|
||||
"schemas",
|
||||
".storybook",
|
||||
"package.json",
|
||||
"pnpm-lock.yaml",
|
||||
"vite.config.js",
|
||||
"vitest.config.js",
|
||||
"playwright.config.js"
|
||||
],
|
||||
"generatedRoots": ["dist", "artifacts/release"],
|
||||
"excludedPaths": [
|
||||
"tests/fixtures/security/secret-detection/forbidden"
|
||||
],
|
||||
"allowlist": [
|
||||
{
|
||||
"path": "tests/fixtures/security/secret-detection/allowed/test-credentials.ts",
|
||||
"ruleId": "assigned-secret",
|
||||
"owner": "frontend-platform",
|
||||
"reason": "Synthetic credential verifies the scoped test-only allowlist.",
|
||||
"expiresAt": "2027-07-26T00:00:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"exceptions": []
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"providerMode": "external-file",
|
||||
"inputEnvironment": "VULNERABILITY_REPORT_PATH",
|
||||
"blockAtSeverity": "high",
|
||||
"allowedSeverities": ["unknown", "low", "moderate", "high", "critical"],
|
||||
"missingProviderStatus": "FAIL_UNVERIFIED"
|
||||
}
|
||||
Reference in New Issue
Block a user