owlrunkit 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +674 -0
- package/NOTICE.md +137 -0
- package/README.md +44 -0
- package/SOURCE.md +10 -0
- package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_1.md +160 -0
- package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_2.md +459 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +408 -0
- package/integrations/codex/skills/owlcoda-runkit/agents/openai.yaml +4 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/agents-snippet.md +7 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +10 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/coverage-adopt-request.json +26 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/execution-delivery-packet.json +13 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/finalize-request.json +18 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/goal-contract.json +11 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/profiles.json +9 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/ready-for-commit-request.json +11 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/resource-preflight-request.json +56 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/resume-request.json +10 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/snapshot-request.json +23 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/verification-context.json +15 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/verification-receipt.json +11 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/verify-plan-request.json +31 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/visual-smoke-request.json +32 -0
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/worker-lease.json +7 -0
- package/package.json +24 -0
- package/packages/attest/LICENSE +674 -0
- package/packages/attest/README.md +63 -0
- package/packages/attest/cli/owlcoda-attest.mjs +155 -0
- package/packages/attest/consumer-surface-v1.json +255 -0
- package/packages/attest/distribution-manifest-v1.json +104 -0
- package/packages/attest/fixtures/bad/accepted-authority-leak.json +7 -0
- package/packages/attest/fixtures/bad/accepted-failed-receipt.json +7 -0
- package/packages/attest/fixtures/bad/active-context-binding-mismatch.json +7 -0
- package/packages/attest/fixtures/bad/active-source-binding-mismatch.json +7 -0
- package/packages/attest/fixtures/bad/context-fingerprint-mismatch.json +7 -0
- package/packages/attest/fixtures/bad/duplicate-object-key.json +8 -0
- package/packages/attest/fixtures/bad/multiple-active-leaves.json +10 -0
- package/packages/attest/fixtures/bad/orphan-replacement.json +7 -0
- package/packages/attest/fixtures/bad/root-shape-extra-property.json +8 -0
- package/packages/attest/fixtures/bad/source-fingerprint-mismatch.json +7 -0
- package/packages/attest/fixtures/good/accepted-replacement-chain.json +59 -0
- package/packages/attest/fixtures/good/blocked-single-leaf.json +9 -0
- package/packages/attest/fixtures/index.json +90 -0
- package/packages/attest/sbom.spdx.json +33 -0
- package/packages/attest/schemas/attestation-ref-v1.schema.json +44 -0
- package/packages/attest/schemas/attestation-result-v1.schema.json +163 -0
- package/packages/attest/schemas/offline-attestation-bundle-v1.schema.json +30 -0
- package/packages/attest/schemas/public-verification-bundle-v1.schema.json +74 -0
- package/packages/attest/schemas/quick-verification-receipt-v1.schema.json +219 -0
- package/packages/attest/schemas/workspace-snapshot-v1.schema.json +135 -0
- package/packages/attest/src/canonical.mjs +12 -0
- package/packages/attest/src/formal.mjs +762 -0
- package/packages/attest/src/index.mjs +113 -0
- package/packages/attest/src/offline-bundle.mjs +108 -0
- package/packages/attest/src/quick-receipt-contract.mjs +156 -0
- package/packages/attest/src/quick.mjs +274 -0
- package/packages/attest/src/reference-contract.mjs +64 -0
- package/packages/attest/src/reference.mjs +131 -0
- package/packages/attest/src/workspace-snapshot.mjs +171 -0
- package/registry-release-policy-v1.json +34 -0
- package/sbom.spdx.json +39 -0
- package/scripts/runkit-contract/acceptance-evidence.mjs +103 -0
- package/scripts/runkit-contract/core-contract.mjs +392 -0
- package/scripts/runkit-contract/coverage-adoption.mjs +414 -0
- package/scripts/runkit-contract/delivery-create.mjs +252 -0
- package/scripts/runkit-contract/delivery-selection.mjs +31 -0
- package/scripts/runkit-contract/finalize.mjs +790 -0
- package/scripts/runkit-contract/inspect-presentation.mjs +183 -0
- package/scripts/runkit-contract/install-codex-skill.mjs +239 -0
- package/scripts/runkit-contract/lease-lifecycle.mjs +324 -0
- package/scripts/runkit-contract/lifecycle-orchestration.mjs +415 -0
- package/scripts/runkit-contract/offline-store.mjs +248 -0
- package/scripts/runkit-contract/profile-impact.mjs +223 -0
- package/scripts/runkit-contract/provenance-common.mjs +153 -0
- package/scripts/runkit-contract/quick-attest.mjs +4 -0
- package/scripts/runkit-contract/quick-canonical.mjs +41 -0
- package/scripts/runkit-contract/quick-metrics.mjs +86 -0
- package/scripts/runkit-contract/quick-receipt.mjs +139 -0
- package/scripts/runkit-contract/quick-verify.mjs +201 -0
- package/scripts/runkit-contract/quick-workspace-snapshot.mjs +3 -0
- package/scripts/runkit-contract/ready-for-commit.mjs +188 -0
- package/scripts/runkit-contract/receipt-lineage.mjs +332 -0
- package/scripts/runkit-contract/registry-adoption-gate.mjs +117 -0
- package/scripts/runkit-contract/repair-execution.mjs +997 -0
- package/scripts/runkit-contract/resource-preflight.mjs +829 -0
- package/scripts/runkit-contract/resume-execution.mjs +569 -0
- package/scripts/runkit-contract/runkit-cli.mjs +1214 -0
- package/scripts/runkit-contract/schemas/closeout-receipt-v2.schema.json +42 -0
- package/scripts/runkit-contract/schemas/core-artifact-v2.schema.json +23 -0
- package/scripts/runkit-contract/schemas/core-artifact.schema.json +23 -0
- package/scripts/runkit-contract/schemas/coverage-adopt-request-v1.schema.json +66 -0
- package/scripts/runkit-contract/schemas/engine-pin-v2.schema.json +14 -0
- package/scripts/runkit-contract/schemas/engine-pin.schema.json +14 -0
- package/scripts/runkit-contract/schemas/evidence-coverage-index-v1.schema.json +131 -0
- package/scripts/runkit-contract/schemas/finalize-request-v1.schema.json +131 -0
- package/scripts/runkit-contract/schemas/profiles.schema.json +47 -0
- package/scripts/runkit-contract/schemas/project-config-v2.schema.json +13 -0
- package/scripts/runkit-contract/schemas/project-config.schema.json +13 -0
- package/scripts/runkit-contract/schemas/ready-for-commit-v1.schema.json +26 -0
- package/scripts/runkit-contract/schemas/replayable-evidence-v1.schema.json +82 -0
- package/scripts/runkit-contract/schemas/resource-preflight-request-v1.schema.json +178 -0
- package/scripts/runkit-contract/schemas/resource-preflight-v1.schema.json +153 -0
- package/scripts/runkit-contract/schemas/resume-attempt-v1.schema.json +80 -0
- package/scripts/runkit-contract/schemas/resume-request-v1.schema.json +77 -0
- package/scripts/runkit-contract/schemas/snapshot-v1.schema.json +71 -0
- package/scripts/runkit-contract/schemas/verification-context-v1.schema.json +92 -0
- package/scripts/runkit-contract/schemas/verification-plan-v1.schema.json +150 -0
- package/scripts/runkit-contract/schemas/verification-receipt-v2.schema.json +118 -0
- package/scripts/runkit-contract/schemas/verify-plan-request-v1.schema.json +56 -0
- package/scripts/runkit-contract/schemas/visual-smoke-request-v1.schema.json +64 -0
- package/scripts/runkit-contract/schemas/visual-smoke-result-v1.schema.json +68 -0
- package/scripts/runkit-contract/snapshot.mjs +340 -0
- package/scripts/runkit-contract/source-fingerprint.mjs +404 -0
- package/scripts/runkit-contract/templates/coverage-adopt-request.json +26 -0
- package/scripts/runkit-contract/templates/finalize-request.json +18 -0
- package/scripts/runkit-contract/templates/goal-contract.json +11 -0
- package/scripts/runkit-contract/templates/ready-for-commit-request.json +11 -0
- package/scripts/runkit-contract/templates/resource-preflight-request.json +56 -0
- package/scripts/runkit-contract/templates/resume-request.json +10 -0
- package/scripts/runkit-contract/templates/snapshot-request.json +23 -0
- package/scripts/runkit-contract/templates/verify-plan-request.json +31 -0
- package/scripts/runkit-contract/templates/visual-smoke-request.json +32 -0
- package/scripts/runkit-contract/templates/worker-lease.json +7 -0
- package/scripts/runkit-contract/verification-context.mjs +141 -0
- package/scripts/runkit-contract/verification-plan.mjs +608 -0
- package/scripts/runkit-contract/verification-receipt-gate.mjs +566 -0
- package/scripts/runkit-contract/visual-smoke.mjs +410 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# `@owlcoda/attest`
|
|
2
|
+
|
|
3
|
+
`@owlcoda/attest` is OwlCoda RunKit's unsigned, read-only verification plane.
|
|
4
|
+
It verifies Quick Receipt V1 artifacts, Formal public verification bundles, and
|
|
5
|
+
local `OwlCodaAttestationRefV1` references without importing the private
|
|
6
|
+
mutation Core.
|
|
7
|
+
|
|
8
|
+
The package is an unsigned V1 distribution candidate. It is intentionally
|
|
9
|
+
marked private until naming clearance and release authorization exist.
|
|
10
|
+
`consumer-surface-v1.json` freezes the complete command, schema, reference,
|
|
11
|
+
issue-code, compatibility, privacy, metrics, and unsupported-claim covenant.
|
|
12
|
+
|
|
13
|
+
## CLI
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
owlcoda-attest attest <receipt-or-bundle.json> [--workspace <path>] [--json]
|
|
17
|
+
owlcoda-attest resolve <attestation-ref.json> --store <path> [--store <path>...] [--workspace <path>] [--json]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Resolution searches only the explicitly supplied local stores. Both commands
|
|
21
|
+
perform zero network requests and always report `authorizationGranted: false`.
|
|
22
|
+
`owlcoda-attest --help` is the complete installed consumer entry point.
|
|
23
|
+
Without `--workspace`, an otherwise-valid Quick receipt is `INDETERMINATE`: the
|
|
24
|
+
verifier checks receipt-internal relationships, does not read receipt-declared
|
|
25
|
+
output paths, and reports `current_workspace_not_checked`. A deterministically
|
|
26
|
+
invalid receipt remains `NO_GO`. Supply `--workspace` for a `GO` that checks the
|
|
27
|
+
selected current checkout and bound output materials. Formal public bundles
|
|
28
|
+
remain self-contained.
|
|
29
|
+
|
|
30
|
+
## API
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import {
|
|
34
|
+
attestFile,
|
|
35
|
+
createOfflineAttestationBundle,
|
|
36
|
+
createAttestationRef,
|
|
37
|
+
parseOfflineAttestationBundle,
|
|
38
|
+
parseAttestationRef,
|
|
39
|
+
resolveAttestationRef,
|
|
40
|
+
verifyBundle,
|
|
41
|
+
} from "@owlcoda/attest";
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Offline bundle helpers are pure and read-only. Producer-side file export and
|
|
45
|
+
store import are exposed by `owlcoda runkit store`; this public package never
|
|
46
|
+
writes a receipt store.
|
|
47
|
+
|
|
48
|
+
Quick `GO` means the captured command, receipt material, receipt-bound source
|
|
49
|
+
relationship, runtime context, and supported Core identity verify under the
|
|
50
|
+
unsigned Quick policy. When `--workspace` is supplied, it also binds the
|
|
51
|
+
selected current checkout. It does not mean Formal acceptance, independent
|
|
52
|
+
review, Git authority, release authority, or business-action authority.
|
|
53
|
+
|
|
54
|
+
The N/N-1 covenant, honest unsigned limits, and upgrade procedure are defined
|
|
55
|
+
in the repository documentation under
|
|
56
|
+
`docs/architecture/runkit-attestation-v1/`. Rollback preserves historical
|
|
57
|
+
receipts but does not require N-1 to trust an unknown future Core identity.
|
|
58
|
+
|
|
59
|
+
The packed candidate includes its GPL-3.0-or-later license, a package-level
|
|
60
|
+
SPDX 2.3 SBOM, and the frozen Consumer Surface V1 manifest. Local metrics never
|
|
61
|
+
send telemetry and are not a performance target. They describe local receipt
|
|
62
|
+
state; separate consumption must be evidenced by a caller-owned attestation
|
|
63
|
+
result.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
attestFile,
|
|
7
|
+
parseJsonStrict,
|
|
8
|
+
resolveAttestationRef,
|
|
9
|
+
} from "../src/index.mjs";
|
|
10
|
+
|
|
11
|
+
const HELP = `Usage:
|
|
12
|
+
owlcoda-attest attest <receipt-or-bundle.json> [--workspace <path>] [--json]
|
|
13
|
+
owlcoda-attest resolve <attestation-ref.json> --store <path> [--store <path>...] [--workspace <path>] [--json]
|
|
14
|
+
|
|
15
|
+
Read-only unsigned V1 verifier.
|
|
16
|
+
Otherwise-valid Quick without --workspace: INDETERMINATE; current checkout/output bytes not checked.
|
|
17
|
+
Authorization granted: false
|
|
18
|
+
Network requests: 0
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
function inputError(message) {
|
|
22
|
+
const error = new Error(message);
|
|
23
|
+
error.code = "receipt_schema_invalid";
|
|
24
|
+
return error;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function publicIssueCode(error) {
|
|
28
|
+
if (error?.code === "DUPLICATE_OBJECT_KEY") return "receipt_duplicate_key";
|
|
29
|
+
if (error?.code === "ENOENT") return "attestation_material_missing";
|
|
30
|
+
const supported = new Set([
|
|
31
|
+
"attestation_material_missing",
|
|
32
|
+
"receipt_duplicate_key",
|
|
33
|
+
"receipt_schema_invalid",
|
|
34
|
+
]);
|
|
35
|
+
return supported.has(error?.code) ? error.code : "receipt_schema_invalid";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function parseOptions(args, { valueNames }) {
|
|
39
|
+
const values = new Map();
|
|
40
|
+
let json = false;
|
|
41
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
42
|
+
const entry = args[index];
|
|
43
|
+
if (entry === "--json") {
|
|
44
|
+
json = true;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (!valueNames.has(entry)) {
|
|
48
|
+
throw inputError(`unknown option: ${entry}`);
|
|
49
|
+
}
|
|
50
|
+
const value = args[index + 1];
|
|
51
|
+
if (value === undefined || value.startsWith("--")) {
|
|
52
|
+
throw inputError(`${entry} requires a value`);
|
|
53
|
+
}
|
|
54
|
+
const existing = values.get(entry) ?? [];
|
|
55
|
+
existing.push(value);
|
|
56
|
+
values.set(entry, existing);
|
|
57
|
+
index += 1;
|
|
58
|
+
}
|
|
59
|
+
return { json, values };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function printHuman(result) {
|
|
63
|
+
const decision = result.decision ?? result.attestation?.decision ?? result.status;
|
|
64
|
+
process.stdout.write(`${decision}: ${result.status}\n`);
|
|
65
|
+
process.stdout.write(`authorization: false\n`);
|
|
66
|
+
process.stdout.write(`network requests: ${result.networkRequests ?? 0}\n`);
|
|
67
|
+
if (Array.isArray(result.issueCodes)) {
|
|
68
|
+
process.stdout.write(`issues: ${result.issueCodes.join(", ") || "none"}\n`);
|
|
69
|
+
}
|
|
70
|
+
if (result.nextAllowedAction) {
|
|
71
|
+
process.stdout.write(`next: ${result.nextAllowedAction}\n`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function emit(result, json) {
|
|
76
|
+
if (json) {
|
|
77
|
+
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
78
|
+
} else {
|
|
79
|
+
printHuman(result);
|
|
80
|
+
}
|
|
81
|
+
return result.exitCode;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function runAttest(args) {
|
|
85
|
+
const subjectPath = args[0];
|
|
86
|
+
if (!subjectPath || subjectPath.startsWith("--")) {
|
|
87
|
+
throw inputError("usage: owlcoda-attest attest <receipt-or-bundle.json> [--workspace <path>] [--json]");
|
|
88
|
+
}
|
|
89
|
+
const { json, values } = parseOptions(args.slice(1), {
|
|
90
|
+
valueNames: new Set(["--workspace"]),
|
|
91
|
+
});
|
|
92
|
+
const workspace = values.get("--workspace")?.[0];
|
|
93
|
+
const result = attestFile({
|
|
94
|
+
subjectPath,
|
|
95
|
+
workspaceRoot: workspace === undefined ? undefined : realpathSync(workspace),
|
|
96
|
+
});
|
|
97
|
+
return emit(result, json);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function runResolve(args) {
|
|
101
|
+
const referencePath = args[0];
|
|
102
|
+
if (!referencePath || referencePath.startsWith("--")) {
|
|
103
|
+
throw inputError("usage: owlcoda-attest resolve <attestation-ref.json> --store <path> [--store <path>...] [--workspace <path>] [--json]");
|
|
104
|
+
}
|
|
105
|
+
const { json, values } = parseOptions(args.slice(1), {
|
|
106
|
+
valueNames: new Set(["--store", "--workspace"]),
|
|
107
|
+
});
|
|
108
|
+
const stores = values.get("--store") ?? [];
|
|
109
|
+
if (stores.length === 0) {
|
|
110
|
+
throw inputError("resolve requires at least one --store");
|
|
111
|
+
}
|
|
112
|
+
const workspace = values.get("--workspace")?.[0];
|
|
113
|
+
if ((values.get("--workspace")?.length ?? 0) > 1) {
|
|
114
|
+
throw inputError("--workspace may be supplied only once");
|
|
115
|
+
}
|
|
116
|
+
const reference = parseJsonStrict(readFileSync(referencePath, "utf8"));
|
|
117
|
+
const result = resolveAttestationRef({
|
|
118
|
+
reference,
|
|
119
|
+
stores,
|
|
120
|
+
workspaceRoot: workspace === undefined ? undefined : realpathSync(workspace),
|
|
121
|
+
});
|
|
122
|
+
return emit(result, json);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function run(argv) {
|
|
126
|
+
const [command, ...args] = argv;
|
|
127
|
+
if (command === "--help" || command === "-h" || command === "help") {
|
|
128
|
+
process.stdout.write(HELP);
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
if (command === "attest") return runAttest(args);
|
|
132
|
+
if (command === "resolve") return runResolve(args);
|
|
133
|
+
throw inputError("usage: owlcoda-attest <attest|resolve> ...");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
process.exitCode = run(process.argv.slice(2));
|
|
138
|
+
} catch (error) {
|
|
139
|
+
const result = {
|
|
140
|
+
schemaVersion: "OwlCodaAttestCommandErrorV1",
|
|
141
|
+
status: "input_invalid",
|
|
142
|
+
exitCode: 3,
|
|
143
|
+
issueCodes: [publicIssueCode(error)],
|
|
144
|
+
message: error instanceof Error ? error.message : String(error),
|
|
145
|
+
authorizationGranted: false,
|
|
146
|
+
networkRequests: 0,
|
|
147
|
+
};
|
|
148
|
+
const json = process.argv.includes("--json");
|
|
149
|
+
if (json) {
|
|
150
|
+
process.stdout.write(`${JSON.stringify(result)}\n`);
|
|
151
|
+
} else {
|
|
152
|
+
process.stderr.write(`${result.message}\n`);
|
|
153
|
+
}
|
|
154
|
+
process.exitCode = result.exitCode;
|
|
155
|
+
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitConsumerSurfaceManifestV1",
|
|
3
|
+
"consumerSurface": "unsigned_v1",
|
|
4
|
+
"status": "frozen_candidate",
|
|
5
|
+
"commands": [
|
|
6
|
+
{
|
|
7
|
+
"id": "quick_verify",
|
|
8
|
+
"invocation": "owlcoda runkit verify -- <executable> [args...]",
|
|
9
|
+
"lane": "Quick Verification",
|
|
10
|
+
"mutation": "writes one project-local Quick receipt and bound output artifacts",
|
|
11
|
+
"runKitControlPlaneNetworkRequests": 0,
|
|
12
|
+
"childCommandNetworkPolicy": "caller_owned_not_restricted_or_measured",
|
|
13
|
+
"authorizationGranted": false
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "attest",
|
|
17
|
+
"invocation": "owlcoda attest <receipt> --workspace <path> [--json]",
|
|
18
|
+
"lane": "read-only consumer",
|
|
19
|
+
"mutation": "none",
|
|
20
|
+
"networkRequests": 0,
|
|
21
|
+
"authorizationGranted": false
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "resolve",
|
|
25
|
+
"invocation": "owlcoda resolve <reference> --store <path> [--store <path>...] [--workspace <path>] [--json]",
|
|
26
|
+
"lane": "read-only consumer",
|
|
27
|
+
"mutation": "none",
|
|
28
|
+
"networkRequests": 0,
|
|
29
|
+
"authorizationGranted": false
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "repair",
|
|
33
|
+
"invocation": "owlcoda runkit repair --run-id <run-id> [--json]",
|
|
34
|
+
"lane": "Formal Delivery recovery",
|
|
35
|
+
"mutation": "appends a repair plan, attempt, replacement packet, and receipt lineage when authorized by the active execution",
|
|
36
|
+
"runKitControlPlaneNetworkRequests": 0,
|
|
37
|
+
"childCommandNetworkPolicy": "caller_owned_not_restricted_or_measured",
|
|
38
|
+
"authorizationGranted": false
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "store_export",
|
|
42
|
+
"invocation": "owlcoda runkit store export --receipt <path> --output <path> [--json]",
|
|
43
|
+
"lane": "offline transfer producer",
|
|
44
|
+
"mutation": "creates one new exact-byte offline bundle and refuses overwrite",
|
|
45
|
+
"networkRequests": 0,
|
|
46
|
+
"authorizationGranted": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "store_import",
|
|
50
|
+
"invocation": "owlcoda runkit store import --bundle <path> --store <path> [--json]",
|
|
51
|
+
"lane": "offline transfer consumer",
|
|
52
|
+
"mutation": "imports exact receipt bytes idempotently and refuses byte conflicts",
|
|
53
|
+
"networkRequests": 0,
|
|
54
|
+
"authorizationGranted": false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "local_metrics",
|
|
58
|
+
"invocation": "owlcoda runkit metrics --local [--json]",
|
|
59
|
+
"lane": "local inspection",
|
|
60
|
+
"mutation": "none",
|
|
61
|
+
"networkRequests": 0,
|
|
62
|
+
"authorizationGranted": false
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "standalone_attest",
|
|
66
|
+
"invocation": "owlcoda-attest attest <receipt-or-bundle.json> [--workspace <path>] [--json]",
|
|
67
|
+
"lane": "standalone read-only consumer",
|
|
68
|
+
"mutation": "none",
|
|
69
|
+
"networkRequests": 0,
|
|
70
|
+
"authorizationGranted": false
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "standalone_resolve",
|
|
74
|
+
"invocation": "owlcoda-attest resolve <attestation-ref.json> --store <path> [--store <path>...] [--workspace <path>] [--json]",
|
|
75
|
+
"lane": "standalone read-only consumer",
|
|
76
|
+
"mutation": "none",
|
|
77
|
+
"networkRequests": 0,
|
|
78
|
+
"authorizationGranted": false
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"schemas": [
|
|
82
|
+
"OwlCodaAttestationRefV1",
|
|
83
|
+
"OwlCodaAttestationResultV1",
|
|
84
|
+
"OwlCodaOfflineAttestationBundleV1",
|
|
85
|
+
"OwlCodaQuickVerificationReceiptV1",
|
|
86
|
+
"OwlCodaRunKitPublicVerificationBundleV1",
|
|
87
|
+
"OwlCodaWorkspaceSnapshotV1"
|
|
88
|
+
],
|
|
89
|
+
"attestationReference": {
|
|
90
|
+
"schemaVersion": "OwlCodaAttestationRefV1",
|
|
91
|
+
"requiredKeys": [
|
|
92
|
+
"schemaVersion",
|
|
93
|
+
"receiptId",
|
|
94
|
+
"receiptSha256",
|
|
95
|
+
"coreIdentity"
|
|
96
|
+
],
|
|
97
|
+
"coreIdentityRequiredKeys": [
|
|
98
|
+
"contractVersion",
|
|
99
|
+
"coreManifestSha256"
|
|
100
|
+
],
|
|
101
|
+
"additionalProperties": false,
|
|
102
|
+
"locationHints": false
|
|
103
|
+
},
|
|
104
|
+
"outcomes": {
|
|
105
|
+
"attestationDecisions": [
|
|
106
|
+
"GO",
|
|
107
|
+
"NO_GO",
|
|
108
|
+
"INDETERMINATE"
|
|
109
|
+
],
|
|
110
|
+
"resolutionStatuses": {
|
|
111
|
+
"resolved_valid": 0,
|
|
112
|
+
"resolved_invalid": 1,
|
|
113
|
+
"resolved_indeterminate": 3,
|
|
114
|
+
"ambiguous": 1,
|
|
115
|
+
"not_found": 3
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"assurance": {
|
|
119
|
+
"quickLane": "captured_verification",
|
|
120
|
+
"formalLane": "receipt_backed_delivery",
|
|
121
|
+
"quickCanSatisfyFormalAcceptance": false,
|
|
122
|
+
"signatureRequired": false,
|
|
123
|
+
"signatureAbsentIssueCode": "signature_absent",
|
|
124
|
+
"quickWithoutWorkspace": {
|
|
125
|
+
"otherwiseValidDecision": "INDETERMINATE",
|
|
126
|
+
"deterministicallyInvalidDecision": "NO_GO"
|
|
127
|
+
},
|
|
128
|
+
"independentReviewRequiredForFormalHighRisk": true,
|
|
129
|
+
"authorizationDerivedFromReceipt": false
|
|
130
|
+
},
|
|
131
|
+
"compatibility": {
|
|
132
|
+
"policy": "N verifies N and declared N-1 producer identities; N-1 is not required to trust an undeclared future producer identity",
|
|
133
|
+
"historicalBytesRewritten": false,
|
|
134
|
+
"scenarios": [
|
|
135
|
+
{
|
|
136
|
+
"id": "clean_first_use",
|
|
137
|
+
"evidencePath": "scripts/runkit-wave1-fresh-checkout-smoke.mjs"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "dirty_workspace",
|
|
141
|
+
"evidencePath": "tests/runkit-contract/quick-verification.workflow.test.mjs"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "offline_export_import_resolve",
|
|
145
|
+
"evidencePath": "tests/runkit-contract/wave4-offline-store.test.mjs"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "n_minus_one_upgrade",
|
|
149
|
+
"evidencePath": "tests/runkit-contract/wave4-distribution-compatibility.test.mjs"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "rollback",
|
|
153
|
+
"evidencePath": "tests/runkit-contract/wave4-distribution-compatibility.test.mjs"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "historical_unsigned_receipt",
|
|
157
|
+
"evidencePath": "tests/runkit-contract/wave4-distribution-compatibility.test.mjs"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "source_drift_repair",
|
|
161
|
+
"evidencePath": "tests/runkit-contract/repair-execution.workflow.test.mjs"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "failed_repair_lineage",
|
|
165
|
+
"evidencePath": "tests/runkit-contract/repair-execution.workflow.test.mjs"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"privacy": {
|
|
170
|
+
"defaultNetworkRequests": 0,
|
|
171
|
+
"defaultNetworkRequestsScope": "RunKit control plane only; a captured or replayed child command is caller-owned, unrestricted, and unmeasured",
|
|
172
|
+
"telemetry": false,
|
|
173
|
+
"credentialsRequired": false,
|
|
174
|
+
"hostedServiceRequired": false,
|
|
175
|
+
"receiptContentsMayContainCommandArgumentsAndPaths": true,
|
|
176
|
+
"operatorMustReviewBeforeExternalSharing": true
|
|
177
|
+
},
|
|
178
|
+
"metrics": {
|
|
179
|
+
"command": "owlcoda runkit metrics --local [--json]",
|
|
180
|
+
"localOnly": true,
|
|
181
|
+
"optInInspection": true,
|
|
182
|
+
"telemetry": false,
|
|
183
|
+
"networkRequests": 0,
|
|
184
|
+
"performanceTarget": false,
|
|
185
|
+
"automaticallyRecordsIndependentConsumption": false,
|
|
186
|
+
"statement": "Local totals describe project receipt state; independent consumption is evidenced by caller-owned attestation results, never hidden instrumentation."
|
|
187
|
+
},
|
|
188
|
+
"issueCodes": {
|
|
189
|
+
"ACCEPTED_AUTHORITY_GRANTED": "A Formal bundle marked accepted while its closeout grants authority.",
|
|
190
|
+
"ACCEPTED_RECEIPT_NOT_PASSED": "A Formal bundle marked accepted while its active receipt did not pass.",
|
|
191
|
+
"ACTIVE_RECEIPT_CONTEXT_BINDING_MISMATCH": "The active Formal receipt context does not match the declared verification context.",
|
|
192
|
+
"ACTIVE_RECEIPT_SOURCE_BINDING_MISMATCH": "The active Formal receipt source does not match the declared source fingerprint.",
|
|
193
|
+
"CANONICAL_JSON_INVALID": "Canonical JSON computation failed at a public Formal artifact boundary.",
|
|
194
|
+
"CLOSEOUT_ACTIVE_RECEIPT_MISMATCH": "The Formal closeout does not bind the active receipt.",
|
|
195
|
+
"CLOSEOUT_CONTEXT_BINDING_MISMATCH": "The Formal closeout context does not bind the declared verification context.",
|
|
196
|
+
"CLOSEOUT_SOURCE_BINDING_MISMATCH": "The Formal closeout source does not bind the declared source fingerprint.",
|
|
197
|
+
"DUPLICATE_OBJECT_KEY": "A Formal JSON input contains a duplicate object key.",
|
|
198
|
+
"EXTERNAL_AUTHORITY_GRANTED": "A public Formal bundle attempts to grant external authority.",
|
|
199
|
+
"INPUT_FILE_INVALID": "A Formal verifier input file cannot be read under the public file boundary.",
|
|
200
|
+
"INPUT_JSON_INVALID": "A Formal verifier input is not strict valid JSON.",
|
|
201
|
+
"INPUT_SIZE_LIMIT_EXCEEDED": "A Formal verifier input exceeds the deterministic byte limit.",
|
|
202
|
+
"JSON_NESTING_LIMIT_EXCEEDED": "A Formal verifier input exceeds the deterministic nesting limit.",
|
|
203
|
+
"JSON_NODE_LIMIT_EXCEEDED": "A Formal verifier input exceeds the deterministic JSON node limit.",
|
|
204
|
+
"PUBLIC_BUNDLE_SHAPE_INVALID": "A Formal public bundle has an unknown, missing, or extra field.",
|
|
205
|
+
"RECEIPT_AUTHORITY_GRANTED": "A Formal receipt attempts to grant external authority.",
|
|
206
|
+
"RECEIPT_COUNT_LIMIT_EXCEEDED": "A Formal bundle exceeds the deterministic receipt-count limit.",
|
|
207
|
+
"RECEIPT_ID_DUPLICATE": "A Formal receipt identifier appears more than once.",
|
|
208
|
+
"RECEIPT_LINEAGE_CYCLE": "Formal replacement lineage contains a cycle.",
|
|
209
|
+
"RECEIPT_LINEAGE_MULTIPLE_ACTIVE_LEAVES": "Formal replacement lineage has more than one active leaf.",
|
|
210
|
+
"RECEIPT_LINEAGE_NO_ACTIVE_LEAF": "Formal replacement lineage has no active leaf.",
|
|
211
|
+
"RECEIPT_LINEAGE_ORPHAN": "A Formal replacement references a parent absent from earlier append-only lineage.",
|
|
212
|
+
"SOURCE_FINGERPRINT_MISMATCH": "The Formal source payload does not match its declared fingerprint.",
|
|
213
|
+
"VERIFICATION_CONTEXT_FINGERPRINT_MISMATCH": "The Formal verification context does not match its declared fingerprint.",
|
|
214
|
+
"anchor_absent": "No external checkpoint or timestamp anchor was checked; unsigned V1 remains usable under local policy.",
|
|
215
|
+
"attestation_material_missing": "A receipt-bound output material is unavailable, so the result is indeterminate rather than silently accepted.",
|
|
216
|
+
"attestation_target_ambiguous": "More than one byte-distinct local receipt matches the reference.",
|
|
217
|
+
"attestation_target_not_found": "No receipt matching the exact local reference was found in the supplied stores.",
|
|
218
|
+
"core_identity_mismatch": "The receipt producer Core identity is not declared by this verifier.",
|
|
219
|
+
"current_workspace_not_checked": "No explicit workspace was selected, so Quick attestation did not read output paths or compare current checkout bytes.",
|
|
220
|
+
"quick_ignored_artifact_unbound": "Git-ignored outputs are not bound unless an explicit artifact contract names and hashes them.",
|
|
221
|
+
"quick_receipt_store_invalid": "The project-local receipt store failed its path or file integrity boundary.",
|
|
222
|
+
"receipt_duplicate_key": "The receipt contains a duplicate JSON object key.",
|
|
223
|
+
"receipt_material_hash_mismatch": "A receipt-bound material differs from its recorded bytes, hash, or size.",
|
|
224
|
+
"receipt_schema_invalid": "The receipt does not satisfy the strict supported schema.",
|
|
225
|
+
"receipt_source_mismatch": "The selected workspace source does not match the receipt-bound source.",
|
|
226
|
+
"repair_plan_incomplete": "A deterministic repair plan cannot safely replay every required command and binding.",
|
|
227
|
+
"repair_replay_failed": "A replay command failed; the failed attempt and earlier lineage remain append-only.",
|
|
228
|
+
"signature_absent": "No receipt signature is present or checked; this is expected under unsigned V1 and proves no signer identity.",
|
|
229
|
+
"source_mutated_during_verification": "Source bytes changed while the command was running.",
|
|
230
|
+
"verification_command_failed": "The captured verification command did not exit successfully.",
|
|
231
|
+
"verification_context_mismatch": "The current runtime context differs from the receipt-bound runtime context."
|
|
232
|
+
},
|
|
233
|
+
"unsupportedClaims": [
|
|
234
|
+
"unsigned_receipt_proves_signer_identity",
|
|
235
|
+
"unsigned_receipt_proves_independent_machine_or_organization",
|
|
236
|
+
"issued_at_proves_trusted_wall_clock_time",
|
|
237
|
+
"unsigned_receipt_proves_external_existence_before_a_time",
|
|
238
|
+
"ignored_artifact_is_bound_without_explicit_artifact_contract",
|
|
239
|
+
"quick_receipt_proves_formal_acceptance",
|
|
240
|
+
"receipt_grants_git_release_or_business_authority",
|
|
241
|
+
"captured_or_replayed_child_command_has_zero_network",
|
|
242
|
+
"local_metrics_are_independent_consumption_events"
|
|
243
|
+
],
|
|
244
|
+
"integration": {
|
|
245
|
+
"persist": "OwlCodaAttestationRefV1 plus the referenced receipt bytes",
|
|
246
|
+
"consume": "attest or resolve through a declared command or the standalone package",
|
|
247
|
+
"doNotImport": [
|
|
248
|
+
"private RunKit mutation Core",
|
|
249
|
+
"Desktop or App Server internals",
|
|
250
|
+
"project-private receipt-store layout"
|
|
251
|
+
],
|
|
252
|
+
"futureSignedProfile": "additive; producer command and AttestationRefV1 shape remain unchanged"
|
|
253
|
+
},
|
|
254
|
+
"authorizationGranted": false
|
|
255
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitDistributionManifestV1",
|
|
3
|
+
"consumerSurface": "unsigned_v1",
|
|
4
|
+
"current": {
|
|
5
|
+
"packageName": "@owlcoda/attest",
|
|
6
|
+
"packageVersion": "0.2.0",
|
|
7
|
+
"commands": [
|
|
8
|
+
"owlcoda-attest attest",
|
|
9
|
+
"owlcoda-attest resolve"
|
|
10
|
+
],
|
|
11
|
+
"schemaVersions": [
|
|
12
|
+
"OwlCodaAttestationRefV1",
|
|
13
|
+
"OwlCodaAttestationResultV1",
|
|
14
|
+
"OwlCodaOfflineAttestationBundleV1",
|
|
15
|
+
"OwlCodaQuickVerificationReceiptV1",
|
|
16
|
+
"OwlCodaRunKitPublicVerificationBundleV1",
|
|
17
|
+
"OwlCodaWorkspaceSnapshotV1"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"nMinusOne": {
|
|
21
|
+
"packageName": "@owlcoda/attest",
|
|
22
|
+
"packageVersion": "0.1.0",
|
|
23
|
+
"tarballSha256": "sha256:5a6bb0aa76a11c70d2539abde1499a4a01f3d2fe5ae6a36dd9b5f8e782312380"
|
|
24
|
+
},
|
|
25
|
+
"consumerSurfaceManifest": {
|
|
26
|
+
"path": "consumer-surface-v1.json",
|
|
27
|
+
"sha256": "sha256:66766ee292b0162869c617b8e8dff2d985336a845f4cfc596e7262f6311729e4"
|
|
28
|
+
},
|
|
29
|
+
"sbom": {
|
|
30
|
+
"path": "sbom.spdx.json",
|
|
31
|
+
"sha256": "sha256:8346b0d642224f78319da8ac7016f7b41f9807240304a80bbd1d9c89663a2eeb"
|
|
32
|
+
},
|
|
33
|
+
"license": {
|
|
34
|
+
"path": "LICENSE",
|
|
35
|
+
"spdx": "GPL-3.0-or-later",
|
|
36
|
+
"sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
|
|
37
|
+
},
|
|
38
|
+
"supportedProducerCoreIdentities": [
|
|
39
|
+
{
|
|
40
|
+
"contractVersion": "0.2",
|
|
41
|
+
"coreVersion": "0.13.0",
|
|
42
|
+
"coreManifestSha256": "sha256:0e3233a417365afb4e2ce22db5260608a9c697a819cd5c02897276d6454dde1f"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"contractVersion": "0.2",
|
|
46
|
+
"coreVersion": "0.13.0",
|
|
47
|
+
"coreManifestSha256": "sha256:037c012751b32abbbb48ce8a8d2cd8faa4fc2c38d6797db391205477e667065f"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"contractVersion": "0.2",
|
|
51
|
+
"coreVersion": "0.12.0",
|
|
52
|
+
"coreManifestSha256": "sha256:c415b10cb00d2a7891744b7257774fa501ddf40f8ec2f290356505a17fefb40f"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"contractVersion": "0.2",
|
|
56
|
+
"coreVersion": "0.12.0",
|
|
57
|
+
"coreManifestSha256": "sha256:be4b079fb0bc29e71858af03a1e579f864d4414c815ac612c3b514d8d663d07b"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"contractVersion": "0.2",
|
|
61
|
+
"coreVersion": "0.13.0",
|
|
62
|
+
"coreManifestSha256": "sha256:2f840d1884b34656902f8f23af3bd8052dde3212aa516dac2cbb0e0b29627ea1"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"contractVersion": "0.2",
|
|
66
|
+
"coreVersion": "0.13.0",
|
|
67
|
+
"coreManifestSha256": "sha256:febf2551317fce9e4bb412b833a392a20376d702dda09c57d6116e8a3ca4f857"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"contractVersion": "0.2",
|
|
71
|
+
"coreVersion": "0.13.0",
|
|
72
|
+
"coreManifestSha256": "sha256:4b72f572b6964f149c4a6fe5c2c9da85f73b8060c88023dc96ba5ca50a036972"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"contractVersion": "0.2",
|
|
76
|
+
"coreVersion": "0.13.0",
|
|
77
|
+
"coreManifestSha256": "sha256:0455c847bf2df77703583c6f19c20cf103206bafc4f122795bf34d3f85f0263d"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"includedRoots": [
|
|
81
|
+
"cli/",
|
|
82
|
+
"consumer-surface-v1.json",
|
|
83
|
+
"fixtures/",
|
|
84
|
+
"LICENSE",
|
|
85
|
+
"schemas/",
|
|
86
|
+
"sbom.spdx.json",
|
|
87
|
+
"src/",
|
|
88
|
+
"README.md",
|
|
89
|
+
"distribution-manifest-v1.json",
|
|
90
|
+
"package.json"
|
|
91
|
+
],
|
|
92
|
+
"forbiddenPatterns": [
|
|
93
|
+
".owlcoda/",
|
|
94
|
+
"credential",
|
|
95
|
+
"desktop/",
|
|
96
|
+
"execution-prompts/",
|
|
97
|
+
"private-engine",
|
|
98
|
+
"scripts/runkit-contract/",
|
|
99
|
+
"src/native/"
|
|
100
|
+
],
|
|
101
|
+
"networkRequests": 0,
|
|
102
|
+
"signatureRequired": false,
|
|
103
|
+
"authorizationGranted": false
|
|
104
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
4
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
5
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "passed", "replacesReceiptId": null, "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
6
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": true, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
4
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
5
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "failed", "replacesReceiptId": null, "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
6
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
4
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
5
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "passed", "replacesReceiptId": null, "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
6
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
4
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
5
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "passed", "replacesReceiptId": null, "sourceFingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
6
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
4
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
5
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "passed", "replacesReceiptId": null, "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
6
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
3
|
+
"schemaVersion": "OwlCodaRunKitPublicVerificationBundleV1",
|
|
4
|
+
"source": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "payload": {"manifestVersion": 1, "files": [{"path": "src/order.json", "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}]}},
|
|
5
|
+
"verificationContext": {"fingerprintAlgorithm": "sha256-canonical-json-v1", "fingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "payload": {"platform": "darwin-arm64", "commands": [{"executable": "/usr/bin/node", "argv": ["--test", "fixtures"], "cwd": "."}]}},
|
|
6
|
+
"receipts": [{"schemaVersion": "OwlCodaRunKitPublicVerificationReceiptV1", "receiptId": "receipt-001", "status": "passed", "replacesReceiptId": null, "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}],
|
|
7
|
+
"closeout": {"schemaVersion": "OwlCodaRunKitPublicCloseoutV1", "decision": "accepted", "activeReceiptId": "receipt-001", "sourceFingerprint": "sha256:6cbc7b5570b8ae2cf63857ade8fc9362bf78603488c594b6b3db9b647b6d1fac", "verificationContextFingerprint": "sha256:a617e3a705a0e45c4205b63635acff13a97d91707e63165fe9ac416e253befc4", "authorizationGranted": false, "gitAuthorization": false, "releaseAuthorization": false, "artifactMutationAuthorization": false, "businessActionAuthorization": false}
|
|
8
|
+
}
|