[DTP-Worker] Sprint 8 · Générateur Matrice d'acceptation / traçabilité MVP (15 promesses roadmap · 21 modules gated tracés bijectif · partition sprint exacte · 12 hors-périmètre sourcés) (QA · roadmap L75/L80-87)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
{
|
||||
"$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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user