Add human review protocol and admin rules contract

This commit is contained in:
2026-04-21 10:59:02 +02:00
parent da718eb41d
commit e9dccdfad6
7 changed files with 1534 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
#!/usr/bin/env python3
"""
Tests de non-regression pour le contrat des regles d'administration.
"""
from pathlib import Path
from tools.validate_admin_rules import (
generate_rule_variants,
load_rules_config,
validate_rules_config,
)
def test_default_admin_rules_template_is_valid():
path = Path("config/admin_rules.default.yml")
data = load_rules_config(path)
errors = validate_rules_config(data)
assert errors == []
def test_normalized_identifier_variants_cover_requested_forms():
rule = {
"type": "normalized_identifier",
"match": {
"canonical_value": "1234567",
},
"normalization": {
"allow_bare_value": True,
"multiline": True,
"accepted_prefixes": ["", "No"],
"prefix_value_separators": ["", " "],
},
}
variants = generate_rule_variants(rule, limit=20)
assert "1234567" in variants
assert "N°1234567" in variants
assert "N° 1234567" in variants
assert "No1234567" in variants
assert "No 1234567" in variants
def test_preserve_phrase_must_use_preserve_action():
data = {
"version": 1,
"rules": [
{
"id": "rule_bad_preserve",
"label": "Bad preserve",
"type": "preserve_phrase",
"action": "mask",
"status": "draft",
"match": {
"exact_value": "classification internationale",
},
"scope": {
"document_families": ["all"],
"environments": ["test"],
"sections": ["narrative"],
},
"governance": {
"owner": "qualite",
"justification": "test de contrat",
"created_at": "2026-04-21",
"review_required_for_activation": True,
"approved_by": None,
"tests": {
"required_case_ids": ["006_whitelist_phrases_preserved"],
},
},
}
],
}
errors = validate_rules_config(data)
assert any("preserve_phrase" in error for error in errors)