@echopath-labs/forgerail 0.1.0-alpha.1 → 0.1.0-alpha.2
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/.codex-plugin/plugin.json +7 -3
- package/CHANGELOG.md +8 -0
- package/PLUGIN.md +2 -1
- package/PRIVACY.md +15 -0
- package/README.md +14 -2
- package/README.zh-CN.md +13 -2
- package/TERMS.md +19 -0
- package/adapters/codex.json +1 -1
- package/assets/forgerail-icon.svg +6 -0
- package/assets/forgerail-logo.svg +7 -0
- package/contracts/authority-evidence-v1.schema.json +48 -0
- package/contracts/cross-workspace-pack-composition-v1.schema.json +241 -0
- package/contracts/effective-profile-v2.schema.json +113 -0
- package/contracts/entry-mode-v1.schema.json +20 -0
- package/contracts/evidence-identity-v1.schema.json +48 -0
- package/contracts/execution-context-identity-v1.schema.json +76 -0
- package/contracts/gate-result-v1.schema.json +32 -0
- package/contracts/governance-source-v1.schema.json +30 -0
- package/contracts/host-adapter-observation-v1.schema.json +61 -0
- package/contracts/limited-reason-v1.schema.json +46 -0
- package/contracts/operation-authority-requirement-v1.schema.json +43 -0
- package/contracts/operation-grant-v1.schema.json +83 -0
- package/contracts/phase-slice-correlation-v1.schema.json +20 -0
- package/contracts/profile-explanation-v1.schema.json +91 -0
- package/contracts/provider-adapter-observation-v1.schema.json +87 -0
- package/contracts/return-receipt-v2.schema.json +55 -0
- package/contracts/review-authority-requirement-v1.schema.json +117 -0
- package/contracts/rollback-envelope-lineage-v1.schema.json +46 -0
- package/contracts/rule-claim-v1.schema.json +34 -0
- package/contracts/source-dependency-edge-v1.schema.json +37 -0
- package/contracts/task-control-revision-v1.schema.json +39 -0
- package/contracts/task-envelope-v2.schema.json +67 -0
- package/contracts/validation-result-v1.schema.json +57 -0
- package/contracts/validation-topology-v1.schema.json +55 -0
- package/contracts/workspace-identity-v1.schema.json +28 -0
- package/contracts/workspace-relationship-v1.schema.json +31 -0
- package/directory/README.md +23 -0
- package/directory/evaluations.json +78 -0
- package/directory/release-notes-alpha2.md +7 -0
- package/directory/submission-candidate.json +80 -0
- package/docs/composable-autonomy.zh-CN.md +183 -0
- package/docs/control-authority-validation-contracts.md +36 -0
- package/docs/control-authority-validation-contracts.zh-CN.md +36 -0
- package/docs/control-profile-contracts.md +35 -0
- package/docs/control-profile-contracts.zh-CN.md +35 -0
- package/docs/control-system-fixture-matrix.md +30 -0
- package/docs/control-system-fixture-matrix.zh-CN.md +30 -0
- package/docs/control-task-contracts.md +39 -0
- package/docs/control-task-contracts.zh-CN.md +39 -0
- package/docs/cross-workspace-pack-composition-contract.md +31 -0
- package/docs/cross-workspace-pack-composition-contract.zh-CN.md +31 -0
- package/docs/installation.md +9 -3
- package/docs/installation.zh-CN.md +9 -3
- package/docs/release-alpha2.md +21 -0
- package/docs/release-alpha2.zh-CN.md +21 -0
- package/package.json +9 -3
- package/packs/architecture-convergence-audit.json +30 -0
- package/scripts/build-universal-directory-candidate.mjs +72 -0
- package/scripts/disposable-consumer.mjs +1 -1
- package/scripts/fixtures/contracts/authority-evidence.revoked-without-invalidation.invalid.json +22 -0
- package/scripts/fixtures/contracts/authority-evidence.revoked.valid.json +32 -0
- package/scripts/fixtures/contracts/authority-evidence.valid.json +22 -0
- package/scripts/fixtures/contracts/capability-pack.missing-entry.invalid.json +14 -0
- package/scripts/fixtures/contracts/capability-pack.valid.json +15 -0
- package/scripts/fixtures/contracts/cross-workspace-pack-composition.authority-collapse.invalid.json +156 -0
- package/scripts/fixtures/contracts/cross-workspace-pack-composition.false-closure.invalid.json +138 -0
- package/scripts/fixtures/contracts/cross-workspace-pack-composition.valid.json +156 -0
- package/scripts/fixtures/contracts/effective-profile-v2.optional-unavailable-degraded.valid.json +36 -0
- package/scripts/fixtures/contracts/effective-profile-v2.required-unavailable-degraded.invalid.json +36 -0
- package/scripts/fixtures/contracts/effective-profile-v2.unresolved-claim-false-complete.invalid.json +34 -0
- package/scripts/fixtures/contracts/effective-profile-v2.valid.json +53 -0
- package/scripts/fixtures/contracts/effective-profile.duplicate-rule.invalid.json +23 -0
- package/scripts/fixtures/contracts/entry-mode.missing-evidence.invalid.json +6 -0
- package/scripts/fixtures/contracts/entry-mode.valid.json +6 -0
- package/scripts/fixtures/contracts/evidence-identity.unavailable-without-reason.invalid.json +21 -0
- package/scripts/fixtures/contracts/evidence-identity.valid.json +21 -0
- package/scripts/fixtures/contracts/execution-context-identity.unavailable-without-reason.invalid.json +31 -0
- package/scripts/fixtures/contracts/execution-context-identity.valid.json +31 -0
- package/scripts/fixtures/contracts/gate-result.satisfied-without-evidence.invalid.json +14 -0
- package/scripts/fixtures/contracts/gate-result.valid.json +14 -0
- package/scripts/fixtures/contracts/governance-source.unavailable-without-reason.invalid.json +16 -0
- package/scripts/fixtures/contracts/governance-source.valid.json +16 -0
- package/scripts/fixtures/contracts/host-adapter-observation.claims-authorization.invalid.json +23 -0
- package/scripts/fixtures/contracts/host-adapter-observation.valid.json +39 -0
- package/scripts/fixtures/contracts/host-adapter.codex.valid.json +1 -1
- package/scripts/fixtures/contracts/host-adapter.false-supported.invalid.json +14 -0
- package/scripts/fixtures/contracts/host-binding-receipt.valid.json +1 -1
- package/scripts/fixtures/contracts/launch-contract.execution-owner.invalid.json +19 -0
- package/scripts/fixtures/contracts/limited-reason.unbounded.invalid.json +11 -0
- package/scripts/fixtures/contracts/limited-reason.valid.json +11 -0
- package/scripts/fixtures/contracts/operation-authority-requirement.no-issuer.invalid.json +22 -0
- package/scripts/fixtures/contracts/operation-authority-requirement.valid.json +22 -0
- package/scripts/fixtures/contracts/operation-grant.missing-issuer-evidence.invalid.json +34 -0
- package/scripts/fixtures/contracts/operation-grant.valid.json +34 -0
- package/scripts/fixtures/contracts/phase-slice-correlation.aggregate-closure.invalid.json +12 -0
- package/scripts/fixtures/contracts/phase-slice-correlation.valid.json +12 -0
- package/scripts/fixtures/contracts/profile-change-candidate.unconfirmed.invalid.json +13 -0
- package/scripts/fixtures/contracts/profile-explanation.false-complete.invalid.json +36 -0
- package/scripts/fixtures/contracts/profile-explanation.valid.json +29 -0
- package/scripts/fixtures/contracts/provider-adapter-observation.unauthenticated-supported.invalid.json +43 -0
- package/scripts/fixtures/contracts/provider-adapter-observation.valid.json +62 -0
- package/scripts/fixtures/contracts/return-receipt-v2.changed-subject.valid.json +36 -0
- package/scripts/fixtures/contracts/return-receipt-v2.unverified-closeout.invalid.json +36 -0
- package/scripts/fixtures/contracts/return-receipt-v2.valid.json +36 -0
- package/scripts/fixtures/contracts/review-authority-requirement.transitive.invalid.json +33 -0
- package/scripts/fixtures/contracts/review-authority-requirement.valid.json +21 -0
- package/scripts/fixtures/contracts/rollback-envelope-lineage.reused-grant.invalid.json +24 -0
- package/scripts/fixtures/contracts/rollback-envelope-lineage.valid.json +24 -0
- package/scripts/fixtures/contracts/rule-claim.inferred-enforceable.invalid.json +16 -0
- package/scripts/fixtures/contracts/rule-claim.valid.json +16 -0
- package/scripts/fixtures/contracts/source-dependency-edge.unavailable-without-reason.invalid.json +18 -0
- package/scripts/fixtures/contracts/source-dependency-edge.valid.json +18 -0
- package/scripts/fixtures/contracts/task-control-revision.closed-without-receipt.invalid.json +37 -0
- package/scripts/fixtures/contracts/task-control-revision.valid.json +37 -0
- package/scripts/fixtures/contracts/task-envelope-v2.missing-workspace-identity.invalid.json +39 -0
- package/scripts/fixtures/contracts/task-envelope-v2.valid.json +54 -0
- package/scripts/fixtures/contracts/task-envelope-v2.workspace-mismatch.invalid.json +40 -0
- package/scripts/fixtures/contracts/validation-result.passed-without-evidence.invalid.json +29 -0
- package/scripts/fixtures/contracts/validation-result.valid.json +19 -0
- package/scripts/fixtures/contracts/validation-topology.dangling-requirement.invalid.json +32 -0
- package/scripts/fixtures/contracts/validation-topology.protected-environment.valid.json +32 -0
- package/scripts/fixtures/contracts/validation-topology.valid.json +32 -0
- package/scripts/fixtures/contracts/workspace-identity.missing-root.invalid.json +6 -0
- package/scripts/fixtures/contracts/workspace-identity.valid.json +14 -0
- package/scripts/fixtures/contracts/workspace-relationship.inferred-authority.invalid.json +13 -0
- package/scripts/fixtures/contracts/workspace-relationship.valid.json +13 -0
- package/scripts/fixtures/control-system/architecture-convergence-cases.json +25 -0
- package/scripts/fixtures/control-system/task-2.9-invalid-boundary-matrix.json +203 -0
- package/scripts/fixtures/control-system/task-4-diagnosis-health-separation.json +19 -0
- package/scripts/fixtures/workspaces/no-node-project/AGENTS.md +3 -0
- package/scripts/fixtures/workspaces/no-node-project/README.md +3 -0
- package/scripts/fixtures/workspaces/no-node-project/docs/adr/0001-durable-records.md +3 -0
- package/scripts/forgerail.mjs +467 -14
- package/scripts/lib/contracts.mjs +1132 -2
- package/scripts/shadow-comparison.mjs +1 -1
- package/scripts/validate-release.mjs +15 -15
- package/scripts/validate-universal-directory.mjs +151 -0
- package/skills/architecture-convergence-audit/SKILL.md +31 -0
- package/skills/architecture-convergence-audit/agents/openai.yaml +7 -0
- package/skills/architecture-convergence-audit/assets/github-issue-template.md +26 -0
- package/skills/architecture-convergence-audit/references/audit-contract.md +62 -0
- package/skills/workspace-health-review/references/health-review.md +15 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"observationId": "provider-observation:github-task",
|
|
4
|
+
"adapterId": "github-provider",
|
|
5
|
+
"adapterVersion": "1.0.0",
|
|
6
|
+
"providerId": "github",
|
|
7
|
+
"workspaceIdentityId": "workspace:forgerail",
|
|
8
|
+
"sourceIdentityId": "source:github-repository",
|
|
9
|
+
"scopeKind": "subject",
|
|
10
|
+
"taskId": "task:2.7",
|
|
11
|
+
"subjectId": "subject:commit-a",
|
|
12
|
+
"controlRevisionId": "control-revision:1",
|
|
13
|
+
"identity": {
|
|
14
|
+
"state": "unauthenticated",
|
|
15
|
+
"actorId": null,
|
|
16
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
17
|
+
"limitedReason": {
|
|
18
|
+
"schemaVersion": "1.0",
|
|
19
|
+
"reasonId": "reason:github-unauthenticated",
|
|
20
|
+
"code": "unauthenticated-provider",
|
|
21
|
+
"impact": "unavailable",
|
|
22
|
+
"summary": "Current provider identity could not be authenticated.",
|
|
23
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
24
|
+
"locators": ["provider://github/auth"],
|
|
25
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
26
|
+
"sanitized": true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"authorizationClaim": false,
|
|
30
|
+
"capabilities": [
|
|
31
|
+
{
|
|
32
|
+
"capability": "authority-observation",
|
|
33
|
+
"state": "supported",
|
|
34
|
+
"requiresIdentity": true,
|
|
35
|
+
"sideEffectKinds": [],
|
|
36
|
+
"approvalRequirementIds": [],
|
|
37
|
+
"evidenceIdentityIds": ["evidence:forged-authority"],
|
|
38
|
+
"limitedReason": null
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
42
|
+
"sanitized": true
|
|
43
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"observationId": "provider-observation:github-task",
|
|
4
|
+
"adapterId": "github-provider",
|
|
5
|
+
"adapterVersion": "1.0.0",
|
|
6
|
+
"providerId": "github",
|
|
7
|
+
"workspaceIdentityId": "workspace:forgerail",
|
|
8
|
+
"sourceIdentityId": "source:github-repository",
|
|
9
|
+
"scopeKind": "subject",
|
|
10
|
+
"taskId": "task:2.7",
|
|
11
|
+
"subjectId": "subject:commit-a",
|
|
12
|
+
"controlRevisionId": "control-revision:1",
|
|
13
|
+
"identity": {
|
|
14
|
+
"state": "unauthenticated",
|
|
15
|
+
"actorId": null,
|
|
16
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
17
|
+
"limitedReason": {
|
|
18
|
+
"schemaVersion": "1.0",
|
|
19
|
+
"reasonId": "reason:github-unauthenticated",
|
|
20
|
+
"code": "unauthenticated-provider",
|
|
21
|
+
"impact": "unavailable",
|
|
22
|
+
"summary": "Current provider identity could not be authenticated.",
|
|
23
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
24
|
+
"locators": ["provider://github/auth"],
|
|
25
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
26
|
+
"sanitized": true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"authorizationClaim": false,
|
|
30
|
+
"capabilities": [
|
|
31
|
+
{
|
|
32
|
+
"capability": "source-observation",
|
|
33
|
+
"state": "supported",
|
|
34
|
+
"requiresIdentity": false,
|
|
35
|
+
"sideEffectKinds": [],
|
|
36
|
+
"approvalRequirementIds": [],
|
|
37
|
+
"evidenceIdentityIds": ["evidence:github-local-config"],
|
|
38
|
+
"limitedReason": null
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"capability": "authority-observation",
|
|
42
|
+
"state": "unavailable",
|
|
43
|
+
"requiresIdentity": true,
|
|
44
|
+
"sideEffectKinds": [],
|
|
45
|
+
"approvalRequirementIds": [],
|
|
46
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
47
|
+
"limitedReason": {
|
|
48
|
+
"schemaVersion": "1.0",
|
|
49
|
+
"reasonId": "reason:github-authority-unavailable",
|
|
50
|
+
"code": "unauthenticated-provider",
|
|
51
|
+
"impact": "unavailable",
|
|
52
|
+
"summary": "Platform authority evidence is unavailable without authenticated identity.",
|
|
53
|
+
"evidenceIdentityIds": ["evidence:github-auth-probe"],
|
|
54
|
+
"locators": ["provider://github/authority"],
|
|
55
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
56
|
+
"sanitized": true
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
61
|
+
"sanitized": true
|
|
62
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"receiptId": "receipt:task-2.6-changed-subject",
|
|
4
|
+
"taskId": "task:2.6",
|
|
5
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
6
|
+
"profileId": "profile:forgerail",
|
|
7
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
8
|
+
"envelopeId": "envelope:task-2.6",
|
|
9
|
+
"envelopeRevisionId": "envelope-revision:task-2.6-1",
|
|
10
|
+
"controlRevisionId": "control-revision:task-2.6-2",
|
|
11
|
+
"subjectId": "subject:task-2.6-rewritten",
|
|
12
|
+
"phaseSliceCorrelation": {
|
|
13
|
+
"schemaVersion": "1.0",
|
|
14
|
+
"correlationId": "correlation:task-2.6",
|
|
15
|
+
"taskId": "task:2.6",
|
|
16
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
17
|
+
"phaseId": "phase:contracts",
|
|
18
|
+
"sliceId": "slice:task-2.6",
|
|
19
|
+
"executionAttemptId": "attempt:task-2.6-2",
|
|
20
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
21
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
22
|
+
"aggregateClosureClaim": false
|
|
23
|
+
},
|
|
24
|
+
"exercisedOperationGrantIds": ["grant:task-2.6-write"],
|
|
25
|
+
"changedScope": ["plugins/forgerail/contracts"],
|
|
26
|
+
"validationEvidenceIdentityIds": ["evidence:task-2.6-tests-rewritten"],
|
|
27
|
+
"externalSideEffects": [],
|
|
28
|
+
"confirmedNonMutations": ["No public projection", "No remote operation"],
|
|
29
|
+
"residualRisks": [],
|
|
30
|
+
"rollbackEnvelopeLineageId": null,
|
|
31
|
+
"deviations": [],
|
|
32
|
+
"claimStatus": "verified",
|
|
33
|
+
"verificationGateResultId": "gate-result:task-2.6-receipt-rewritten",
|
|
34
|
+
"closeout": "complete",
|
|
35
|
+
"claimedAt": "2026-08-19T16:45:00Z"
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"receiptId": "receipt:task-2.6",
|
|
4
|
+
"taskId": "task:2.6",
|
|
5
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
6
|
+
"profileId": "profile:forgerail",
|
|
7
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
8
|
+
"envelopeId": "envelope:task-2.6",
|
|
9
|
+
"envelopeRevisionId": "envelope-revision:task-2.6-1",
|
|
10
|
+
"controlRevisionId": "control-revision:task-2.6-1",
|
|
11
|
+
"subjectId": "subject:task-2.6",
|
|
12
|
+
"phaseSliceCorrelation": {
|
|
13
|
+
"schemaVersion": "1.0",
|
|
14
|
+
"correlationId": "correlation:task-2.6",
|
|
15
|
+
"taskId": "task:2.6",
|
|
16
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
17
|
+
"phaseId": "phase:contracts",
|
|
18
|
+
"sliceId": "slice:task-2.6",
|
|
19
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
20
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
21
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
22
|
+
"aggregateClosureClaim": false
|
|
23
|
+
},
|
|
24
|
+
"exercisedOperationGrantIds": ["grant:task-2.6-write"],
|
|
25
|
+
"changedScope": ["plugins/forgerail/contracts"],
|
|
26
|
+
"validationEvidenceIdentityIds": [],
|
|
27
|
+
"externalSideEffects": [],
|
|
28
|
+
"confirmedNonMutations": ["No public projection"],
|
|
29
|
+
"residualRisks": [],
|
|
30
|
+
"rollbackEnvelopeLineageId": null,
|
|
31
|
+
"deviations": [],
|
|
32
|
+
"claimStatus": "claimed",
|
|
33
|
+
"verificationGateResultId": null,
|
|
34
|
+
"closeout": "complete",
|
|
35
|
+
"claimedAt": "2026-08-18T08:30:00Z"
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"receiptId": "receipt:task-2.6",
|
|
4
|
+
"taskId": "task:2.6",
|
|
5
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
6
|
+
"profileId": "profile:forgerail",
|
|
7
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
8
|
+
"envelopeId": "envelope:task-2.6",
|
|
9
|
+
"envelopeRevisionId": "envelope-revision:task-2.6-1",
|
|
10
|
+
"controlRevisionId": "control-revision:task-2.6-1",
|
|
11
|
+
"subjectId": "subject:task-2.6",
|
|
12
|
+
"phaseSliceCorrelation": {
|
|
13
|
+
"schemaVersion": "1.0",
|
|
14
|
+
"correlationId": "correlation:task-2.6",
|
|
15
|
+
"taskId": "task:2.6",
|
|
16
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
17
|
+
"phaseId": "phase:contracts",
|
|
18
|
+
"sliceId": "slice:task-2.6",
|
|
19
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
20
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
21
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
22
|
+
"aggregateClosureClaim": false
|
|
23
|
+
},
|
|
24
|
+
"exercisedOperationGrantIds": ["grant:task-2.6-write"],
|
|
25
|
+
"changedScope": ["plugins/forgerail/contracts", "plugins/forgerail/scripts", "plugins/forgerail/docs"],
|
|
26
|
+
"validationEvidenceIdentityIds": ["evidence:task-2.6-tests"],
|
|
27
|
+
"externalSideEffects": [],
|
|
28
|
+
"confirmedNonMutations": ["No public projection", "No remote operation"],
|
|
29
|
+
"residualRisks": ["Exhaustive compatibility matrix is deferred to task 2.9 and 2.10"],
|
|
30
|
+
"rollbackEnvelopeLineageId": null,
|
|
31
|
+
"deviations": [],
|
|
32
|
+
"claimStatus": "verified",
|
|
33
|
+
"verificationGateResultId": "gate-result:task-2.6-receipt",
|
|
34
|
+
"closeout": "complete",
|
|
35
|
+
"claimedAt": "2026-08-18T08:30:00Z"
|
|
36
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"requirementId": "review:req-ownership",
|
|
4
|
+
"workspaceIdentityId": "workspace:forgerail",
|
|
5
|
+
"operation": "merge",
|
|
6
|
+
"authorityClass": "ownership_approval",
|
|
7
|
+
"subjectId": "subject:commit-a",
|
|
8
|
+
"scope": ["plugins/forgerail/contracts"],
|
|
9
|
+
"authoritySourceIds": ["source:codeowners"],
|
|
10
|
+
"acceptedEvidenceKinds": ["provider-review"],
|
|
11
|
+
"quorum": { "minimumCount": 2, "distinctActors": true },
|
|
12
|
+
"actorConstraints": {
|
|
13
|
+
"eligibleActorSourceIds": ["source:codeowners"],
|
|
14
|
+
"excludedRelations": ["subject-author", "executor"]
|
|
15
|
+
},
|
|
16
|
+
"ownerCoverage": { "required": true, "surfaceIds": ["surface:contracts"] },
|
|
17
|
+
"freshness": { "maxAgeSeconds": 3600, "expiresRequired": true },
|
|
18
|
+
"substitutionPolicy": {
|
|
19
|
+
"mode": "bounded-equivalence",
|
|
20
|
+
"equivalenceEdges": [
|
|
21
|
+
{
|
|
22
|
+
"edgeId": "equivalence:agent-to-owner",
|
|
23
|
+
"fromAuthorityClass": "agent_review",
|
|
24
|
+
"toRequirementId": "review:req-ownership",
|
|
25
|
+
"sourceId": "source:project-policy",
|
|
26
|
+
"direction": "one-way",
|
|
27
|
+
"transitive": true
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"waiverPolicy": { "allowed": false, "requiredAuthorityClass": null },
|
|
32
|
+
"declaredAt": "2026-08-18T15:30:00Z"
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"requirementId": "review:req-ownership",
|
|
4
|
+
"workspaceIdentityId": "workspace:forgerail",
|
|
5
|
+
"operation": "merge",
|
|
6
|
+
"authorityClass": "ownership_approval",
|
|
7
|
+
"subjectId": "subject:commit-a",
|
|
8
|
+
"scope": ["plugins/forgerail/contracts"],
|
|
9
|
+
"authoritySourceIds": ["source:codeowners"],
|
|
10
|
+
"acceptedEvidenceKinds": ["provider-review"],
|
|
11
|
+
"quorum": { "minimumCount": 2, "distinctActors": true },
|
|
12
|
+
"actorConstraints": {
|
|
13
|
+
"eligibleActorSourceIds": ["source:codeowners"],
|
|
14
|
+
"excludedRelations": ["subject-author", "executor"]
|
|
15
|
+
},
|
|
16
|
+
"ownerCoverage": { "required": true, "surfaceIds": ["surface:contracts"] },
|
|
17
|
+
"freshness": { "maxAgeSeconds": 3600, "expiresRequired": true },
|
|
18
|
+
"substitutionPolicy": { "mode": "none", "equivalenceEdges": [] },
|
|
19
|
+
"waiverPolicy": { "allowed": false, "requiredAuthorityClass": null },
|
|
20
|
+
"declaredAt": "2026-08-18T15:30:00Z"
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"lineageId": "rollback-lineage:task-2.6",
|
|
4
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
5
|
+
"forwardEnvelope": {
|
|
6
|
+
"envelopeId": "envelope:task-2.6",
|
|
7
|
+
"revisionId": "envelope-revision:task-2.6-1",
|
|
8
|
+
"subjectId": "subject:task-2.6-forward"
|
|
9
|
+
},
|
|
10
|
+
"rollbackEnvelope": {
|
|
11
|
+
"envelopeId": "envelope:task-2.6-rollback",
|
|
12
|
+
"revisionId": "envelope-revision:task-2.6-rollback-1",
|
|
13
|
+
"subjectId": "subject:task-2.6-rollback"
|
|
14
|
+
},
|
|
15
|
+
"forwardOperationGrantIds": ["grant:task-2.6-forward"],
|
|
16
|
+
"rollbackOperationGrantIds": ["grant:task-2.6-forward"],
|
|
17
|
+
"rollbackOperationIds": ["operation:task-2.6-revert"],
|
|
18
|
+
"state": "authorized",
|
|
19
|
+
"validationGateResultIds": [],
|
|
20
|
+
"rollbackReceiptId": null,
|
|
21
|
+
"declaredByEvidenceId": "evidence:task-2.6-rollback-candidate",
|
|
22
|
+
"reason": "Incorrectly reuse the forward grant.",
|
|
23
|
+
"createdAt": "2026-08-18T08:30:00Z"
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"lineageId": "rollback-lineage:task-2.6",
|
|
4
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
5
|
+
"forwardEnvelope": {
|
|
6
|
+
"envelopeId": "envelope:task-2.6",
|
|
7
|
+
"revisionId": "envelope-revision:task-2.6-1",
|
|
8
|
+
"subjectId": "subject:task-2.6-forward"
|
|
9
|
+
},
|
|
10
|
+
"rollbackEnvelope": {
|
|
11
|
+
"envelopeId": "envelope:task-2.6-rollback",
|
|
12
|
+
"revisionId": "envelope-revision:task-2.6-rollback-1",
|
|
13
|
+
"subjectId": "subject:task-2.6-rollback"
|
|
14
|
+
},
|
|
15
|
+
"forwardOperationGrantIds": ["grant:task-2.6-forward"],
|
|
16
|
+
"rollbackOperationGrantIds": ["grant:task-2.6-rollback"],
|
|
17
|
+
"rollbackOperationIds": ["operation:task-2.6-revert"],
|
|
18
|
+
"state": "authorized",
|
|
19
|
+
"validationGateResultIds": [],
|
|
20
|
+
"rollbackReceiptId": null,
|
|
21
|
+
"declaredByEvidenceId": "evidence:task-2.6-rollback-candidate",
|
|
22
|
+
"reason": "Restore the exact pre-task 2.6 contract baseline.",
|
|
23
|
+
"createdAt": "2026-08-18T08:30:00Z"
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"claimId": "claim:inferred-release",
|
|
4
|
+
"workspaceIdentityId": "workspace:demo",
|
|
5
|
+
"sourceId": "source:readme",
|
|
6
|
+
"ruleKey": "release.approval",
|
|
7
|
+
"normalizedValue": "two-reviewers",
|
|
8
|
+
"precedenceClass": "documentation",
|
|
9
|
+
"applicabilityScope": ["release"],
|
|
10
|
+
"observationPoint": "README.md#release",
|
|
11
|
+
"status": "inferred",
|
|
12
|
+
"enforcement": "enforceable",
|
|
13
|
+
"dependencyEdgeIds": [],
|
|
14
|
+
"observedAt": "2026-08-18T00:00:00Z",
|
|
15
|
+
"limitedReason": null
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"claimId": "claim:review",
|
|
4
|
+
"workspaceIdentityId": "workspace:demo",
|
|
5
|
+
"sourceId": "source:agents",
|
|
6
|
+
"ruleKey": "review.required",
|
|
7
|
+
"normalizedValue": true,
|
|
8
|
+
"precedenceClass": "workspace-instructions",
|
|
9
|
+
"applicabilityScope": ["code-change"],
|
|
10
|
+
"observationPoint": "AGENTS.md#review",
|
|
11
|
+
"status": "confirmed",
|
|
12
|
+
"enforcement": "enforceable",
|
|
13
|
+
"dependencyEdgeIds": ["edge:skill"],
|
|
14
|
+
"observedAt": "2026-08-18T00:00:00Z",
|
|
15
|
+
"limitedReason": null
|
|
16
|
+
}
|
package/scripts/fixtures/contracts/source-dependency-edge.unavailable-without-reason.invalid.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"edgeId": "edge:missing-command",
|
|
4
|
+
"workspaceIdentityId": "workspace:demo",
|
|
5
|
+
"declaringSourceId": "source:agents",
|
|
6
|
+
"target": {
|
|
7
|
+
"kind": "command",
|
|
8
|
+
"locator": "npm run missing",
|
|
9
|
+
"identity": null
|
|
10
|
+
},
|
|
11
|
+
"requiredness": "required",
|
|
12
|
+
"applicabilityScope": ["code-change"],
|
|
13
|
+
"provenanceStatus": "structured",
|
|
14
|
+
"observationStatus": "unavailable",
|
|
15
|
+
"affectedClaimIds": ["claim:review"],
|
|
16
|
+
"observedAt": "2026-08-18T00:00:00Z",
|
|
17
|
+
"limitedReason": null
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"edgeId": "edge:skill",
|
|
4
|
+
"workspaceIdentityId": "workspace:demo",
|
|
5
|
+
"declaringSourceId": "source:agents",
|
|
6
|
+
"target": {
|
|
7
|
+
"kind": "skill",
|
|
8
|
+
"locator": ".codex/skills/review/SKILL.md",
|
|
9
|
+
"identity": "skill:review"
|
|
10
|
+
},
|
|
11
|
+
"requiredness": "required",
|
|
12
|
+
"applicabilityScope": ["code-change"],
|
|
13
|
+
"provenanceStatus": "structured",
|
|
14
|
+
"observationStatus": "available",
|
|
15
|
+
"affectedClaimIds": ["claim:review"],
|
|
16
|
+
"observedAt": "2026-08-18T00:00:00Z",
|
|
17
|
+
"limitedReason": null
|
|
18
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"revisionId": "control-revision:task-2.6-1",
|
|
4
|
+
"predecessorRevisionId": null,
|
|
5
|
+
"taskId": "task:2.6",
|
|
6
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
7
|
+
"profileId": "profile:forgerail",
|
|
8
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
9
|
+
"envelopeId": "envelope:task-2.6",
|
|
10
|
+
"envelopeRevisionId": "envelope-revision:task-2.6-1",
|
|
11
|
+
"subjectId": "subject:task-2.6",
|
|
12
|
+
"entryMode": {
|
|
13
|
+
"schemaVersion": "1.0",
|
|
14
|
+
"mode": "new",
|
|
15
|
+
"sourceEvidenceIds": [],
|
|
16
|
+
"observedAt": "2026-08-18T08:00:00Z"
|
|
17
|
+
},
|
|
18
|
+
"phaseSliceCorrelation": {
|
|
19
|
+
"schemaVersion": "1.0",
|
|
20
|
+
"correlationId": "correlation:task-2.6",
|
|
21
|
+
"taskId": "task:2.6",
|
|
22
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
23
|
+
"phaseId": "phase:contracts",
|
|
24
|
+
"sliceId": "slice:task-2.6",
|
|
25
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
26
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
27
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
28
|
+
"aggregateClosureClaim": false
|
|
29
|
+
},
|
|
30
|
+
"state": "closed",
|
|
31
|
+
"operationGrantIds": ["grant:task-2.6-write"],
|
|
32
|
+
"gateResultIds": ["gate-result:task-2.6-validation"],
|
|
33
|
+
"evidenceIdentityIds": ["evidence:task-2.6-tests"],
|
|
34
|
+
"deviationEvidenceIds": [],
|
|
35
|
+
"returnReceiptId": null,
|
|
36
|
+
"observedAt": "2026-08-18T08:30:00Z"
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"revisionId": "control-revision:task-2.6-1",
|
|
4
|
+
"predecessorRevisionId": null,
|
|
5
|
+
"taskId": "task:2.6",
|
|
6
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
7
|
+
"profileId": "profile:forgerail",
|
|
8
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
9
|
+
"envelopeId": "envelope:task-2.6",
|
|
10
|
+
"envelopeRevisionId": "envelope-revision:task-2.6-1",
|
|
11
|
+
"subjectId": "subject:task-2.6",
|
|
12
|
+
"entryMode": {
|
|
13
|
+
"schemaVersion": "1.0",
|
|
14
|
+
"mode": "new",
|
|
15
|
+
"sourceEvidenceIds": [],
|
|
16
|
+
"observedAt": "2026-08-18T08:00:00Z"
|
|
17
|
+
},
|
|
18
|
+
"phaseSliceCorrelation": {
|
|
19
|
+
"schemaVersion": "1.0",
|
|
20
|
+
"correlationId": "correlation:task-2.6",
|
|
21
|
+
"taskId": "task:2.6",
|
|
22
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
23
|
+
"phaseId": "phase:contracts",
|
|
24
|
+
"sliceId": "slice:task-2.6",
|
|
25
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
26
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
27
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
28
|
+
"aggregateClosureClaim": false
|
|
29
|
+
},
|
|
30
|
+
"state": "closed",
|
|
31
|
+
"operationGrantIds": ["grant:task-2.6-write"],
|
|
32
|
+
"gateResultIds": ["gate-result:task-2.6-validation"],
|
|
33
|
+
"evidenceIdentityIds": ["evidence:task-2.6-tests"],
|
|
34
|
+
"deviationEvidenceIds": [],
|
|
35
|
+
"returnReceiptId": "receipt:task-2.6",
|
|
36
|
+
"observedAt": "2026-08-18T08:30:00Z"
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"envelopeId": "envelope:task-2.9",
|
|
4
|
+
"revisionId": "envelope-revision:task-2.9-1",
|
|
5
|
+
"taskId": "task:2.9",
|
|
6
|
+
"profileId": "profile:forgerail",
|
|
7
|
+
"profileRevisionId": "profile-revision:forgerail-2.8",
|
|
8
|
+
"subject": {
|
|
9
|
+
"subjectId": "subject:task-2.9",
|
|
10
|
+
"kind": "workspace-state",
|
|
11
|
+
"digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
12
|
+
"locator": "plugins/forgerail"
|
|
13
|
+
},
|
|
14
|
+
"intent": "Exercise the missing Workspace Identity boundary.",
|
|
15
|
+
"nonGoals": ["No evaluator implementation"],
|
|
16
|
+
"entryMode": {
|
|
17
|
+
"schemaVersion": "1.0",
|
|
18
|
+
"mode": "new",
|
|
19
|
+
"sourceEvidenceIds": [],
|
|
20
|
+
"observedAt": "2026-08-19T16:45:00Z"
|
|
21
|
+
},
|
|
22
|
+
"phaseSliceCorrelation": {
|
|
23
|
+
"schemaVersion": "1.0",
|
|
24
|
+
"correlationId": "correlation:task-2.9",
|
|
25
|
+
"taskId": "task:2.9",
|
|
26
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
27
|
+
"phaseId": "phase:fixtures",
|
|
28
|
+
"sliceId": "slice:task-2.9",
|
|
29
|
+
"executionAttemptId": "attempt:task-2.9-1",
|
|
30
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
31
|
+
"requiredSliceIds": ["slice:task-2.9"],
|
|
32
|
+
"aggregateClosureClaim": false
|
|
33
|
+
},
|
|
34
|
+
"operations": [],
|
|
35
|
+
"prohibitedOperations": ["git.push", "package.publish"],
|
|
36
|
+
"requiredGateIds": ["gate:task-2.9-validation"],
|
|
37
|
+
"returnContract": "return-receipt-v2",
|
|
38
|
+
"createdAt": "2026-08-19T16:45:00Z"
|
|
39
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"envelopeId": "envelope:task-2.6",
|
|
4
|
+
"revisionId": "envelope-revision:task-2.6-1",
|
|
5
|
+
"taskId": "task:2.6",
|
|
6
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
7
|
+
"profileId": "profile:forgerail",
|
|
8
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
9
|
+
"subject": {
|
|
10
|
+
"subjectId": "subject:task-2.6",
|
|
11
|
+
"kind": "workspace-state",
|
|
12
|
+
"digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
13
|
+
"locator": "plugins/forgerail"
|
|
14
|
+
},
|
|
15
|
+
"intent": "Define the bounded task 2.6 control contracts.",
|
|
16
|
+
"nonGoals": ["No evaluator implementation", "No public projection"],
|
|
17
|
+
"entryMode": {
|
|
18
|
+
"schemaVersion": "1.0",
|
|
19
|
+
"mode": "new",
|
|
20
|
+
"sourceEvidenceIds": [],
|
|
21
|
+
"observedAt": "2026-08-18T08:00:00Z"
|
|
22
|
+
},
|
|
23
|
+
"phaseSliceCorrelation": {
|
|
24
|
+
"schemaVersion": "1.0",
|
|
25
|
+
"correlationId": "correlation:task-2.6",
|
|
26
|
+
"taskId": "task:2.6",
|
|
27
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
28
|
+
"phaseId": "phase:contracts",
|
|
29
|
+
"sliceId": "slice:task-2.6",
|
|
30
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
31
|
+
"ownerWorkspaceIdentityId": "workspace:echopath",
|
|
32
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
33
|
+
"aggregateClosureClaim": false
|
|
34
|
+
},
|
|
35
|
+
"operations": [
|
|
36
|
+
{
|
|
37
|
+
"operationId": "operation:task-2.6-write",
|
|
38
|
+
"operation": "workspace.write",
|
|
39
|
+
"target": {
|
|
40
|
+
"kind": "directory",
|
|
41
|
+
"locator": "plugins/forgerail",
|
|
42
|
+
"identity": "target:forgerail-private-source",
|
|
43
|
+
"ref": "feat/forgerail-product-architecture",
|
|
44
|
+
"environment": null
|
|
45
|
+
},
|
|
46
|
+
"scope": ["plugins/forgerail/**"],
|
|
47
|
+
"authorityRequirementId": "authority-requirement:task-2.6-write"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"prohibitedOperations": ["git.push", "package.publish", "projection.write"],
|
|
51
|
+
"requiredGateIds": ["gate:task-2.6-validation"],
|
|
52
|
+
"returnContract": "return-receipt-v2",
|
|
53
|
+
"createdAt": "2026-08-18T08:00:00Z"
|
|
54
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "2.0",
|
|
3
|
+
"envelopeId": "envelope:task-2.6",
|
|
4
|
+
"revisionId": "envelope-revision:task-2.6-1",
|
|
5
|
+
"taskId": "task:2.6",
|
|
6
|
+
"workspaceIdentityId": "workspace:echopath",
|
|
7
|
+
"profileId": "profile:forgerail",
|
|
8
|
+
"profileRevisionId": "profile-revision:forgerail-2.5",
|
|
9
|
+
"subject": {
|
|
10
|
+
"subjectId": "subject:task-2.6",
|
|
11
|
+
"kind": "workspace-state",
|
|
12
|
+
"digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
13
|
+
"locator": "plugins/forgerail"
|
|
14
|
+
},
|
|
15
|
+
"intent": "Define the bounded task 2.6 control contracts.",
|
|
16
|
+
"nonGoals": ["No evaluator implementation"],
|
|
17
|
+
"entryMode": {
|
|
18
|
+
"schemaVersion": "1.0",
|
|
19
|
+
"mode": "new",
|
|
20
|
+
"sourceEvidenceIds": [],
|
|
21
|
+
"observedAt": "2026-08-18T08:00:00Z"
|
|
22
|
+
},
|
|
23
|
+
"phaseSliceCorrelation": {
|
|
24
|
+
"schemaVersion": "1.0",
|
|
25
|
+
"correlationId": "correlation:task-2.6",
|
|
26
|
+
"taskId": "task:2.6",
|
|
27
|
+
"parentTaskId": "task:forgerail-control-system",
|
|
28
|
+
"phaseId": "phase:contracts",
|
|
29
|
+
"sliceId": "slice:task-2.6",
|
|
30
|
+
"executionAttemptId": "attempt:task-2.6-1",
|
|
31
|
+
"ownerWorkspaceIdentityId": "workspace:other",
|
|
32
|
+
"requiredSliceIds": ["slice:task-2.6"],
|
|
33
|
+
"aggregateClosureClaim": false
|
|
34
|
+
},
|
|
35
|
+
"operations": [],
|
|
36
|
+
"prohibitedOperations": ["git.push"],
|
|
37
|
+
"requiredGateIds": [],
|
|
38
|
+
"returnContract": "return-receipt-v2",
|
|
39
|
+
"createdAt": "2026-08-18T08:00:00Z"
|
|
40
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"resultId": "validation-result:contract-fixtures",
|
|
4
|
+
"topologyId": "topology:forgerail-contracts",
|
|
5
|
+
"topologyRevisionId": "topology-revision:1",
|
|
6
|
+
"requirementId": "validation:contract-fixtures",
|
|
7
|
+
"workspaceIdentityId": "workspace:forgerail",
|
|
8
|
+
"envelopeRevisionId": "envelope-revision:1",
|
|
9
|
+
"controlRevisionId": "control-revision:1",
|
|
10
|
+
"subjectId": "subject:commit-a",
|
|
11
|
+
"executionContextIdentityId": "execution-context:npm-test",
|
|
12
|
+
"status": "passed",
|
|
13
|
+
"expectedResult": "passed",
|
|
14
|
+
"trustClass": "local-observed",
|
|
15
|
+
"evidenceIdentityIds": [],
|
|
16
|
+
"waiver": null,
|
|
17
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
18
|
+
"limitedReason": {
|
|
19
|
+
"schemaVersion": "1.0",
|
|
20
|
+
"reasonId": "reason:missing-result",
|
|
21
|
+
"code": "missing-result",
|
|
22
|
+
"impact": "blocked",
|
|
23
|
+
"summary": "A passed result cannot replace missing evidence.",
|
|
24
|
+
"evidenceIdentityIds": [],
|
|
25
|
+
"locators": ["npm test"],
|
|
26
|
+
"observedAt": "2026-08-18T15:30:00Z",
|
|
27
|
+
"sanitized": true
|
|
28
|
+
}
|
|
29
|
+
}
|