Review State Stage Promotion Ready
This output is deterministic read-model evidence. It is not canonical truth, semantic adoption, review approval, a governance decision, promotion, model certification, release authority, or proof of backend-specific equivalence.
Source identity
| Artifact | Repository path | SHA-256 |
|---|---|---|
| Query fixture | fixtures/queries/review-state-stage-promotion-ready.json | sha256:e40481ae4f1a056c98b4eb2554f484d67024f767c6eb0e425e86ed9ba7f9f165 |
| Declared input | fixtures/canonical/stage-aware-governance-outcomes-extension.json | sha256:1b28af7b833a43cfe69d7360d35702b40bcacc9975fddaefbfc5506a06085c62 |
| Executed result | Runtime output matched the fixture expectation | sha256:b7278e9d80e8f7d8aaa7da1987772fc47a8b2dcf4c8cb1fcb7675b01c3333173 |
Request
{
"reviewRef": "review:stage-promotion-ready-001"
}
Expected canonical output
{
"approvalDecisionRefs": [
"decision:stage-promotion-ready-001"
],
"approvingReviewRefs": [
"review:stage-promotion-ready-001"
],
"baseVersionRef": "version:compliance-demo-v1",
"blockingOutcomes": [],
"decisionRefs": [
"decision:stage-promotion-ready-001"
],
"lifecycle": {
"identity": "active"
},
"promotionRefs": [],
"proposalChangeSetRefs": [
"changeset:stage-promotion-ready-001"
],
"proposalRef": "proposal:stage-promotion-ready-001",
"proposalReviewRefs": [
"review:stage-promotion-ready-001"
],
"proposalReviewerRefs": [
"actor:reviewer"
],
"proposalValidationResultRefs": [
"validation:stage-promotion-ready-001"
],
"readyStages": [
"review",
"decision",
"promotion"
],
"reviewComment": "Stage fixture records review approval before the approving decision.",
"reviewEffect": "supports-decision",
"reviewOutcome": "approve",
"reviewRef": "review:stage-promotion-ready-001",
"reviewStageState": {
"decisionReady": true,
"promoted": false,
"promotionReady": true,
"reviewAccepted": true
},
"reviewValidationResultRefs": [
"validation:stage-promotion-ready-001"
],
"reviewerRef": "actor:reviewer",
"stageOutcome": "promotion-ready",
"targetPackageRef": "package:compliance-demo"
}
Verified runtime output
The python-canonical-runtime executor returned this result and it
matched the expected output using exact JSON structural equality.
{
"approvalDecisionRefs": [
"decision:stage-promotion-ready-001"
],
"approvingReviewRefs": [
"review:stage-promotion-ready-001"
],
"baseVersionRef": "version:compliance-demo-v1",
"blockingOutcomes": [],
"decisionRefs": [
"decision:stage-promotion-ready-001"
],
"lifecycle": {
"identity": "active"
},
"promotionRefs": [],
"proposalChangeSetRefs": [
"changeset:stage-promotion-ready-001"
],
"proposalRef": "proposal:stage-promotion-ready-001",
"proposalReviewRefs": [
"review:stage-promotion-ready-001"
],
"proposalReviewerRefs": [
"actor:reviewer"
],
"proposalValidationResultRefs": [
"validation:stage-promotion-ready-001"
],
"readyStages": [
"review",
"decision",
"promotion"
],
"reviewComment": "Stage fixture records review approval before the approving decision.",
"reviewEffect": "supports-decision",
"reviewOutcome": "approve",
"reviewRef": "review:stage-promotion-ready-001",
"reviewStageState": {
"decisionReady": true,
"promoted": false,
"promotionReady": true,
"reviewAccepted": true
},
"reviewValidationResultRefs": [
"validation:stage-promotion-ready-001"
],
"reviewerRef": "actor:reviewer",
"stageOutcome": "promotion-ready",
"targetPackageRef": "package:compliance-demo"
}
Declared input document
Show the complete input fixture
{
"extensionVersion": "ontograph.fixture-extension.v0.1",
"baseFixture": "fixtures/canonical/assertion-evidence-thin-slice.json",
"purpose": "Executable stage-aware governance validation outcomes for proposal, review, decision, and promotion readiness without flattening them into one status field.",
"commands": [
{
"commandType": "appendCanonicalObject",
"collection": "changeSets",
"objectId": "changeset:stage-review-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "proposals",
"objectId": "proposal:stage-review-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "validationResults",
"objectId": "validation:stage-review-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "changeSets",
"objectId": "changeset:stage-decision-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "proposals",
"objectId": "proposal:stage-decision-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "validationResults",
"objectId": "validation:stage-decision-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "reviews",
"objectId": "review:stage-decision-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "changeSets",
"objectId": "changeset:stage-promotion-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "proposals",
"objectId": "proposal:stage-promotion-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "validationResults",
"objectId": "validation:stage-promotion-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "reviews",
"objectId": "review:stage-promotion-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "decisions",
"objectId": "decision:stage-promotion-ready-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "changeSets",
"objectId": "changeset:stage-authority-gap-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "proposals",
"objectId": "proposal:stage-authority-gap-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "validationResults",
"objectId": "validation:stage-authority-gap-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "changeSets",
"objectId": "changeset:stage-provenance-gap-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "proposals",
"objectId": "proposal:stage-provenance-gap-001"
},
{
"commandType": "appendCanonicalObject",
"collection": "validationResults",
"objectId": "validation:stage-provenance-gap-001"
}
],
"appends": {
"changeSets": [
{
"id": "changeset:stage-review-ready-001",
"objectType": "ChangeSet",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"expectedBaseRef": "version:compliance-demo-v1",
"affectedObjectRefs": [
"assertion:control-support-001"
],
"mutations": [
{
"operation": "update",
"objectRef": "assertion:control-support-001",
"beforeRef": "assertion:control-support-001",
"afterRef": "assertion:control-support-001"
}
],
"rationale": "Review-ready proposal fixture reuses an existing assertion so no unrelated object model is introduced.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:00:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "Artifact",
"ref": "artifact:vendor-page-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "changeset:stage-decision-ready-001",
"objectType": "ChangeSet",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"expectedBaseRef": "version:compliance-demo-v1",
"affectedObjectRefs": [
"assertion:control-support-001"
],
"mutations": [
{
"operation": "update",
"objectRef": "assertion:control-support-001",
"beforeRef": "assertion:control-support-001",
"afterRef": "assertion:control-support-001"
}
],
"rationale": "Decision-ready proposal fixture keeps review separate from decision.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:10:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "Artifact",
"ref": "artifact:vendor-page-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "changeset:stage-promotion-ready-001",
"objectType": "ChangeSet",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"expectedBaseRef": "version:compliance-demo-v1",
"affectedObjectRefs": [
"assertion:control-support-001"
],
"mutations": [
{
"operation": "update",
"objectRef": "assertion:control-support-001",
"beforeRef": "assertion:control-support-001",
"afterRef": "assertion:control-support-001"
}
],
"rationale": "Promotion-ready proposal fixture has a decision but no promotion event.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:20:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "Artifact",
"ref": "artifact:vendor-page-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "changeset:stage-authority-gap-001",
"objectType": "ChangeSet",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"expectedBaseRef": "version:compliance-demo-v1",
"affectedObjectRefs": [
"assertion:control-support-001"
],
"mutations": [
{
"operation": "update",
"objectRef": "assertion:control-support-001",
"beforeRef": "assertion:control-support-001",
"afterRef": "assertion:control-support-001"
}
],
"rationale": "Authority-gap proposal has a change set but no reviewer or approving authority.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:30:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "Artifact",
"ref": "artifact:vendor-page-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "changeset:stage-provenance-gap-001",
"objectType": "ChangeSet",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"expectedBaseRef": "version:compliance-demo-v1",
"affectedObjectRefs": [
"assertion:control-support-001"
],
"mutations": [
{
"operation": "update",
"objectRef": "assertion:control-support-001",
"beforeRef": "assertion:control-support-001",
"afterRef": "assertion:control-support-001"
}
],
"rationale": "Provenance-gap proposal preserves canonical ids while a validation result blocks promotion.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:40:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "Artifact",
"ref": "artifact:vendor-page-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
}
],
"proposals": [
{
"id": "proposal:stage-review-ready-001",
"objectType": "Proposal",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetPackageRef": "package:compliance-demo",
"baseVersionRef": "version:compliance-demo-v1",
"changeSetRefs": [
"changeset:stage-review-ready-001"
],
"semanticDiffSummary": {
"created": [],
"changed": [
"assertion:control-support-001"
],
"superseded": [],
"conflicts": []
},
"reviewerRefs": [
"actor:reviewer"
],
"validationResultRefs": [],
"lifecycle": {
"proposal": "open"
},
"createdAt": "2026-05-05T01:01:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-review-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "proposal:stage-decision-ready-001",
"objectType": "Proposal",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetPackageRef": "package:compliance-demo",
"baseVersionRef": "version:compliance-demo-v1",
"changeSetRefs": [
"changeset:stage-decision-ready-001"
],
"semanticDiffSummary": {
"created": [],
"changed": [
"assertion:control-support-001"
],
"superseded": [],
"conflicts": []
},
"reviewerRefs": [
"actor:reviewer"
],
"validationResultRefs": [],
"lifecycle": {
"proposal": "under-review"
},
"createdAt": "2026-05-05T01:11:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-decision-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "proposal:stage-promotion-ready-001",
"objectType": "Proposal",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetPackageRef": "package:compliance-demo",
"baseVersionRef": "version:compliance-demo-v1",
"changeSetRefs": [
"changeset:stage-promotion-ready-001"
],
"semanticDiffSummary": {
"created": [],
"changed": [
"assertion:control-support-001"
],
"superseded": [],
"conflicts": []
},
"reviewerRefs": [
"actor:reviewer"
],
"validationResultRefs": [],
"lifecycle": {
"proposal": "approved"
},
"createdAt": "2026-05-05T01:21:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-promotion-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "proposal:stage-authority-gap-001",
"objectType": "Proposal",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetPackageRef": "package:compliance-demo",
"baseVersionRef": "version:compliance-demo-v1",
"changeSetRefs": [
"changeset:stage-authority-gap-001"
],
"semanticDiffSummary": {
"created": [],
"changed": [
"assertion:control-support-001"
],
"superseded": [],
"conflicts": []
},
"reviewerRefs": [],
"validationResultRefs": [],
"lifecycle": {
"proposal": "open"
},
"createdAt": "2026-05-05T01:31:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-authority-gap-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "proposal:stage-provenance-gap-001",
"objectType": "Proposal",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetPackageRef": "package:compliance-demo",
"baseVersionRef": "version:compliance-demo-v1",
"changeSetRefs": [
"changeset:stage-provenance-gap-001"
],
"semanticDiffSummary": {
"created": [],
"changed": [
"assertion:control-support-001"
],
"superseded": [],
"conflicts": []
},
"reviewerRefs": [
"actor:reviewer"
],
"validationResultRefs": [],
"lifecycle": {
"proposal": "changes-requested"
},
"createdAt": "2026-05-05T01:41:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-provenance-gap-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
}
],
"validationResults": [
{
"id": "validation:stage-review-ready-001",
"objectType": "ValidationResult",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-review-ready-001",
"checkRef": "rule:governance-stage-review-readiness",
"outcome": "pass",
"message": "Proposal has a change set, reviewer assignment, and no blocking validation result.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:02:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-review-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "validation:stage-decision-ready-001",
"objectType": "ValidationResult",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-decision-ready-001",
"checkRef": "rule:governance-stage-decision-readiness",
"outcome": "pass",
"message": "Proposal has review approval and is ready for a decision.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:12:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-decision-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "validation:stage-promotion-ready-001",
"objectType": "ValidationResult",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-promotion-ready-001",
"checkRef": "rule:governance-stage-promotion-readiness",
"outcome": "pass",
"message": "Proposal has an approving decision but no promotion yet.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:22:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-promotion-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "validation:stage-authority-gap-001",
"objectType": "ValidationResult",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-authority-gap-001",
"checkRef": "rule:governance-authority-required",
"outcome": "fail",
"message": "Proposal cannot proceed because no reviewer or authority basis is present.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:32:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-authority-gap-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "validation:stage-provenance-gap-001",
"objectType": "ValidationResult",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-provenance-gap-001",
"checkRef": "rule:promotion-provenance-required",
"outcome": "fail",
"message": "Proposal cannot proceed because required promotion provenance is unresolved.",
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:42:00Z",
"createdBy": "actor:max",
"provenanceRefs": [
{
"carrierType": "ChangeSet",
"ref": "changeset:stage-provenance-gap-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
}
],
"reviews": [
{
"id": "review:stage-decision-ready-001",
"objectType": "Review",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"proposalRef": "proposal:stage-decision-ready-001",
"reviewerRef": "actor:reviewer",
"outcome": "approve",
"comment": "Stage fixture records review approval without creating a decision.",
"validationResultRefs": [
"validation:stage-decision-ready-001"
],
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:13:00Z",
"createdBy": "actor:reviewer",
"provenanceRefs": [
{
"carrierType": "ValidationResult",
"ref": "validation:stage-decision-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
},
{
"id": "review:stage-promotion-ready-001",
"objectType": "Review",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"proposalRef": "proposal:stage-promotion-ready-001",
"reviewerRef": "actor:reviewer",
"outcome": "approve",
"comment": "Stage fixture records review approval before the approving decision.",
"validationResultRefs": [
"validation:stage-promotion-ready-001"
],
"lifecycle": {
"identity": "active"
},
"createdAt": "2026-05-05T01:23:00Z",
"createdBy": "actor:reviewer",
"provenanceRefs": [
{
"carrierType": "ValidationResult",
"ref": "validation:stage-promotion-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
}
],
"decisions": [
{
"id": "decision:stage-promotion-ready-001",
"objectType": "Decision",
"schemaVersion": "ontograph.canonical.thin-slice.v0.1",
"targetRef": "proposal:stage-promotion-ready-001",
"outcome": "approve",
"authorityBasis": {
"basisKind": "review",
"ref": "review:stage-promotion-ready-001"
},
"rationale": "Approve the stage fixture proposal while leaving promotion unexecuted.",
"decidedBy": "actor:reviewer",
"decidedAt": "2026-05-05T01:24:00Z",
"lifecycle": {
"decision": "recorded"
},
"createdAt": "2026-05-05T01:24:00Z",
"createdBy": "actor:reviewer",
"provenanceRefs": [
{
"carrierType": "Review",
"ref": "review:stage-promotion-ready-001"
}
],
"scopeRefs": [
"package:compliance-demo"
]
}
]
},
"queries": {
"proposalRefs": [
"proposal:stage-review-ready-001",
"proposal:stage-decision-ready-001",
"proposal:stage-promotion-ready-001",
"proposal:stage-authority-gap-001",
"proposal:stage-provenance-gap-001"
]
}
}