5d9ea5687d
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
189 lines
6.7 KiB
JSON
189 lines
6.7 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://oto-enterprise-os-dtp/qa/acceptance.schema.json",
|
|
"title": "Matrice d'acceptation / traçabilité MVP (roadmap → livrable → preuve)",
|
|
"description": "Contrat de sortie de acceptance_gen.py. Validé par le validateur maison Publiciste (zéro pip) dans le job CI qa-acceptance-tests. Mappe chaque promesse roadmap (livrables de sprint + métriques succès MVP) vers sa preuve gated (module CI) ou un hors-périmètre sourcé. Aucun chiffre métier fabriqué : les nombres des énoncés sont des citations verbatim de la roadmap.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["matrix", "manifest", "verdict"],
|
|
"properties": {
|
|
"matrix": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "$ref": "#/definitions/row" }
|
|
},
|
|
"verdict": { "type": "boolean" },
|
|
"manifest": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"generated_from",
|
|
"reference_cadre",
|
|
"roadmap_ref",
|
|
"cible_portage",
|
|
"self_module",
|
|
"counts",
|
|
"coverage",
|
|
"roadmap"
|
|
],
|
|
"properties": {
|
|
"generated_from": { "type": "string", "minLength": 1 },
|
|
"reference_cadre": { "type": "string", "minLength": 1 },
|
|
"roadmap_ref": { "type": "string", "minLength": 1 },
|
|
"cible_portage": { "type": "string", "minLength": 1 },
|
|
"self_module": { "type": "string", "const": "qa/acceptance" },
|
|
"counts": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"sprint_deliverables",
|
|
"mvp_metrics",
|
|
"deliverables_total",
|
|
"in_repo",
|
|
"out_of_scope_full",
|
|
"gated_modules",
|
|
"cited_modules",
|
|
"out_of_scope_items"
|
|
],
|
|
"properties": {
|
|
"sprint_deliverables": { "type": "integer", "minimum": 1 },
|
|
"mvp_metrics": { "type": "integer", "minimum": 1 },
|
|
"deliverables_total": { "type": "integer", "minimum": 1 },
|
|
"in_repo": { "type": "integer", "minimum": 0 },
|
|
"out_of_scope_full": { "type": "integer", "minimum": 0 },
|
|
"gated_modules": { "type": "integer", "minimum": 1 },
|
|
"cited_modules": { "type": "integer", "minimum": 0 },
|
|
"out_of_scope_items": { "type": "integer", "minimum": 0 }
|
|
}
|
|
},
|
|
"coverage": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"ci_modules_count",
|
|
"cited_modules_count",
|
|
"bijective",
|
|
"missing_in_matrix",
|
|
"phantom_evidence",
|
|
"partition_ok",
|
|
"sprint_partition",
|
|
"unknown_sprint",
|
|
"missing_artifacts",
|
|
"self_module_excluded"
|
|
],
|
|
"properties": {
|
|
"ci_modules_count": { "type": "integer", "minimum": 0 },
|
|
"cited_modules_count": { "type": "integer", "minimum": 0 },
|
|
"bijective": { "type": "boolean" },
|
|
"missing_in_matrix": { "type": "array", "items": { "type": "string" } },
|
|
"phantom_evidence": { "type": "array", "items": { "type": "string" } },
|
|
"partition_ok": { "type": "boolean" },
|
|
"sprint_partition": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/partition" }
|
|
},
|
|
"unknown_sprint": { "type": "array", "items": { "type": "string" } },
|
|
"missing_artifacts": { "type": "array", "items": { "type": "string" } },
|
|
"self_module_excluded": { "type": "string", "const": "qa/acceptance" }
|
|
}
|
|
},
|
|
"roadmap": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["sprint_ids", "metric_ids"],
|
|
"properties": {
|
|
"sprint_ids": { "type": "array", "items": { "type": "string" } },
|
|
"metric_ids": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"row": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"id",
|
|
"kind",
|
|
"sprint",
|
|
"roadmap_line",
|
|
"statement",
|
|
"status",
|
|
"modules",
|
|
"artifacts",
|
|
"out_of_scope",
|
|
"n_modules",
|
|
"all_modules_gated",
|
|
"all_artifacts_exist",
|
|
"has_evidence"
|
|
],
|
|
"properties": {
|
|
"id": { "type": "string", "minLength": 1 },
|
|
"kind": { "type": "string", "enum": ["sprint_deliverable", "mvp_metric"] },
|
|
"sprint": { "type": ["string", "null"] },
|
|
"roadmap_line": { "type": "integer", "minimum": 1 },
|
|
"statement": { "type": "string", "minLength": 1 },
|
|
"status": { "type": "string", "enum": ["in_repo", "out_of_scope"] },
|
|
"modules": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/evmodule" }
|
|
},
|
|
"artifacts": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/evartifact" }
|
|
},
|
|
"out_of_scope": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/oos" }
|
|
},
|
|
"n_modules": { "type": "integer", "minimum": 0 },
|
|
"all_modules_gated": { "type": "boolean" },
|
|
"all_artifacts_exist": { "type": "boolean" },
|
|
"has_evidence": { "type": "boolean" }
|
|
}
|
|
},
|
|
"evmodule": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["module", "ci_job", "gated"],
|
|
"properties": {
|
|
"module": { "type": "string", "minLength": 1 },
|
|
"ci_job": { "type": ["string", "null"] },
|
|
"gated": { "type": "boolean" }
|
|
}
|
|
},
|
|
"evartifact": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["path", "exists"],
|
|
"properties": {
|
|
"path": { "type": "string", "minLength": 1 },
|
|
"exists": { "type": "boolean" }
|
|
}
|
|
},
|
|
"oos": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["item", "source"],
|
|
"properties": {
|
|
"item": { "type": "string", "minLength": 1 },
|
|
"source": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"partition": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["sprint", "expected", "cited", "missing", "extra", "exact"],
|
|
"properties": {
|
|
"sprint": { "type": "string", "minLength": 1 },
|
|
"expected": { "type": "array", "items": { "type": "string" } },
|
|
"cited": { "type": "array", "items": { "type": "string" } },
|
|
"missing": { "type": "array", "items": { "type": "string" } },
|
|
"extra": { "type": "array", "items": { "type": "string" } },
|
|
"exact": { "type": "boolean" }
|
|
}
|
|
}
|
|
}
|
|
}
|