121 lines
11 KiB
JSON
121 lines
11 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "urn:jobjakt:pre-phase10-evidence:1",
|
|
"title": "Proposed pre-Phase10 evidence contract v1; not an execution or approval policy",
|
|
"oneOf": [
|
|
{ "$ref": "#/definitions/acceptance" },
|
|
{ "$ref": "#/definitions/gates" },
|
|
{ "$ref": "#/definitions/blockers" },
|
|
{ "$ref": "#/definitions/evidence" }
|
|
],
|
|
"definitions": {
|
|
"sha": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
"commit": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
|
|
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
"commonVersion": { "const": 1 },
|
|
"workstream": { "const": "AUTOMATION-HANDOFF-01" },
|
|
"status": { "enum": ["GO", "CONDITIONAL GO", "NO-GO", "PASS", "PARTIAL", "FAIL", "BLOCKED", "NOT TESTED", "CONDITIONAL", "VERIFIED", "READY", "INCOMPLETE"] },
|
|
"counts": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["passed", "failed", "skipped", "retries", "unexecuted"],
|
|
"properties": {
|
|
"passed": { "type": "integer", "minimum": 0 }, "failed": { "type": "integer", "minimum": 0 },
|
|
"skipped": { "type": "integer", "minimum": 0 }, "retries": { "type": "integer", "minimum": 0 },
|
|
"unexecuted": { "type": "integer", "minimum": 0 }
|
|
}
|
|
},
|
|
"verdict": {
|
|
"type": "object", "additionalProperties": false, "required": ["criterion", "status", "evidence", "limits"],
|
|
"properties": { "criterion": { "type": "string" }, "status": { "$ref": "#/definitions/status" }, "evidence": { "$ref": "#/definitions/strings" }, "limits": { "type": "string", "minLength": 1 } }
|
|
},
|
|
"approval": {
|
|
"type": "object", "additionalProperties": false, "required": ["id", "state", "authority"],
|
|
"properties": { "id": { "type": "string" }, "state": { "const": "NOT_PROVIDED_TO_HANDOFF" }, "authority": { "const": "EXTERNAL_PROTECTED_CONTROLLER_APPROVAL" } }
|
|
},
|
|
"acceptance": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["schemaVersion", "workstreamId", "kind", "authority", "sourceBranch", "localCommit", "localCommitMeaning", "snapshotHead", "verifiedRemoteCommit", "remoteObservation", "worktreeCleanliness", "acceptanceStatus", "entryGateStatus", "phase10DevelopmentReadiness", "eligibleForAutomaticExecution", "packageStatus", "verdicts", "testEvidenceReferences", "unresolvedBlockerIds", "permissibleDeferrals", "requiredOwnerApprovals", "generatedUtc", "recommendation"],
|
|
"properties": {
|
|
"schemaVersion": { "$ref": "#/definitions/commonVersion" }, "workstreamId": { "$ref": "#/definitions/workstream" }, "kind": { "const": "ACCEPTANCE" },
|
|
"authority": { "const": "EVIDENCE_ONLY" }, "sourceBranch": { "const": "test/pre-phase10-ux-acceptance" },
|
|
"localCommit": { "$ref": "#/definitions/commit" }, "localCommitMeaning": { "const": "FROZEN_TESTED_APPLICATION_BASELINE" },
|
|
"snapshotHead": { "$ref": "#/definitions/commit" }, "verifiedRemoteCommit": { "anyOf": [{ "$ref": "#/definitions/commit" }, { "type": "null" }] },
|
|
"remoteObservation": { "type": "string", "minLength": 1 },
|
|
"worktreeCleanliness": { "type": "object", "additionalProperties": false, "required": ["atSourceBaseline", "atPackageGeneration", "requiredAtConsumption"], "properties": { "atSourceBaseline": { "const": "CLEAN" }, "atPackageGeneration": { "enum": ["CLEAN", "HANDOFF_FILES_ONLY"] }, "requiredAtConsumption": { "const": "CLEAN" } } },
|
|
"acceptanceStatus": { "const": "CONDITIONAL GO" }, "entryGateStatus": { "const": "BLOCKED" },
|
|
"phase10DevelopmentReadiness": { "const": "NO-GO" }, "eligibleForAutomaticExecution": { "const": false },
|
|
"packageStatus": { "enum": ["READY", "INCOMPLETE"] }, "verdicts": { "type": "array", "minItems": 12, "items": { "$ref": "#/definitions/verdict" } },
|
|
"testEvidenceReferences": { "$ref": "#/definitions/strings" }, "unresolvedBlockerIds": { "$ref": "#/definitions/strings" },
|
|
"permissibleDeferrals": { "$ref": "#/definitions/strings" }, "requiredOwnerApprovals": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/approval" } },
|
|
"generatedUtc": { "type": "string", "format": "date-time" }, "recommendation": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"stage": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "sequence", "requiredPredecessor", "requiredTestSuites", "minimumEvidence", "requiredGitState", "preservationChecks", "manualApprovals", "permissibleConditionalDeferrals", "blockingFindings"],
|
|
"properties": {
|
|
"id": { "type": "string" }, "sequence": { "type": "integer", "minimum": 5, "maximum": 11 },
|
|
"requiredPredecessor": { "$ref": "#/definitions/strings" }, "requiredTestSuites": { "$ref": "#/definitions/strings" },
|
|
"minimumEvidence": { "$ref": "#/definitions/strings" }, "requiredGitState": { "$ref": "#/definitions/strings" },
|
|
"preservationChecks": { "$ref": "#/definitions/strings" }, "manualApprovals": { "$ref": "#/definitions/strings" },
|
|
"permissibleConditionalDeferrals": { "$ref": "#/definitions/strings" }, "blockingFindings": { "$ref": "#/definitions/strings" }
|
|
}
|
|
},
|
|
"gates": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["schemaVersion", "workstreamId", "kind", "contractStatus", "controllerCommit", "controllerFiles", "executionEnabledByThisPackage", "externalApprovalPolicy", "stages", "separateInitiatives"],
|
|
"properties": {
|
|
"schemaVersion": { "$ref": "#/definitions/commonVersion" }, "workstreamId": { "$ref": "#/definitions/workstream" }, "kind": { "const": "GATES" },
|
|
"contractStatus": { "const": "PROPOSED_EVIDENCE_ADAPTER_NOT_EXECUTABLE_POLICY" }, "controllerCommit": { "$ref": "#/definitions/commit" },
|
|
"controllerFiles": { "$ref": "#/definitions/strings" }, "executionEnabledByThisPackage": { "const": false },
|
|
"externalApprovalPolicy": { "type": "string", "minLength": 1 }, "stages": { "type": "array", "minItems": 7, "maxItems": 7, "items": { "$ref": "#/definitions/stage" } },
|
|
"separateInitiatives": { "$ref": "#/definitions/strings" }
|
|
}
|
|
},
|
|
"blocker": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "description", "evidence", "severity", "acceptanceCriterion", "requiredAction", "blockingPhase", "responsibleParty", "deferralAuthority", "classification", "status"],
|
|
"properties": {
|
|
"id": { "type": "string", "pattern": "^[A-Z][A-Z0-9-]+$" }, "description": { "type": "string", "minLength": 1 }, "evidence": { "$ref": "#/definitions/strings" },
|
|
"severity": { "enum": ["CRITICAL", "HIGH", "MODERATE", "LOW", "INFORMATIONAL"] }, "acceptanceCriterion": { "type": "string" },
|
|
"requiredAction": { "type": "string", "minLength": 1 }, "blockingPhase": { "$ref": "#/definitions/strings" }, "responsibleParty": { "type": "string", "minLength": 1 },
|
|
"deferralAuthority": { "anyOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
|
|
"classification": { "enum": ["MANDATORY_ENTRY", "CONDITIONAL_DEVELOPMENT", "PRODUCTION_ONLY", "FUTURE_FEATURE"] },
|
|
"status": { "enum": ["OPEN", "BLOCKED", "CONDITIONALLY_DEFERRED", "CLOSED"] }
|
|
}
|
|
},
|
|
"blockers": {
|
|
"type": "object", "additionalProperties": false, "required": ["schemaVersion", "workstreamId", "kind", "items"],
|
|
"properties": { "schemaVersion": { "$ref": "#/definitions/commonVersion" }, "workstreamId": { "$ref": "#/definitions/workstream" }, "kind": { "const": "BLOCKERS" }, "items": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/blocker" } } }
|
|
},
|
|
"artifact": {
|
|
"type": "object", "additionalProperties": false, "required": ["id", "path", "sha256", "description"],
|
|
"properties": { "id": { "type": "string" }, "path": { "type": "string", "minLength": 1 }, "sha256": { "$ref": "#/definitions/sha" }, "description": { "type": "string" }, "projection": { "const": "PLAYWRIGHT_INLINE_ATTACHMENT_BODIES_EXTERNALIZED" }, "sourceSha256": { "$ref": "#/definitions/sha" }, "sourceRelativePath": { "type": "string" }, "externalizedAttachmentCount": { "type": "integer", "minimum": 1 }, "projectionAuditArtifactId": { "type": "string" } },
|
|
"dependencies": { "projection": ["sourceSha256", "sourceRelativePath", "externalizedAttachmentCount", "projectionAuditArtifactId"] }
|
|
},
|
|
"report": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "bindingScope", "sourceCommit", "executedFromCommit", "status", "exitCode", "artifactId", "processArtifactId", "processPointer", "nativeFormat", "counts", "membershipSha256", "limits"],
|
|
"properties": {
|
|
"id": { "type": "string" }, "bindingScope": { "enum": ["APPLICATION", "HANDOFF_VERIFIER"] }, "sourceCommit": { "$ref": "#/definitions/commit" }, "executedFromCommit": { "$ref": "#/definitions/commit" },
|
|
"status": { "enum": ["PASS", "PARTIAL", "FAIL", "BLOCKED", "METADATA"] }, "exitCode": { "type": "integer" },
|
|
"artifactId": { "type": "string" }, "processArtifactId": { "type": "string" }, "processPointer": { "type": "string", "pattern": "^/" },
|
|
"nativeFormat": { "enum": ["trx", "junit", "jest", "playwright", "pytest", "unittest", "node-test", null] },
|
|
"counts": { "$ref": "#/definitions/counts" }, "membershipSha256": { "$ref": "#/definitions/sha" }, "limits": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"evidence": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["schemaVersion", "workstreamId", "kind", "testedCommit", "verifierCommit", "verifierSourceArtifactId", "sourceManifestArtifactId", "sourceAfterArtifactId", "ordinaryDiscoveryArtifactId", "ordinaryReportIds", "artifacts", "reports", "historicalEvidence", "environment", "notRun", "generatedUtc"],
|
|
"properties": {
|
|
"schemaVersion": { "$ref": "#/definitions/commonVersion" }, "workstreamId": { "$ref": "#/definitions/workstream" }, "kind": { "const": "TEST_EVIDENCE" },
|
|
"testedCommit": { "$ref": "#/definitions/commit" }, "sourceManifestArtifactId": { "type": "string" }, "sourceAfterArtifactId": { "type": "string" },
|
|
"verifierCommit": { "$ref": "#/definitions/commit" }, "verifierSourceArtifactId": { "type": "string" },
|
|
"ordinaryDiscoveryArtifactId": { "type": "string" }, "ordinaryReportIds": { "$ref": "#/definitions/strings" },
|
|
"artifacts": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/artifact" } }, "reports": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/report" } },
|
|
"historicalEvidence": { "$ref": "#/definitions/strings" }, "environment": { "$ref": "#/definitions/strings" }, "notRun": { "$ref": "#/definitions/strings" }, "generatedUtc": { "type": "string", "format": "date-time" }
|
|
}
|
|
}
|
|
}
|
|
}
|